Azure Service Fabric: lo que necesita saber

Los servicios en la nube como Azure son, en el fondo, sistemas distribuidos masivos que alojan todo tipo de servicios. Algunos de ellos son infraestructura alojada, algunos de ellos son contenedores y microservicios, algunos son plataformas de desarrollo y algunos aprovechan los patrones sin servidor.

Todos necesitan una cosa: una plataforma de gestión y orquestación. Las herramientas de uso general en la nube, como Kubernetes, ofrecen un camino para brindar un entorno de contenedores administrado, pero también hay un lugar para entornos personalizados que se centran en las necesidades de una plataforma de nube específica. Para Azure, eso se maneja con una herramienta que ha estado ahí desde los primeros días de la nube pública de Microsoft: Azure Service Fabric.

Presentación de Azure Service Fabric

Escondido en los cimientos de Azure, Service Fabric puede ser difícil de describir. Pero lo vemos todo el tiempo, en las herramientas que usamos para crear nuestro propio software nativo de la nube. Está en el corazón de la plataforma IoT y Event Hubs de Azure, sus bases de datos SQL y Cosmos DB, y muchos de los servicios empresariales y para el consumidor que usamos todos los días. Con Azure Service Fabric, obtiene acceso a las mismas herramientas que usa Microsoft para ejecutar y administrar sus propios servicios, incorporándolos a su propio código.

La intención de Azure Service Fabric es facilitar la implementación y administración de microservicios, manejando operaciones con y sin estado en una instancia PaaS de Azure. No es solo para Azure, porque la herramienta de desarrollo local es una versión completa de Azure Service Fabric, lo que significa que se ejecutará en cualquier sistema Windows. Una versión de Linux también lo hace portátil a través de múltiples nubes, manejando código existente y personalizado.

Azure Service Fabric administra el ciclo de vida de su aplicación, con API que brindan acceso a la plataforma adicional más allá del código puramente independiente. También admite sus propios microservicios de actor / mensaje, además de alojar código ASP.Net Core. Los servicios pueden ejecutarse de forma nativa como procesos, o puede alojarlos en contenedores, lo que le brinda la opción de llevar rápidamente el código existente a la PaaS de Azure. Los contenedores se combinan con otros modelos de aplicaciones de Azure Service Fabric, lo que le permite incluir rápidamente la funcionalidad existente a través de lift-and-shift o al incluir aplicaciones empaquetadas específicas.

Introducción a Azure Service Fabric

Quizás la forma más rápida de comenzar a desarrollar con Service Fabric es su marco de servicios confiables. Este es un conjunto de API que se integra con las características de administración del ciclo de vida de las aplicaciones de Azure Service Fabric. Puede escribir código en cualquier idioma admitido o en el marco de aplicación que elija. Los servicios pueden ser sin estado o con estado, y los servicios sin estado pueden utilizar almacenamiento externo para gestionar el estado. La opción con estado es más interesante porque usa las propias herramientas de Service Fabric para administrar el estado de la aplicación. No es necesario que considere el escalado o la alta disponibilidad; todo se maneja por ti.

Si ha utilizado las colecciones de C #, encontrará que las colecciones fiables de Reliable Service le resultan familiares. También se mantienen en la misma instancia que su computadora, lo que reduce la latencia. Si un servicio falla, puede recuperar el estado al reiniciarse. Tener diferentes modelos de estado le permite elegir el modelo que mejor se adapta a su servicio. Los servicios simples que solo requieren datos de entrada para funcionar pueden ser sin estado, pero si está trabajando con código que necesita conocer el estado anterior, deberá crear un Servicio confiable.

Microsoft facilita la creación de backends de aplicaciones y web familiares en Azure Service Fabric con compatibilidad con ASP.Net Core. Aunque no es 100% compatible con el código de ASP.Net MVC, puede migrar el código existente a la nueva plataforma. Hay soporte para crear servicios sin estado y con estado, traspasar la orquestación de aplicaciones y escalar a Azure Service Fabric.

Simultaneidad escalable con actores

Las aplicaciones nacidas en la nube deberían aprovechar el marco de Reliable Actor. Esto extiende Reliable Services para implementar actores virtuales (como lo usa el marco abierto de Project Orleans que es popular en los back-end de juegos). El uso del patrón actor / mensaje para manejar microservicios funciona bien, porque su modelo de sistemas concurrentes subyacente escala rápidamente y puede manejar muchos actores que operan al mismo tiempo.

Actor confiable no es para todos los escenarios. Funciona mejor cuando su código se puede dividir en bloques simples de cálculo que se pueden implementar como objetos de un solo subproceso que no bloquean y que no tienen estado o tienen su propio estado. Es mejor para aplicaciones completamente nuevas, porque es difícil descomponer el código existente. La creación de una aplicación con Reliable Actor puede ser compleja, incluso si ha definido a sus actores. Debe tener en cuenta que, si bien los actores pueden recolectarse basura, su estado persistirá y se podrá acceder a él cuando llame a un actor con el mismo ID en el futuro.

Reliable Actor resuelve muchos problemas complejos de computación distribuida, aunque deberá pensar detenidamente cómo mapea objetos a actores y cómo los utilizará en sus aplicaciones.

Azure Service Fabric se convierte en código abierto

Microsoft ha anunciado recientemente que es Service Fabric de código abierto, cambiando el modelo de desarrollo a uno que acepte solicitudes de extracción de terceros, además de permitir un proceso de diseño público y abierto.

Cambiar a un modelo de desarrollo de código abierto, junto con un proceso de diseño abierto, es una empresa enorme para una tecnología fundamental como Azure Service Fabric. Si bien el tramo inicial de código fuente abierto está basado en Linux, el equipo de desarrollo de Microsoft ha indicado que el código basado en Windows que actualmente se ejecuta en Azure lo seguirá pronto. El desarrollo estará en GitHub, con gran parte del trabajo inicial centrado en completar la transición de las plataformas internas de Microsoft a un proceso de cara al público.

Microsoft ha planeado entregar un Azure Service Fabric de código abierto desde hace algún tiempo, al menos desde el inicio de la rama Linux del código. Debido a que es un código más nuevo y usa una herramienta diferente a la versión de Windows, ha sido mucho más fácil poner esa rama en forma para el lanzamiento público. La herramienta de Windows es más compleja, con una década de historia que necesita ser desentrañada y refactorizada. Gran parte de eso se debe al uso de herramientas de desarrollo exclusivas de Microsoft que no están disponibles para el mundo exterior, además de la reelaboración necesaria para trasladarlas a herramientas disponibles públicamente.

Tener una herramienta como Azure Service Fabric a su disposición le brinda muchas más opciones que la PaaS tradicional, especialmente al crear nuevas aplicaciones desde cero. El soporte para contenedores agrega la capacidad de incorporar aplicaciones empaquetadas junto con su código. De manera similar, el uso de marcos y patrones familiares puede acortar la curva de aprendizaje. Con un futuro de código abierto por delante, Azure Service Fabric podría ser el marco de aplicación multinube que está buscando.