sábado, 6 de febrero de 2021

Injustificada Prepotencia

 

Tradicionalmente, ha existido cierta competencia o “pique” entre distintos profesionales de las tecnologías de la información de acuerdo al tipo de productos y tecnologías escogidas (Linux vs Windows vs Mac, Java vs .Net, Programación Orientada a Objetos vs “Programación Estructurada”, Pascal vs Cobol, Aplicaciones Web vs Clientes “pesados”, CVS vs SVN, ...).

Esta competencia ha sido generalmente “amistosa”, “la sangre nunca ha llegado al rio” y ha oscilado entre debates intelectuales intensos, con exposición de argumentos y análisis interesantes a formas amistosas de provocar o hacer bromas a un compañero.

Generalmente se ha respetado a la otra parte que utilizaba otra tecnología y como mucho se ha interiorizado al respecto reflexiones como: ”Si utiliza ese lenguaje posiblemente su código tendrá más errores”, “Creo que esa plataforma/lenguaje no tiene futuro”, “Pienso que no conseguirá buen rendimiento si utiliza ese sistema/lenguaje”,…, considerando poco adecuadas o menos eficientes las tecnologías de la otra parte pero manteniendo siempre una consideración profesional al que utilizaba esas tecnologías (como siempre con excepciones, que de todo hay).

Sin embargo, en estos últimos años creo percibir (y evidentemente no tengo datos estadísticamente significativos, y menos en algo tan subjetivo como lo que estoy comentando) una injustificada prepotencia en bastantes profesionales que utilizan tecnologías o paradigmas de “moda”, respecto a aquellos que no las utilizan o ¡incluso se atreven a criticarlas!. Entre las que situaría como “tecnologías/paradigmas de moda” podría situarse elementos como las bases de datos NoSQL, los Arquitectura de Microservicios, DevOps, desarrollo Agile, Cloud,…

La diferencia respecto a la situación anterior no es que se piense que la opción propia es mejor y que el otro profesional está eligiendo una opción errónea, es que parece que se considera a quien no utiliza esta tecnología como un “espécimen” a un nivel “evolutivo” cercano al australopiteco (tecnológicamente hablando, eso sí).

No se plantea un debate “de igual a igual”, sino una mirada de “conmiseración”, donde se opta por no entrar en debates y se llegan a oir frases como :“Pobre, no entiende cómo se hacen ahora las cosas”, “Se ha quedado anticuado”, “Usa los sistemas de antes”, "ahora las cosas ya no se hacen así",…  

Esta ridícula y totalmente injustificada prepotencia, no debida unicamente a los profesionales sino también a las empresas que presionan para que se utilice “el último grito“ en tecnologías y metodologías, a quien más perjudica finalmente es a las empresas, que acaban desplegando un producto que en ocasiones carece de la calidad adecuada y cuyo coste es mayor de lo que deberían, debido al uso de metodologías/tecnologías inadecuadas.

No está de más recordar el gráfico "clásico" de implantación de tecnologías, para ayudar a pensar con ponderación sobre los riesgos de "las modas".

 

IOTpreneur, CC BY-SA 4.0, via Wikimedia Commons

Los profesionales también acaban sufriendo horas adicionales de trabajo y sobrecarga y en muchas ocasiones mala imagen ya que la solución finalmente implantada “no funciona” o tiene un rendimiento lamentable, además de los retrasos sufridos. En cualquier caso, el profesional que elige o recomienda la tecnología es el primer responsable del posible fracaso. Y si recibe presiones de la empresa, debe al menos analizar esa nueva tecnología y, si no es realmente válida, transmitir ese riesgo a quien corresponde. Si aun así los responsables del proyecto insisten y luego hay problemas, no podrán decir que desconocían los incumplimiento de plazos, riesgos o costes potenciales.

Como he analizado anteriormente en artículos sobre diversos aspectos, como Cloud (http://pensamientocriticoti.blogspot.com/2019/10/cloud-o-cuidado-con-la-nube-que-puede.html), Framework (http://pensamientocriticoti.blogspot.com/2019/03/los-framework-de-desarrollo-un-regalo.html), Metodología Agile (http://pensamientocriticoti.blogspot.com/2017/12/reflexiones-sobre-las-metodologias.html) o Microservicios (http://pensamientocriticoti.blogspot.com/2017/10/los-microservicios-no-son-la-solucion.html), no no hay solución “mágica” y no siempre un paradigma o tecnología “de moda” es mejor o más adecuado.

Contra esta especie de adanismo, que piensa que “el mundo acaba de empezar y antes no existía nada comparable”, creo que es conveniente recordar datos como los siguientes:

  • Antes de la “moda” de los servicios REST existió hace más de 20 años la “moda” los WebServices con toda su parafernalia de productos y conceptos como “diccionarios de servicios “(diccionarios de API,), “desacople de aplicaciones”, “el final de las aplicaciones monolíticas,”.. ¿suena familiar?.

  • Antes de se difundiera la virtualización, IBM ya disponia en 1972 de sistemas de virtualización con su tecnología VM  en sistemas tan “obsoletos” como el mainframe, trabajando con lenguajes “anticuados” como COBOL.

  • El concepto de nube (Cloud), como lugar donde albergar nuestros servidores y bases de datos, es básicamente lo mismo que se ofrecía en los 90 como “hosting”.

  • Antes del manifiesto y la metodología Agile ha habido muchos sistemas y metodologías iterativas y con implicación/revisión con el usuario/propietario del software, como puede ser la programación extrema XP ( ¿suena familiar ese proceso iterativo con intervención del cliente de la XP? ), remontándonos incluso a los años 60s.

  • Los famosos desarrollos serverless, es decir no tener un servidor levantado todo el tiempo sino arrancar un proceso para atender una petición (personalmente me parece un derroche y poco eficiente, pero el análisis sería objeto de otro artículo, y como siempre, puede tener ventajas en algún caso) es básicamente el mismo concepto de desarrollo de aplicaciones web por medio de CGI definido a principio de los años 90s

Por supuesto he hecho una simplificación y hay diferencias, pero las ideas y conceptos básicos de todas esas tecnologías y paradigmas que he comparado son realmente las mismas.

La conclusión de ese repaso sería que “casi no hay nada nuevo bajo el sol”, o al menos que las “nuevos” paradigmas y tecnologías de desarrollo no son tan “nuevos” como pensamos en ocasiones, salvo algunas excepciones, que por supuesto las hay. En general, es un proceso más evolutivo y gradual de lo que aparenta, con muy pocos saltos “gigantes”.

 

Charles Darwin [See page for author, CC BY 4.0 , via Wikimedia Commons]

Acudiendo a Darwin, mal interpretado en muchas ocasiones, no es “La supervivencia del más FUERTE”, es “la supervivencia del mas APTO”(https://es.wikipedia.org/wiki/Supervivencia_del_m%C3%A1s_apto) para un medio y entorno concreto (por eso, una característica que facilita la supervivencia en un desierto puede dificultarla en una jungla).

En nuestro caso la tecnología o profesional más adecuado para un proyecto, no existe “MEJOR” (más fuerte) tecnología para todos los proyectos, ni ninguna tecnología o metodología es mejor siempre y por tanto, no debe aplicarse siempre ni automáticamente.

Todo ello creo que debe hacernos reflexionar, ser más abiertos y tomar más en consideración tanto a cualquier tecnología como a cualquier profesional para evaluar y diseñar soluciones.


sábado, 26 de septiembre de 2020

No más "liderazgo", por favor.


Es muy habitual leer periódicamente artículos en distintos ámbitos, incluyendo foros profesionales como LinkedIn, acerca de las características de un “buen lider” o del “liderazgo”. Ya entrado el S.XXI, ¿No es esto muy “medieval”? ¿No suena a los consejos para ser “buen rey”? o más aún ¿No suena a recomendaciones para ser “macho alfa”?. 


 

Las sociedades más avanzadas y prósperas se caracterizan principalmente por tener una buena organización y legislación (social, laboral, educativa, sanitaria, etc.), no buenos reyes (o presidentes). ¿No debería ser igual el modelo para las empresas? ¿No debe basarse en la normativa (legislación) interna? ¿No debe “gobernar” un buen gestor por medio de la creación de normas y organización del trabajo y no tomando decisiones puntuales? ¿Quién conoce a los líderes de países situados en los primeros puestos mundiales en cuanto educación, calidad de vida o servicios sociales? (como suele asociarse tradicionalmente a los países nórdicos)

Sin entrar a valorar estas características defendidas asociadas a los "líderes", que en muchos casos son interesantes y ayudan al desempeño y funcionamiento de la empresa, quería reflexionar sobre el retraso y la falta de eficiencia que ese modelo arrastra.

¿Admitiríamos que el Ministro de Hacienda personalmente decidiera para cada contribuyente en concreto qué porcentaje de ingresos debe paga en concepto de impuestos?

No, evidentemente se exige una ley que especifique ese porcentaje en función de los ingresos, así como una serie de desgravaciones y consideraciones igualmente fijadas, para que no pueda definirse discrecionalmente.

Similarmente, ¿Podría funcionar un país en que no estuviera reglado, por ejemplo, la relación entre ayuntamientos y estado o qué nivel del estado (Central, autonómico, municipal) es responsable de la Sanidad?

Sin embargo, el funcionamiento de muchas empresas, especialmente en el área de servicios, y más aún en las de TI, sigue un modelo muy “medieval” donde la discrecionalidad es muy alta en todos los aspectos y los diversos niveles. No me refiero a los aspectos laborales que están reglamentados por leyes o convenios generales (aunque hay elementos como las horas extras o la flexibilidad horaria que cuyo respeto es muy discutible), sino a las funciones y organización interna.

Rsc src / CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)

 

Creo que son escasísimas las empresas en que cada persona/categoría tiene por escrito cuales son funciones o cada departamento sus funciones y la relación con otros departamentos.

Por supuesto se puede alegar que cuando se contrata a una persona, se le contrata para un puesto. Sin embargo, eso significa muy poco por varios motivos:

  1. En muchos casos la empresa tiene unas pocas categorías dentro de las cuales caben muchísimas personas. Ser contratado como “Consultor Senior” o “Analista” no explicita claramente las funciones.

  2. En muchas ocasiones, se asigna a las personas en una categoría por su sueldo y no por sus funciones.

  3. El significado de cada categoría o puesto varía mucho entre empresas (e incluso entre departamentos).

  4. Además de las promociones, puede haber movilidad interna y asignación a otros puestos.

Así, podemos ser “Administradores de Sistemas” pero eso no indica si debo instalar TODOS los sistemas o por ejemplo solo Linux, o, siendo “Administrador de Bases de Datos” no implica si además debe instalarse y configurarse el sistema operativo sobre el que se instalará la base de datos o eso lo hará un “Administrador de Sistemas”.

Con los departamentos y áreas ocurre lo mismo. Por supuesto cuando hay reorganizaciones suele publicarse un organigrama (aunque conozco muchos casos en que brillan por su ausencia y como mucho hay una lista de directores), donde aparece, por ejemplo “Área de Ventas”, “Área de Consultoría” o “Área de Sistemas” con sus responsables correspondientes. Sin embargo, al margen de unas descripciones breves de las funciones (que básicamente explican lo que se deduce del nombre) no suele detallarse realmente las funciones ni las relaciones.

Así, por ejemplo, si el Área de Ventas necesita acudir con un técnico del Área de Consultoría para una labor de preventa para un posible cliente ¿Debe solicitarlo al área de consultoría? ¿Se le cobrará internamente? ¿Qué ocurre si hay colisiones entre las dos áreas?

Toda esta indefinición provoca, por una parte, mucha ineficiencia y falta de productividad, ya que en cada caso hay que analizar qué hacer, o no se hace ya que se espera que otra persona/equipo lo haga o en el peor de los casos se hace mal y hay que repetirlo.

Además, obliga a mucha microgestión, es decir a que cada responsable tenga que estar dirigiendo continuamente al nivel inferior, o peor aún, a varios niveles por debajo, ante la falta de reglas claras que permitan tomar decisiones sin consultar o pedir permiso. Este problema, además de en las escuelas de negocio, se ha comentado bastante en el ámbito de los juegos de estrategia en ordenador, donde se ha evolucionado desde los juegos más primitivos, que obligaban a tener que indicar continuamente a cada pieza del juego qué hacer (moverse de un punto a otro, realizar una actividad concreta, ...), hasta poder dar criterios generales (“busca recursos”, “vigilar toda esta zona”,..).

 

Four Blair Services Pvt. Ltd. / CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)

Por otra parte, esa falta de definición provoca desafección y “quema” a los profesionales. Al igual que se crea descontento ciudadano si las leyes no están claras y alguien puede ser penalizado sin que exista un motivo claro, los empleados tratados como “súbditos”, que no conocen las normas y las “leyes” a seguir y dependen de la discrecionalidad y buen (o mal) hacer de su responsable, en lugar de ser autosuficientes y tener MUY claro su trabajo, lo más probable es que acaben “emigrando”.

Además esta discrecionalidad en cuanto a tareas asignadas, funciones, etc. acaba provocando mal ambiente y sensación de “enchufe” o “persecución” al no estar claramente definido el marco de juego. Incluso aunque el responsable se comporte de forma justa y sistemática, se acaban provocando problemas y sospechas de subjetividad, difíciles de romper ya que no hay “reglas del juego” claras.

Al igual que todas las jerarquías del estado (desde un primer ministro a un alcalde) gobiernan promulgando leyes y disposiciones de diverso rango, ¿no deberían los distintos responsables “gobernar” por medio de normas, es decir definiendo los procedimientos y responsabilidades de cada área y de cada grupo profesional (grupo no desde un punto de vista laboral o de cobro de nóminas sino de funciones reales)?

Dr ian mitchell / CC0

 

No estoy planteando un modelo autogestionario o plano, que por otra parte, hasta cierto punto es básico de las metodologías agiles, el modelo más moderno y en boga de desarrollo de aplicaciones, así que tampoco es una opción a desdeñar, sino simplemente resalto la importancia de definir una organización clara y documentada (tal como hacía hincapié en un artículo anterior).

Esto es, por otra parte, el corazón de todos los sistemas de calidad (como dice la definición tradicional de calidad: “Haz todo lo que escribes y escribe todo lo que hagas”) y evita depender de la mayor o menor habilidad de todos los intervinientes (incluidos todos los escalones jerárquicos de la empresa). Si todo el mundo trabaja tal como indican los procedimientos, hay menos incertidumbre, mayor calidad y mayor rendimiento ( o competitividad, es decir producto o servicio producido por coste, independientemente de que hablemos de una empresa privada o de una institución pública).

Sin quitar importancia al valor que aporta cada persona, y a las características que un buen gestor puede aportar a cualquier equipo (no todo puede estar reglamentado, las relaciones humanas son importantes, un mal ambiente puede hundir a cualquier grupo de trabajo, etc,) pensemos en que cualquier empresa es una estructura muy compleja y la única forma de que funcione eficientemente es una buena y clara organización, conocida por todos los empleados y departamentos y documentada.

Durante esta pandemia, en que un porcentaje importante de la población, de distintos sectores y categorías profesionales, ha estado teletrabajando, y por tanto sin sus responsables respectivos "encima", hay estudios que han detectado mejoras de productividad. Al no estar en contacto continuo, probablemente ha sido necesario dar "criterios generales" para que los empleados realicen su trabajo. Esto parece confirmar que no se trata de "liderazgo" sino de organización.

En el siglo XXI lo importante no son los reyes sino los estados.....



sábado, 14 de marzo de 2020

¿Está “degenerando” la calidad de las búsquedas de Google?




Creo que además del exceso de publicidad (cada vez mayor y menos diferenciado) y los problemas de confidencialidad (de los que los usuarios son cada vez más conscientes) a nivel técnico la calidad de los resultados de Google está descendiendo. Reflexiono a continuación sobre este asunto.

Un poco de historia


Lo primero que hay que recordar es que la búsqueda de documentos o páginas web por palabras no la inventó Google ni empezó en este siglo. Existen herramientas de búsqueda por contenido o texto completo desde hace más de 40 años.
Ya en los años 70 del siglo XX, productos como BRS ofrecían la posibilidad de buscar documentos por palabras de los mismos, normalmente orientados a bases de datos especializadas y bajo suscripción, aunque posteriormente BRS permitía a una empresa u organismo comprarlo y tener internamente indexados sus propios documentos.
A principios de los 90, productos como CD-Author, Personal Librarian Software, Knosys o Prodoc permitían indexar colecciones de documentos y editar CDs para publicar bases de datos de textos que permitían buscar por el contenido. Este tipo de herramientas se utilizó sobre todo en bases de datos legales que permitían buscar legislación o jurisprudencia por combinaciones de palabras contenidas en los mismos.
A mediados de los 90 empezaron a aparecer los primeros buscadores web, como WebCrawler, InfoSeek, Altavista, Yahoo! y finalmente Google.
Actualmente, además de los buscadores disponibles en Internet, existen herramientas como Lucene  (que se ha convertido en la base de muchos otros productos), Xapian, Autonomy, Inktomi  o Sphinx que permiten indexar nuestro propio contenido y publicarlo (ya sea en Internet, en Intranet o asociado a un proyecto o aplicación).
Además, han surgido los metabuscadores, que utilizan otros buscadores para lanzar las consultas, combinando los resultados, anonimizando y añadiendo otros valores.

"Search Engine Optimization seo" by James Dell is licensed under CC BY-NC 4.0

 

Cómo funcionan los Motores de búsqueda por contenido


Para entender qué podemos esperar y qué podemos considerar funcionamiento “correcto” o “incorrecto” es importante entender cómo funcionan los buscadores por contenido (sean en internet o no).
Utilizo la palabra documento independientemente de que se trata de una página web o de que se trate un documento por ejemplo ofimático o pdf. La operativa de búsqueda y recuperación básicamente es la misma.
Son procesos complejos que requerirían mucha extensión para describir todos los matices y operaciones, por lo que los describo a continuación de forma muy simplificada. Hay muchos artículos explicando detalladamente el funcionamiento.

Podemos hablar de dos o tres pasos  básicos:
  1. Obtener los documentos (cuando no somos los propietarios debemos “buscarlos” por internet, si somos los propietarios, debemos “insertarlos” en el buscador)
  2. La indexación de los documentos o páginas localizados.
  3. La búsqueda

Si disponemos de una colección de documentos que queremos indexar y publicar, no hay que “buscarlos”, pero un buscador público en internet sí debe buscarlos. Para ello se utilizan programas llamados “web crawlers”,  arañas Web” o “rastreador web” que recorren páginas sistemáticamente, barriendo dominios, portales e hipervínculos, para descargar el html o documentos referenciados. Si somos los propietarios, debemos “insertarlos” en el buscador para que los procese.

En cualquier caso, el resultado de esta fase son documentos en diversos formatos (html, pdf, docx, pptx, odt,..) que deben indexarse. Lógicamente la calidad de los resultados viene determinado en primer lugar por esta fase. Si la página no se ha encontrado, nunca podrá incluirse en la indexación ni por tanto, recuperarse en las búsquedas. Esta es la primera fuente de problemas: Muchas páginas requieren autenticación o suscripción, con lo que no es posible recuperarlas, y otras están compuestas de fragmentos de página que combinan otras páginas que varían con el tiempo (por ejemplo blog, medios de comunicación o aglutinadores que incrustan otros blog, medios de comunicación o noticias). Se toma una foto de la página en un momento dado y cuando accedemos a ella al cabo de varios días, ya no está la información que buscábamos.

La siguiente fase es la más crítica en mi opinión, la indexación de los documentos. Reduciendo el proceso a lo más elemental, se trata simplemente de extraer las palabras y anotar la referencia al documento en que aparecen. Para empezar, debe ignorarse no solo el que una palabra esté en mayúsculas o minúsculas (algo sencillo), sino los acentos (ya que puede haberse omitido por error o no incluido en una palabra en mayúsculas)  y hay que tener en cuenta los códigos de página usados en el documento, que afecta a la forma en que se referencia y almacenan  que ciertos caracteres (como acentos, ñ, etc).   Tras un primer tratamiento, esto nos daría, para cada palabra, la lista de todos los documentos (o urls) en que aparece.
Pero esto sería poco eficaz, ya que, por ejemplo, no tiene sentido tratar como palabras distintas el singular o plural o los distintos tiempos de un verbo. Para ello se aplica el proceso llamado stemming  de forma lo que se maneja es la raíz de la palabra. Esto permite referenciar mejor. 
Por otra parte, hay palabras que no aportan mucho y ocupan espacio en los índices, como pueden ser artículos o preposiciones, por lo que los motores utilizan una lista de palabras vacías o stop words que se ignoran al indexar. Además, hay que sumar que muchos motores de búsqueda permiten buscar palabras “cercanas” (en el mismo párrafo o a una distancia de N palabras), lo que permite afinar más la búsqueda (lógicamente no es lo mismo que aparezcan dos palabras en el mismo párrafo que al principio y al final de un documento, especialmente si este es largo). Para ello debe guardarse la posición de la palabra dentro del documento.

Podemos seguir así iterando acerca de cómo analizar e indexar los documentos para facilitar y mejorar que luego puedan ser recuperados. El problema es que estas mejoras, que ayudan a la búsqueda en algunos casos, empiezan a perturbar la recuperación de documentos en determinados casos, por ejemplo si se quiere localizar “La Busca” de Pio Baroja, y hemos desechado “La” como palabra vacía.

Sin embargo, estos procesos, que para conjuntos de documentos pequeños pueden ser suficientes, ya que los resultados de una búsqueda serán pequeños,  no lo son cuando tratamos cientos de millones de páginas y cualquier búsqueda puede recuperar miles o cientos de miles de páginas de resultados, ya que no es eficaz que un usuario se recorra todas.
Esto nos lleva a “la madre del cordero”: ¿Cómo ordenar todos los resultados? ¿Cumplen todos los documentos los criterios de búsqueda igual? ¿Son todos igual de importantes? ¿Son todos igual de importantes para MI?.
Por ejemplo puede pensarse que si aparece más veces la palabra buscada, el documento es más “acertado”, pero, ¿y si son dos o tres palabras? ¿La suma? ¿Qué ocurre si una palabra aparece muchísimo y las otras solo una vez? ¿No podría considerarse más significativo una en que las tres aparezcan más o menos igual, aunque sumen menos apariciones totales? Esto implicaría un factor de ponderación.
Por otra parte, entre dos documentos con las mismas palabras, parece razonable considerar más “importante”  o adecuado a aquel que más páginas referencian, es decir aquel qué más personas consideran útil.
Similarmente, un documento con más referencias a otros documento podría considerarse más “fundado”  y “sólido” como para situarlo destacado.
Finalmente en este repaso MUY simplificado, lo que para una persona es importante, para otra puede no serlo. Para ello puede tenerse en cuenta los documentos que hemos elegido en anteriores búsquedas, para presentar en otras ocasiones documentos que nosotros personalmente consideramos más adecuados. Y ahí se introduce otro problema distinto, el manejo de los datos personales y las preferencias de cada uno. Esta ayuda tiene un coste, que no es objeto de este texto, ya que solo se trata de reflexionar sobre la “calidad” de los resultados, no sobre la privacidad

Puede seguir así añadiéndose criterios (¿Es “mejor” un documento nuevo o viejo?, ¿de un portal o de otro?, ¿más visitado?,..,…) para considera “mejor resultado” un documento u otro. Este algoritmo y sistema de ponderaciones y pesos es lo que en el caso de Google se ha llamado Page Rank

Page Rank [Tomwsulcer / CC0]


Y tras todos estos análisis y ponderaciones, llega el momento de buscar. Como es bien sabido, hay una sintaxis en la mayoría de los motores de búsqueda que suele ser:

  • Palabra: Devolverá todos los documentos que contiene esa palabra o derivados.
  • Varias palabra: Devolverá todos los documentos que contiene cualquiera de esas palabras.
  • palabra1 OR palabra2: Devolverá todos los documentos que contiene alguna de esas palabras.
  • "Varias palabra": Si se introduce una o varias palabras entre comillas, devolverá exclusivamente los documentos con esa expresión literal.
  • -Palabra : La palabra elegida NO puede estar en ninguno de los documentos (se eliminaran todos los que la contengan).
  • Palabra* : Incluye en la búsqueda todas las palabras que empiezan por la raíz indicada.

Algunos ejemplos


Teniendo en cuenta lo anterior, al realizar búsquedas deberíamos obtener resultados “coherentes”, pero no siempre es así.

Los ejemplos incluidos están realizado en una ventana en modo privado (para evitar que tenga en cuenta preferencias personales) y he descartado algunas búsquedas que he “sufrido” en mi día a día por confidencialidad, para no hacer propaganda de productos o por simplicidad

Como ayuda, aquí hay una referencia de los operadores de búsqueda:
y la oficial:

Supongamos que buscamos:


Si ahora indicamos que NO debe aparecer una palabra, deberían ser siempre menos (o en el peor de los casos el mismo número de resultados), sin embargo, indica que hay más:

 
¿?

Si realizamos la búsqueda:



Nos indica que hay 2.030 resultados y 7 páginas (de 10 resultados, es decir 70 resultados)
¿?



Podemos probar también: 



Si ahora queremos extenderlo e incluir otras normas que contengan cualquiera de 2 términos



 obtenemos menos resultados que solo para uno
¿?


Una búsqueda por"formato imagen tiff" devuelve 1050 resultados y  8 paginas (es decir serían 80 resultados, ¿no quedamos que 1050?)

pero cuando elegimos la página 8 aparece vacía e indica que son 7 y 62 


¿?

Por último, dada la actualidad:



 Por si no son suficientes, ampliamos:


Y obtenemos la mitad de resultados.
¿?

Sin comentarios..

Hay que tener en cuenta además que yo he realizado búsquedas y obtenido resultados muy diversos en diferentes días, devolviendo por ejemplo, unos días 58.000 regitros y otros 258.000

A todo ello hay que sumar que, independientemente de la cantidad y calidad de los resultados, desde hace meses Google no permite recorrer más allá de 15 o 18 páginas. Desconozco el motivo, no sé si para ahorrar recursos, para “no mostrar las vergüenzas” presentando resultados incorrectos que no tiene nada que ver o porque las cifras no son reales.

Sé que se dice que “nadie pasa de la segunda página”, pero además del hecho de que se encuentra información muy interesante en muchas de ellas, aunque sean menos conocidas y a veces precisamente por eso, hay trabajos, por ejemplo de investigación, que requieren exhaustividad. Además, en muchos casos el uso de estrategias de optimización SEO hace que siempre aparezcan en las primeras posiciones las que más dinero y esfuerzo invierten, independientemente de la adecuación o interés de ellas, por lo que conviene revisar varias páginas.

No he mostrado ejemplos “cualitativos”, pero en más de una ocasión, he encontrado resultados que no contenían ninguna de las palabras  (ni derivados) utilizadas para buscar.

Conclusiones


A la complejidad de manejar miles de millones de páginas actualizadas continuamente, en cientos de idiomas, hay que añadir  que las páginas utilizan estrategias SEO para potenciar su aparición y posición, que hay páginas que parecen haber incluido todo tipo de palabras para aparecer en cualquier búsqueda, da igual que se trate de “Ingeniería nuclear” o de “la cría del cangrejo”, por lo que no es una tarea fácil. 
Google sigue siendo un buen buscador y es una herramienta a no despreciar.

El objetivo de este texto es resaltar que Google no es infalible y sus resultados son discutible en muchos casos (especialmente en el aspecto cuantitativo).
En lugar de considerar a Google EL Oráculo y EL buscador, puede ser el momento de combinar y contrastar su uso con otros buscadores como DuckDuckGo o Ecosia (que dedica una parte de los beneficios de la publicidad obtenida con cada búsqueda a  plantar árboles) 


miércoles, 30 de octubre de 2019

Cloud o “cuidado con La Nube, que puede ser de tormenta”.


Uno de los temas tecnológicos “de moda“ estos últimos años es la de “Computación en la nube”  o de forma abreviada Cloud o la Nube. El problema es que con ese término se referencia en muchas ocasiones  conceptos distintos o erróneos, se mezclan aspectos técnicos con otros operativos/económicos y además se atribuye propiedades casi mágicas que van a arreglar todos los problemas tecnológicos de una entidad. Este artículo reflexiona, como es habitual de forma crítica, sobre los diferentes conceptos y hasta qué punto pueden ser una solución o un problema adicional.

Sistema VirtualBox en Windows7 ejecutando dos máquinas virtuales: Linux Mint17 y Ubuntu14.04 Gnome3. Waspteo [CC0]

 

Conceptos

 

Para empezar ¿qué quiere decir Computación en la nube?
Básicamente se trata de disponer de “servicios informáticos” (ordenadores, bases de datos, aplicaciones,..) gestionados por una empresa. Es decir, en lugar de comprar un ordenador (o un programa) me conecto a un sistema remoto que una empresa me ofrece pagando por horas, meses, uso, etc.
Pero, ¿Eso no es lo que se hacía ya hace años, antes incluso de la Burbuja de las .COM, cuando contrataba un hosting o Alojamiento Web para publicar mis páginas o mi base de datos de productos y servicios?
Si, realmente sería lo mismo (o una variante), así que lo primero que habría que aclarar es que no se acaba de descubrir ni es algo “revolucionario”, lleva utilizándose más de 20 años. E incluso si se retrocede a los albores de la informática, el alquiler de tiempo de grandes ordenadores (Mainframe) se practicaba hace ya 50 años.
No obstante el modelo se ha formalizado y ampliado, tanto tecnológicamente como comercialmente, y además la mejora de las comunicaciones y la extensión del uso de los móviles lo ha reforzado.

Suele distinguirse varios “modelos” de servicio:
  • Iaas (Infrastructure as a Service) lo que de forma muy simplificada puede traducirse como que contratamos “hardware” es decir un “ordenador”, un “disco”, “servicios de red”, etc. Es decir se dispone de “ordenadores virtuales” que configuramos según nuestras necesidades y dentro de los cuales podemos instalar los sistemas operativos que deseemos (y que debemos tener licenciados si lo requieren) y adicionalmente los programas elegidos. Esta es una posibilidad que desde hace unos 12 años ha estado disponible para instalar en ordenadores físicos en las instalaciones de cualquier empresa, utilizando programas como Virtual Box o VMWare pero que ahora se ha generalizado, permitiendo el disponer de ordenadores “remotos”.
  • PaaS (Platform as a Service) que de forma simplificada puede traducirse como que se contrata un “ordenador con software instalado” (sistema operativo, entorno Java, php, python, servidor web, base de datos, etc.). Este modelo se asimilaría al tradicional de hosting.
  • SaaS (Software as a Service) En ese modelo lo que se contrata es el uso de un software (por ejemplo: un programa de contabilidad, gestión de ventas, gestión de Centros de llamadas-Call Centre, etc...). En lugar de adquirir un software, instalarlo y gestionarlo, se contrata el uso de uno, pagando por usuarios, períodos de tiempo, etc. Y una empresa gestiona todo el sistema, dando de alta usuarios, realizando copias de seguridad, gestionando licencias, almacenamiento, etc. De forma transparente totalmente para los usuarios, que simplemente utilizan un servicio sin todas las complejidades que implica por detrás.


Además de estos tipos de servicio (cuyas fronteras no siempre son claras), hay otras criterios importantes, como pueden ser la división entre Nube Pública (Es decir servicios expuestos “a todo el mundo”, de los cuales contratamos una parte), Nube Privada (Una nube “particular” para una entidad, lo que podría asimilarse a “no alquilo un apartamento = ‘Nube Pública’ sino todo un edificio, incluyendo mi propia recepción-control de entrada”) y Nube Híbrida (Combinando elementos de Nube Pública y Nube Privada o elementos de infraestructura propia).

Sam Johnston [CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0)]
Hay un elemento importante a tener en cuenta que es ¿qué tipo de “máquina virtual” utilizo?
En estos últimos años se ha extendido un modelo de virtualización muy novedoso, la tecnología de contenedores , dentro de los cuales destaca Docker.
De forma simplificada, se trata de manejar contenedores, o “mini ordenadores” (estamos hablando en ocasiones de menos de 500M, es decir menos memoria que cualquier teléfono actual) con un “mini sistema operativo” (que suele ser el núcleo de Linux) y con una forma de trabajo en la que, en lugar de instalar el programa, se copia simplemente la máquina virtual con todo ya instalado. Si hace falta más potencia, se hacen dos copias de la máquina, etc. Como en los casos anteriores, puede utilizarse Docker sin acudir a la Nube, es decir podría utilizarse imágenes Docker dentro de nuestros propios sistemas.





Por último, hay que destacar que las principales empresas que ofrecen servicios en la Nube incluyen además servicios propietarios que solo ellos tienen (servicios de almacenamiento avanzado, de base de datos, de inteligencia artificial, etc.)

 

Coste


¿Cómo se cobra? Es muy variable y MUY complejo, y depende de cada proveedor. La idea general es de “pago por uso”, es decir contratamos una suscripción (bolsa económica) y podemos crear nuestra infraestructura de acuerdo a ese importe (por ejemplo la suscripción puede permitir crear dos máquinas “pequeñas” o una “grande”).
Sin embargo no es tan sencillo, porque también se puede contabilizar factores como:
    •  el tiempo que esas máquinas están funcionando
    •  la cantidad de bytes cargados o descargados
    • los bytes almacenados
    • el ancho de banda disponible para acceder o descargar
    • el número de operaciones de almacenamiento
    • El tipo/velocidad de respuesta del disco (HDD o SDD)
    • ….
Ciertos proveedores limitan alguno de esos factores, de forma que, por ejemplo, la máquina de tipo A está limitada a X capacidad simultánea u ofrecen paquetes cerrados (Ej: máquina con 4 CPU, 8G RAM y 50G de disco)
Como ejemplo, en estas direcciones pueden estudiarse las complejas tarifas de dos de los principales proveedores: Amazon  y Azure
En principio parece que por “economía de escala”, un proveedor de Nube podría ofrecer el servicio por un coste menor que el tenerlo en nuestras instalaciones, pero no hay que olvidar que estamos “alquilando” y, dependiendo de las necesidades y uso, el alquiler puede salir más rentable o menos (si no fuera así, ninguna empresa compraría camiones o furgonetas y las alquilarían siempre).

 

Ventajas

 

Como hemos visto, “casi todo” lo que puede hacerse en la Nube, puede hacerse en nuestras propias instalaciones, de forma que las principales ventajas serían:
  1. Flexibilidad: En una o dos horas puede activarse una nueva máquina, no hay que comprar hardware. Incluso aunque se disponga de un sistema interno de virtualización, normalmente estarán optimizados los recursos y no habrá mucha capacidad sobrante para crear una máquina virtual. Esto puede ser especialmente útil para realizar pruebas o cálculos puntuales, creando un gran número de máquinas para un uso puntual, que luego se liberan. Tambien puede utlizarse para una nueva empresa que no quiere invertir demasiado, o para tareas que re realizan períodicamente (procesos semanales o mensuales intensivos que requieren ordenadores que no se utilizan salvo en esos momentos).
  2. No requerir ciertos perfiles profesionales: La administración y gestión de disponibilidad de las máquinas está delegada a otra empresa, de forma que no es necesario contratar por ejemplo un profesional que no tendría trabajo todo el tiempo. No obstante esta función, en cuanto la empresa tenga cierto volumen, justifica la contratación de una persona, y en cualquier caso, siempre podría contratarse esos servicios a otra empresa para realizarlos de forma remota con los ordenadores locales sin estar en la Nube.
  3. Disponer de servicios específicos que se ofrecen únicamente en La Nube: Algunos proveedores ofrecen productos/servicios (de almacenamiento, base de datos, análisis, estadísticas, Inteligencia Artificial,..) que solo ofrecen ellos. En ese caso, más que La Nube, se trata de utilizar un servicio que no está disponible en otro ámbito.
  4. Acceso mundial: No es necesario crear una estructura de servidores y una DMZ en nuestras instalaciones para publicar ciertos servicios y servidores (por ejemplo para colaboradores, otras empresa, etc.). No obstante no hay que olvidar que esa información que se publique en La Nube, deberá sincronizarse con los servidores internos (salvo que sea información aislada y todo el trabajo y proceso se haga en esos servidores). Adicionalmente, puede obtenerse resultados similares para colaborar con empleados y otras entidades usando una VPN.
  5. Coste: En principio puede resultar rentable pagar por uso, y por ejemplo apagar ciertos servidores durante noches o fines de semana. Es un modelo de "alquiler" frente a "compra". Además, una empresa que preste este servicio tiene miles de servidores y aprovecha el tiempo en que un usuario apaga para ejecutar tareas de otro, frente a un modelo habitual en que solo presta servicio 8h o 12h.

 

Inconvenientes

 

  1. Coste: (SI, no está repetido por error, La Nube puede resultar MUY cara) En este punto ya depende mucho de los costes y economía de escala que tenga cada empresa/institución. Depende mucho de cada caso, uso y precios. Una empresa pequeña puede no requerir alguno de los servicios (soporte 24 horas, Alta disponibilidad, escalado automáticos,..) que se incluyen “automáticamente”, y puede resultarle caro. Una grande, a partir de un volumen, lo resuelve internamente con sus equipos y profesionales y puede resultarle más barato que en La Nube, por lo que tampoco le representa una ventaja. La única forma es analizar en cada escenario el coste completo (teniendo en cuenta todos los factores por supuesto)..
  2. Seguridad: Por supuesto que cualquier sistema puede ser potencialmente atacado y accedido. Pero si está públicamente disponible en Internet (y por tanto solo protegido por una clave) siempre será más inseguro que un sistema interno al que no puede accederse públicamente desde Internet.
  3. Legislación: La legislación de muchos países (incluida la Comunidad Europea) limita el manejo de datos personales, que no pueden almacenarse en cualquier lugar. Incluso en algunos países de Sudamérica, los datos y documentos no pueden salir del país. Teniendo en cuenta que para los datos almacenados en la Nube no está especificada su ubicación (o en algunos casos se especifica pero eligiendo una central “de zona” que abarca muchos países), hay muchos casos en que no es legal el uso para manejar datos personales.
  4. Integración: Salvo que tengamos TODOS los servidores en La Nube, esos servidores en La Nube deberán conectarse con nuestros servidores internos (para actualizar datos de clientes, servicios, documentación, pedidos, expedientes,…). Esa integración puede ser compleja e insegura, ya que publicamos una “puerta de entrada” al corazón de nuestros servidores.
  5. Disponer de servicios específicos que se ofrecen únicamente en La Nube: Algunos proveedores ofrecen productos/servicios (de almacenamiento, base de datos, análisis, estadísticas, Inteligencia Artificial,..) que solo ofrecen ellos.  Si, tampoco está repetido por error. Depender de un fabricante y usar un servicio que solo ofrece el significa una dependencia muy fuerte. Si el producto no va bien y se retira, o si el precio sube desorbitadamente, no hay alternativa (y si la hay implicará un desarrollo o modificaciones de los proyectos importantes, ya que son productos propietarios cuya forma de integración/invocación no suele ser estándar)

 

Y ¿entonces?...

 

Como en cualquier otra decisión, no hay respuestas absolutas, aunque sí hay algunas consideraciones a tener en cuenta antes de decidir y sobre todo delimitar el alcance de la decisión y el sentido de la decisión, para poder evaluarla correctamente.

El decidir “nuestra estrategia es el uso de La Nube” NO es una decisión tecnológica sino principalmente económica, al igual que lo sería decidir que otra empresa gestione nuestros equipos.

Si por Nube se entiende manejar máquinas virtuales ( que hace años que puede hacerse, lo raro empieza a ser no tenerlas), la decisión tecnológica sería “nuestra estrategia es virtualizar todos los ordenadores” (lo cual puede hacerse en nuestras instalaciones o en un proveedor de Nube, y la decisión será económica). En cualquier caso, serían dos decisiones:
    1- Analizar las ventajas e inconvenientes de Virtualizar (principalmente tecnológica)
    2- Analizar DONDE se hace, en nuestras instalaciones o en La Nube (principalmente económica)

Si por Nube se entiende utilizar Docker, esta SI es una decisión tecnológica muy importante, ya que la forma de desarrollar, administrar y monitorizar es muy diferente al uso de máquinas “normales” (virtualizadas o no), pero que puede llevarse a cabo igualmente “dentro” o “fuera”. Pero en ese caso la decisión es “nuestra estrategia es usar Docker para todos los proyectos”. En cualquier caso, serían dos decisiones:
    1- Analizar las ventajas e inconvenientes de usar Docker (principalmente tecnológica)
    2- Analizar DONDE se hace, en nuestras instalaciones o en La Nube (principalmente económica)

Si por Nube se entiende utilizar unos servicios concretos de un proveedor concreto, la decisión SÍ es tecnológica, pero no debe expresarse como “nuestra estrategia es el uso de La Nube” sino “nuestra estrategia es el uso de los servicios A y B del proveedor X” (habitualmente sin otras alternativas).

Una vez delimitado el sentido y alcance de la decisión, entonces realmente podremos analizar sobre los factores importantes (económicos, tecnológicos, seguridad, dependencia, nivel  de servicio, etc.) y tomar la decisión adecuada.

Por mucho que se ponga de moda, como cualquier otra tecnología, el uso de La Nube NO es la panacea, en unos casos puede ser muy útil y en otros casos un problema (y caro). Si nos acercamos corriendo a La Nube si analizarlo previamente, podemos encontrarnos con que es una Nube de tormenta...