You are on page 1of 23

PRESENTACIN DE LA PLATAFORMA DE WINDOWS AZURE

DAVID CHAPPELL DICIEMBRE DE 2009

PATROCINADO POR MICROSOFT CORPORATION

CONTENIDO
VisingeneraldelaplataformadeWindowsAzure............................................................................3 WindowsAzure..................................................................................................................................4 SQLAzure...........................................................................................................................................6 PlataformaAppFabricdeWindowsAzure...........................................................................................8 Visinmsdetalladasobrelastecnologas........................................................................................10 WindowsAzure................................................................................................................................10 Ejecutaraplicaciones........................................................................................................................10 Accederadatos................................................................................................................................12 SQLAzure.........................................................................................................................................14 PlataformaAppFabricdeWindowsAzure.........................................................................................17 ServiceBus.......................................................................................................................................17 Controldeacceso .............................................................................................................................19 . Unificarfunciones:ejemplo..............................................................................................................21 Prximospasos ................................................................................................................................22 . Conclusiones....................................................................................................................................23 Acercadelautor...............................................................................................................................23

VISIN GENERAL DE LA PLATAFORMA DE WINDOWS AZURE


Utilizar PC en el cloud puede resultar muy conveniente. En lugar de adquirir y mantener sus propias PC, por qu no aprovechar los servidores con acceso a Internet que se ofrecen hoy? Para algunas aplicaciones, el cdigo y los datos pueden residir en el cloud, pero un tercero administra y mantiene los sistemas que utilizan. Por otro lado, las aplicaciones que se ejecutan dentro de una organizacin (aplicaciones internas) pueden almacenar datos en el cloud o acudir a otros servicios de infraestructura cloud. Sin importar la forma en que se realice, aprovechar las capacidades del cloud puede mejorar nuestro entorno. Pero si una aplicacin se ejecuta en el cloud, utiliza servicios que ste ofrece, o ambas cosas, se requiere algn tipo de plataforma de aplicaciones. De forma amplia, una plataforma de aplicaciones puede considerarse como algo que ofrece servicios accesibles para que los desarrolladores puedan crear aplicaciones. En el entorno interno y local de Windows, por ejemplo, esto incluye tecnologas como Windows Server, .NET Framework, SQL Server y ms. Para que las tecnologas aprovechen el cloud, tambin deben existir las plataformas de aplicaciones cloud. La plataforma Windows Azure de Microsoft es un grupo de tecnologas cloud, y cada una proporciona un conjunto especfico de servicios para los desarrolladores de aplicaciones. Segn lo demuestra el Grfico 1, la plataforma de Windows Azure puede utilizarse a travs de aplicaciones que se ejecutan en el cloud y aplicaciones internas.

Grfico 1: la plataforma de Windows Azure admite aplicaciones, datos e infraestructura en el cloud. Los componentes de la plataforma de Windows Azure son:

Windows Azure: ofrece un entorno de Windows para ejecutar aplicaciones y almacenar datos en servidores en los centros de datos de Microsoft.

SQL Azure: ofrece servicios de datos en el cloud basado en SQL Server. Plataforma AppFabric de Windows Azure: ofrece servicios cloud para conectar aplicaciones que se ejecutan en el cloud o de forma interna.

Cada parte de la plataforma de Windows Azure desempea su propia funcin. Esta visin general describe las tres partes, primero a un alto nivel y luego con ms detalle. El objetivo es proporcionar una introduccin general sobre esta nueva plataforma de aplicaciones.

WINDOWS AZURE
A un alto nivel, Windows Azure es fcil de comprender: es una plataforma para ejecutar aplicaciones de Windows y almacenar sus datos en el cloud. El Grfico 2 muestra sus principales componentes.

Grfico 2: Windows Azure ofrece servicios de almacenamiento e informtica basados en Windows para las aplicaciones cloud. Como lo sugiere el grfico, Windows Azure se ejecuta en una gran cantidad de PC, todas ubicadas en los centros de datos de Windows y accesibles a travs de Internet. Una estructura comn de Windows Azure une esta enorme potencia de procesamiento en un conjunto unificado. Los servicios de almacenamiento e informtica de Windows Azure se encuentran sobre esta estructura.

Por supuesto, el servicio de informtica de Windows Azure se basa en Windows. Los desarrolladores pueden crear aplicaciones utilizando .NET Framework, un cdigo sin administracin u otros enfoques. Estas aplicaciones se crean en lenguajes comunes de Windows, como C#, Visual Basic, C++ y Java, al utilizar Visual Studio u otra herramienta de desarrollo. Los desarrolladores pueden crear aplicaciones web a travs de las tecnologas como ASP.NET, Windows Communication Foundation (WCF) y PHP, aplicaciones que se ejecutan como procesos en segundo plano independientes, o bien aplicaciones que combinen ambas. Las aplicaciones de Windows Azure y las internas pueden acceder al servicio de almacenamiento de Windows Azure, y ambas lo realizan de la misma manera: a travs de un enfoque REST. Este servicio permite almacenar grandes objetos binarios (blobs), ofrece colas para la comunicacin entre componentes de las aplicaciones de Windows Azure e incluso proporciona un formato de tablas con un lenguaje de consulta sencillo. Para las aplicaciones que necesitan almacenamiento relacional tradicional, la plataforma de Windows Azure ofrece SQL Azure Database, lo cual se describir ms adelante. Una aplicacin que utiliza la plataforma de Windows Azure puede usar cualquier combinacin de estas opciones de almacenamiento. Ejecutar aplicaciones y almacenar sus datos en el cloud puede presentar claros beneficios. En lugar de adquirir, instalar y operar sus propios sistemas, por ejemplo, una organizacin puede acudir a un proveedor de plataformas cloud para que lo realice. A su vez, los clientes pagan solo por la informtica y el almacenamiento que utilizan en vez de mantener un gran conjunto de servidores solo para las cargas pico. Y si se crean correctamente, las aplicaciones pueden ampliarse con facilidad, lo cual permite aprovechar los enormes centros de datos que ofrecen los proveedores de cloud. No obstante, obtener estos beneficios requiere una administracin eficaz. En Windows Azure, cada aplicacin cuenta con un archivo de configuracin, como se muestra en el Grfico 2. Al modificar esta configuracin de forma manual o programtica, el dueo de una aplicacin puede controlar varios aspectos de su comportamiento, como configurar la cantidad de instancias de la aplicacin que debera ejecutar Windows Azure. La estructura de Windows Azure entonces monitorea la aplicacin para mantener este estado deseado. Para que sus clientes creen, configuren y monitoreen aplicaciones, Windows Azure proporciona un portal con acceso desde el explorador. Un cliente proporciona una ID de Windows Live, luego selecciona si crear una cuenta de hosting para ejecutar aplicaciones, una cuenta de almacenamiento para almacenar datos o ambas. Una aplicacin puede cobrar a sus clientes de cualquier forma que desee: a travs de suscripciones, costo por uso o de otra forma. Windows Azure es una plataforma general que puede utilizarse en varios escenarios. A continuacin se mencionan algunos ejemplos:

El proceso de creacin de un nuevo sitio web (por ejemplo, el prximo Facebook) podra crear su aplicacin en Windows Azure. Ya que esta plataforma admite servicios web y procesos en segundo plano, la aplicacin puede suministrar una interfaz de usuario interactiva, as como ejecutar trabajos para usuarios de forma asincrnica. En lugar de gastar tiempo y dinero preocupndose por la infraestructura, el proceso puede enfocarse solamente en crear el cdigo que ofrece valor a sus clientes e inversionistas. La empresa tambin puede comenzar con lo mnimo e incurrir en bajos

costos mientras su aplicacin tiene solo algunos usuarios. Si la aplicacin progresa y su utilizacin aumenta, Windows Azure puede ampliar la aplicacin segn sea necesario.

Un proveedor de software independiente (ISV) que crea una versin de software como servicio (SaaS) de una aplicacin de Windows interna existente puede optar por crearla en Windows Azure. Ya que Windows Azure en principio ofrece un entorno de Windows estndar, migrar la lgica comercial de la aplicacin a esta plataforma cloud por lo general no presentar muchos problemas. Y una vez ms, la creacin de aplicaciones en una plataforma existente permite que el ISV se enfoque en su lgica comercial (lo que le hace obtener dinero) en lugar de ocupar tiempo en la infraestructura. Una empresa que crea una aplicacin para sus clientes puede optar por crearla en Windows Azure. Debido a que Windows Azure admite .NET, los desarrolladores con el conocimiento adecuado no son difciles de encontrar ni tampoco son demasiado costosos. Ejecutar la aplicacin en los centros de datos de Microsoft permite que la empresa se libere de la responsabilidad y del gasto que implica administrar sus propios servidores, lo cual convierte sus gastos de capital en gastos operativos. Y en caso de que la aplicacin tenga picos transitorios de uso, es posible que un almacenamiento en lnea deba manejar estos enormes picos de uso: permitir que Microsoft mantenga una gran base de servidores necesaria para esto puede ser conveniente en cuanto a lo econmico.

Ejecutar aplicaciones en el cloud es uno de los aspectos ms importantes de la informtica cloud. Gracias a Windows Azure, Microsoft ofrece una plataforma para realizarlo, junto con una forma de almacenar datos de la aplicacin. A medida que contina creciendo el inters por la informtica cloud, espere a ver ms aplicaciones de Windows creadas para este nuevo entorno.

SQL AZURE
Una de las formas ms atractivas de utilizar servidores con acceso desde Internet es manejar datos. El objetivo de SQL Azure es abordar esta rea ofreciendo servicios basados en cloud para almacenar informacin y trabajar con ella. Mientras Microsoft manifiesta que SQL Azure incluir una gama de capacidades orientadas a los datos, incluso sincronizacin de datos, generacin de informes, anlisis de informacin, entre otras, el primer componente de SQL Azure que aparecer es SQL Azure Database. El Grfico 3 demuestra esta idea.

Grfico 3: SQL Azure ofrece servicios orientados a los datos en el cloud. SQL Azure Database proporciona un sistema de administracin de base de datos basado en cloud (DBMS). Esta tecnologa permite que las aplicaciones internas y cloud almacenen datos relacionales y de otros tipos en los servidores de Microsoft ubicados en los centros de datos de Microsoft. Al igual que con otras tecnologas cloud, una organizacin solo paga por lo que utiliza, por lo cual el uso (y el costo) aumenta y disminuye a medida que cambian sus necesidades. Utilizar una base de datos cloud tambin permite convertir lo que seran gastos de capital, como inversiones en discos y software DBMS, en gastos operativos. SQL Azure Database se encuentra integrado en Microsoft SQL Server. En gran medida, esta tecnologa ofrece un entorno de SQL Server en el cloud, completo con clasificaciones, vistas, procesos almacenados, activadores y ms. Se puede acceder a estos datos a travs de ADO.NET y otras interfaces de acceso a datos de Windows. En realidad, las aplicaciones que hoy acceden a SQL Server de forma local trabajarn de la misma forma con datos en SQL Azure Database. Los clientes tambin pueden usar software interno, como SQL Server Reporting Services, para trabajar con sus datos basados en cloud. Mientras que las aplicaciones pueden utilizar SQL Azure Database de la misma forma que lo hacen con DBMS local, se reducen enormemente los requisitos de administracin. En lugar de preocuparse por la mecnica, como monitorear el uso de disco y brindar servicio a archivos de registro, un cliente de SQL Azure Database puede enfocarse en lo que es importante: los datos. Microsoft maneja los detalles operativos. Y al igual que otros componentes de la plataforma de Windows Azure, utilizar SQL Azure Database es directo: tan slo dirjase a un portal web y proporcione la informacin necesaria. Las aplicaciones deben acudir a SQL Server en distintas formas. A continuacin se mencionan algunos ejemplos:

Una aplicacin de Windows Azure puede almacenar sus datos en SQL Azure Database. Mientras que Windows Azure proporciona su propio almacenamiento, las tablas relacionales no se ofrecen como

una de las opciones. Ya que muchas aplicaciones existentes utilizan el almacenamiento relacional y muchos desarrolladores saben cmo trabajar con l, una importante cantidad de aplicaciones de Windows Azure puede acudir a SQL Azure Database para trabajar con datos en esta forma conocida. Para mejorar el rendimiento, los clientes pueden especificar que una aplicacin especfica de Windows Azure se ejecute en el mismo centro de datos en donde SQL Azure Database almacena la informacin de esa aplicacin.

Una aplicacin en una pequea empresa o departamento de una ms grande organizacin puede acudir a SQL Azure Database. En lugar de almacenar su informacin en una base de datos de SQL Server o Access que se ejecuta en una PC que se encuentra debajo del escritorio de un tercero, la aplicacin puede aprovechar la confiabilidad y la disponibilidad del almacenamiento cloud. Imagine que un fabricante desea que la informacin de su producto est disponible en la red del agente y directamente para los clientes. Ubicar estos datos en SQL Azure Database permitira que stos puedan accederse a travs de aplicaciones que se ejecutan en la plataforma del agente y a travs de una aplicacin web del cliente que ejecuta el propio fabricante.

Ya sea para admitir una aplicacin de Windows Azure, hacer que los datos tengan mayor disponibilidad u otras razones, los servicios de datos en el cloud pueden ser atractivos. A medida que las nuevas tecnologas se tornan disponibles dentro del entorno de SQL Azure, las organizaciones tendrn la opcin de utilizar el cloud para ms tareas orientadas a los datos.

PLATAFORMA APPFABRIC DE WINDOWS AZURE


Ejecutar aplicaciones y almacenar datos en el cloud son aspectos importantes de la informtica cloud. No obstante, no son los nicos aspectos. Otra opcin es suministrar servicios de infraestructura basados en cloud. Llenar este vaco es el objetivo de la plataforma AppFabric de Windows Azure. Las funciones que hoy ofrece AppFabric abordan desafos de infraestructura comunes para conectar aplicaciones distribuidas. El Grfico 4 muestra sus componentes.

Grfico 4: la plataforma AppFabric de Windows Azure ofrece infraestructura basada en cloud que puede utilizarse para las aplicaciones internas y del cloud. Los componentes de la plataforma AppFabric de Windows Azure son:

Service Bus: exhibir los servicios de una aplicacin en Internet puede resultar ms difcil de lo que parece. El objetivo de Service Bus es simplificar esto al permitir que una aplicacin exhiba terminales que puedan accederse por otras aplicaciones, ya sean internas o del cloud. A cada terminal expuesta se le asigna una URI, la cual pueden utilizar los clientes para ubicar y acceder al servicio. Service Bus tambin maneja los desafos que implica encargarse de la traduccin de direcciones de red e ingresar en firewalls sin abrir nuevos puertos para buscar aplicaciones expuestas. Control de acceso: Este servicio permite que una aplicacin de cliente REST se autentique y ofrezca una aplicacin de servidor con informacin de identidad. Entonces, el servidor puede usar esta informacin para decidir lo que puede realizar esta aplicacin.

Al igual que con Windows Azure y SQL Azure, se ofrece un portal con acceso desde Internet para que los clientes inicien sesin en AppFabric con una ID de Windows Live. Una vez realizado, estos servicios se pueden utilizar de varias formas, incluso:

Imagine una empresa que deseaba que el software y sus socios de negocios accedieran a una de sus aplicaciones. Esto podra exponer las funciones de esta aplicacin a travs de los servicios web REST o SOAP, luego registrar sus terminales con Service Bus. De esa forma, sus socios de negocios podran utilizar Service Bus para encontrar estas terminales y acceder a los servicios. Una aplicacin que se ejecuta en Windows Azure puede necesitar el acceso a los datos almacenados en una base de datos interna. Para realizar esto, se requiere que la base de datos se encuentre disponible va Internet, un problema que puede solucionarse al crear un servicio que acceda a los datos, y que luego exhiba este servicio va Service Bus.

Imagine a una empresa que expone servicios de aplicaciones a sus socios de negocios. Si se exponen esos servicios utilizando REST, la aplicacin puede acudir al Control de acceso para autenticar y proporcionar informacin de identidad para cada aplicacin cliente. En lugar de mantener la informacin de forma interna sobre cada aplicacin del socio de negocios, podra almacenarse en el servicio de Control de acceso.

Como ya se ha descripto, la plataforma AppFabric de Windows Azure ofrece servicios de infraestructura basados en cloud. Microsoft tambin est creando una tecnologa anloga conocida como Windows Server AppFabric. Como su nombre lo sugiere, los servicios que ofrece se ejecutan en Windows Server (admiten aplicaciones internas) en lugar de funcionar en el cloud. A su vez, los servicios internos son diferentes de los de la plataforma AppFabric de Windows Azure, los cuales se enfocan hoy en da en servicios WCF de hosting y en cach distribuida. No se confunda; en este documento, el nombre AppFabric se utiliza para referirse a los servicios basados en cloud. A su vez, no confunda la plataforma AppFabric de Windows Azure con su componente de estructura. Aunque ambos tienen nombres parecidos, son tecnologas completamente separadas que abordan distintos problemas.

VISIN MS DETALLADA SOBRE LAS TECNOLOGAS


Un primer paso importante es comprender la plataforma de Windows Azure. No obstante, tambin resulta til comprender cada tecnologa con mayor profundidad. Esta seccin ofrece una visin un poco ms detallada sobre cada miembro de la familia.

WINDOWS AZURE
Las dos principales tareas de Windows Azure son: ejecutar aplicaciones y almacenar sus datos. Por consiguiente, esta seccin se divide en dos partes, una por cada rea.

Ejecutar aplicaciones
En Windows Azure, por lo general una aplicacin cuenta con varias instancias y cada una ejecuta una copia de la totalidad o parte del cdigo de la aplicacin. Cada una de estas instancias se ejecuta en su propia PC virtual (VM) de Windows. Estas VM se proporcionan a travs de un hipervisor que est diseado especficamente para utilizarse en el cloud. Pero un desarrollador no crea estas VM de forma explcita. Tampoco proporciona la imagen de su propia VM para que se ejecute Windows Azure, ni se encarga de mantener una copia del sistema operativo de Windows. Por el contrario, un desarrollador crea aplicaciones a travs de roles web y/o roles de trabajo, luego comunica a Windows Azure cuntas instancias de cada rol se ejecutarn. Windows Azure crea de forma silenciosa una VM para cada instancia, luego ejecuta la aplicacin en ellas. El Grfico 5 muestra cmo funciona.

10

Grfico 5: las aplicaciones de Windows Azure pueden consistir en instancias de rol web e instancias de rol de trabajo, y cada una de ellas se ejecuta en su propia PC virtual. Como su nombre lo sugiere, cada instancia de rol web acepta pedidos HTTP (o HTTPS) entrantes a travs de Internet Information Services (IIS) 7. Se puede implementar un rol web a travs de ASP.NET, WCF u otra tecnologa que trabaje con IIS. Como se demuestra en el Grfico 5, Windows Azure ofrece balanceo de carga integrado para distribuir pedidos en todas las instancias de rol web que forman parte de la misma aplicacin. Los roles web estn diseados para aceptar y procesar pedidos HTTP a travs de IIS. No obstante, no todo es una aplicacin web, por eso Windows Azure tambin ofrece roles de trabajo. Una instancia de rol de trabajo es similar a una instancia de rol web. La diferencia clave es que un rol de trabajo no tiene IIS preconfigurado para que se ejecute en cada instancia y, a diferencia de los roles web, las instancias de rol de trabajo no se hospedan en IIS. Un rol de trabajo incluso puede aceptar pedidos externos, e incluso los desarrolladores pueden ejecutar otro servidor web, como Apache, en una instancia de rol de trabajo. Las instancias de rol de trabajo pueden comunicarse con las de rol web de varias formas. Una opcin es utilizar las colas de almacenamiento de Windows Azure. Una instancia de rol web puede insertar un elemento de trabajo en una cola, y una instancia de rol de trabajo puede eliminarlo y procesarlo. Otra opcin es que los roles de trabajo y los roles web configuren conexiones directas a travs de Windows Communication Foundation (WCF) u otra tecnologa. Ya sea que ejecute una instancia de rol web o una de rol de trabajo, cada VM tambin contiene un agente de Windows Azure, el cual permite que la aplicacin interacte con la estructura de Windows Azure, como se muestra en el Grfico 5. Este agente exhibe una API definida por Windows Azure para que la instancia realice tareas como encontrar la raz de un recurso de almacenamiento local en la instancia de su VM.

11

Para los roles web y de trabajo, Windows Azure permite que los desarrolladores elijan entre cuatro tamaos de VM: uno, dos, cuatro y ocho ncleos. Ya que a cada VM se le asigna uno o ms ncleos, las aplicaciones pueden contar con rendimiento predecible. Y para aumentar su rendimiento, el dueo de una aplicacin puede incrementar la cantidad de instancias en funcionamiento especificada en el archivo de configuracin de la aplicacin. La estructura de Windows Azure entonces agiliza la creacin de nuevas VM, les asigna ncleos y comienza a ejecutar ms instancias de esta aplicacin (la estructura no lo hace de forma automtica en respuesta al cambio de carga, pero proporciona API que permiten a una aplicacin hacerlo por s misma). La estructura tambin detecta cuando falla una instancia de rol web o de trabajo y luego inicia una nueva. Advierta lo que esto implica: para ser escalables, las instancias de rol web de Windows Azure no deben tener estado. Cualquier estado especfico del cliente debe ingresarse en el almacenamiento de Windows Azure, enviarse a SQL Azure Database o enviarse nuevamente al cliente en una cookie. La ausencia de estado del rol web no se encuentra regulada por el balanceo de carga integrado de Windows Azure. Debido a que no permite crear una afinidad con una instancia de rol web especfica, no existe una forma de garantizar que varios pedidos del mismo usuario se enviarn a la misma instancia. Los roles web y los roles de trabajo se implementan a travs de tecnologas de Windows estndar. Por lo tanto, migrar aplicaciones existentes a Windows Azure puede necesitar algunos cambios. Por ejemplo, las aplicaciones de Windows Azure hoy en da pueden ejecutarse solo en modo de usuario: no se permite el modo de administrador. No obstante, en gran medida, el entorno que observa una aplicacin ejecutndose en Windows Azure es muy similar a la que observa en un sistema interno de Windows Server 2008. Para los desarrolladores, crear una aplicacin de Windows Azure se asemeja a crear una aplicacin de Windows tradicional. Microsoft proporciona plantillas de proyectos de Visual Studio para crear roles web, roles de trabajo de Windows Azure o una combinacin de ellos, y los desarrolladores pueden utilizar el lenguaje de programacin de Windows. Adems, el kit de desarrollo de software de Windows Azure incluye una versin del entorno de Windows Azure que se ejecuta en la PC del desarrollador. Conocida como la Estructura de desarrollo de Windows Azure, incluye almacenamiento, un agente y todo aquello que observa una aplicacin que se ejecuta en el cloud. Un desarrollador puede crear y depurar su aplicacin a travs de este simulacro local, y luego implementarla en Windows Azure en el cloud cuando se encuentre lista. Sin embargo, algunos elementos son realmente diferentes en el cloud. Por ejemplo, no es posible agregar un depurador a una aplicacin basada en cloud, por lo cual la depuracin de aplicaciones del cloud acude en principio a la escritura en un registro mantenido por Windows Azure. Windows Azure tambin ofrece otros servicios a los desarrolladores, como informacin sobre el consumo de una CPU al ejecutar una aplicacin, ancho de banda entrante y saliente, y almacenamiento.

Acceder a datos
Las aplicaciones trabajan con datos de diferentes formas. Algunas veces, todo lo que se necesita es un simple blob, mientras que en otras situaciones se necesita acudir a una forma ms estructurada para almacenar informacin. Y en algunos casos, todo lo que realmente se necesita es una forma de intercambiar datos entre distintas partes de una aplicacin. El almacenamiento de Windows Azure aborda estos tres requisitos, como se muestra en el Grfico 6.

12

Grfico 6: Windows Azure permite almacenar datos en blobs, tablas y colas, y se pueden acceder de forma REST a travs de HTTP o HTTPS. La forma ms sencilla de almacenar datos en Windows Azure es a travs de blobs. Como lo sugiere el Grfico 6, existe una simple jerarqua: 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 (tan grandes como un terabyte cada uno) y para que la transferencia de blobs extensos sea ms eficaz, cada uno puede subdividirse en bloques. Si falla, se puede reanudar la transmisin con el bloque ms reciente en lugar de enviar todo el blob nuevamente. Los blobs pueden tener metadatos asociados, como informacin sobre dnde se realiz una fotografa JPEG o quin es el compositor de un archivo MP3. Y para que el acceso distribuido a los datos del blob sea ms eficaz, Windows Azure ofrece una red de entrega de contenido (CDN), la cual almacena datos de acceso frecuente a ubicaciones ms cercanas a las aplicaciones que la utilizan. Otra forma de utilizar blobs es a travs de XDrives de Windows Azure, los cuales pueden montarse mediante una instancia de rol web o una de trabajo. El almacenamiento en segundo plano de un XDrive es un blob y, una vez montado un XDrive, la instancia puede leer y escribir los datos del sistema de archivos que se almacenan en un blob de forma persistente. Los blobs son adecuados para algunos tipos de datos, pero son demasiado desestructurados para muchas situaciones. 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. Una tabla no tiene un esquema definido; por el contrario, las propiedades pueden ser de varios tipos, como int, string, Bool, o DateTime. Y en lugar de utilizar SQL, una aplicacin puede acceder a los datos de una tabla utilizando ADO.NET Data Services o LINQ. Una sola tabla puede ser muy extensa, con miles de millones de entidades

13

con terabytes de datos, y el almacenamiento de Windows Azure puede particionarla en muchos servidores para mejorar el rendimiento. Los blobs y las tablas se enfocan en el almacenamiento de datos. 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. 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 ingresar 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 entregarse de otra manera. Sin importar cmo se almacenan, en blobs, tablas o colas, todos los datos que se encuentran en el almacenamiento de Windows Azure se replican tres veces. Esta rplica permite tolerancia de fallos, ya que extraviar una copia no se considera grave. El sistema garantiza consistencia, por lo que una aplicacin que lee datos que ha escrito obtiene lo que desea. El almacenamiento de Windows Azure puede accederse a travs de una aplicacin de Windows Azure u otra que se ejecute en otra plataforma. En ambos casos, los tres estilos de almacenamiento de Windows Azure utilizan las convenciones de REST para identificar y exhibir datos. Todo tiene un nombre utilizando URI y tiene acceso con operaciones HTTP estndar. Un cliente .NET puede acudir a ADO.NET Data Services y LINQ, pero el acceso al almacenamiento de Windows Azure desde, digamos, una aplicacin Java, simplemente puede utilizar REST estndar. La plataforma de Windows Azure aplica cargos sin importar los recursos de almacenamiento e informtica. Esto significa que una aplicacin interna puede tan slo usar el almacenamiento de Windows Azure, por lo que accede a sus datos con REST como se describi anteriormente. Y debido a que se puede acceder a esos datos directamente desde aplicaciones que no sean de Windows Azure, stos permanecen disponibles aun si la aplicacin de Windows Azure que utilizan no se encuentra en funcionamiento. El objetivo de las plataformas de aplicaciones, ya sean internas o del cloud, es admitir aplicaciones y datos. Windows Azure ofrece un entorno para ambos. Ms adelante, observar una parte de lo que podra haber sido las aplicaciones internas de Windows ejecutndose en esta nueva plataforma cloud.

SQL AZURE
Un DBMS en el cloud resulta atractivo por muchas razones. Para algunas organizaciones, resulta conveniente que un proveedor de servicios especializado garantice la confiabilidad, maneje copias de seguridad y realice otras funciones de administracin. Los datos en el cloud tambin pueden accederse a travs de aplicaciones que se ejecutan en otro entorno, incluso en dispositivos mviles. Y dada la economa de escala que disfruta el proveedor de servicios, utilizar una base de datos cloud puede resultar ms accesible que hacerlo usted mismo. El objetivo de SQL Azure Database, el primer miembro de la familia de SQL Azure, es proporcionar todos estos beneficios. El Grfico 7 muestra una visin sencilla de esta tecnologa.

14

Grfico 7: las aplicaciones acceden a los datos en SQL Azure Database a travs del protocolo TDS de Microsoft, lo cual les permite utilizar ADO.NET y otras interfaces de datos comunes. Una aplicacin que utiliza SQL Azure Database puede ejecutarse en Windows Azure, en un centro de datos de una empresa o en otro entorno. Dondequiera que se ejecute, la aplicacin accede a los datos a travs del protocolo denominado Flujo de datos tabulares (TDS). ste es el mismo protocolo que se utiliza para acceder a la base de datos local de SQL Server y, por eso, una aplicacin de SQL Azure Database puede utilizar cualquier librera de cliente de SQL Server existente. Esto incluye ADO.NET, ODBC y PHP. Y debido a que SQL Azure Database parece un sistema de SQL Server comn, tambin pueden utilizarse herramientas estndar, incluso SQL Server Management Studio, SQL Server Integration Services y BCP para copia de datos agrupados. Para la mayora, una aplicacin que utiliza SQL Azure Database observa un entorno SQL Server conocido. No obstante, algunas cosas se omiten en la primera versin de esta tecnologa, como SQL Common Language Runtime (CLR) y soporte para datos espaciales (Microsoft afirma que ambos se encontrarn disponibles en una futura versin). Adems, ya que Microsoft se encarga de la administracin, el servicio no expone funciones administrativas fsicas. Un cliente no puede cerrar el sistema, por ejemplo, ni interactuar directamente con el hardware en que se ejecuta. Y como lo esperara en un entorno compartido, una consulta puede ejecutarse solo por un tiempo limitado: ningn pedido puede exceder la cantidad de recursos predefinida. Sin embargo, mientras el entorno tiene una apariencia estndar, el servicio que recibe la aplicacin es ms slido que lo que proporciona una sola instancia de SQL Server. Al igual que en el almacenamiento de

15

Windows Azure, todos los datos almacenados en SQL Azure Database se replican tres veces. Y al igual que el almacenamiento de Windows Azure, el servicio ofrece una slida consistencia: Cuando se devuelve una escritura, los datos se hacen persistentes. El objetivo consiste en ofrecer almacenamiento de datos confiable, incluso cuando falla el sistema y la red. En su primera versin, el tamao mximo de una sola base de datos en SQL Azure Database es de 10 gigabytes. Una aplicacin cuyos datos se encuentran dentro del lmite puede utilizar solo una base de datos, mientras que aquella con ms datos necesitar crear varias bases de datos. El Grfico 8 demuestra esta idea.

Grfico 8: una aplicacin puede utilizar una o varias bases de datos. Con una sola base de datos, una aplicacin observa un conjunto de datos, por lo que las consultas de SQL pueden usarse como siempre en todos estos datos. Con varias bases de datos, sin embargo, la aplicacin debe dividir sus datos entre ellas. Por ejemplo, la informacin sobre los clientes cuyos nombres comienzan con A puede ubicarse en una base de datos, y los nombres que comienzan con B pueden ubicarse en otra, y as sucesivamente. Mientras cada base de datos expone la interfaz relacional usual, la aplicacin ya no puede efectuar una sola consulta de SQL que acceda a toda la informacin de todas las bases de datos. Por el contrario, las aplicaciones que trabajan con varias bases de datos debern conocer la forma en que se dividieron esos datos. En algunos casos, las aplicaciones con menor cantidad de informacin incluso pueden optar por usar varias bases de datos. Este enfoque admite consultas paralelas, por lo que puede ofrecer un mejor rendimiento. De forma similar, una aplicacin de mltiples usuarios que ofrece servicios a distintas organizaciones de clientes puede optar por usar varias bases de datos, tal vez asignando una de cada organizacin.

16

Ya sea que una aplicacin necesite una o varias bases de datos, SQL Azure Database permite que los desarrolladores aborden distintos escenarios. Sin importar qu problema se resuelva, el objetivo fundamental de la tecnologa es el mismo: proporcionar una base de datos cloud conocida, confiable y de bajo costo para muchos tipos de aplicaciones.

PLATAFORMA APPFABRIC DE WINDOWS AZURE


Ya sea que las aplicaciones se ejecuten en el cloud o de forma interna, necesitan con frecuencia conectarse con otras aplicaciones. El objetivo de la plataforma AppFabric de Windows Azure es posibilitar estas conexiones. Esta seccin ofrece una visin ms detallada sobre Service Bus y Control de acceso, los dos componentes de AppFabric.

Service Bus
Suponga que tiene una aplicacin que funciona dentro de su organizacin y que expone un servicio web integrado en Windows Communication Foundation (WCF). Suponga despus que desea conectar este servicio a travs de Internet con software que se ejecuta fuera de su organizacin. Este software cliente puede ejecutarse en una plataforma cloud, como Windows Azure, o dentro de otra organizacin. A primera vista, parece ser un problema sencillo. Ya que su aplicacin ofrece sus funciones a travs de servicios web (ya sean basados en REST o SOAP), puede permitir que se visualicen esos servicios web en el mundo exterior. Cuando realmente quiere intentarlo, surgen algunos problemas. En primer lugar, de qu forma los clientes en otras organizaciones (o incluso en otra parte de su organizacin) encuentran terminales a las que puedan conectarse para su servicio? Sera ideal contar con algn registro en donde otras personas puedan ubicar su aplicacin. Y una vez que la ha encontrado, de qu forma los pedidos del software de otras organizaciones llegan a su servicio? La Traduccin de direcciones de red (NAT) es muy comn, por lo que una aplicacin con frecuencia no tiene una direccin IP fija para exhibir de forma externa. E incluso si no se utiliza NAT, de qu forma llegan los pedidos a su firewall? Es posible abrir puertos de firewall para permitir el acceso a su aplicacin, pero muchos administradores de red se oponen. Service Bus aborda estos desafos. El Grfico 10 muestra la forma.

17

Grfico 10: un servicio WCF puede registrar terminales con Service Bus, luego permite que los clientes detecten y utilicen las terminales para acceder al servicio. Al principio, su servicio WCF registra una o ms terminales con Service Bus (paso 1). Para cada terminal registrada, Service Bus exhibe su propia terminal correspondiente (paso 2). Service Bus tambin asigna una raz URI a su organizacin, en la que puede crear cualquier jerarqua de nombres que desee. Esto permite que se asignen URI detectables y especficas a sus terminales. Su aplicacin tambin debe habilitar una conexin con Service Bus para cada terminal que expone. Service Bus mantiene esta conexin disponible, lo cual resuelve dos problemas. Primero, NAT ya no es un problema, pues el trfico en la conexin habilitada con Service Bus siempre se redireccionar a su aplicacin. Segundo, ya que la conexin se ha iniciado dentro del firewall, no hay problema en transferir la informacin a la aplicacin a travs de esta conexin: el firewall no bloquear este trfico. Cuando un cliente que ejecuta en el cloud o de forma interna en otra organizacin desea acceder a su servicio, contacta al registro de Service Bus (paso 3) para encontrar la terminal. Este pedido utiliza el Protocolo de publicacin Atom y devuelve un documento de servicio AtomPub con referencias a las terminales que expone Service Bus en representacin de su aplicacin. Una vez que los tiene, el cliente puede solicitar operaciones en los servicios expuestos a travs de estas terminales (paso 4). Por cada pedido que recibe Service Bus, solicita la operacin correspondiente en la terminal expuesta por su servicio WCF (paso 5). Y aunque no se muestra en el grfico, Service Bus establece una conexin directa entre una aplicacin y su cliente cuando resulta posible, lo cual permite que su comunicacin sea ms eficaz. Adems de simplificar la comunicacin, Service Bus mejora la seguridad. Debido a que los clientes ahora solo observan una direccin IP que proporciona Service Bus, no se requiere exponer ninguna direccin IP dentro de su organizacin. Esto permite que su aplicacin se mantenga annima con eficacia, ya que el

18

mundo exterior no puede visualizar su direccin IP. Service Bus acta como un DMZ externo, el cual ofrece un nivel de indireccin para disuadir intrusos maliciosos. Mientras que una aplicacin que expone sus servicios a travs de Service Bus se implementa utilizando WCF, se pueden crear los clientes con WCF u otras tecnologas, como Java. Sin importar cmo se crean, los clientes pueden realizar pedidos a travs de TCP, HTTP o HTTPS. Las aplicaciones y sus clientes tambin pueden utilizar sus propios mecanismos de seguridad, como cifrado, para proteger a su comunicacin de intrusos maliciosos y del propio Service Bus. Exhibir aplicaciones al mundo exterior no es tan sencillo como parece. El propsito de Service Bus es hacer que la implementacin de estas conexiones sea lo ms directa posible.

Control de acceso
Trabajar con identidad es una parte fundamental de muchas aplicaciones distribuidas. En funcin de la informacin de identidad de un usuario, una aplicacin puede tomar decisiones sobre lo que se le permite hacer a ese usuario. Las aplicaciones tambin pueden tener identidades, y en algunas situaciones, una aplicacin que recibe un pedido puede decidir si se autoriza ese pedido en funcin de la identidad de la aplicacin cliente, y no en funcin de los usuarios de esa aplicacin. El Control de acceso aborda este problema: transmitir la informacin de identidad de aplicaciones a travs de servicios basados en REST (Microsoft manifiesta que las futuras versiones ampliarn este rol de servicio, por lo que agregarn soporte para transmitir la informacin de identidad del usuario, servicios basados en SOAP y ms). El Grfico 11 muestra cmo lo realiza.

19

Grfico 11: el servicio de Control de acceso permite que las aplicaciones REST autentiquen y reciban informacin de identidad sobre las aplicaciones cliente. Para comunicarse con una aplicacin de servidor especfica, el cliente primero debe obtener un token que incluya la informacin de identidad de este cliente. Esta informacin se expresa como uno o ms reclamos, cada uno de los cuales describe la aplicacin cliente de alguna forma. Por ejemplo, un reclamo puede indicar la organizacin que posee esta aplicacin cliente, mientras que otro identifica un tipo de aplicacin especfico dentro de esta organizacin. Este token se genera a travs del servidor de Control de acceso, y para obtenerlo, la aplicacin cliente primero debe autenticarse, como se muestra en el Grfico 11 (paso 1). A travs del uso de un canal HTTPS cifrado, la aplicacin enva uno de tres elementos para realizar esto:

Una clave de 32 bytes que genera la aplicacin de servidor para esta aplicacin cliente. El servidor puede crear esta clave o puede solicitar que el servicio de Control de acceso la genere. Sin importar de dnde provenga, la clave debe distribuirse a la aplicacin cliente a travs de un mecanismo fuera de banda. La clave tambin debe registrarse con el Control de acceso, lo cual permite que este servicio autentique la aplicacin cliente, de forma similar a una contrasea. Si se utiliza esta opcin, un administrador define los reclamos sobre la aplicacin cliente en el Control de acceso y luego los asocia con la clave de la aplicacin. Un token que incluya reclamos sobre esta aplicacin cliente. Este token se firma a travs de una clave de 32 bytes creada por el servidor, lo cual permite que el Control de acceso autentique al cliente al verificar esta firma. El formato del token es sencillo: es tan slo un conjunto de pares de nombres/valores legibles para el ser humano.

20

Un token descripto a travs de Security Assertion Markup Language (SAML). En este caso, el token no se firma a travs de la clave de 32 bytes proporcionada por el servidor. Por el contrario, la organizacin que ejecuta la aplicacin cliente debe establecer una relacin de federacin con el servicio de Control de acceso. Esta opcin es til en especial para las organizaciones con una infraestructura de identidades establecida y basada en reclamos en funcin de una tecnologa como Active Directory Federation Services (AD FS) 2.0. En este caso, el servidor AD FS 2.0 dentro del dominio de Windows de la aplicacin puede generar un token SAML, y la aplicacin puede utilizarlo para identificarse en el Control de acceso.

Una vez que se autentica la aplicacin cliente, el servicio de Control de acceso crea otro token que contiene informacin de identidad para este cliente (paso 2). Este token utiliza el mismo formato que la segunda opcin mencionada anteriormente: es un conjunto de pares de nombres/valores legibles para el ser humano, cada uno de los cuales expresa un reclamo sobre esta aplicacin. La aplicacin de servidor para la que se gener este token puede definir reglas sobre la forma en que se crear este token. Si el cliente proporciona solo la clave de 32 bits, las reglas son bastante simples: el servicio de Control de acceso solo puede enviar un conjunto predefinido de reclamos en el nuevo token. No obstante, si el cliente proporciona un token de nombres/valores o un token SAML, esas reglas pueden ser ms complejas. Por ejemplo, suponga que diferentes aplicaciones de compra en distintas organizaciones cliente utilizan varias cadenas para expresar este aspecto de sus identidades. Una puede enviar la cadena Aplicacin de compra, otra puede enviar la cadena PurchApp y la tercera el cdigo numrico 08041963. Al utilizar reglas definidas por el administrador de las aplicaciones de servidor, el Control de acceso puede convertir todas estas reglas en la cadena Compra. Este tipo de transformacin de reclamos simplifica la tarea de la aplicacin de servidor. Ahora puede buscar este nico valor en lugar de conocer todas las variaciones en sus clientes. Una vez creado el nuevo token, se enva de vuelta a la aplicacin cliente (paso 3). Como lo muestra el Grfico 11, se firma este nuevo token utilizando una clave que proporciona la aplicacin de servidor. El cliente enva este token firmado al servidor (paso 4), y ste luego valida la firma del token y utiliza los reclamos que contiene (paso 5). Trabajar con la identidad es un elemento importante de prcticamente todas las aplicaciones distribuidas. El objetivo de la primera versin del Control de acceso es permitir que se simplifiquen las interacciones entre aplicaciones a travs de REST. Ms adelante, podr ver que las funciones de este servicio incluyen un conjunto ms amplio de servicios de identidad basados en cloud.

UNIFICAR FUNCIONES: EJEMPLO


Los componentes de la plataforma de Windows Azure pueden utilizarse de varias formas. Para conocer un poco sobre las posibilidades, resulta til visualizar un simple escenario que demuestre una forma de unir estos elementos. Suponga que una empresa de software crea una aplicacin basada en cloud que admite profesionales creativos. Esta aplicacin permite que sus usuarios administren proyectos, almacenen y accedan a recursos digitales como videos, imgenes y ms. Los usuarios de la aplicacin pueden ser diseadores independientes y empleados en organizaciones ms grandes. El Grfico 12 muestra cmo esta aplicacin puede utilizar la plataforma de Windows Azure.

21

Grfico 12: una aplicacin web que se ejecuta en Windows Azure puede utilizar blobs y SQL Azure para almacenamiento, luego puede acudir a Service Bus para acceder a una base de datos interna. La lgica de la aplicacin se implementa a travs de roles web, por lo que los usuarios acceden a ella a travs de exploradores web. Esos usuarios pueden ser empleados de alguna organizacin o creativos independientes que trabajan por su cuenta. Para ambos, la aplicacin almacena sus recursos digitales en los blobs de almacenamiento de Windows Azure. La aplicacin tambin realiza un seguimiento de la informacin de proyectos, como el nombre del cliente y las horas facturadas. Los clientes tienen una opcin: pueden permitir que la aplicacin almacene sus datos en el cloud a travs de SQL Azure Database, o bien pueden mantener la informacin en la base de datos dentro de su organizacin (algunas empresas desean conservar sus datos dentro de sus firewalls por razones reglamentarias, o para cumplir con las leyes de privacidad de datos de sus respectivos pases). Para admitir la segunda opcin, la aplicacin utiliza Service Bus para conectarse a una base de datos interna. Como se muestra en este sencillo ejemplo, la plataforma de Windows Azure est diseada para ofrecer un conjunto acoplado de servicios para aplicaciones cloud. Utilizar esto con eficacia implica comprender los componentes y cmo se pueden utilizar en conjunto.

PRXIMOS PASOS
Microsoft ha anunciado una cantidad de actualizaciones que planifica agregar a la plataforma de Windows Azure en un futuro cercano. Entre ellas se incluyen:

22

Windows Azure obtendr soporte ms amplio para ejecutar aplicaciones existentes. A su vez, una tecnologa con nombre de cdigo Sydney permitir que las instancias de Windows Azure se conecten a un entorno interno a travs de IPSec. SQL Azure proporcionar servicios de sincronizacin de datos basados en Microsoft Sync Framework, los cuales permitirn la sincronizacin de datos entre SQL Azure Database y las bases de datos internas. La funcionalidad de Windows Server AppFabric, la versin interna, comenzar a aparecer en la plataforma AppFabric de Windows Azure. El nombre de cdigo "Dallas" de Microsoft, integrado en Windows Azure y SQL Azure, ofrecer un mercado basado en cloud para informacin. A travs de los servicios REST, los desarrolladores podrn inscribirse a datos de dominio privado y acceder a datos de dominio pblico, como informacin de censo de los EE.UU. y datos estadsticos de las Naciones Unidas.

Todos estos cambios tienen el mismo objetivo: hacer que la plataforma de Windows Azure sea til para un ms amplio conjunto de escenarios.

CONCLUSIONES
La verdad es evidente: la informtica cloud ya lleg. Para los desarrolladores, aprovechar el cloud significa utilizar las plataformas cloud. En la plataforma de Windows Azure, Microsoft presenta un conjunto de opciones que abordan distintas necesidades:

Windows Azure proporciona un entorno de informtica y almacenamiento basado en Windows en el cloud. SQL Azure ofrece un DBMS cloud con SQL Azure Database, y planifica agregar ms servicios de datos basados en cloud. La plataforma AppFabric de Windows Azure ofrece una infraestructura basada en cloud para conectar aplicaciones cloud e internas.

Estos enfoques abordan una variedad de requisitos, y no todos los desarrolladores utilizarn todos. Por lo tanto, ya sea que trabaje para un ISV o en una empresa, algunos servicios de plataforma cloud pueden ser tiles para las aplicaciones que crea su organizacin. Nace un nuevo mundo; preprese para formar parte de l.

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.

23