You are on page 1of 27

PRESENTACIN DE WINDOWS AZURE

DAVID CHAPPELL DICIEMBRE DE 2009

PATROCINADO POR MICROSOFT CORPORATION

CONTENIDO
Visin general de Windows Azure ....................................................................................................... Servicio de informtica ..................................................................................................................... Servicio de almacenamiento ............................................................................................................. La estructura .................................................................................................................................... Utilizacin de Windows Azure: escenarios ....................................................................................... Crear una aplicacin web escalable .................................................................................................... .... Crear una aplicacin de procesamiento paralelo ................................................................................... 1 Crear una aplicacin web escalable con procesamiento en segundo plano .......................................... 1 Crear una aplicacin web con datos relacionales ................................................................................... 1 Utilizar almacenamiento cloud desde una aplicacin interna u hospedada .......................................... 1 Comprensin de Windows Azure: una visin ms detallada .............................................................. 1 Desarrollar aplicaciones de Windows Azure........................................................................................... 1 Examinar el servicio de informtica ........................................................................................................ 1 Examinar el servicio de almacenamiento ............................................................................................... 1 Blobs .................................................................................................................................................. 1 Tablas ................................................................................................................................................ Colas .................................................................................................................................................. 2 Examinar la estructura ............................................................................................................................ 2 Prximos pasos................................................................................................................................. 2 Conclusiones .................................................................................................................................... 2 Ms informacin .............................................................................................................................. 2 Acerca del autor ............................................................................................................................... 2

VISIN GENERAL DE WINDOWS AZURE


La informtica cloud ya lleg. Ejecutar aplicaciones en PC dentro de un centro de datos con acceso desde Internet puede traer muchas ventajas. Pero sin importar dnde se ejecuten, las aplicaciones se crean en una especie de plataforma. Para las aplicaciones internas, esta plataforma por lo general incluye un sistema operativo, una forma de almacenar datos y posiblemente ms. Las aplicaciones que se ejecutan en el cloud necesitan una base similar. El objetivo de Microsoft Windows Azure es ofrecer esto. Al formar parte de la plataforma Windows Azure ms amplia, Windows Azure es la base para ejecutar aplicaciones de Windows y almacenar datos en el cloud. El Grfico 1 demuestra esta idea.

Grfico 1: las aplicaciones de Windows Azure se ejecutan en centros de datos de Microsoft y pueden accederse a travs de Internet. Como se muestra en el grfico, Windows Azure se ejecuta en PC dentro de centros de datos de Microsoft. En lugar de proporcionar software que los clientes de Microsoft pueden instalar y ejecutar en sus propias PC, Windows Azure es un servicio: los clientes lo utilizan para ejecutar aplicaciones y almacenar datos en PC con acceso desde Internet de Microsoft. Esas aplicaciones pueden ofrecer servicios a empresas, consumidores o ambos. A continuacin se mencionan algunos ejemplos de tipos de aplicaciones que pueden crearse en Windows Azure: Un proveedor de software independiente (ISV) podra crear una aplicacin para usuarios comerciales, un mtodo que por lo general se refiere a Software como servicio (SaaS). Los ISV pueden utilizar Windows Azure como base para varias aplicaciones SaaS orientadas a los negocios. Es posible que un ISV cree una aplicacin SaaS para consumidores. Windows Azure se encuentra diseado para brindar soporte a software muy ampliable y, por lo tanto, es posible que una empresa

que planifica dirigirse al gran mercado de consumidores lo elija como plataforma para una nueva aplicacin. Las empresas pueden usar Windows Azure para crear y ejecutar aplicaciones que utilicen sus propios empleados. Mientras que esta situacin pueda no necesitar la enorme escala de una aplicacin para consumidores, la confiabilidad y la capacidad de administracin que ofrece Windows Azure pueden convertirlo en una opcin atractiva. Sin importar lo que realice una aplicacin de Windows Azure, la plataforma ofrece los mismos componentes fundamentales, como se demuestra en el Grfico 2.

Grfico 2: Windows Azure cuenta con 3 partes principales: el servicio de informtica, el servicio de almacenamiento y la estructura. Como lo sugieren sus nombres, el servicio de informtica ejecuta aplicaciones, mientras que el servicio de almacenamiento almacena datos. El tercer componente, la estructura de Windows Azure, ofrece una forma comn para administrar y monitorear aplicaciones que utilizan esta plataforma cloud. El resto de esta seccin presenta cada una de estas partes.

SERVICIO DE INFORMTICA
El servicio de informtica de Windows Azure puede ejecutar diferentes tipos de aplicaciones. Un objetivo muy importante de esta plataforma, no obstante, es brindar soporte a aplicaciones que cuentan con una gran cantidad de usuarios simultneos (en realidad, Microsoft ha manifestado que crear sus propias aplicaciones SaaS en Windows Azure, por lo que se ha impuesto altas expectativas). Lograr este objetivo al aumentarse (ejecutar en PC cada vez ms grandes) no resulta posible. Por el contrario, Windows Azure se encuentra diseado para brindar soporte a aplicaciones que puedan ampliarse, que ejecuten varias copias del mismo cdigo en muchos servidores genricos. Para lograrlo, una aplicacin de Windows Azure puede tener varias instancias, cada una de las cuales se ejecute en su propia PC virtual (VM). Cada VM se proporciona a travs de un hipervisor (basado en HyperV) que se haya modificado para su uso en un cloud de Microsoft, y ofrezca una interfaz de Windows para la instancia que contiene. Para ejecutar una aplicacin, un desarrollador accede al portal de Windows Azure a travs de su explorador web e inicia sesin con una ID de Windows Live. Luego, elige crear una cuenta de hosting para ejecutar aplicaciones, una cuenta de almacenamiento para almacenar datos o ambas. Una vez que el

desarrollador crea una cuenta de hosting, puede cargar su aplicacin especificando cuntas instancias sta necesita. Luego, Windows Azure crea las VM necesarias y ejecuta la aplicacin. En la primera versin de Windows Azure, se encuentran disponibles dos diferentes tipos de instancias para que utilicen los desarrolladores: instancias de rol web e instancias de rol de trabajo. El Grfico 3 demuestra esta idea.

Grfico 3: una aplicacin de Windows Azure puede consistir en instancias de rol web y/o instancias de rol de trabajo, cada una de las cuales se ejecuta en su propia PC virtual de Windows. Como su nombre lo sugiere, una instancia de rol web puede aceptar las solicitudes HTTP o HTTPS entrantes. Para permitir esto, se ejecuta en una VM que incluye Internet Information Services (IIS) 7. Los desarrolladores pueden crear instancias de rol web a travs de ASP .NET, Windows Communication Foundation (WCF) u otra tecnologa .NET que trabaje con IIS. A su vez, los desarrolladores pueden crear aplicaciones en cdigo nativo, en donde no se requiere utilizar .NET Framework. Esto significa que tambin pueden cargar y ejecutar otras tecnologas, como PHP y Tomcat basado en Java. Y como se demuestra en el Grfico 3, Windows Azure ofrece balanceo de carga de hardware integrado para distribuir pedidos en todas las instancias de rol web que forman parte de la misma aplicacin. Al ejecutar varias instancias de una aplicacin, Windows Azure permite que sta se ample. Debido a que el balanceo de carga de Windows Azure no permite crear una afinidad con una instancia de rol web especfica, no obstante, no existe una forma de garantizar que varios pedidos del mismo usuario se enviarn a la misma instancia. Por consiguiente, las instancias de rol web no deben tener estado. Cualquier estado especfico del cliente debe ingresarse en el almacenamiento de Windows Azure o enviarse al cliente luego de cada pedido. Las instancias de rol de trabajo son similares, pero no iguales a las de rol web. La gran diferencia reside en que las instancias de rol de trabajo con cuentan con IIS configurado, por lo que stas no se hospedan por

IIS. Por el contrario, son ejecutables por s mismas. Se permite ejecutar un servidor web, y es posible instalar un servidor web Apache en un rol de trabajo, pero resulta ms posible que una instancia de rol de trabajo funcione como un trabajo en segundo plano. Por ejemplo, es posible que una aplicacin utilice instancias de rol web para aceptar pedidos de usuarios y luego los procese ms adelante utilizando instancias de rol de trabajo. De forma similar, una aplicacin que selecciona entre grandes cantidades de datos de forma paralela puede utilizar muchas instancias de rol de trabajo para realizar la tarea. Un desarrollador puede utilizar solo instancias de rol web, solo instancias de rol de trabajo o una combinacin de ambas para crear una aplicacin de Windows Azure. Si aumenta la carga de la aplicacin, puede utilizar el portal de Windows Azure para pedir ms instancias de rol web, ms instancias de rol de trabajo o ms de ambas para su aplicacin. Si disminuye la carga, puede reducir la cantidad de instancias en funcionamiento. Para cerrar por completo la aplicacin, el desarrollador puede cerrar todas las instancias de rol web y rol de trabajo. Windows Azure tambin exhibe una API, la cual permite que todo esto se realice de forma programtica (la cantidad de instancias en funcionamiento no requiere intervencin manual), pero la plataforma no ampla aplicaciones de forma automtica en funcin de sus cargas. Las VM que ejecutan las instancias de rol web y rol de trabajo tambin ejecutan un agente de Windows Azure, como se demuestra en el Grfico 3. Este agente exhibe una API relativamente simple, la cual permite que una instancia interacte con la estructura de Windows Azure. Por ejemplo, una instancia puede utilizar el agente para encontrar la raz de un recurso de almacenamiento local en la instancia de la VM donde se ejecuta. Para crear aplicaciones de Windows Azure, un desarrollador utiliza los mismos lenguajes y las mismas herramientas que usa en cualquier aplicacin de Windows. Puede crear un rol web utilizando, por ejemplo, ASP .NET y Visual Basic, o a travs de WCF y C#. De forma similar, puede crear un rol de trabajo en uno de estos lenguajes .NET, trabajar directamente en C++ sin .NET Framework o utilizar Java. Y mientras Windows Azure ofrece complementos para Visual Studio, no se requiere utilizar este entorno de desarrollo. Por ejemplo, un desarrollador que haya instalado PHP posiblemente decida utilizar otra herramienta para crear aplicaciones. Para permitir que se monitoreen y se depuren aplicaciones de Windows Azure, cada instancia puede solicitar una API de registro que ingrese informacin a un registro comn de aplicaciones. Un desarrollador tambin puede configurar el sistema para reunir contadores de rendimiento para una aplicacin, medir el uso de su CPU, almacenar fallos si existieren y ms. Esta informacin se guarda en el almacenamiento de Windows Azure y el desarrollador tiene la libertad de crear un cdigo para examinarla. Por ejemplo, si una instancia de rol de trabajo falla tres veces en una hora, el cdigo personalizado puede enviar un correo electrnico al administrador de la aplicacin. Advierta que Windows Azure no lo ofrece por s mismo; de lo contrario, permite que las aplicaciones generen y almacenen los datos que puede utilizar un desarrollador para crear este tipo de servicio. Resulta importante advertir que un desarrollador no puede proporcionar su propia imagen de VM para que se ejecute Windows Azure. Por el contrario, la plataforma ofrece y conserva su propia versin de Windows. Los desarrolladores se enfocan en la creacin de aplicaciones que se ejecutan en Windows Azure. Adems, esas aplicaciones pueden ejecutarse solo en modo de usuario: no se permite el acceso de administrador. Esta restriccin permite que Windows Azure actualice el sistema operativo en cada VM sin preocuparse si la aplicacin ha realizado modificaciones a nivel de sistema. En lugar de requerir que los

desarrolladores instalen revisiones de Windows, por ejemplo, Windows Azure se ocupa de esto. El objetivo es permitir que las aplicaciones se ejecuten de forma continua mientras se minimiza el esfuerzo administrativo requerido. La capacidad para ejecutar el cdigo es una parte fundamental de la plataforma cloud, pero no es suficiente. Las aplicaciones a su vez necesitan un almacenamiento persistente que conserve la informacin, aun cuando no se encuentran en funcionamiento. Cubrir esta necesidad es el objetivo del servicio de almacenamiento de Windows Azure, lo cual se describe a continuacin.

SERVICIO DE ALMACENAMIENTO
Las aplicaciones trabajan con datos de diferentes formas. Por consiguiente, el servicio de almacenamiento de Windows Azure ofrece varias opciones. El Grfico 4 muestra las opciones.

Grfico 4: el almacenamiento de Windows Azure ofrece blobs, tablas y colas. La forma ms sencilla de almacenar datos en Windows Azure es a travs de blobs. Un blob contiene datos binarios y, como sugiere el Grfico 4, existe una jerarqua simple: una cuenta de almacenamiento puede contar con uno o ms contenedores, cada uno de los cuales incluye uno o ms blobs. Los blobs pueden ser grandes y pueden tener metadatos asociados, como informacin sobre dnde se realiz una fotografa JPEG o quin es el intrprete de un archivo MP3. Los blobs tambin ofrecen un almacenamiento en segundo plano para XDrives, un mecanismo para visualizar almacenamiento persistente como si fuera una unidad local. Los blobs son adecuados para algunas situaciones, pero son demasiado desestructurados para otras. Para permitir que las aplicaciones trabajen en una forma ms escalable, el almacenamiento de Windows Azure proporciona tablas. No se deje llevar por conclusiones errneas por el nombre: stas no son tablas relacionales. De hecho, aunque se denominen tablas, los datos que contiene cada una en realidad se almacenan en un grupo de entidades que incluyen propiedades. Y en lugar de utilizar SQL, una aplicacin

puede acceder a los datos de una tabla utilizando las convenciones establecidas por ADO.NET Data Services. La razn de este enfoque aparentemente idiosincrtico es que permite ampliar el almacenamiento (ampliar al distribuir datos en muchas PC) con mayor eficacia que una base de datos relacional estndar. De hecho, una sola tabla de Windows Azure puede contener miles de millones de entidades que incluyan terabytes de datos. Los blobs y las tablas se enfocan en almacenar datos y acceder a ellos. La tercera opcin del almacenamiento de Windows Azure, las colas, tiene un fin diferente. Una de las principales funciones de las colas es ofrecer una manera para que las instancias de rol web se comuniquen con las instancias de rol de trabajo de forma asincrnica. Por ejemplo, es posible que un usuario ingrese un pedido para realizar tareas intensivas de informtica a travs de la pgina web implementada por un rol web de Windows Azure. La instancia de rol web que recibe este pedido puede crear un mensaje en la cola, el cual describa el trabajo a realizar. Una instancia de rol de trabajo que se encuentra en espera en esta cola puede leer el mensaje y realizar la tarea que especifica. Cualquier resultado puede devolverse a travs de otra cola o manejarse de otra manera. Sin importar cmo se almacenan los datos, en blobs, tablas o colas, toda la informacin que se encuentra en el almacenamiento de Windows Azure se replica tres veces. Esta rplica permite tolerancia de fallos, ya que extraviar una copia no se considera grave. No obstante, el sistema ofrece una consistencia slida, por lo que una aplicacin que lee inmediatamente los datos que ha creado se garantiza que regrese lo que cre. Windows Azure tambin conserva una copia de seguridad de todos los datos en otro centro de datos en la misma parte del mundo. Si el centro de datos que contiene la copia principal no se encuentra disponible o est destruido, esta copia de seguridad conserva su disponibilidad. El almacenamiento de Windows Azure puede accederse a travs de una aplicacin de Windows Azure, a travs de una aplicacin que se ejecute de forma interna dentro de una organizacin o por una que se ejecute en un hoster o en otra plataforma cloud. En estos casos, los tres estilos de almacenamiento de Windows Azure utilizan las convenciones de REST para identificar y exhibir datos, como lo sugiere el Grfico 4. Los blobs, las tablas y las colas se denominan utilizando URI y se acceden a travs de operaciones HTTP estndar. Un cliente .NET puede utilizar las libreras de ADO.NET Data Services para realizar eso, pero no es obligatorio; una aplicacin tambin puede realizar llamadas HTTP iniciales. Crear aplicaciones de Windows Azure que utilicen blobs, tablas y colas puede resultar til. Pero muchas aplicaciones en la actualidad acuden al almacenamiento relacional, lo cual no forma parte de Windows Azure. No obstante, esta opcin se ofrece a travs de SQL Azure Database, otro componente de la plataforma de Windows Azure. Las aplicaciones que se ejecutan en Windows Azure (o en otras plataformas) pueden utilizar esta tecnologa para obtener acceso conocido basado en SQL al almacenamiento relacional del cloud.

LA ESTRUCTURA
Todas las aplicaciones de Windows Azure y todos los datos que se encuentran en su almacenamiento residen en algn centro de datos de Microsoft. Dentro de ese centro de datos, el conjunto de PC con Windows Azure se organiza en una estructura. El Grfico 5 demuestra esta idea.

Grfico 5: el controlador de estructura interacta con las aplicaciones de Windows Azure a travs del agente de estructura. Como se demuestra en el grfico, la estructura de Windows Azure consiste en un grupo (grande) de PC, las cuales se administran a travs del software denominado controlador de estructura. El controlador de estructura se replica en un grupo de cinco a siete PC y posee todos los recursos de la estructura: PC, conmutadores, balanceo de carga y ms. Ya que se puede comunicar con un agente de estructura de todas las PC, tambin conoce todas las aplicaciones de Windows Azure en esta estructura (curiosamente, el controlador de estructura considera al almacenamiento de Windows Azure como simplemente otra aplicacin, y no puede visualizar los detalles de la rplica ni la administracin de datos). Este amplio conocimiento permite que el controlador de estructura realice varias tareas tiles. Monitorea todas las aplicaciones en funcionamiento, por ejemplo, y ofrece un panorama actual de lo que sucede en la estructura. Administra los sistemas operativos, mientras que se ocupa de ciertas cosas como la aplicacin de revisiones de la versin de Windows Server que se ejecuta en las VM con Windows Azure. Tambin decide dnde deberan ejecutarse las nuevas aplicaciones, eligiendo los servidores fsicos para optimizar el uso de hardware. Para realizar esto, el controlador de estructura depende del archivo de configuracin que se encuentra cargado con cada aplicacin de Windows Azure. Este archivo proporciona una descripcin basada en XML sobre lo que necesita la aplicacin: cuntas instancias de rol web, cuntas instancias de rol de trabajo y ms. Cuando el controlador de estructura recibe esta nueva aplicacin, utiliza este archivo de configuracin para determinar cuntas VM con rol web y de trabajo se deben crear.

Una vez creadas las VM, el controlador de estructura monitorea cada una. Si una aplicacin requiere cinco instancias de rol web y una de ellas falla, por ejemplo, el controlador de estructura automticamente reiniciar una nueva. De forma similar, si la PC en la que la VM se ejecuta falla, el controlador de estructura iniciar una nueva instancia del rol web o de trabajo en una nueva VM de otra PC, reiniciando el balanceo de carga segn sea necesario para dirigirse a la nueva PC. En la primera versin de Windows Azure, la estructura ofrece cuatro tamaos de VM para que los desarrolladores elijan entre ellos. Las opciones son: Pequea, con un CPU de un solo ncleo de 1.6 GHz, memoria de 1.75 GB y almacenamiento de instancias de 225 GB Mediana, con una CPU de doble ncleo de 1.6 GHz, memoria de 3.5 GB y almacenamiento de instancias de 490 GB Grande, con una CPU de cuatro ncleos de 1.6 GHz, memoria de 7 GB y almacenamiento de instancias de 1.000 GB Extra grande, con una CPU de ocho ncleos de 1.6 GHz, memoria de 14 GB y almacenamiento de instancias de 2.040 GB Advierta que cada instancia cuenta con uno o ms ncleos de procesador exclusivos. Esto significa que el rendimiento de las aplicaciones es predecible y no existe un lmite arbitrario sobre cunto tiempo puede ejecutarse una instancia. Por ejemplo, una instancia de rol web puede tomar el tiempo que sea necesario para manejar un pedido de un usuario, mientras que la instancia de rol de trabajo puede computar el valor de pi a un milln de dgitos.

UTILIZACIN DE WINDOWS AZURE: ESCENARIOS


Resulta importante comprender los componentes de Windows Azure, pero no es suficiente. La mejor forma de comprender esta plataforma es ver ejemplos sobre cmo se utiliza. De este modo, esta seccin abarca cinco escenarios centrales para utilizar Windows Azure: crear una aplicacin web escalable, crear una aplicacin de procesamiento paralelo, crear una aplicacin web con procesamiento en segundo plano, crear una aplicacin web con datos relacionales y utilizar almacenamiento cloud desde una aplicacin interna u hospedada.

CREAR UNA APLICACIN WEB ESCALABLE


Suponga que una organizacin desea crear una aplicacin web con acceso desde Internet. La eleccin comn hoy en da es ejecutar esa aplicacin en un centro de datos dentro de la organizacin o en un hoster. En muchos casos, no obstante, una plataforma cloud como Windows Azure es una mejor opcin. Por ejemplo, si la aplicacin necesita manejar una gran cantidad de usuarios simultneos, lo mejor sera crearla en una plataforma expresamente diseada para brindarle soporte. El soporte intrnseco de las aplicaciones y datos ampliables que ofrece Windows Azure puede manejar ms grandes cargas que las tecnologas web ms convencionales. O imagine que la carga de la aplicacin variar de forma significativa, con picos ocasionales entre largos perodos de escaso uso. Por ejemplo, un sitio de venta de tickets en lnea puede mostrar este patrn, de la misma forma que los sitios de video de noticias con

interesantes historias ocasionales, aplicaciones que se utilizan mayormente en ciertos momentos del da y ms. Ejecutar este tipo de aplicacin en un centro de datos convencional requiere que siempre se cuente con suficientes PC para manejar los picos, an cuando muchos de esos sistemas no se utilizan la mayor parte del tiempo. Si, por el contrario, la aplicacin se crea en Windows Azure, la organizacin que la utiliza puede aumentar la cantidad de instancias que usa solo cuando es necesario, y luego reducirla a una menor cantidad. Ya que el costo de Windows Azure se basa en el uso (usted paga por hora por cada instancia), es posible que sea ms accesible que mantener muchas PC que no se utilizan. Para crear una aplicacin web escalable en Windows Azure, un desarrollador puede utilizar roles web y tablas. El Grfico 6 muestra una simple ilustracin sobre cmo funciona.

Grfico 6: una aplicacin web escalable puede utilizar instancias de rol web y tablas. En el ejemplo que aqu se muestra, los clientes son exploradores y, por lo tanto, la lgica de la aplicacin puede implementarse a travs de ASP.NET u otra tecnologa web. Tambin es posible crear una aplicacin web escalable que exhiba servicios web REST y/o basados en SOAP utilizando WCF. En ambos casos, el desarrollador especifica cuntas instancias de la aplicacin deben ejecutarse, y el controlador de estructura de Windows Azure crea esta cantidad de VM. Segn lo descripto anteriormente, el controlador de estructura tambin monitorea estas instancias, lo cual se asegura de que la cantidad solicitada siempre se encuentre disponible. Para el almacenamiento de datos, la aplicacin utiliza las tablas de almacenamiento de Windows Azure, las cuales ofrecen almacenamiento ampliable que puede manejar enormes cantidades de datos.

CREAR UNA APLICACIN DE PROCESAMIENTO PARALELO


Las aplicaciones web escalables son tiles, pero no son lo nico bueno que ofrece Windows Azure. Imagine a una organizacin que ocasionalmente necesita mucha potencia en informtica para una

10

aplicacin de procesamiento paralelo. Existen muchos ejemplos sobre esto: brindar servicios en una empresa de efectos especiales para pelculas, desarrollo de nuevas drogas en una empresa farmacutica, modelado financiero en un banco, entre otros. Mientras es posible mantener un gran grupo de PC para cubrir esta necesidad ocasional, a su vez resulta costoso. Windows Azure, por el contrario, puede ofrecer estos recursos segn sea necesario al ofrecer una especie de compute cluster a pedido. Un desarrollador puede utilizar roles de trabajo para crear este tipo de aplicacin. Y ya que no es la nica opcin, las aplicaciones paralelas por lo general utilizan grandes conjuntos de datos, los cuales pueden estar almacenados en los blobs de Windows Azure. El Grfico 7 muestra una simple ilustracin sobre cmo funciona este tipo de aplicacin.

Grfico 7: una aplicacin de procesamiento paralelo puede utilizar una instancia de rol web, muchas instancias de rol de trabajo, colas y blobs. En el escenario que se muestra aqu, el trabajo paralelo se realiza a travs de varias instancias de rol de trabajo que se ejecutan de forma simultnea, y cada una utiliza datos de blobs. Ya que Windows Azure no impone lmites sobre cunto tiempo puede ejecutarse una instancia, cada una puede realizar una cantidad arbitraria de trabajos. Para interactuar con esta aplicacin, el usuario acude a una sola instancia de rol web. A travs de esta interfaz, el usuario puede determinar la cantidad de instancias de trabajo que debe ejecutarse, iniciar y detener estas instancias, obtener resultados y ms. La comunicacin entre la instancia de rol web y las instancias de rol de trabajo se basa en las colas de almacenamiento de Windows Azure. A su vez, se puede acceder a esas colas directamente a travs de una aplicacin interna. En lugar de acudir a una instancia de rol web que se ejecuta en Windows Azure, como se demuestra aqu, el usuario puede interactuar con las instancias de rol de trabajo desde una aplicacin interna a travs de las colas. Cualquiera sea la forma en que se realiza, el resultado es el mismo: mucha potencia de procesamiento a pedido.

11

CREAR UNA APLICACIN WEB ESCALABLE CON PROCESAMIENTO EN SEGUNDO PLANO


Probablemente sea lo ms adecuado decir que la mayora de las aplicaciones que se crean en la actualidad ofrece una interfaz de navegacin. Pero mientras aquellas que solo aceptan y responden a los pedidos del explorador son tiles, a su vez son limitadas. Existen muchas situaciones en las que el software con acceso desde la Web tambin necesita iniciar trabajos que se ejecuten en segundo plano, sin importar la parte de pedidos/respuestas de la aplicacin. Por ejemplo, imagine una aplicacin web para compartir videos. Necesita aceptar pedidos del explorador, tal vez de una gran cantidad de usuarios simultneos. Algunos de esos pedidos cargarn nuevos videos, y cada uno de ellos debe procesarse y almacenarse para que pueda accederse ms adelante. No tendra sentido obligar al usuario a esperar mientras se realiza este proceso. Por el contrario, la parte de la aplicacin que acepta los pedidos del explorador debera poder iniciar una tarea en segundo plano que efecte este trabajo. Los roles web y de trabajo de Windows Azure pueden utilizarse en conjunto para abordar este escenario. El Grfico 8 muestra cmo funciona este tipo de aplicacin.

Grfico 8: una aplicacin web escalable con procesamiento en segundo plano puede utilizar todas las capacidades de Windows Azure. Al igual que la aplicacin web escalable que se mostr anteriormente, esta aplicacin utiliza algunas instancias de rol web para manejar los pedidos de los usuarios. Para brindar soporte a una enorme cantidad de usuarios simultneos, tambin utiliza tablas para almacenar informacin. Para el procesamiento en segundo plano, acude a las instancias de rol de trabajo al enviarles tareas a travs de colas. En este ejemplo, esas instancias de trabajo funcionan con datos de blobs, pero otros enfoques tambin son posibles.

12

Este ejemplo muestra cmo la aplicacin puede utilizar todas las capacidades bsicas que incluye Windows Azure: instancias de rol web, instancias de rol de trabajo, blobs, tablas y colas. Mientras que no todas las aplicaciones necesitan todo eso, resulta indispensable que todas se encuentren disponibles para brindar soporte a escenarios ms complejos como ste.

CREAR UNA APLICACIN WEB CON DATOS RELACIONALES


Los blobs, las tablas y las colas resultan adecuados para algunas situaciones. Para otras situaciones, sin embargo, los datos relacionales resultan ms eficaces. Suponga que una empresa desea ejecutar una aplicacin en Windows Azure. Es posible que esta aplicacin no necesite la escala masiva que admiten las tablas de Windows Azure. Por el contrario, sus creadores pueden optar por utilizar el enfoque relacional que ya conocen con herramientas de generacin de informes conocidas. En un caso como ste, la aplicacin puede utilizar Windows Azure junto con SQL Azure Database, como se muestra en el Grfico 9.

Grfico 9: una aplicacin de Windows Azure puede utilizar SQL Azure Database para trabajar con datos relacionales. SQL Azure Database ofrece un gran subconjunto de funciones de SQL Server como un servicio cloud administrado. Las aplicaciones pueden crear bases de datos, ejecutar consultas de SQL y ms, pero no se requiere administrar el sistema de base de datos en el hardware donde se ejecuta: Microsoft se ocupa de eso. Se accede a SQL Azure Database a travs del protocolo de Flujo de datos tabulares (TDS), como la versin interna de SQL Server. Esto permite que una aplicacin de Windows Azure acceda a los datos relacionales utilizando mecanismos tradicionales como ADO.NET. Y ya que SQL Azure Database es un servicio cloud, su costo se basa en el uso, como en el almacenamiento de Windows Azure. Debido a que Windows Azure y SQL Azure Database ofrecen copias cloud de sus pares internos, resulta directo migrar el cdigo y los datos de este tipo de aplicacin entre los dos entornos. Las cosas no son

13

exactamente las mismas: es probable que el cdigo de Windows Azure realice el inicio de sesin a travs de un mecanismo solo de cloud, por ejemplo; sin embargo, el cloud y el entorno interno son bastante similares. La portabilidad es til cada vez que resulta conveniente crear una aplicacin cuyo cdigo y datos puedan residir ya sea de forma interna o en el cloud.

UTILIZAR ALMACENAMIENTO CLOUD DESDE UNA APLICACIN INTERNA U HOSPEDADA


Mientras que Windows Azure ofrece una gama de capacidades, a veces una aplicacin necesita solo una de ellas. Por ejemplo, imagine una aplicacin interna u hospedada que requiera almacenar una enorme cantidad de datos. Es posible que una empresa desee archivar, por ejemplo, correos electrnicos antiguos, por lo cual ahorra dinero en almacenamiento mientras que aun mantiene al correo accesible. Un sitio web de noticias que se ejecuta en un hoster puede requerir una ubicacin escalable y accesible de forma global para almacenar grandes cantidades de textos, grficos, videos e informacin de perfiles sobre sus usuarios. Un sitio de uso compartido de fotografas puede desear evitar los desafos que implica almacenar su informacin mediante un tercero confiable. Todas estas situaciones pueden abordarse a travs del almacenamiento de Windows Azure. El Grfico 10 demuestra esta idea.

Grfico 10: una aplicacin interna u hospedada puede utilizar los blobs y las tablas de Windows Azure para almacenar sus datos en el cloud. Como lo muestra este grfico, una aplicacin interna u hospedada puede acceder directamente al almacenamiento de Windows Azure. Mientras que es posible que este acceso sea ms lento que trabajar con un almacenamiento local, tambin puede resultar ms accesible, ms escalable y ms confiable. Para algunas aplicaciones, esta compensacin definitivamente resulta conveniente. Y aunque no se muestre en el grfico, las aplicaciones pueden utilizar SQL Azure Database de la misma manera.

14

Brindar soporte a los cinco escenarios que se describen en esta seccin (aplicaciones web escalables, aplicaciones de procesamiento paralelo, aplicaciones web escalables con procesamiento en segundo plano, aplicaciones web con almacenamiento relacional y aplicaciones no cloud que acceden al almacenamiento cloud) es un objetivo fundamental para Windows Azure. A medida que crece la plataforma cloud, no obstante, tambin aumentan los problemas que aborda. Los escenarios aqu descriptos son importantes, pero no son el fin de la historia.

COMPRENSIN DE WINDOWS AZURE: UNA VISIN MS DETALLADA


Comprender el funcionamiento de Windows Azure requiere conocer las tareas bsicas de la plataforma y luego visualizar los escenarios tpicos en los que pueden aplicarse esas tareas. No obstante, esta tecnologa abarca mucho ms. Esta seccin ofrece una visin ms profunda sobre algunos de sus aspectos ms interesantes.

DESARROLLAR APLICACIONES DE WINDOWS AZURE


Para los desarrolladores, crear una aplicacin de Windows Azure se asemeja a crear una aplicacin de Windows tradicional. Segn lo descripto anteriormente, la plataforma admite aplicaciones .NET y aquellas creadas a travs de un cdigo sin administracin, a fin de que un desarrollador pueda utilizar lo que ms se ajuste a su problema. Para simplificar estas tareas, Windows Azure proporciona plantillas de proyectos de Visual Studio para crear roles web, roles de trabajo y aplicaciones que combinen ambos roles. Una diferencia evidente entre los entornos cloud e internos es que las aplicaciones de Windows Azure no se ejecutan de forma local. Esta diferencia permite que el desarrollo resulte ms desafiante. Para atenuar esto, Microsoft ofrece la estructura de desarrollo, una versin del entorno de Windows Azure que se ejecuta en la PC de un desarrollador. El Grfico 11 muestra cmo funciona.

Grfico 11: la estructura de desarrollo ofrece una copia local de Windows Azure para desarrolladores.

15

La estructura de desarrollo se ejecuta en una sola PC con Windows Server 2008, Windows 7 o Windows Vista. Emula la funcionalidad de Windows Azure en el cloud, completa con roles web, roles de trabajo y todas las opciones de almacenamiento de Windows Azure. Un desarrollador puede crear una aplicacin de Windows Azure, implementarla en la estructura de desarrollo y ejecutarla de la misma forma que las aplicaciones reales. Por ejemplo, puede determinar cuntas instancias de cada rol deben ejecutarse, utilizar colas para comunicarse entre estas instancias y realizar prcticamente todo lo que sea posible utilizando Windows Azure (en realidad, es muy probable crear una aplicacin de Windows Azure sin haberlo usado nunca en el cloud). Una vez desarrollada la aplicacin y evaluada localmente, el desarrollador puede cargar el cdigo y su archivo de configuracin a travs del portal de Windows Azure, y luego ejecutarla.

EXAMINAR EL SERVICIO DE INFORMTICA


Es posible que le agrade permitir que Microsoft elija en qu centro de datos residir su aplicacin y su informacin. Pero es ms probable que necesite mayor control. Suponga que sus datos necesitan permanecer dentro de la Unin Europea por razones legales, o tal vez muchos de sus clientes se encuentran en Norteamrica. En este tipo de situaciones, desea poder especificar dnde se ejecuta su aplicacin y dnde almacena sus datos. Para posibilitarlo, Windows Azure permite que un desarrollador indique en qu centro de datos debe ejecutarse una aplicacin y dnde debe almacenarse su informacin. Tambin puede determinar que un grupo especfico de aplicaciones y datos (incluso datos de SQL Azure Database) debe residir en el mismo centro de datos. En principio, Microsoft ofrece centros de datos de Windows Azure en los Estados Unidos, Europa y Asia, y habr ms en el futuro. Dondequiera que se ejecute, una aplicacin de Windows Azure puede instalarse y encontrarse disponible para sus usuarios a travs de un proceso de dos pasos. Primero, un desarrollador carga la aplicacin al rea temporal de la plataforma. La terminal HTTP/HTTPS de la aplicacin en etapas cuenta con un nombre DNS del formato <GUID>.cloudapp.net, en donde <GUID> representa un identificador nico de forma global asignado por Windows Azure. Este nombre DNS se asocia a la direccin IP virtual (VIP) que identifica el balanceo de carga de Windows Azure, a travs del cual puede accederse a la aplicacin. Cuando el desarrollador se encuentra listo para darle vida a la aplicacin, utiliza el portal de Windows Azure para pedir que se ubique en produccin. Luego, Windows Azure cambia mnimamente la entrada de su servidor DNS para asociar la VIP de la aplicacin con el nombre DNS de produccin que ha elegido, como myazureservice.cloudapp.net. Para utilizar un dominio personalizado en lugar del dominio cloudapp.net de Microsoft, el dueo de la aplicacin de Windows Azure puede crear un alias DNS utilizando un CNAME estndar. Resulta conveniente mencionar algunos elementos de este proceso. En primer lugar, ya que el intercambio de VIP es mnimo, la aplicacin en funcionamiento puede actualizarse a una nueva versin sin causar tiempos de inactividad. Esto resulta importante para muchos tipos de servicios cloud. En segundo lugar, advierta que durante este proceso las direcciones IP reales de las VM de Windows Azure, y las PC fsicas en las que se ejecutan las VM, nunca quedan expuestas. Tambin es conveniente mencionar que este proceso de dos pasos no es la nica opcin. Tambin es posible implementar una aplicacin directamente en produccin sin pasar por etapas.

16

Una vez que la aplicacin se encuentra disponible, sus usuarios pueden requerir una forma para identificarse. Para hacerlo, Windows Azure permite que los desarrolladores utilicen cualquier mecanismo de autenticacin basado en HTTP que deseen. Una aplicacin ASP.NET puede utilizar un proveedor de membresa para almacenar sus ID de usuario y contrasea, por ejemplo, o puede utilizar otro mtodo, como el servicio Live ID de Microsoft. Las aplicaciones de Windows Azure tambin pueden utilizar Windows Identity Foundation (WIF) para implementar identidades basadas en reclamos. La opcin queda a discrecin del creador de la aplicacin. En general, crear aplicaciones seguras requiere la utilizacin de certificados. Para permitirlo, Windows Azure ofrece un almacenamiento de certificados, lo cual permite que una aplicacin utilice diferentes certificados para distintos fines. Por ejemplo, una aplicacin puede utilizar un certificado para su terminal SSL, y otro para firmar pedidos que realiza a otro servicio. Los nuevos certificados pueden implementarse de forma individual a este almacenamiento: no se requiere cargar una nueva versin de la aplicacin. Una vez que se ejecuta, una instancia de rol puede usar API de Windows Azure a fin de detectar la topologa de la aplicacin de la que forma parte. En otras palabras, cualquier instancia puede detectar terminales internas expuestas por las otras instancias de rol web y/o de trabajo que forman parte de la misma aplicacin. Una vez que tiene esta informacin, una instancia puede establecer comunicacin directa con aquellas instancias a travs de WCF u otro mecanismo, una opcin conocida como comunicacin entre roles. Entre otras cosas, esto permite que un desarrollador instale una tecnologa de cach distribuida, como memoria cach en roles de trabajo, y luego se comunique directamente con esa cach desde los roles web en la misma aplicacin. Para permitir la administracin de las aplicaciones de Windows Azure en funcionamiento, la plataforma ofrece una API de administracin de servicios. Esta interfaz REST permite que un cliente remoto implemente aplicaciones de Windows Azure, monitoree los recursos que utilizan esas aplicaciones, modifique la cantidad de instancias de roles en funcionamiento y ms.

EXAMINAR EL SERVICIO DE ALMACENAMIENTO


Para utilizar el almacenamiento de Windows Azure, el desarrollador primero debe crear una cuenta de almacenamiento. Para controlar el acceso a la informacin en esta cuenta, Windows Azure otorga a su creador una clave secreta. Cada pedido que realiza una aplicacin a la informacin en esta cuenta de almacenamiento (blobs, tablas y colas) posee una firma creada con esta clave secreta. En otras palabras, la autorizacin se realiza a nivel de cuenta (aunque los blobs tienen otra opcin que se describe ms adelante). El almacenamiento de Windows Azure no proporciona listas de control de acceso ni otra forma ms escalable para controlar quin se encuentra autorizado a acceder a los datos que contiene.

Blobs
Los grandes objetos binarios (blobs) por lo general son justo lo que necesita una aplicacin. Ya sea que incluyan video, audio, mensajes de correo electrnico archivados o cualquier otra cosa, permiten que las aplicaciones almacenen y accedan a los datos de una forma muy general. Para utilizar blobs, un desarrollador primero crea uno o ms contenedores en alguna cuenta de almacenamiento. Cada uno de estos contenedores puede incluir uno o ms blobs.

17

Para identificar un blob especfico, una aplicacin puede suministrar una URI del siguiente formato: http://<StorageAccount>.blob.core.windows.net/<Container>/<BlobName> <StorageAccount> es un solo identificador que se asigna cuando se crea una nueva cuenta de almacenamiento, mientras que <Container> y <BlobName> son los nombres de un contenedor especfico y un blob que se encuentra dentro de l. Los contenedores no pueden unificarse (pueden contener solo blobs, no otros contenedores), por lo que resulta imposible crear una jerarqua de blobs. Incluso se permite que el nombre de un blob contenga un /, por lo que un desarrollador puede crear la ilusin de una jerarqua si as lo desea. Los blobs pueden tener dos formatos: Blobs en bloque, cada uno de los cuales puede incluir datos de hasta 200 gigabytes. Para que su transferencia sea ms eficaz, un blob en bloque se subdivide en bloques. Si falla, se puede reanudar la transmisin con el bloque ms reciente en lugar de enviar todo el blob nuevamente. Una vez que todos los bloques de un blob se han cargado, se puede comprometer todo el blob a la vez. Blobs en pginas, que pueden ser de un terabyte cada uno. Un blob en pginas se divide en pginas de 512 bytes, y una aplicacin puede leer y crear pginas individuales de forma aleatoria en el blob. Cualquiera sea el tipo de blob que poseen, los contenedores pueden marcarse como privados o pblicos. Para los blobs en un contenedor privado, los pedidos de lectura y creacin deben firmarse utilizando la clave de la cuenta de almacenamiento del blob. Para los blobs en un contenedor pblico, solo se deben firmar los pedidos de escritura; cualquier aplicacin puede leer el blob. Esto puede resultar til en situaciones como la realizacin de videos, fotos u otros datos desestructurados que por lo general se encuentran disponibles en Internet. Tambin es posible crear firmas de acceso compartido para aplicaciones o usuarios individuales. Es posible que los pedidos para leer, crear o eliminar un blob especfico deban contar con una firma en particular, lo cual permite un control de acceso ms escalable a los datos del blob. Una aplicacin de blobs comn es almacenar informacin a la que se acceder desde distintas ubicaciones. Imagine una aplicacin que ofrece videos a clientes de Flash o Silverlight de todo el mundo. Para mejorar el rendimiento en este tipo de situaciones, Windows Azure ofrece una red de entrega de contenido (CDN). La CDN almacena copias de un blob en sitios cercanos a las aplicaciones que utilizan los datos del blob. El resultado es un mejor rendimiento para los blobs que se acceden con frecuencia desde ubicaciones distribuidas. Otro aspecto importante de los blobs es la funcin que desempean al admitir XDrives. Para entender lo que es esta funcin, primero advierta que las instancias de rol web y las de trabajo pueden acceder al sistema de archivos local de sus VM. De forma predeterminada, no obstante, este almacenamiento no es persistente. Cuando se cierra una instancia, la VM y su almacenamiento local desaparecen. Sin embargo, montar un XDrive para la instancia puede hacer que el blob en pginas parezca una unidad local, completo con un sistema de archivos NTFS. Las escrituras al XDrive pueden realizarse de forma inmediata al blob en segundo plano. Cuando no se ejecuta la instancia, estos datos se almacenan de forma persistente en el blob en pginas, listos para montarse nuevamente. A continuacin se mencionan las formas en que pueden utilizarse los XDrives:

18

Un desarrollador puede cargar un disco duro virtual (VHD) que contenga un sistema de archivos NTFS, luego montar este VHD como XDrive. Esto ofrece una forma directa para migrar datos del sistema de archivos entre Windows Azure y un sistema de Windows Server interno. Un desarrollador de Windows Azure puede instalar y ejecutar un sistema de base de datos MySQL en una instancia de rol de Windows Azure utilizando un XDrive como almacenamiento en segundo plano.

Tablas
Los blobs son fciles de comprender (son tan slo una base de bytes) pero las tablas son un poco ms complejas. El Grfico 12 muestra cmo las partes de una tabla se ajustan conjuntamente.

Grfico 12: las tablas ofrecen almacenamiento basado en entidades. Segn lo muestra el grfico, cada tabla contiene una cantidad de entidades. Una entidad cuenta con cero o ms propiedades, cada una con un nombre, un tipo y un valor. Se admite una variedad de tipos, incluso binaria, Bool, DateTime, Double, GUID, Int, Int64 y String. Una propiedad puede poseer diferentes tipos en distintos momentos segn el valor almacenado en ella, y no se requiere que todas las propiedades de una entidad tengan el mismo tipo: el desarrollador puede realizar lo que le resulte ms conveniente para su aplicacin. Sin importar lo que contenga, una entidad puede tener un tamao mximo de un megabyte y siempre se puede acceder como una unidad. La lectura de una entidad devuelve todas sus propiedades, y su escritura puede reemplazar todas sus propiedades. Tambin es posible actualizar un grupo de entidades dentro de una sola tabla de forma mnima, lo cual garantiza que todas las actualizaciones sean exitosas o fallen.

19

Las tablas de almacenamiento de Windows Azure son diferentes a las tablas relacionales en varias formas. De forma ms evidente, no son tablas en el sentido usual. A su vez, no se puede acceder a ellas a travs de ADO.NET ordinario ni tampoco admiten consultas de SQL. Y las tablas de almacenamiento de Windows Azure no utilizan esquemas: las propiedades de una entidad pueden ser de varios tipos y stos pueden modificarse con el tiempo. La pregunta es la siguiente: Por qu? Por qu no se admiten tablas relacionales ordinarias con las consultas de SQL estndar? La respuesta surge del objetivo principal de Windows Azure, que es admitir aplicaciones de escalabilidad masiva. Las bases de datos relacionales tradicionales pueden ampliarse y manejar cada vez ms usuarios al ejecutar el DBMS en PC ms grandes. Pero para admitir grandes cantidades de usuarios simultneos, se debe ampliar, pero no aumentar, el almacenamiento. Para permitir esto, el mecanismo de almacenamiento necesita simplificarse: las tablas relacionales tradicionales con SQL estndar ya no trabajan. Lo que se necesita es el tipo de estructura que ofrecen las tablas de Windows Azure. Utilizar tablas requiere la consideracin de los desarrolladores, pues las estructuras relacionales conocidas no pueden aplicarse sin ser modificadas. Sin embargo, se debe utilizar este enfoque para crear aplicaciones muy escalables. Permite que los desarrolladores no se preocupen por el escalamiento: solo crean nuevas tablas, agregan nuevas entidades y Windows Azure se encarga del resto. Tambin elimina una parte del trabajo que se necesita para mantener un DBMS, pues Windows Azure lo hace por usted. El objetivo es permitir que los desarrolladores se enfoquen en sus aplicaciones en lugar de los mecanismos para almacenar y administrar grandes cantidades de datos. Como todo lo dems en el almacenamiento de Windows Azure, las tablas se acceden mediante REST. Una aplicacin .NET puede utilizar ADO.NET Data Services o Consulta integrada de lenguaje (LINQ) para realizar esto, y ambos ocultan las solicitudes HTTP en segundo plano. Cualquier aplicacin, ya sea .NET u otra, tambin puede realizar estos pedidos de forma directa. Por ejemplo, una consulta sobre una tabla especfica se expresa como un HTTP GET sobre una URI con el siguiente formato: http://<StorageAccount>.table.core.windows.net/<TableName>?$filter=<Query> Aqu, <TableName> especifica la tabla que se consulta, mientras que <Query> contiene la consulta que se ejecutar sobre esta tabla. Si la consulta ofrece una gran cantidad de resultados, un desarrollador puede obtener un token de continuacin que puede pasar a la siguiente consulta. Realizar esto repetidamente permite recuperar el conjunto de resultados completo en fragmentos. Las actualizaciones presentan otro problema: Qu sucede si varias aplicaciones intentan actualizar la misma entidad al mismo tiempo? Actualizar una entidad requiere su lectura, el cambio de sus contenidos al modificar, agregar y/o eliminar propiedades, y luego la escritura de la entidad actualizada en la misma tabla. Suponga que dos aplicaciones leen la misma entidad, la modifican y la escriben. Qu sucede? La respuesta predeterminada es que la aplicacin cuya escritura llega primero ser la exitosa. La escritura de la otra aplicacin fallar. Este enfoque, un ejemplo de simultaneidad optimista, se basa en los nmeros de versiones que mantienen las tablas de Windows Azure. Por otro lado, una aplicacin puede actualizar una entidad sin condiciones, lo cual garantiza que sus modificaciones sern escritas. Las tablas de Windows Azure no son la opcin adecuada para todos los escenarios de almacenamiento, y utilizarlas requiere que los desarrolladores aprendan cosas nuevas. Sin embargo, para las aplicaciones que necesitan la escalabilidad que ofrecen, las tablas son la eleccin adecuada.

20

Colas
Mientras que las tablas y los blobs en principio tienen la funcin de almacenar y acceder a los datos, el principal objetivo de las colas es permitir la comunicacin entre diferentes partes de una aplicacin de Windows Azure. Como todo lo dems en el almacenamiento de Windows Azure, las colas se acceden mediante REST. Las aplicaciones de Windows Azure y las externas hacen referencia a una cola al utilizar una URI con el siguiente formato: http://<StorageAccount>.queue.core.windows.net/<QueueName> Como ya se ha descripto, un uso comn de las colas es permitir la interaccin entre las instancias de rol web y las de rol de trabajo. El Grfico 13 muestra cmo funciona.

Grfico 13: los mensajes pueden colocarse en cola, retirarse de la cola, procesarse y luego eliminarse de ella de forma explcita. En un escenario tpico, se ejecutan varias instancias de roles web, cada una aceptando trabajos de los usuarios (paso 1). Para transferir ese trabajo a las instancias de rol de trabajo, una instancia web escribe un mensaje en una cola (paso 2). Este mensaje, que puede tener hasta ocho kilobytes, puede contener una URI que apunte a un blob o a una entidad en una tabla, u otra cosa, segn lo desee la aplicacin. Las instancias de trabajo leen mensajes de esta cola (paso 3), luego realizan el trabajo que pide el mensaje (paso 4). Es importante advertir, no obstante, que leer un mensaje de una cola en realidad no lo elimina. Por el contrario, hace que el mensaje se encuentre oculto para otros lectores por un tiempo determinado (que es de 30 segundos de forma predeterminada). Cuando la instancia de trabajo ha finalizado el trabajo que peda este mensaje, debe eliminar de forma explcita el mensaje de la cola (paso 5). Separar las instancias de rol web de las de rol de trabajo es lo adecuado. El usuario no necesita esperar a que se procese una tarea extensa, y tambin simplifica la escalabilidad: tan slo agregue ms instancias. Pero por qu se debe hacer que las instancias eliminen mensajes de forma explcita? La respuesta es que eso permite manejar fallas. Si la instancia de rol de trabajo que recupera un mensaje lo maneja de forma exitosa, eliminar el mensaje mientras ste an se encuentra oculto; es decir, dentro de su marco de 30 segundos. Si una instancia de rol de trabajo retira un mensaje de la cola, entonces fallar antes de que se

21

complete el trabajo que especifica ese mensaje; no eliminar el mensaje de la cola. Cuando finalice el tiempo de visibilidad, el mensaje reaparecer en la cola y luego otra instancia de rol de trabajo lo leer. El objetivo es garantizar que cada mensaje se procese al menos una vez. Como se describe aqu, las colas del almacenamiento de Windows Azure no tienen la misma semntica que las colas de Microsoft Message Queuing (MSMQ) u otras tecnologas ms conocidas. Por ejemplo, un sistema de cola convencional puede ofrecer semntica de entrada y salida, por lo que entrega cada mensaje por nica vez. Las colas de almacenamiento de Windows Azure no ofrecen esas promesas. Como se ha descripto, un mensaje puede entregarse varias veces y no existe garanta de entregar mensajes en un orden especfico. Todo es distinto en el cloud y los desarrolladores necesitarn adaptarse a esas diferencias.

EXAMINAR LA ESTRUCTURA
Para un desarrollador de aplicaciones, Windows Azure consiste en servicios de informtica y almacenamiento. Pero ninguno de estos servicios puede funcionar sin la estructura de Windows Azure. Al unificar un centro de datos con muchas PC en un conjunto coherente, la estructura ofrece una base para todo el resto. Segn lo descripto anteriormente, el controlador de estructura posee todos los recursos en un centro de datos especfico de Windows Azure. Tambin es se encarga de asignar instancias de aplicaciones y almacenamiento a PC fsicas. Es importante realizar esto con inteligencia. Por ejemplo, suponga que un desarrollador solicita cinco instancias de rol web y cuatro instancias de rol de trabajo para esta aplicacin. Una simple asignacin puede ubicar todas estas instancias en PC del mismo rack que reciben servicio del mismo conmutador de red. En caso de que falle el rack o el conmutador, toda la aplicacin pierde su disponibilidad. Al proporcionar los objetivos de alta disponibilidad de Windows Azure, hacer que una aplicacin dependa de puntos de falla como stos no sera conveniente. Para evitarlo, el controlador de estructura agrupa las PC que contiene en varios dominios por falla. Cada dominio por falla forma parte del centro de datos, en donde una sola falla puede cerrar el acceso a todo lo que incluye ese dominio. El Grfico 15 demuestra esta idea.

22

Grfico 15: el controlador de estructura ubica distintas instancias de una aplicacin en diferentes dominios por falla. En este sencillo ejemplo, la aplicacin ejecuta solo dos instancias de rol web y el centro de datos se divide en dos dominios por falla. Cuando el controlador de estructura implementa esta aplicacin, ubica una instancia de rol web en cada uno de los dominios por falla. Este mtodo implica que una sola falla de hardware en el centro de datos no puede afectar a toda la aplicacin. A su vez, recuerde que el controlador de estructura considera al almacenamiento de Windows Azure como otra aplicacin; el controlador no maneja la rplica de datos. Por el contrario, esto lo realiza la aplicacin de almacenamiento, lo cual garantiza que las rplicas de cualquier blob, tabla y cola utilizadas por esta aplicacin se ubican en distintos dominios por falla. Mantener el funcionamiento de una aplicacin en caso de fallas del hardware es til, pero no es suficiente. Recuerde que una aplicacin en funcionamiento puede actualizarse en el lugar. Una aplicacin verdaderamente confiable, el tipo de aplicacin que desea admitir Windows Azure, no debera necesitar cerrarse para realizar esto. Para permitirlo, Windows Azure agrupa instancias de aplicaciones en dos o ms dominios de actualizacin. El Grfico 16 muestra cmo funciona.

23

Grfico 16: agrupar una aplicacin en distintos dominios de actualizacin permite que sta contine funcionando mientras se actualiza. Cuando se actualiza un cdigo de la aplicacin, el controlador de estructura lo realiza en un dominio de actualizacin a la vez. En el ejemplo que muestra el Grfico 16, el controlador de estructura primero cierra instancias 1 y 2 de la aplicacin X, actualiza sus cdigos, luego las reinicia desde el nuevo archivo ejecutable. Luego puede cerrar las instancias 3 y 4 de la aplicacin, actualizar sus cdigos y reiniciarlas desde el nuevo archivo ejecutable. El objetivo es mantener a la aplicacin en continuo funcionamiento, aun mientras se actualiza. Los usuarios pueden advertir la actualizacin; el tiempo de respuesta de la aplicacin podr aumentar cuando algunas de sus instancias se cierran, por ejemplo, y distintos usuarios accedern a diferentes versiones de la aplicacin durante la actualizacin. Sin embargo, desde el punto de vista del usuario, la aplicacin conserva su disponibilidad de forma continua. No confunda los dominios de actualizacin, una propiedad de una aplicacin, con dominios por falla, una propiedad del centro de datos. No obstante, ambos tienen el mismo propsito de alcance global: permitir que la estructura mantenga el funcionamiento de las aplicaciones de Windows Azure en todo momento.

PRXIMOS PASOS
En la Conferencia de Desarrolladores Profesionales de fines de 2009, Microsoft anunci que planifica agregar ms funciones a Windows Azure en 2010, incluso: Un mecanismo para que los clientes instalen y ejecuten aplicaciones existentes en Windows Azure.

24

El nombre de cdigo de Microsoft "Sydney", lo cual permite que las instancias de Windows Azure se conecten en un entorno interno a travs de IPsec. Esto permitir que los clientes consideren a las aplicaciones de Windows Azure como aplicaciones que se ejecutan en una sucursal. El fin de ambos cambios es ampliar el atractivo de la tecnologa. Simplificar la migracin de aplicaciones existentes a Windows Azure tiene un atractivo evidente, mientras que las extensiones Sydney simplificarn an ms la utilizacin de las aplicaciones de Windows Azure desde dominios de Windows internos. Al agregar estas capacidades, Microsoft desea lograr que esta plataforma cloud sea til en una ms amplia gama de situaciones.

CONCLUSIONES
Ejecutar aplicaciones y almacenar datos en el cloud es la opcin adecuada para muchas situaciones. Las tres partes de Windows Azure, el servicio de informtica, el servicio de almacenamiento y la estructura, trabajan en conjunto para hacerlo posible. Junto con el entorno de desarrollo de Windows Azure, SQL Azure Database y el resto de su plataforma, ofrecen una forma para que los desarrolladores de Windows se adapten a este nuevo mundo. En la actualidad, las plataformas cloud son una opcin un poco extraa para muchas organizaciones. No obstante, ya que todos nosotros obtenemos experiencia con Windows Azure y otras plataformas cloud, este nuevo enfoque comenzar a resultar menos extrao. Con el tiempo, podramos esperar aplicaciones basadas en cloud, y las plataformas cloud en las que se ejecutan, para desempear una funcin cada vez ms importante en el mundo del software.

MS INFORMACIN
Pgina de inicio de la plataforma de Windows Azure http://www.microsoft.com/windowsazure Presentacin de la plataforma de Windows Azure, David Chappell http://go.microsoft.com/fwlink/?LinkId=158011 Blobs de Windows Azure: programar almacenamiento de blobs http://download.microsoft.com/download/D/6/E/D6E0290E-8919-4672-B3F756001BDC6BFA/Windows%20Azure%20Blob%20-%20Dec%202008.docx Tablas de Windows Azure: programar almacenamiento de tablas http://download.microsoft.com/download/3/B/1/3B170FF4-2354-4B2D-B4DC8FED5F838F6A/Windows%20Azure%20Table%20-%20Dec%202008.docx Colas de Windows Azure: programar almacenamiento de colas http://download.microsoft.com/download/5/2/D/52D36345-BB08-4518-A0240AA24D47BD12/Windows%20Azure%20Queue%20-%20Dec%202008.docx

25

ACERCA DEL AUTOR


David Chappell es el director de Chappell & Associates (www.davidchappell.com) en San Francisco, California. A travs de sus conferencias, escritos y consultora, permite que las personas de todo el mundo comprendan, utilicen y tomen mejores decisiones sobre nuevas tecnologas.

26