Auto escalado dinámico de instancias en Windows Azure

Siguiendo con la dinámica el último post, hoy intentaré aclarar otra de las preguntas con las que habitualmente me encuentro, el auto escalado dinámico.

Otra de las grandes características que hace de Windows Azure una plataforma de indudable interés es la elasticidad y flexibilidad que nos ofrece a la hora de desplegar nuestra aplicación en múltiples instancias.

Desplegar una aplicación en 1 o 100 máquinas es simplemente cambiar un fichero de configuración, cosa que se puede establecer en el momento del despliegue o a posteriori. Lógicamente, recordad que la facturación va en función del número de instancias, pago por uso.

De esta manera, un usuario de Azure puede modificar fácilmente el número de instancias de la aplicación en función de las necesidades de ésta, ya sea añadiendo o eliminando instancias.

Aumentar una instancia en un rol ya desplegado podría ser tan sencillo como estos comandos de powershell.

$cert = Get-Item cert:CurrentUserMy<Certificate ThumbPrint> 
$sub = <Azure Subcription Id> 
$servicename = <Service Name> 


Get-HostedService $servicename -Certificate $cert -SubscriptionId $sub | 
Get-Deployment -Slot Production | 
Set-DeploymentConfiguration {$_.RolesConfiguration["WebSample"].InstanceCount += 1}

Cuando necesita más potencia la pone y cuando necesita menos la quita, consiguiendo entre otras cosas dos objetivos; pagar por aquello que realmente está usando y sobre todo, poder conseguir que la aplicación se pueda adaptar a la demanda y evitar que ésta pueda dejar de dar servicio. (eso sí, recordad que Windows Azure no hace milagros!)

Es en este momento dónde casi siempre sale la misma pregunta; ¿Se puede hacer que el añadir o eliminar instancia sea un proceso automático? Que no tenga que ser una persona la encargada de detectar las necesidades de la aplicación para aumentar o disminuir instancias, sino poder disponer de un sistema automático que detecte cuando es necesario modificar el número de instancias.

Generalmente esta necesidad viene de situaciones de picos impredecibles; tienes desplegada tu aplicación con N instancias y por cualquier motivo existe un punto en el tiempo, inesperado lógicamente, dónde debe aumentarse la capacidad de proceso. Si es un proceso manual, puede ocurrir que cuando el administrador se entere ya sea demasiado tarde.

A día de hoy no existe ninguna herramienta Microsoft que permita realizar auto escalado dinámico de instancias; No existe una herramienta que disponga de un sistema de reglas en las cuáles nosotros podamos configurar la lógica de escalado. Eso sí, tenemos alternativas.

La primera alternativa es la de siempre; Hacernos nosotros mismos una herramienta que disponga de la funcionalidad que necesitamos.

Windows Azure permite obtener diferente y muy variada información de diagnóstico y monitorización de las instancias desplegadas en Windows Azure. A partir de esta información, podemos construirnos una aplicación capaz de interpretar dicha información e implementar la lógica que consideremos adecuada para detectar cuando es necesario añadir o eliminar instancias de un determinado rol; Si el procesador está el 80% entonces añadir una instancia más.

Si esta solución os puede ser de interés podéis descargaros un ejemplo completo con código y documentación sobre cómo podría implementarse esta opción. Lógicamente es simplemente un ejemplo, pero puede serviros como punto de inicio.

La aplicación consiste en un cliente WPF que se conecta a una capa de servicios WCF que introduce mensajes en una cola para que worker rol los procese.

image

Pero si esta solución no os gusta, siempre se puede optar por usar herramientas de terceros que contengan la funcionalidad que necesitamos.

Una de las herramientas que disponen de la funcionalidad de auto escalado es AzureWatch. Es una herramientas comercial (pago por uso), que ofrece al usuario la posibilidad de configurar un sistema de reglas tan complejo como desee, para poder modificar el número de instancias desplegadas de un rol. Como es esperar, hace uso de la información que Windows Azure ofrece sobre diagnóstico y monitorización, lo mismo que comentábamos en el caso anterior.

RuleEdit_thumb

Además de la funcionalidad de auto escalado, esta herramienta ofrece funcionalidad muy útil para monitorizar el estado de las aplicaciones Windows Azure, como podéis ver en los pantallazos que aquí os pongo y que podéis encontrar también en su portal web.

WinDashboard_thumb

 

image

Espero que os sea de utilidad!

Windows Azure NO hace milagros!

La semana pasada tuve el placer de compartir una sesión bastante amena sobre Windows Azure con la gente del grupo de usuarios del País Vasco, Artalde.NET.

Fue una sesión bastante participativa, dónde los asistentes sacaron a la palestras sus dudas y comentarios sobre la plataforma, siendo la experiencia bastante enriquecedora.

La verdad es que este tipo de eventos u otros estilo el BizSpark o el Roadshow de Azure dónde tuve la oportunidad de participar te dan la oportunidad de ver muchos puntos de vista y descubrir escenarios dónde Windows Azure puede ser de gran utilidad.

Es muy común que muchas de las dudas y comentarios que surgen sean siempre las mismas. Por este motivo, intentaré realizar algunos post para aclarar algunas de las dudas que veo habitualmente.

El primer tema es el siguiente: Windows Azure NO hace milagros.

Uno de los aspectos clave que nos da la plataforma es la escalabilidad sin límites. Desplegando nuestra aplicación en Windows Azure ésta podrá escalar hasta límites insospechados e inimaginables, y esto sin exagerar.

Claro está que la plataforma Windows Azure permite realizar aplicaciones que pueden ser altamente escalables, pero el límite está en la aplicación; si ésta no está preparada para escalar, Windows Azure no va a hacer milagros para que escale.

Por ejemplo, si tengo una aplicación web que no es capaz de desplegar en una batería de servidores web on-premise, difícilmente Windows Azure va a poder hacerlo…

Puede parecer una tontería, pero más que una vez olvidamos este punto y pensamos que por el hecho de emplear la plataforma o migrar una aplicación que tengamos a Windows Azure vamos a conseguir todos los beneficios que ésta puede llegar a ofrecernos.

Pero hay un tema más básico. Windows Azure es una nueva plataforma dónde podemos desplegar nuestras aplicaciones y que nos ofrece indudables beneficios sobre otras soluciones, pero esto no significa que nuestra conocimientos anteriores dejen de ser válidos.

¿Cómo sé cuántas instancias tengo que levantar?¿Cómo hago que sea escalable?¿Dónde guardo la sesión?¿Cómo me aseguro que sea escalable?¿Qué arquitectura debo poner?

Como plataforma nueva tiene sus peculiaridades y hay ciertos conocimientos que son diferentes, pero la esencia sobre cómo desarrollar una aplicación altamente escalable y qué conceptos arquitectónicos debo tener en cuenta son iguales a los que necesitaría para desarrollar una aplicación que vaya a desplegarse en un entorno on-premise.

Por ejemplo, a la pregunta ¿Cómo sé cuántas instancias tengo que poner? se puede responder con  ¿Cómo lo sabes ahora?¿Cómo dimensionas tu solución on-premise?

Con esto lo que quiero comentar es que no debemos olvidarnos que muchos de los retos a los que nos enfrentamos en Windows Azure, no dejan de ser los mismos a los que nos enfrentábamos antes de existir esta plataforma y que por tanto no debemos hacer tabla rasa, ni pensar que por usar Windows Azure vamos a tener por arte de magia aplicaciones escalables sin ningún tipo de esfuerzo.

Si no hemos dedicamos el tiempo a hacer una buena arquitectura, si no hemos aplicados los patrones y técnicas de desarrollo adecuadas, si nos hemos pensando en ciertos aspectos clave sobre el desarrollo de aplicaciones…Windows Azure NO hará milagros, al menos en la versión actual 🙂

Windows Azure AppFabric CTP February Release

Microsoft acaba de publicar una nueva versión de Windows Azure Fabric.

  • Nueva interfaz en Silverlight, en la misma línea del portal de Windows Azure.
  • Poder seleccionar si se desea una caché de 128 o 256 Mb.
  • Poder redimensionar dinámicamente la caché.
  • Mejoras en el sistema de diagnóstico.
  • Mejoras de rendimiento.

Aquí os dejo algunos pantallazos de la nueva interfaz, que como veréis no tiene nada que ver con la anterior.

image

image

image

image

imageimage

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

La última versión del SDK de Windows Azure AppFabric la podéis descargar desde aquí.

Esperemos verlo pronto en release!

[Artalde] Tengo una pregunta para usted sobre….Windows Azure Platform

Después del éxito de público y crítica de "Ven a llorar con nosotros sobre…metodologías de desarrollo”, “Ven a llorar con nosotros sobre…arquitectura” y “Azure como el mar Azure”, el grupo de usuarios del País Vasco, Artalde.NET, tiene el place de anunciar su última aventura: Tengo una pregunta para usted .

El 16 de febrero, miércoles, se lanzará este “nuevo formato”, esta vez para hablar de Windows Azure. (TVE nos copió la idea!!)

Vamos a intentar que no sea un evento al uso y que sea muy abierto, lo más abierto posible.

Una persona, en este caso yo, llevaré el hilo y seré el encargado de iniciar el tema y de comentar los aspectos más importantes sobre la plataforma, pero la idea es que sea participativo, que todos llevemos nuestras dudas y que entre todos las podamos solventar.

Registro

Descripción completa:

Windows Azure Platform es una plataforma de servicios escalable, proporcionada por los Data-Centers de Microsoft, que ofrece computación en nube.
Proporciona una plataforma flexible e interoperable, que se puede utilizar tanto para construir aplicaciones que funcionen completamente en la nube como para desarrollar aplicaciones que hagan uso de ciertas capacidades que la nube ofrece.

El objetivo de este evento es dar a conocer a los asistentes las principales características de Windows Azure, así como las opciones que existen a la hora de realizar una migración y las consideraciones de diseño que son necesarias tener.

El evento pretende ser un evento abierto dónde los asistentes puedan preguntar las dudas que tengan sobre la plataforma y que entre todos los asistentes podamos dar una respuesta adecuada.

¿Qué necesito para desarrollar para Windows Azure?

¿Quéopciones tengo si quiero realizar una migración?

¿Qué pasa si tengo aplicaciones muy complejas que no puede migrar completamente?

¿Con qué limitaciones me voy a encontrar?

¿Qué opciones de monitorización tengo?

¿Sólo es para aplicaciones .NET?…

Taller de Windows Azure Platform en Bilbao

Plain Concepts junto con la empresa de consultoría y formación Campus, ha organizado un taller sobre Windows Azure, taller que se celebrará el 24 de febrero en Bilbao.

Si estáis interesado en este taller no tenéis más visitar la página de campus y ver la información completo y la forma de registraros.

Descripción:

Windows Azure Platform es una plataforma de servicios escalable, proporcionada por los Data-Centers de Microsoft, que ofrece computación en nube.

Proporciona una plataforma flexible e interoperable, que se puede utilizar tanto para construir aplicaciones que funcionen completamente en la nube como para desarrollar aplicaciones que hagan uso de ciertas capacidades que la nube ofrece.

Este taller introducirá de forma práctica  a los desarrolladores de la plataforma  .NET en los conceptos de la plataforma Windows Azure, con el objetivo de poder mostrar las capacidades de la plataforma y las ventajas y beneficios que nos puede aportar.

Agenda:

1.       Introducción

  • Qué es la nube
  • Qué es Windows Azure Platform
  • Qué es Windows Azure
  • Almacenamiento en Windows Azure; Blobs, Tablas y Colas.
    • Qué es SQL Azure
  • Arquitectura y modelo de aprovisionamiento
  • Diferencias entre SQL Azure y SQL Server
  • Herramientas para trabajar con SQL Azure
  • Qué es App Fabric
  • Qué es MarketPlace
  • Qué necesito para desarrollar en Azure

2.       Windows Azure

  • Qué es el Compute Emulator
  • Cómo desplegar una aplicación en Windows Azure
  • Cómo configurar la aplicación
  • Entornos de producción y preproducción
  • Versionado de aplicaciones

3.       SQL Azure

  • Crear una cuenta de SQL Azure
  • Crear bases de datos en SQL Azure
    • Migración de bases de datos existentes
    • Creación scripts para crear base de datos
    • SQL Server Management Studio
  • · Acceso a bases de datos de SQL Azure
    • Conexión con bases de datos del servidor
    • Acceso a datos con ADO.NET
    • Gestión de la seguridad
    • Sincronización entre SQL Server y SQL Azure
    • Microsoft Sync Framework