Con el paso del tiempo, la manera en la que el software se entrega a los usuarios ha cambiado radicalmente. Primero se entregaban en diskettes y CD/DVD con archivos únicos de instalación junto con sus respectivas licencias. Después con el auge del internet, las aplicaciones ya no solo podían ser obtenidas por medios físicos si no que se podían descargar desde la web o ejecutarse desde la misma sin la necesidad de tener algo instalado en nuestros equipos, todo mediante el browser.

La era del cómputo en la nube marcó un antes y un después en la entrega de software, dando lugar a servicios sobre demanda en lugar de pago por licencias individuales.

El tema de hoy es sobre microservicios, y es que, aunque las aplicaciones estén soportadas por cientos de servidores con facilidad de escalar rápidamente en poder de cómputo y con alta disponibilidad en la nube, la forma en cómo se escriben estas aplicaciones y cómo se distribuyen también tienen que cambiar para aprovechar al máximo el esquema del cómputo en la nube, por lo que la palabra clave aquí es “Arquitectura”.

¿Qué son los Microservicios?

Los Microservicios se componen de pequeñas unidades de cómputo centrados en el cliente, escalables y con control de versiones independientes que se comunican entre sí mediante un cluster de servidores, hablar de Microservicios tiene que ver con:

  • Encapsulación de escenarios.
  • Implementaciones controladas.
  • Soporte de múltiples lenguajes.
  • Se forman de código, estado y configuración.
  • Versionados, escalados y desplegados independientemente.
  • Interactúan con otros microservicios usando interfaces y protocolos bien definidos.

Comparemos el pasado con el presente, dos arquitecturas: “Monolítica” y “Microservicios”Arquitectura Monolítica

  • Facilita las llamadas entre capas de una aplicación.
  • Toda la funcionalidad de la aplicación se encuentra en unos cuantos componentes.
  • Un solo estado para memoria y datos.
  • Se clona toda la aplicación en cada máquina.

Arquitectura basada en Microservicios

  • Incentiva el desacoplamiento de capas en funcionalidades bien específicas.
  • Cada funcionalidad es interdependiente una de otra.
  • Individualmente las funcionalidades mantienen un estado en un clúster, independiente del resto.
  • Se distribuyen los componentes de una aplicación entre nodos, en algunos estarán algunos componentes y en otros no.

Tipos de Microservicios

Esencialmente son dos: “Con estado” y “Sin estado”.

Sin estado / Stateless Microservice

  • Son aquellos que toman su estado de una base de datos, todo viene normalmente desde un solo origen ya que ese es su punto de persistencia.

Con estado / Stateful Microservice

  • Son aquellos que toman su estado independientemente y tendrán la necesidad de transmitírselo a todos los demás si es necesario.

¿Como funciona esto en Azure? La respuesta es Azure Service Fabric

Azure Service Fabric es un organizador de microservicios que actúa sobre todo el hardware que está en los centros de datos de Microsoft, sus modelos de programación son:

  • Containers
    • Azure Service Fabric despliega servicios como procesos, y estos pueden estar encapsulados mediante la tecnología de contenedores (tipo Docker). Estos pueden ser tanto de Windows como Linux al igual que con y sin estado.
  • Reliable Services
    • Son los servicios que sacan lo mejor del framework de Azure Service Fabric, Reliable Services nos ofrece la posibilidad de crear servicios Stateless (sin estado) como Worker Roles en Azure Cloud Services, acompañados de un repositorio externo como Table Storage, SQL Azure, SQL DB o similares. Y también Stateful (con estado) donde el estado depende del servicio en sí.
  • Reliable Actors
    • Estos servicios se basan en el patrón de diseño “Actor”. Son unidades de computo independientes con un hilo de ejecución, estos actores se comunican entre ellos y pueden crear más entre ellos.

Muchos de los servicios que ofrece Microsoft Azure están coordinados por Azure Service Fabric, este también puede ser desplegado en otras nubes tanto de otros proveedores como Amazon o en ambientes on-premise. Por lo que Azure Service Fabric es también otro servicio.

[ Arquitectura de Azure Service Fabric ]

Hay dos formas de ver a Azure Service Fabric:

  • Orquestador de Microservicios.
  • SDK en Visual Studio que nos servirá para desplegar aplicaciones en Microsoft Azure.

Como ya se había comentado, muchos de los servicios de Microsoft Azure están basados en Azure Service Fabric algunos de ellos son:

  • Power BI.
  • Azure SQL Database.
  • Bing Cortana.
  • Document / Cosmos DB.
  • Intune.
  • Skype for Business.
  • Event Hubs.
  • IoT Suite.

Ahora bien, veamos de manera práctica como se trabaja con Azure Service Fabric desde Visual Studio:

Azure Service Fabric

Este código te ayudará a administrar un microservicio con estado haciendo uso de Azure Service Fabric, C# y Azure Fabric Explorer para monitoreo.

Acerca del Proyecto

Azure Service Fabric es un organizador de microservicios que actúa sobre todo el hardware que está en los centros de datos de Microsoft, sus modelos de programación son: Containers, Reliable Services y Reliable Actors. En este proyecto veremos como se implementa un microservicio con estado.

Tecnología Utilizada

  • Visual Studio 2015.

Requerimientos

  • Visual Studio 2015 o posteriores
  • Azure Service Fabric SDK.
  • Una cuenta de Microsoft Azure.

Sígueme en Twitter @vmorenoz

¿Te gustó este artículo? Únete a Facebook en MicrosoftLand

Deja un comentario