Azure: Cuestiones clave sobre Microservicios

En el articulo anterior, hablamos sobre microservicios de forma general, aunque como bien sabéis, muchas empresas antes de evolucionar hacia una arquitectura basada en microservicios deben afrontar muchos retos complejos que no encontramos en las aplicaciones monolíticas.

A día de hoy, todos conocemos la diferencia entre un sistema monolito y microservicios.

Comparto la definición que ofrece Microsoft sobre microservicios: overview-microservices y un interesante post de Mark Russinovich: microservices-an-application-revolution-powered-by-the-cloud

Cuestiones clave sobre microservicios

Todo lo anterior es literatura muy bonita, pero como indicamos al principio hay muchos retos a resolver, el objetivo de este artículo es precisamente plantear una serie de cuestiones fundamentales para confirmar si realmente vamos a utilizar microservicios y como afrontarlos respondiendo todas estas preguntas.

Arquitectura de Referencia para Microservicios

  1. ¿Qué Modelo de Referencia vamos a utilizar?​
  2. ¿Qué Modelo de Almacenamiento vamos a utilizar?​
  3. ¿Qué Modelo de Implementación vamos a utilizar?​
  4. ¿Qué Modelo de Desarrollo vamos a utilizar?​
  5. ¿Qué Modelo de Despliegue vamos a utilizar?​

Retos a resolver

  • ¿Cómo serán configurados en cada entorno?​
  • ¿Cómo serán desplegados en cada entorno?​
  • ¿Cómo serán registrados en el sistema?​
  • ¿Cómo serán descubiertos en el sistema?​
  • ¿Cómo serán documentados en el sistema?​
  • ¿Cómo serán versionados en el sistema?​
  • ¿Cómo serán securizados?​
  • ¿Cómo serán testeados?​
  • ¿Cómo serán monitorizados?
  • ¿Cómo serán logging?
  • ¿Cómo serán depurados y trazabilidad para encontrar errores?
  • ¿Cómo escalarán al aumentar la carga?​
  • ¿Cómo manejarán fallos y resilencias?​
  • ¿Cómo operarán entre ellos y resto del sistema?​
  • ¿Usaremos contenedores para los microservicios?
  • ¿Usaremos orquestadores para los microservicios?

Todas estás cuestiones deben tener respuestas por el equipo y quedar documentadas en la arquitectura de referencia antes de empezar, si no es así, el proyecto acabará siendo un FRANKENSTEIN y estará destinado al fracaso.

¿Que problemas hay con microservicios?

Visto lo anterior, actualizo este post en 2019 y dejo un link muy popular que recomiendo leer sobre microservicios para tener una visión más detallada de los problemas que encontrareis con microservicios: https://www.dwmkerr.com/the-death-of-microservice-madness-in-2018/

Netflix are great at devops.
Netflix do microservices.
Therefore: If I do microservices, I am great at devops.

Por mi experiencia y punto de vista personal, si no existe una buena cultura DevOps en la organización donde vayamos a implantar microservicios, estos no serán efectivos.

Espero que sea de utilidad.

Azure: Arquitecturas para microservicios en .NET

Hay mucho material en Intenet sobre temas de microservicios, en este articulo nos centramos en una vision enfocada con tecnologias Microsoft .NETy las guias oficiales sobre este tema donde podemos encontrar mucha informacioón y implementaciones de referencia para saber por donde empezar a diseñar y construir de forma correcta una arquitectura de microservicios.

 

Recordemos que los microservicios son pequeños servicios (APIs) independientes que cubren una sola funcionalidad de negocio y que encajan muy bien con la metodologia DDD y contextos aislados para saber donde acotarlos.

Las guias oficiales de Microsoft recopilan toda la información:

  1. Introducción a las arquitecturas de microservicios
  2. Estilo de arquitectura de microservicios
  3. Analisis del dominio para los microservicios
  4. Diseño de una arquitectura de microservicios
  5. Patrones de diseño para microservicios
  6. Procesos CI/CD para microservicios

Arquitecturas de referencia con microservicios

La teoria y literatura sobre microservicios es muy extensa pero en el mundo real nos interesa conocer como llevarlo a la practica, para ello actualmente tenemos en el mundo Microsoft dos enfoques que comparto el enlace con las explicaciones detalladas de cada uno de ellos.

Nota: los enlaces son todos a la documentación oficial de Microsoft y la información que encontramos va cambiando con el tiempo, es bueno repasarla de vez en cuando para ver como evolucionan este tipo de arquitecturas de año en año para adaptar nuestros diseños y aplicaciones si fuera necesario.

En próximos articulos ire compartiendo más articulos y videos sobre estos servicios de Microsoft y conceptos de cluster, nodos, contenedores, servicios front, back, bbdd, seguridad, procesos CI/CD, monitorizacion,etc. que es importante conocer para implementar este tipo de arquitecturas y que funcionen bien.

Azure: API Management para gobernar todo nuestro negocio

api-azure-logo

Antes de entrar con Azure, vamos a definir de forma simple que es un API Management y que características debe tener para ofrecer toda su potencia a las organizaciones que deciden implementarlo y conocer los competidores de APIs más importantes actualmente.

Para mí, básicamente es el proceso de administrar, crear, publicar y suministrar los datos y servicios de una empresa a todo el mundo a través de un sistema integrado e independiente de nuestro backend y exponer servicios del negocio a otras aplicaciones y partners sobretodo en escenarios de movilidad y cloud de forma controlada y segura.

Las características que ofrece un API Management suelen ser:

  • Gateway de acceso a las APIs
  • Portal para Desarrolladores
  • Portal para Gestión de las APIs
  • Documentación de las APIs
  • Políticas de uso de las APIs
  • Políticas de seguridad
  • Monetización de las APIs
  • Monitorización del trafico
  • Reportes y analíticas de uso

 

Soluciones API Management

Para tener una visión global del mundo de los APIs management y los vendors disponibles, os dejo una foto real de todo el ecosistema actual con los proveedores más importantes en el mercado.

api-esquema-vendorsComo vemos en el diagrama, la oferta del mercado es bastante grande, ya que, el negocio de las APIs esta en auge y como profesionales debemos valorar que caracteristicas y funcionalidades ofrecen cada una de ellas.

 

Microsoft Azure API Management

Es la solución que ofrece Microsoft a sus clientes para crear rápidamente puertas de enlace API modernas para servicios de back-end existentes hospedados en cualquier lugar.

api-azure-diagram

En la web oficial de Microsoft Azure API Management, tenemos toda la información disponible de las caracteristicias, documentación y precios para crear en cuestion de minutos un portal para nuestras APIs.

En este video podemos ver resumido en que consiste:

 

 

Un video más detallado:

api-azure-video

Como conclusión, hoy en dia, todas las arquitecturas de software modernas y empresas en proceso de transformación digital deben tener en cuenta en su estrategia empresarial el uso API Management dentro de su organización para exponer y ofrecer todos sus servicios de negocio para partners, aplicaciones de Mobilidad, Cloud, Saas, B2B, etc.