Computación en la nube para profesionales de TI (3/6): el modelo de computación de Windows Azure
Versión traducida del artículo original de Yung Chou (Microsoft IT Pro Evangelist)
En la Parte 2, básicamente dijimos que “nube” quiere decir proveer “Negocios como Servicios”, es decir, volver disponible un tipo de negocio según la demanda. En todo lo que es comercio digital, gran parte de las empresas están habilitadas por TI. Por lo tanto, la nube es en esencia ofrecer TI como servicio, o TI disponible a demanda, en cualquier momento, lugar, y en cualquier dispositivo. En esto queremos convertir TI por medio de la nube. “A demanda” en el contexto de la nube, implica también una serie de atributos que se describieron en la Parte 1, incluyendo: acceso ubicuo a la red, recursos compartidos, pago por uso, y así sucesivamente.
Sin embargo, no se trata de implementar tecnologías como un medio que no tiene ningún fin. Toda la infraestructura, escritorios, servidores, SaaS/PaaS/IaaS, nube pública, nube privada, etc., todo se trata de una misma cosa: proveer “aplicaciones” a usuarios autorizados, con las cuales se realizan las transacciones y los negocios se llevan a cabo. Y sea en la nube o en las instalaciones, se trata de aplicaciones. Entonces ¿en qué se diferencia una aplicación tradicional de una en la nube? ¿Y cuánto de esto concierne al profesional de TI?
Modelo tradicional de informática
Una aplicación tradicional de tres niveles, incluye front-end, un nivel medio y back-end. Para una aplicación web, el front-end es un sitio web que presenta la aplicación. El nivel medio sostiene la lógica del negocio, mientras se conecta al back-end donde se almacenan los datos. Y a lo largo de la ruta de datos los balanceadores de carga (Load Balancers) se ponen en marcha para optimizar el rendimiento, mientras se construyen clusters para alta disponibilidad. Esto es un modelo analítico bien entendido y modelado. Y la arquitectura de tres niveles representa un modelo de diseño para integrar aplicaciones diseñadas recientemente, antes de la emergencia de la era de la nube. El concepto está ilustrado a continuación, y algunos encontrarán similitudes con la idea aplicable a una arquitectura para aplicaciones en la nube:
Modelo de computación en la nube
Windows Azure optimiza el hardware mediante la virtualización y provee servicios de informática a demanda, basados en la nube. La nube es una serie de recursos de informática interconectados, localizados en diferentes centros. Generalizando, hay tres componentes claves de arquitectura para una aplicación basada en Azure, de la misma manera que en el modelo anterior: Cómputo, Almacenamiento y Fabric Controller, como se muestra más abajo. En este modelo, cómputo es la capacidad de ejecutar código, es decir, correr una aplicación. Almacenamiento es dónde se guardan los datos. En Windows Azure, cómputo y almacenamiento se definen por Roles, y se ofrecen como servicios del sistema. Un Rol cuenta con archivos de configuración que especifican cómo un componente debe correr en el entorno de ejecución. Mientras que Fabric Controller es un subsistema que monitorea y toma decisiones respecto a qué, cuándo y dónde ejecutar y optimizar una aplicación web.
Específicamente en los servicios de cómputo, existen Web Role, Worker Role, y VM Role. El Web Role, implementado con IIS corriendo en una máquina virtual, es la función de aceptar los pedidos de HTPP y HTPPS desde endpoints públicos. Y en Windows Azure, todos los endpoints públicos son procesados por los LB (Load Balancers) automáticamente. Por otro lado, Worker Role no emplea IIS, y es un ejecutable para la administración de datos, y otras funciones como trabajo de fondo para la aceptación de pedidos y la realización de tareas. Por ejemplo, puede ser usado para instalar un determinado servidor web o alojar una base dato según se necesite.
Los roles se comunican pasando mensajes a través de queues o sockets. El número de instancias de un Rol empleado está determinado por la configuración de una aplicación, y cada Rol es asignado por Windows Azure a una única instancia de una máquina virtual Windows Server. Abajo, mostramos un ejemplo real del uso de Windows Azure para una aplicación de listas de compras. El proceso actual de desarrollo y las consideraciones al respecto abarcan mucho más, cómo puedes ver en este artículo.
Y por último, VM Role se refiere a una máquina virtual. Un desarrollador puede emplear VM Role (es decir, subir una imagen del SO en un VHD) para ejecutar servicios de Windows, programar tareas, y personalizar el entorno de tiempo de ejecución, de una aplicación de Windows Azure. Este disco virtual (VHD) se crea usando una máquina on-premise de Windows Server, que luego se sube a Windows Azure. Una vez que está almacenado en la nube, el VHD puede ser cargado a demanda en un VM Role y ejecutado. Los clientes pueden, y necesitan, configurar y mantener el SO en el VM Role. A continuación se describe la metodología.
Tengamos en cuenta que el VM Role es, sin embargo, “apátrida”. Específicamente, está diseñado para facilitar la implementación de una aplicación de Windows Azure que puede requerir una instalación larga, frágil o que no puede ser automatizada por scripting. Este Rol es especialmente adecuado para migrar aplicaciones existentes on-premise y hacerlas correr como servicios alojados en Windows Azure. Puedes revisar la introducción y el paso a paso para aprender cómo implementar exitosamente VM Role en Windows Azure.
El otro componente de una aplicación basada en la nube es Windows Azure Storage Services, que cuenta con cinco tipos de almacenamiento, incluyendo:
· Binary Large Object (BLOB) para datos a largo plazo
o Se trata de un objeto binario con los metadatos <name, value>
o Cada BLOB puede ser de hasta 50GB y replicarse tres veces para confiabilidad
o Los BLOBs están agrupados dentro de contenedores lógicos y se puede acceder a ellos desde cualquier servidor o a través de una URL
· Tablas para almacenamiento estructurado que puede ser requerido
o Una tabla puede tener millones de filas y columnas, y replicarse tres veces para confiabilidad
o Está particionada por filas y distribuida en los nódulos de almacenamiento de Windows Azure
o Las tablas no son completamente tablas de SQL, ya que no hay operador de combinación
· Queue para la fiabilidad de comunicaciones entre los servicios, basadas en mensajes
Y dentro de un nodo de cómputo, existen dos tipos:
· Windows Azure Drive o X-Drive, como se muestra a la derecha
o X-Drive es una página blob, formateada como un sólo volumen de disco duro virtual NTFS
o Una sola instancia de Rol puede montar un X-Drive en modo exclusivo de lectura/escritura, o bien muchas instancias pueden montar un solo X-Drive en sólo lectura. Estas dos opciones no pueden combinarse. Por lo general, una instancia monta un X-Drive en modo lectura/escritura y toma periódicamente una imagen instantánea del X-Drive, que puede ser simultáneamente montada en modo de sólo lectura por otras instancias.
· Disco local disponible para cada Rol en una máquina virtual
o Los datos almacenados en un disco local de una máquina virtual, de todos modos no persisten, desde el momento en que un Rol no se encuentra siempre configurado y recargado, según la necesidad, en un nodo particular.
Existen herramientas para facilitar la administración de las instancias de almacenamiento. Una interfaz gráfica como Azure Storage Explorer puede hacer mucho más productiva la experiencia la experiencia de gestionar y revisar los datos. Notemos que de todos modos, los tipos de almacenamiento mencionados arriba no son bases de datos relacionales, sobre las cuales están hoy construidas muchas aplicaciones. SQL Azure, parte de la plataforma Azure, es básicamente SQL en la nube. Y para los administradores de bases de datos, se trate de SQL on-premise o en la nube, se manejan de la misma manera.
Un ejemplo de la utilización de Windows Azure Storage se presenta en el siguiente esquema. Se trata de una aplicación web para la gestión de activos digitales. Utiliza el Worker Role como procesador de fondo para generar y colocar imágenes, y más tarde recuperarlas por medio del Web Role, desde el espacio de almacenamiento implementado con BLOB.
En resumen, muchos conceptos de la arquitectura tradicional de tres niveles son aplicables para diseñar aplicaciones en la nube utilizando el modelo de computación de Windows Azure. Es decir, se emplea el Web Rol como front-end para aceptar pedidos HTTP/HTTPS, y el Worker Role para tareas específicas de la misma forma que los servicios tradicionales ASP.NET. Hay varios tipos de almacenamiento provistos por Azure. Y existe también SQL Azure, que vuelve conveniente migrar los datos existentes o integrar las bases de datos on-premise con aquellas en la nube