Published 16 years ago
(updated 13 years ago)
El cómputo en la nube o cloud computing es una de las tendencias que mayor impacto están teniendo en nuestra industria actualmente y hacia el futuro próximo. A pesar de que en el número 22 de SG ya se habló bastante sobre este tema, consideramos pertinente repasar algunos puntos, y aprovechar para familiarizarnos con Azure, que es la propuesta de Microsoft para una plataforma y sistema operativo
para la nube.Entendiendo la nube
Desde hace mucho tiempo, en la iconografía utilizada dentro de los diagramas de topologías de redes, los trayectos donde viajan datos a través de internet se representan como nubes para enmascarar la complejidad del viaje a través de la red de redes. Derivado de esto, la nube es una alegoría de internet y representa precisamente toda la infraestructura que requiere internet para operar.
Cuando abstraemos este concepto e imaginamos la nube como una unidad y no como cada una de sus piezas (protocolos, conexiones, software, servidores, switches y un largo etcétera) tenemos el concepto
al que actualmente se refiere la industria: Ver a internet como un todo, donde dejan de ser importantes los detalles exactos para que se logre echar a andar un aplicativo en internet, y conceptualizar a la nube como una constante, como una infraestructura de facto con la que podemos contar para utilizarla como plataforma de cómputo.
Por lo tanto, podemos definir el cómputo en la nube como la utilización
de internet (como un todo y no por piezas) para almacenar, ofrecer y consumir servicios tanto de hardware como de software a quien lo requiera.
El cómputo en la nube cuenta con varias características comúnmente
aceptadas:
• Tanto el hardware como el software son servicios. En los esquemas
tradicionales es necesario hacer grandes inversiones para tener un servidor en internet. En el esquema basado en la nube se renta el hardware y el software donde se aloja nuestra aplicación, lo que evita desembolsos iniciales.
• Infraestructura dinámica y autoadministrable. Del mismo modo, en una plataforma no orientada a la nube, es necesario realizar la administración
de toda la infraestructura, desde el hardware, sistema operativo, base de datos. Si se desea escalar la aplicación es necesario hacer nuevas inversiones para ampliar o actualizar el hardware para que soporte nuevas cargas además de tener que monitorear el funcionamiento del hardware y de la red, actividades que usualmente requieren de personal especializado, lo cual representa un costo. En contraste, en la nube todo esto se ofrece como servicio y el proveedor se encarga de hacer todo esto de una manera automatizada, utilizando generalmente tecnologías de virtualización.
• Uso de estándares. Los estándares son importantes para lograr un ecosistema eficiente en la nube y una interoperabilidad maximizada. XML, SOAP y últimamente REST son hasta el momento los estándarespreferidos.
• Esquemas de pago basados en el consumo. Generalmente el software se adquiere mediante licenciamiento al hacer un pago, usemos o no usemos el software, el desembolso de dinero debe hacerse de cualquier manera. En el modelo de precios de la nube se propone que los pagos deben estar basados en datos del consumo real, por ejemplo: porcentaje de utilización de los procesadores, accesos a la base de datos, cantidad de hits por tiempo etc.
Como podemos apreciar, el objetivo del cómputo en la nube es disminuir
la complejidad y los costos asociados al generar aplicaciones en Internet. Este concepto, a su vez hace uso de diferentes términos ya utilizados en la industria. (Figura 1)

Clientes. Son los dispositivos que consumen los servicios de la nube. Generalmente acceden a ellos mediante smart clients o páginas web.
Software como servicio. Se refiere a las aplicaciones de negocio en sí. Son las aplicaciones que los desarrollares crean y exponen a través de la nube. Es decir, cuando desarrollamos para la nube, debemos exponer nuestro software como servicio (comúnmente mediante web services y estándares web).
Plataforma como servicio: Se refiere a todo el software y herramientas
de administración que otorga el proveedor de servicios en la nube para desarrollar y administrar las aplicaciones. Esto incluye los SDKs, las consolas web para la administración de los recursos, y las APIs (que a su vez, también son servicios) para comunicarse con la infraestructura etc.
Infraestructura como servicio: Es como tal el hardware que el proveedor de servicios en la nube administra y facilita para el procesamiento y hospedaje de nuestra aplicación.
La plataforma de Servicios Azure: Una solución completa para la nube:
La plataforma de Servicios Azure representa una propuesta integral para resolver los retos que conlleva la implementación del cómputo en la nube. La figura 2 representa los mismos conceptos que la figura 1, pero en base al stack de tecnologías que conforman a Azure.

Las aplicaciones de negocio conforman el software como servicio
(SaaS) que creamos específicamente para la plataforma Azure.
Microsoft provee SDKs para diversas plataformas, como .NET, Java o Ruby que contienen ejemplos y todo lo necesario para desarrollar en la Azure, lo que permite utilizar todo el conocimiento de los desarrolladores al utilizar lenguajes y sintaxis familiares. Además existen herramientas para Visual Studio que permiten integrar completamente la experiencia de programación al IDE de Microsoft, que permite emular el ambiente de la nube, trabajando de forma local. Al terminar el desarrollo el programador accede al portal de administración de Azure y actualiza el proyecto para que quede publicado.
Los servicios de Azure corresponden a la plataforma como servicio (PaaS) lista para ser consumida que ofrece Microsoft para facilitar enormemente las tareas comunes para desarrollar en la nube. Esta plataforma ofrece los siguientes servicios:
• Live Services: Expone los servicios de Microsoft Live tales como identidad, comunicación, presencia, búsqueda, sincronización, ubicación geoespacial, etcétera.
• .NET Services: Proporciona bloques de código hospedados en la nube listos para usarse. Es como tener la biblioteca de clases del .NET Framework, sólo que expuesta en la nube. Proporciona servicios como control de acceso, bus de servicios, flujos de trabajo entre otros.
• SQL Services: Proporciona una base de datos relacional consumible vía REST o SOAP expuesta en la nube.
• SharePoint Services: Otorga servicios de colaboración y personalización
para ser usados en la nube.
• Dynamics CRM: Da acceso por medio de la nube a los servicios de Microsoft Dynamics.
Windows Azure
Windows Azure es el sistema operativo para la nube que se ejecuta exclusivamente en los Dataservers de Microsoft. No es posible descargarlo ni instalarlo en un servidor local. Windows Azure proporciona
abstracción de hardware, almacenamiento, monitoreo y actualización de los servicios, interoperabilidad de plataformas (.NET, Java, Ruby, PHP, COM etc.) y representa la infraestructura como servicio (IaaS) de Microsoft. Windows Azure asegura una disponibilidad 24/7 y se basa en reglas. La plataforma se encarga de la inmensa mayoría de las tareas de mantenimiento y administración.
Windows Azure encapsula la plataforma con la cual se ejecuta, la cual consiste de servidores virtualizados que ejecutan .Net 3.5 SP1, IIS 7 y Windows Server 2008 64 bits en full trust. Es decir, los usuarios de Azure no tienen acceso directo al core de las máquinas virtuales sino que acceden al sistema operativo mediante los servicios expuestos por Windows Azure, mientras que Azure administra automáticamente todo el hardware (redes, DNS, almacenamiento, balanceo
de carga, etcétera). Windows Azure además provee un servicio básico de almacenamiento basado en blobs, tablas y colas hospedadas en la nube. Podríamos decir que es el “sistema de archivos” de Windows Azure.
La tecnología de Windows Azure ha sido probada ya en diferentes servicios que ofrece Microsoft como Live Hotmail, es una plataforma madura que ha sido ahora expuesta a los desarrolladores para su explotación.
Creando un “Hola SG”
Para empezar a trabajar de inmediato con Azure sólo es necesario obtener e instalar las herramientas de Visual Studio para Azure. No hay necesidad de registro en el sitio de Azure a menos de que se desee publicar el servicio.
En este breve ejemplo crearemos un web cloud service básico.
1. Iniciemos Visual Studio 2008 (si se desarrolla en Windows Vista o Windows 7, entonces es necesario ejecutarlo en modo administrador)
2. Dentro de Visual Studio 2008 seleccionar File -> New -> Project
3. En Project Types seleccionar “Cloud Service” y en los templates seleccionar “Web Cloud Service”.
4. El template seleccionado, creará dos proyectos: SGServicioEnLaNube
que básicamente contiene los archivos de configuración de la aplicación (las reglas que seguirá Azure para entregar el servicio) y SGServicioEnLaNube_WebRole que simplemente es un proyecto web tradicional (Asp.Net Web Project)

5. El siguiente paso será abrir la página asp.net creada por default y crear un control tipo “Label” al cual le agregaremos un mensaje desde el code-behind:

6. Abrimos el code-behind y en el evento Page_Load agregaremos un mensaje a nuestro Label:

7. Antes de realizar la depuración de nuestro sitio, es necesario establecer como proyecto de inicio el proyecto web (SGServicioEnLaNube_WebRole ). Finalmente realizamos la depuración de nuestro proyecto, presionando F5 nuestro sitio web será desplegadoen nuestro navegador predeterminado, como cualquier otra aplicación ASP.NET

8. Mientras la aplicación se ejecuta, el systray muestra un ícono que representa al programa “Development Fabric” que es un emulador que simula el ambiente de hospedaje real de Azure, aunque lo hace de manera local.
9. Para hospedar el servicio en Azure, debemos publicar el proyecto y posteriormente seleccionar con el menú contextual “Browse to Portal”.
10. Esto nos llevará al portal de Azure en internet (es necesario registrarse
previamente, y para poder publicar aplicaciones primero hay que obtener un token). Seleccionamos New Project y posteriormente Hosted Services

11. El portal de Azure posteriormente solicitará un nombre único para la aplicación (único a nivel mundial).

12. Como podemos ver, Azure muestra los servidores de staging (preproducción) y Producción. Al oprimir el botón Deploy el sistema nos preguntará la ruta en el disco duro local en la cual se encuentran los archivos generados en el paso 9 (con extensión . cscfg y .cspkg) Al terminar de subirse dichos archivos, el sistema publicará el proyecto y mostrará la ruta para acceder a la aplicación en la nube.
13. Posteriormente dentro del portal es posible promover el sitio de staging a producción.
Referencias:
SDKs [microsoft.com/azure/sdk.mspx]
Services [microsoft.com/azure/services.mspx]
Herramientas de Azure para VS http:[is.gd/p3GV]
FAQs de Azure [microsoft.com/azure/faq.mspx]
Documentación para el desarrollo con Azure:
[msdn.microsoft.com/azure]
Acerca de los Autores
Miguel Angel Morán (Twitter: @SrBichi) y Misael Monterroca (Twitter: @mmonterroca) son Microsoft Most Valuable Professionals (MVP) en C#. Cuentan con 13 años de experiencia desarrollando y lidereando soluciones de software de misión crítica en las más diversas industrias. Participan activamente en conferencias, comunidades de desarrollo y divulgación tecnológica. Actualmente son consultores en emLink, empresa especializada en soluciones de software en las áreas de movilidad, comercio electrónico y colaboración.
para la nube.Entendiendo la nube
Desde hace mucho tiempo, en la iconografía utilizada dentro de los diagramas de topologías de redes, los trayectos donde viajan datos a través de internet se representan como nubes para enmascarar la complejidad del viaje a través de la red de redes. Derivado de esto, la nube es una alegoría de internet y representa precisamente toda la infraestructura que requiere internet para operar.
Cuando abstraemos este concepto e imaginamos la nube como una unidad y no como cada una de sus piezas (protocolos, conexiones, software, servidores, switches y un largo etcétera) tenemos el concepto
al que actualmente se refiere la industria: Ver a internet como un todo, donde dejan de ser importantes los detalles exactos para que se logre echar a andar un aplicativo en internet, y conceptualizar a la nube como una constante, como una infraestructura de facto con la que podemos contar para utilizarla como plataforma de cómputo.
Por lo tanto, podemos definir el cómputo en la nube como la utilización
de internet (como un todo y no por piezas) para almacenar, ofrecer y consumir servicios tanto de hardware como de software a quien lo requiera.
El cómputo en la nube cuenta con varias características comúnmente
aceptadas:
• Tanto el hardware como el software son servicios. En los esquemas
tradicionales es necesario hacer grandes inversiones para tener un servidor en internet. En el esquema basado en la nube se renta el hardware y el software donde se aloja nuestra aplicación, lo que evita desembolsos iniciales.
• Infraestructura dinámica y autoadministrable. Del mismo modo, en una plataforma no orientada a la nube, es necesario realizar la administración
de toda la infraestructura, desde el hardware, sistema operativo, base de datos. Si se desea escalar la aplicación es necesario hacer nuevas inversiones para ampliar o actualizar el hardware para que soporte nuevas cargas además de tener que monitorear el funcionamiento del hardware y de la red, actividades que usualmente requieren de personal especializado, lo cual representa un costo. En contraste, en la nube todo esto se ofrece como servicio y el proveedor se encarga de hacer todo esto de una manera automatizada, utilizando generalmente tecnologías de virtualización.
• Uso de estándares. Los estándares son importantes para lograr un ecosistema eficiente en la nube y una interoperabilidad maximizada. XML, SOAP y últimamente REST son hasta el momento los estándarespreferidos.
• Esquemas de pago basados en el consumo. Generalmente el software se adquiere mediante licenciamiento al hacer un pago, usemos o no usemos el software, el desembolso de dinero debe hacerse de cualquier manera. En el modelo de precios de la nube se propone que los pagos deben estar basados en datos del consumo real, por ejemplo: porcentaje de utilización de los procesadores, accesos a la base de datos, cantidad de hits por tiempo etc.
Como podemos apreciar, el objetivo del cómputo en la nube es disminuir
la complejidad y los costos asociados al generar aplicaciones en Internet. Este concepto, a su vez hace uso de diferentes términos ya utilizados en la industria. (Figura 1)

Clientes. Son los dispositivos que consumen los servicios de la nube. Generalmente acceden a ellos mediante smart clients o páginas web.
Software como servicio. Se refiere a las aplicaciones de negocio en sí. Son las aplicaciones que los desarrollares crean y exponen a través de la nube. Es decir, cuando desarrollamos para la nube, debemos exponer nuestro software como servicio (comúnmente mediante web services y estándares web).
Plataforma como servicio: Se refiere a todo el software y herramientas
de administración que otorga el proveedor de servicios en la nube para desarrollar y administrar las aplicaciones. Esto incluye los SDKs, las consolas web para la administración de los recursos, y las APIs (que a su vez, también son servicios) para comunicarse con la infraestructura etc.
Infraestructura como servicio: Es como tal el hardware que el proveedor de servicios en la nube administra y facilita para el procesamiento y hospedaje de nuestra aplicación.
La plataforma de Servicios Azure: Una solución completa para la nube:
La plataforma de Servicios Azure representa una propuesta integral para resolver los retos que conlleva la implementación del cómputo en la nube. La figura 2 representa los mismos conceptos que la figura 1, pero en base al stack de tecnologías que conforman a Azure.

Las aplicaciones de negocio conforman el software como servicio
(SaaS) que creamos específicamente para la plataforma Azure.
Microsoft provee SDKs para diversas plataformas, como .NET, Java o Ruby que contienen ejemplos y todo lo necesario para desarrollar en la Azure, lo que permite utilizar todo el conocimiento de los desarrolladores al utilizar lenguajes y sintaxis familiares. Además existen herramientas para Visual Studio que permiten integrar completamente la experiencia de programación al IDE de Microsoft, que permite emular el ambiente de la nube, trabajando de forma local. Al terminar el desarrollo el programador accede al portal de administración de Azure y actualiza el proyecto para que quede publicado.
Los servicios de Azure corresponden a la plataforma como servicio (PaaS) lista para ser consumida que ofrece Microsoft para facilitar enormemente las tareas comunes para desarrollar en la nube. Esta plataforma ofrece los siguientes servicios:
• Live Services: Expone los servicios de Microsoft Live tales como identidad, comunicación, presencia, búsqueda, sincronización, ubicación geoespacial, etcétera.
• .NET Services: Proporciona bloques de código hospedados en la nube listos para usarse. Es como tener la biblioteca de clases del .NET Framework, sólo que expuesta en la nube. Proporciona servicios como control de acceso, bus de servicios, flujos de trabajo entre otros.
• SQL Services: Proporciona una base de datos relacional consumible vía REST o SOAP expuesta en la nube.
• SharePoint Services: Otorga servicios de colaboración y personalización
para ser usados en la nube.
• Dynamics CRM: Da acceso por medio de la nube a los servicios de Microsoft Dynamics.
Windows Azure
Windows Azure es el sistema operativo para la nube que se ejecuta exclusivamente en los Dataservers de Microsoft. No es posible descargarlo ni instalarlo en un servidor local. Windows Azure proporciona
abstracción de hardware, almacenamiento, monitoreo y actualización de los servicios, interoperabilidad de plataformas (.NET, Java, Ruby, PHP, COM etc.) y representa la infraestructura como servicio (IaaS) de Microsoft. Windows Azure asegura una disponibilidad 24/7 y se basa en reglas. La plataforma se encarga de la inmensa mayoría de las tareas de mantenimiento y administración.
Windows Azure encapsula la plataforma con la cual se ejecuta, la cual consiste de servidores virtualizados que ejecutan .Net 3.5 SP1, IIS 7 y Windows Server 2008 64 bits en full trust. Es decir, los usuarios de Azure no tienen acceso directo al core de las máquinas virtuales sino que acceden al sistema operativo mediante los servicios expuestos por Windows Azure, mientras que Azure administra automáticamente todo el hardware (redes, DNS, almacenamiento, balanceo
de carga, etcétera). Windows Azure además provee un servicio básico de almacenamiento basado en blobs, tablas y colas hospedadas en la nube. Podríamos decir que es el “sistema de archivos” de Windows Azure.
La tecnología de Windows Azure ha sido probada ya en diferentes servicios que ofrece Microsoft como Live Hotmail, es una plataforma madura que ha sido ahora expuesta a los desarrolladores para su explotación.
Creando un “Hola SG”
Para empezar a trabajar de inmediato con Azure sólo es necesario obtener e instalar las herramientas de Visual Studio para Azure. No hay necesidad de registro en el sitio de Azure a menos de que se desee publicar el servicio.
En este breve ejemplo crearemos un web cloud service básico.
1. Iniciemos Visual Studio 2008 (si se desarrolla en Windows Vista o Windows 7, entonces es necesario ejecutarlo en modo administrador)
2. Dentro de Visual Studio 2008 seleccionar File -> New -> Project
3. En Project Types seleccionar “Cloud Service” y en los templates seleccionar “Web Cloud Service”.
4. El template seleccionado, creará dos proyectos: SGServicioEnLaNube
que básicamente contiene los archivos de configuración de la aplicación (las reglas que seguirá Azure para entregar el servicio) y SGServicioEnLaNube_WebRole que simplemente es un proyecto web tradicional (Asp.Net Web Project)

5. El siguiente paso será abrir la página asp.net creada por default y crear un control tipo “Label” al cual le agregaremos un mensaje desde el code-behind:

6. Abrimos el code-behind y en el evento Page_Load agregaremos un mensaje a nuestro Label:

7. Antes de realizar la depuración de nuestro sitio, es necesario establecer como proyecto de inicio el proyecto web (SGServicioEnLaNube_WebRole ). Finalmente realizamos la depuración de nuestro proyecto, presionando F5 nuestro sitio web será desplegadoen nuestro navegador predeterminado, como cualquier otra aplicación ASP.NET

8. Mientras la aplicación se ejecuta, el systray muestra un ícono que representa al programa “Development Fabric” que es un emulador que simula el ambiente de hospedaje real de Azure, aunque lo hace de manera local.
9. Para hospedar el servicio en Azure, debemos publicar el proyecto y posteriormente seleccionar con el menú contextual “Browse to Portal”.
10. Esto nos llevará al portal de Azure en internet (es necesario registrarse
previamente, y para poder publicar aplicaciones primero hay que obtener un token). Seleccionamos New Project y posteriormente Hosted Services

11. El portal de Azure posteriormente solicitará un nombre único para la aplicación (único a nivel mundial).

12. Como podemos ver, Azure muestra los servidores de staging (preproducción) y Producción. Al oprimir el botón Deploy el sistema nos preguntará la ruta en el disco duro local en la cual se encuentran los archivos generados en el paso 9 (con extensión . cscfg y .cspkg) Al terminar de subirse dichos archivos, el sistema publicará el proyecto y mostrará la ruta para acceder a la aplicación en la nube.
13. Posteriormente dentro del portal es posible promover el sitio de staging a producción.
Referencias:
SDKs [microsoft.com/azure/sdk.mspx]
Services [microsoft.com/azure/services.mspx]
Herramientas de Azure para VS http:[is.gd/p3GV]
FAQs de Azure [microsoft.com/azure/faq.mspx]
Documentación para el desarrollo con Azure:
[msdn.microsoft.com/azure]
Acerca de los Autores
Miguel Angel Morán (Twitter: @SrBichi) y Misael Monterroca (Twitter: @mmonterroca) son Microsoft Most Valuable Professionals (MVP) en C#. Cuentan con 13 años de experiencia desarrollando y lidereando soluciones de software de misión crítica en las más diversas industrias. Participan activamente en conferencias, comunidades de desarrollo y divulgación tecnológica. Actualmente son consultores en emLink, empresa especializada en soluciones de software en las áreas de movilidad, comercio electrónico y colaboración.
- Log in to post comments