Casi todas las aplicaciones tienen que acceder a una lmacén de datos en algún punto de su ejecución, ya sea a base de datos, a archivo,… cunado alojamos una aplicación en la nube esto no cambia, necesitamos almacenes de datos donde persisitir y de dónde recuperar información.

Dentro de la Plataforma Windows Azure tenemos diferentes opciones de almacenamiento disponibles. Podemos consumir servicios de almacenamiento específicos o utilizar el almacenamiento disponible en las máquinas virtuales donde se alojan las aplicaciones.

Cuando alojamos una aplicación en Windows Azure, al fin de al cabo estamos utilizando una máquina virtual que tiene espacio en disco y dependiendo del tamaño de instancia contratado tendremos hasta 2 teras de almacenamiento en disco disponible.

La contrapartida de utilizar este almacenamiento radica en la naturaleza de las máquinas virtuales. Uno de los motivos para alojar aplicaciones en la nube es para escalar. Podemos multiplicar el número de máquinas atendiendo el servicio para atender más peticiones. Bajo esta idea, lo que importa es el servicio entregado y no cada una de las máquinas dando ese servicio. Cuando subimos o bajamos el número de instancias que corren estamos creando y destruyendo máquinas.  Si almacenamos datos del servicio (concepto global) en las instancias (individual) tendremos que encargarnos de sincronizar la información entre todas las instancias manualmente y estaremos expuestos a pérdidas de informacion por la variación en el número de instancias.

Para evitar estos problemas existen servicios de almacenamiento externos a nuestras aplicaciones preparados para atender a sus necesidades. Dentro de la plataforma Windows Azure podemos diferenciar dos bloques de servicios: Windows Azure Storage y SQL Azure.

La diferencia fundamental entre estos servicios son el volumen de datos y el modo de acceso a los mismos. En SQL Azure tenemos un limite superior de 50Gigas, pero es un modelo relacional, similar a SQL Server, donde podemos acceder con SQL y donde la capa de acceso a datos será similar (la misma en muchos casos) a las aplicaciones no alojadas en la nube. Limitaciones y guias para SQL Azure

En Windows Azure Storage, no tenemos el límite de 50 gigas, pero tendremos que adaptar la capa de acceso a datos de nuestras aplciaciones para poder acceder al servicio. No es un modelo SQL tradicional donde accedamos con un lenguaje relacional a los datos. Dentro de Windows Azure Storage tenemos diferentes servicios para almacenar la información:

Blobs Para almacenamiento de datos binarios/bloques de información. Hay dos tispo, los Block Blobs, optimizados para streaming y los Page Blobs, optimizados para R/W.

Message Queues Las colas de mensajes pueden actuar como forma de enrutar trabajo entre los diferentes roles dentro de una aplicación de una forma durable y escalable.

Tables Las tablas son un almacenamiento estructurado no-relacional. Podemos pensar en términos de NOSQL.

Drives o unidades. Son espacios NTFS donde podemos utilizar las APIs tradicionales de lectura y escritura. La diferencia de utilizar un servicio de drive o utilizar el drive de la máquina virtual es que el servicio de drive está disponible para todos los roles y preparado para escalar.

 

Los servicios de almacenamiento están simulados en el entorno de desarrollo, para que en la fase de desarrollo y pruebas no haya porqué que consumir directamente almacenamiento alojado en la nube.

Cabe destacar que los servicios de almacenamiento pueden consumirse de forma independiente. Si tenemos una aplicación en PC, o en teléfono o en cualquier aplicación conectada a internet, podemos utilizar los servicios de almacenamiento alojados en Windows Azure.

Recuerda que en el centro de desarrollo de Windows Azure en MSDN España tienes más información, videos, laboratorios, noticias,… http://msdn.microsoft.com/es-es/azure

Gracias & happy hacking!

David Salgado – Web & Cloud Technical Evangelist

http://davidsalgado.mehttp://twitter.com/davidsb