Azure Service Fabric
Durante Conect(); 2015 se anunció la disponibilidad inmediata de la preview pública de Azure Service Fabric, la plataforma de Microsoft para el desarrollo y funcionamiento de aplicaciones basadas en microservicios.
Azure Service Fabric ofrece una plataforma fiable y flexible para desarrollar y desplegar diferentes tipos de aplicaciones de negocio y servicios. La carga de trabajo de la aplicación o servicio se reparte en distintas máquinas virtuales de forma que se maximiza la eficiencia. La arquitectura de Service Fabric te permite realizar análisis de datos en tiempo real, transacciones paralelas y procesamiento de eventos. Permite escalar de forma sencilla las aplicaciones en función de las necesidades de recursos en cada momento.
Además de los servicios stateless generalmente soportados por otras plataformas, Service Fabric innova en el desarrollo de este tipo de aplicaciones añadiendo soporte para servicios fiables. Este tipo de servicios son de tipo stateful, permiten mantener el estado, acceso de baja latencia a datos particionados a gran escala y el modelo de programación Actor que simplifica la construcción de microservicios altamente escalables.
Actualmente, Service Fabric está disponible en Azure y se extenderá a Windows Server, Linux y otros proveedores de cloud el año que viene proporcionando portabilidad de aplicaciones y escenarios híbridos.
A continuación, vamos a ver un ejemplo de cómo empezar a usar Azure Service Fabric y desplegar una aplicación sobre un clúster en local. Para ello crearemos un servicio de tipo stateful a partir de la plantilla que nos ofrece Visual Studio, al depurarlo se nos creará un clúster en local que podemos gestionar a partir del explorador de Service Fabric. Una vez tengamos la aplicación ejecutándose en un nodo del clúster probaremos a desactivar ese nodo y ver cómo responde.
Para comenzar a desplegar las aplicaciones lo primero que hay que hacer es descargar e instalar el SDK.
Una vez lo tenemos instalado, debemos configurar nuestro entorno de desarrollo. Para poder utilizar este servicio es necesario tener una versión de Windows superior o igual a Windows 8 o Windows Server 2012 R2.
Es necesario habilitar la ejecución de scripts en PowerShell para crear un clúster local de desarrollo y para desplegar las aplicaciones desde Visual Studio. Para habilitarlo es necesario modificar la política de ejecución de PowerShell. Abrimos PowerShell como administrador e introducimos el siguiente comando:
Set - ExecutionPolicy - ExecutionPolicy Unrestricted - Force - Scope CurrentUser
El SDK de Service Fabric incluye un módulo para Visual Studio que proporciona las plantillas y herramientas necesarias para crear, desplegar y depurar aplicaciones Service Fabric. Vamos a crear una aplicación desde Visual Studio.
Abrimos Visual Studio en modo Administrador y pulsamos en File -> New Project -> Cloud -> Service Fabric Application.
En la siguiente ventana debemos seleccionar el tipo de servicio que vamos a incluir en nuestra aplicación (podemos incluir varios, pero de momento solo vamos a poner uno). En este caso seleccionamos “Stateful Service”.
El proyecto no contiene código directamente, referencia un conjunto de proyectos de servicios. También contiene otros tres tipos de contenido:
- Perfiles de publicación: usados para gestionar las preferencias de herramientas para distintos entornos.
- Scripts: un script de PowerShell para desplegar o actualizar la aplicación.
- Definición de la aplicación: el manifiesto de la aplicación y los ficheros de configuración.
Una vez creada la aplicación, vamos a desplegarla y depurarla. Pulsamos F5 para desplegarla en modo depuración (esto puede llevar unos minutos ya que la primera vez que se hace Visual Studio tiene que crear el clúster local para desarrollo). Cuando se haya terminado de crear el clúster local lo sabremos porque aparece una notificación en el gestor del clúster local.
Cuando la aplicación comienza a ejecutarse en Visual Studio se abre la vista de Diagnostics Event. En ella podemos ver las salidas que va generando el servicio.
En el caso de la plantilla de servicios tipo stateful muestra el valor del contador que está siendo incrementado en el método RunAsync de la clase MyStatefulService.cs.
Para ver más detalle de un evento podemos desplegarlo.
Podemos ver el nodo en el que se está ejecutando el código, en este caso el Nodo 5.
El clúster local está compuesto de 5 nodos que corren sobre la misma máquina. Vamos a quitar un nodo para simular una caída de una máquina.
Vamos al proyecto del servicio y ponemos un punto de parada en la primera línea del método RunAsync.
Ahora vamos al Local Clúster Manager, pulsamos sobre el botón derecho y seleccionamos Manage Local Clúster.
En el explorador de Service Fabric podemos ver de manera visual el clúster, incluyendo las aplicaciones desplegadas y los nodos.
Vamos a buscar el Nodo 5 que es en el que está la aplicación corriendo y lo vamos a desactivar.
Para ello vamos a la parte derecha de la ventana, una vez seleccionado el nodo, y pulsamos en Deactivate (restart).
Si vamos a la venta de Diagnostic Events de Visual Studio vemos que el contador se sigue incrementando. Si vemos en qué nodo se está ejecutando ahora el programa ya no es el 5 sino el 3.
El clúster se ha recuperado y al detectar la caída de un nodo ha pasado a ejecutar la aplicación en otro nodo y no se ha producido ningún fallo.
Para finalizar, a pesar de que cerremos Visual Studio el clúster sigue funcionando y la aplicación seguirá corriendo en nuestro ordenador. Es muy importante detener la tarea para que no consuma recursos del ordenador. Para ello:
-
- Si quieres eliminar la aplicación y todos los datos, elimina la aplicación usando Service Fabric Explorer.
-
- Si quieres apagar el clúster pero mantener los datos, pulsa stop clúster.
-
- También es posible eliminar el clúster. Esto hará que la próxima vez que se ejecute la aplicación volverá a tardar unos minutos en crear el clúster.
Esta es solo una pequeña muestra de las posibilidades que nos ofrece este servicio. Para más información sobre Azure Service Fabric puedes acceder a los videos de Connect(); 2015 en este enlace. Puedes encontrar documentación y más videos sobre Azure Service Fabric en la página de Azure.
Beatriz García Roces
Technical Evangelist Intern