La Plataforma Windows Azure

Si el otro día hablaba de cloud computing , hoy quiero explicar cuál es la propuesta de Microsoft en el ámbito del PaaS (Platform-as-a-Service). Nuestra solución de nube pública es la Plataforma Windows Azure. Si tuviera sólo 10 segundos para definirla, diría que la Plataforma Windows Azure es un conjunto de tecnologías en la nube que ofrecen una serie de servicios a los desarrolladores de aplicaciones. Dichos servicios están alojados en los data centers que Microsoft tiene distribuidos por varios continentes.

En palabras de Ray Ozzie, Director de Arquitectura de Software en Microsoft, "Windows Azure es una plataforma abierta para que cualquier desarrollador de cualquier parte del mundo pueda crear aplicaciones para su empresa y optimizar el servicio a sus clientes, es escalable, segura y altamente confiable para los servicios en internet".

Componentes de la Plataforma Windows Azure

La Plataforma Windows Azure está formada por los siguientes componentes:

  • Windows Azure: Proporciona un entorno basado en Windows para ejecutar aplicaciones y almacenar datos en servidores alojados en los data centers de Microsoft.
  • SQL Azure: Proporciona servicios de almacenamiento de datos relacionales en la nube. Está basado en SQL Server.
  • Windows Azure AppFabric: Proporciona servicios en la nube para conectar aplicaciones entre sí (tanto aplicaciones en la nube como aplicaciones locales).

 

PlataformaWindowsAzureCompleta

En la figura anterior podemos ver esquematizado cómo la Plataforma Windows Azure no está pensada únicamente para aplicaciones web en la nube sino que también contempla otros escenarios con aplicaciones híbridas locales que estén formadas por ejemplo por un cliente rico instalado en los PCs de los usuarios mientras que la lógica y el almacenamiento de la aplicación están en Windows Azure. Otra aplicación híbrida clásica serían aplicaciones móviles que empleen servicios en Azure.

Veamos un poco más en detalle cada uno de los componentes de la plataforma.

Windows Azure

Windows Azure es básicamente una plataforma para ejecutar aplicaciones Windows y almacenar sus datos en la nube.

image

En esta figura observamos como Windows Azure se ejecuta sobre miles de servidores ubicados en los data centers de Microsoft y accesibles desde Internet.

Los servicios de Computación de Windows Azure son máquinas virtuales con una versión de Windows Server 2008 optimizada para su funcionamiento en la nube. Podemos contratar distintos tamaños de máquinas virtuales siendo la más básica un máquina virtual con 1,6 GHz de CPU; 1,75 GB de RAM y 225 GB de almacenamiento local. Una de las ventajas de Windows Azure es que el desarrollador no se tiene que preocupar en instalar o gestionar sus máquinas virtuales. De todo ello se encarga el Controlador de Windows Azure. Si por ejemplo, nuestra solución está desplegada en 4 máquinas virtuales balanceadas y una de ellas tiene algún problema y deja de responder, automáticamente el controlador de Windows Azure lo detecta y despliega nuestra aplicación en una nueva máquina virtual sin necesidad de ninguna intervención por nuestra parte.

En Windows Azure tengo 2 tipos de máquinas virtuales:

  • Web Role: Permite ejecutar aplicaciones y servicios que funcionen bajo IIS. Un ejemplo sería aplicaciones ASP.NET y servicios WCF. Habitualmente los web roles forman el frontend de nuestra aplicación.
  • Worker Role: Está pensado para procesos en segundo plano que se estén ejecutando continuamente. Un ejemplo sería un servicio de procesamiento y comparación de tarifas aéreas en un sitio web de turismo. Habitualmente los worker roles forman el backend de nuestra aplicación.

Es importante señalar que en Windows Azure no dispongo de privilegios de administrador sobre las máquinas virtuales por lo que si una aplicación requiere estos privilegios no se podrá instalar en Azure. Está previsto que de aquí a final de año esté disponible un nuevo rol de máquina virtual en la que se podrán realizar este tipo de instalaciones aunque todavía no hay más detalles.

En cuanto al Almacenamiento Windows Azure ofrece distintos tipos de almacenamiento no relacional para nuestras aplicaciones:

  • Blobs: Se emplean para el almacenamiento de todo tipo de archivos y sus metadatos. Un único blob permite almacenar hasta 1 TB de información.
  • Tablas: Se utilizan para el almacenamiento de datos estructurados pero no relacionales como objetos de nuestra aplicación, caché, etc. Una tabla está formada por un conjunto de entidades homogéneas o heterogéneas.
  • Colas: Son útiles para almacenar mensajes y se emplean habitualmente para comunicar los web roles con los worker roles de una aplicación. Las colas presentan un sistema de comunicación fiable y asíncrono.
  • Windows Azure Drive: Permite a las aplicaciones en Azure montar unidades de disco NTFS. Esto facilita también mucho la migración de aplicaciones a Azure.

 

Microsoft SQL Azure 

Microsoft SQL Azure proporciona la funcionalidad de SQL Server en la nube. Está basado en SQL Server 2008 pero optimizado para su funcionamiento en un entorno en el que prima la escalabilidad y la alta disponibilidad. En la actualidad podemos contratar bases de datos desde 1GB hasta 50GB de almacenamiento máximo.

image

En general adaptar mi aplicación a SQL Azure es tan sencillo como cambiar la cadena de conexión de la misma para que en lugar de apuntar a mi SQL Server local, apunte al SQL Server en la nube. Tenemos que tener en cuenta eso sí, que hoy en día SQL Azure básicamente proporciona el motor relacional de SQL Server en la nube. Aunque es algo que está en el roadmap de Azure, en el momento actual no se dispone de Reporting Services ni de los servicios de Business Intelligence que tiene SQL Server (cubos OLAP, SSIS, etc.).

 

Windows Azure Platform AppFabric

 

Windows Azure platform AppFabric proporciona servicios de conectividad segura con otras aplicaciones locales o en la nube. Está formado por dos servicios:

  • Service Bus: Permite conectar varias aplicaciones entre sí aunque estas estén situadas detrás de cortafuegos y NAT.
  • Access Control: Nos proporciona servicios de autenticación y autorización para servicios web de tipo REST. Permite escenarios de autenticación federada con distintos proveedores de identidades.

 

image

En la figura anterior se muestra un esquema del funcionamiento del Service Bus que permite el intercambio seguro de mensajes entre aplicaciones que pueden encontrarse separadas en distintas redes. El Service Bus es un componente fundamental si queremos crear aplicaciones híbridas que accedan a datos o servicios locales por ejemplo. De esta forma, si nuestra aplicación en la nube tiene que acceder a datos en un SQL Server local, puedo crear un servicio local que exponga estos datos y luego hacerlo accesible a mi aplicación en Windows Azure mediante el Service Bus de AppFabric.

 

Nada más. Espero que aquellos que no conocíais la Plataforma Windows Azure, tengáis ya un poco más claro cuáles son sus componentes y sus posibilidades. Para más información:

https://msdn.microsoft.com/es-es/windowsazure

https://www.windowsazure.com