Blog de JoseMPelaez

Aprendimiento: aprender del entorno con atrevimiento

El software de la nube

Posted by josempelaez en Viernes, 15 agosto 2008

El procesamiento de datos en paralelo tiene más de 40 años de historia. Que ahora se haga con los estándares de software de internet y se etiquete con «cloud computing» no le hace algo novedoso.

El comentario que hice en Infoman el sábado pretendía relativizar un eventual mensaje excesivamente cauteloso y general que hubiera podido dejar flotando. A pesar de su consejo de probar, podría pensarse que la «cloud computing» es algo a lo que acercarse con más precaución de la habitual. Dice que «como todas las modas, hay que esperar». Rodolfo añade que:

«la realidad de los servicios informáticos se descubre una vez ha pasado la primera ola de promesas y se pueden contar los éxitos y fracasos».

Yo lo veo de otra forma. No creo que la oferta de Amazon de «computación en la nube» (web) sea una “primera ola”. Por ello me puse a escribir el lunes. Quería analizar qué es lo realmente nuevo. Sigamos.

vax_clusterEl buen funcionamiento comercial de varios ordenadores trabajando conjuntamente en una red se remonta a 1984. Este año DEC sacó su “VAXcluster” con VMS. Estos sistemas se orientaban a procesos críticos de negocio. Varias máquinas trabajaban de forma conjunta ofreciendo más prestaciones y recursos redundantes. Respondieron muy bien, y lo siguen haciendo bajo la marca HP.

La ingeniería de los primeros procesos en paralelo con varios ordenadores, no obstante, se remonta a 1967. Se necesitaba distribuir trabajos de proceso y compartir archivos entre ordenadores. No debemos olvidar que internet y varias redes de ordenadores Unix —conectadas mediante el protocolo de conmutación de paquetes TCP/IP— se desarrollaron en los 70.

Podemos decir que Sun Microsystems ofrecía una proto «internet computing» en 1983. Según expone John Gage en el vínculo de la entrada previa, pronto emplearon el lema: «la red es la computadora». Usaban TCP/IP para interconectar sus máquinas, que utilizaban una variante del BSD Unix (Solaris).

Las redes de área local proliferan a partir de finales de los 80 para integrar los micro ordenadores en la informática corporativa. Implican otro espaldarazo a la computación distribuida. La arquitectura cliente/servidor reparte las tareas de proceso entre distintas máquinas especializadas (datos, cálculo, presentación).

En los segundos 90 se habla ya de «grid computing» para referirse a redes de ordenadores menos acoplados que en los clusters anteriores. Un distingo relevante era que los equipos no tenían que ser homogéneos. La metáfora hace referencia a la semejanza entre esta infraestructura de computación y «The Grid». Éste es el apelativo que el sistema de generación y distribución eléctrica recibe en los EE.UU.

seti_at_homeNo hay que olvidar otros hitos de la “computación en red”: en 1999 nacieron SETI@home y Napster. Junto a otras propuestas, permitían la colaboración entre PCs. Ello supuso un hito significativo en el establecimiento y difusión de las redes P2P (peer-to-peer) para compartir archivos y procesar información en paralelo.

Por consiguiente, podemos afirmar que hay muchas cosas probadas que “funcionan en la nube” desde hace años, aunque haya habido innovaciones. ¿Qué diferencia real hay entre el «cloud computing» de ahora y el «parallel processing» de hace 40 años?

La necesidad de proceso distribuido surge cuando un ordenador se queda corto para resolver un problema de cálculo, o de disponibilidad del sistema. Si una línea de telecomunicaciones conecta un terminal remoto con un ordenador central también puede unir dos o más ordenadores. Se pueden mandar bloques de programa, datos para ser tratados en paralelo y resultados de los procesos. Es una cuestión de programación modular, y de coordinación de los bloques de trabajo que se separan e integran para hacerlo.

Diseño modular, programación orientada a objetos, desarrollo basado en componentes, cohesión y acoplamiento, middleware, servicios web, arquitectura orientada a servicios… son la traslación de enfoques probados en la ingeniería civil o industrial a la construcción de software. Creo que los avances en los métodos y herramientas de desarrollo de programas, y su progresiva orientación a componentes encapsulados interoperables, son los que han permitido evolucionar un planteamiento antiguo.

Por un lado tenemos las aplicaciones construídas con módulos débilmente acoplados, que se pueden reusar, cambiar o reemplazar de manera gradual con menor riesgo. Éstos también permiten concebirlas para que sean ejecutadas en varios hilos de proceso paralelo. Por otro están las «máquinas virtuales» y herramientas evolucionadas de los sistemas operativos. Permiten ejecutar los procesos en varias equipos heterogéneos de manera simultánea, incluso si las aplicaciones que corren por encima no se diseñaron para ello.

system_network_mgmt¿Cómo pueden interconectarse fácilmente estos nuevos programas de mayor o menor nivel? Los protocolos, lenguajes y esquemas estandarizados por la difusión de internet han aportado una solución al problema. Las redes corporativas de transmisión de datos que conectaban los equipos de AT&T, IBM y DEC eran las tres mayores del mundo a primeros de los 80, pero no se entendían bien. Cada una se gestionaba con un protocolo de comunicaciones diferente que dificultaba los intercambios de datos entre redes. Internet fue cambiando paulatinamente este panorama, que aún se alteró más rápidamente con la expansión de la aplicaciones de la web estándar a partir de 1995.

En mi opinión, lo único que pudiera haber de nuevo en la «cloud computing» actual es el software específico de “paralelización” o de aplicación que se esté utilizando. Los conceptos están probados desde hace mucho tiempo y, en muchos casos, se usan herramientas probadas o de código abierto.

Ahora bien, como en toda implementación de un nuevo sistema de arquitectura testeada, hay unos ciclos de maduración del software que se pueden ejecutar mejor o peor. Además, puede avanzarse en fases muy largas (como en las versiones de Windows), o en etapas temporales cortas e incrementales de menor riesgo (como en los servicios de Google).

Cuando empezó con las subastas, Amazon tuvo que cambiar la plataforma típica de las “puntocom” (servidores de datos y de aplicaciones) para afrontar los nuevos retos y resolver los serios problemas que ya tenía. Tras haber probado con un mainframe, acertó con una arquitectura distribuida centrada en La Red.

A Bezos le gusta decir que, en el fondo, Amazon es una empresa de software. Han ido desarrollando sus aplicaciones y utilidades desde que empezaron. En el caso de «la nube de Amazon», por tanto, mi pregunta sería: ¿podemos confiar en el trabajo hecho por sus desarrolladores? ¿Qué han demostrado en los años que llevan explotando sus AWS y, en particular, S3 y EC2? ¿Existen en el mercado mejores alternativas a su oferta actual?

En nuevas entradas continuaré con estas reflexiones y trataré de abordar las cuestiones pendientes de las precedentes.


[Imagen 1: Esquema VAX-Alpha cluster. HP ]
[Foto 2: La unión hace la superfuerza. rmundaca]
[Imagen 3: Comunicaciones digitales. Human Productivity Lab]

Entradas relacionadas: Red como computadora, La nube de Amazon.

2 comentarios to “El software de la nube”

  1. […] Entradas relacionadas: Terminales ubicuos para navegar, El software de la nube […]

  2. […] modelo de  computación distribuida entre varias máquinas procesando información en paralelo que se usa desde la segunda mitad de los 60. Paralell y distributed computing fueron las expresiones que se […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: