Evolución de la informática en la nube
- 9 minutos
Vamos a echar un vistazo a la evolución de la informática en la nube.
Eventos e innovaciones
El concepto de la informática en la nube apareció por primera vez durante los primeros años de la década de 1950, cuando varios académicos, como Herb Grosch, John McCarthy y Douglas Parkhill, imaginaron la informática como un servicio público similar a la energía eléctrica.1, 2 En las décadas inmediatamente posteriores, varias tecnologías emergentes sentaron las bases de la informática en la nube. En años más recientes, el crecimiento rápido de la World Wide Web y el surgimiento de los gigantes de Internet, como Google y Amazon, finalmente llevaron a la creación de un entorno económico y empresarial que permitió el desarrollo del modelo de informática en la nube.

Figura 5: evolución de la informática en la nube
Evolución de la informática en la nube
Desde la década de 1960, algunas de las primeras formas de equipos que usaban las organizaciones eran sistemas centrales. Varios usuarios podían compartir y conectarse a los sistemas centrales a través de conexiones en serie básicas mediante terminales. El sistema central era responsable de toda la lógica, el almacenamiento y el procesamiento de los datos, y los terminales conectados tenían una capacidad de cálculo limitada, si tenían alguna. El uso de estos sistemas fue generalizado durante más de 30 años y, hasta cierto punto, siguen existiendo en la actualidad.
Con el surgimiento de la informática personal, los procesadores y la memoria más baratos, más pequeños y más eficaces produjeron un cambio en la dirección opuesta, en el que los usuarios ejecutaban su propio software y datos almacenados localmente. A su vez, esta situación generó problemas de uso compartido de datos y reglas ineficaces para mantener el orden dentro del entorno de TI de una organización.
Gradualmente, a través del desarrollo de tecnologías de red de alta velocidad, aparecieron las redes de área local (LAN) que permitieron que los equipos pudieran conectarse y comunicarse entre sí. Por ello, los proveedores diseñaron sistemas que podían encapsular las ventajas de los equipos personales y los sistemas centrales, lo que dio lugar a aplicaciones cliente-servidor que se popularizaron a través de redes LAN. Por lo general, los clientes ejecutaban software cliente (y procesaban algunos datos) o un terminal (para aplicaciones heredadas) que se conectaban a un servidor. En el modelo cliente-servidor, el servidor era propietario de la lógica de datos, el almacenamiento y la aplicación.
A la larga, en la década de 1990, la era de la información global surgió con la adopción rápida de Internet. El ancho de banda de red mejoró en muchos niveles de magnitud, desde el acceso telefónico normal a la conectividad de fibra dedicada de la actualidad. Además, apareció hardware más económico y más eficaz. Del mismo modo, la evolución de los sitios web dinámicos y la World Wide Web necesitaban arquitecturas de varios niveles.
Las arquitecturas de varios niveles habilitaron la modularización del software mediante la separación de la presentación, la lógica de aplicación y el almacenamiento como entidades individuales. Con esta modularización y desacoplamiento, no pasó mucho tiempo antes de que estas entidades de software individuales se ejecutaran en servidores físicos distintos (por lo general, debido a diferencias en los requisitos de hardware y software). Esto provocó un aumento de los servidores individuales en las organizaciones, pero también llevó a una utilización promedio deficiente del hardware del servidor. En 2009, International Data Corporation (IDC) estimó que el servidor x86 promedio tenía una tasa de utilización aproximada de entre el 5 % y el 10 %.3
En la década de 2000, la tecnología de máquinas virtuales maduró lo suficiente para estar disponible como software comercial. La virtualización permite encapsular todo un servidor como una imagen, la que se puede ejecutar sin problemas en el hardware y permite que varios servidores virtuales se ejecuten de manera simultánea y compartan recursos de hardware. De este modo, la virtualización permite consolidar los servidores, lo que, en consecuencia, mejora el uso del sistema.
De manera simultánea, la computación en red cobró fuerza en la comunidad científica en un esfuerzo por solucionar problemas a gran escala de forma distribuida. Con la computación en malla, los recursos informáticos de varios dominios administrativos trabajan al unísono para un objetivo común. La computación en malla incorporó muchas herramientas de administración de recursos (por ejemplo, programadores y equilibradores de carga) para administrar recursos informáticos a gran escala.
A medida que avanzaban las distintas tecnologías informáticas, también lo hacía la economía de la informática. Incluso durante los primeros días de la informática basada en los sistemas centrales, empresas como IBM ofrecían hospedar y ejecutar equipos y software para varias organizaciones, como bancos y aerolíneas. En la era de Internet, el hospedaje web de terceros también se popularizó. A pesar de ello, con la virtualización, los proveedores tienen una flexibilidad incomparable en lo que respecta a alojar varios clientes en un solo servidor, compartiendo el hardware y los recursos entre ellos.
El desarrollo de estas tecnologías, junto con el modelo económico de la informática de utilidad, es lo que finalmente evolucionó en la informática en la nube.
Tecnologías de habilitación
La informática en la nube tiene varias tecnologías de habilitación, entre las que se incluyen redes, virtualización y administración de recursos, informática de utilidad, modelos de programación, computación paralela y distribuida y tecnologías de almacenamiento.

Figura 6: tecnologías de habilitación en la informática en la nube
La aparición de tecnologías de redes omnipresentes de alta velocidad ha contribuido en gran medida a la informática en la nube como un paradigma viable. Las redes modernas permiten que los equipos se comuniquen de una manera rápida y confiable, lo que es importante si se usan servicios de un proveedor de nube. Esto permite que la experiencia del usuario con el software que se ejecuta en un centro de datos remoto sea comparable con la experiencia del software que se ejecuta en un equipo. El correo electrónico basado en web es un ejemplo popular, al igual que el software de productividad de oficina. Además, la virtualización es clave para habilitar la informática en la nube. Como se ha mencionado anteriormente, la virtualización permite administrar la complejidad de la nube a través de la abstracción y el uso compartido de sus recursos entre los usuarios a través de varias máquinas virtuales. Cada máquina virtual puede ejecutar su propio sistema operativo y los programas de aplicaciones asociados. La virtualización de la informática en la nube se trata en un módulo posterior.
Tecnologías como los sistemas de almacenamiento a gran escala, los sistemas de archivos distribuidos y las arquitecturas de bases de datos novedosas son cruciales para administrar y almacenar datos en la nube. Las tecnologías de almacenamiento en la nube se describen en un módulo posterior.
La computación de utilidad ofrece numerosas estructuras de cobro para el alquiler de recursos informáticos. Entre los ejemplos se incluyen el pago por hora de recurso, el pago por rendimiento garantizado y el pago por datos almacenados al mes.
La informática paralela y distribuida permite que las entidades distribuidas ubicadas en equipos conectados en red puedan comunicarse y coordinar sus acciones para resolver determinados problemas, representados como programas paralelos. La escritura de programas paralelos para clústeres distribuidos es intrínsecamente complicada. Para lograr una gran eficiencia y flexibilidad de programación en la nube, se necesita un modelo de programación.
Los modelos de programación de nubes proporcionan a los usuarios la flexibilidad de expresar programas paralelos como unidades de cálculo secuenciales (por ejemplo, funciones en MapReduce y vértices en GraphLab). Los sistemas en tiempo de ejecución de estos modelos de programación suelen paralelizar, distribuir y programar las unidades computacionales, administrar la comunicación entre ellas y tolerar los errores. Los modelos de programación en la nube se describen en un módulo posterior.
Referencias
- Simson L. Garfinkel (1999). Arquitectos de la Sociedad de la Información: Treinta y Cinco Años del Laboratorio de Ciencias de la Computación en MIT Press
- Douglas J. Parkhill (1966). El desafío de la utilidad informática Addison-Wesley Publishing Company, Reading, Massachusetts
- Michelle Bailey (2009). La economía de la virtualización: Avanzando hacia un modelo de costos basado en aplicaciones. Documento técnico de IDC patrocinado por VMware