Muchas organizaciones que se encuentran en transición o transformación digital, entienden las ventajas de microservicios, por tanto están tomando muy en serio el hecho de poder dividir o complementar los monolitos existentes con microservicios. Una de las primeras opciones que toman es el separar los diferentes modelos de dominio de uno o varios monolitos en módulos independientes, de manera que van naciendo nuevos microservicios que modelan algún dominio.
Esto puede salir caro desde diferentes puntos de vista, si no se planifica adecuadamente ya que impacta a muchos de los roles técnicos que participan en el ciclo de vida de la aplicación que se mantiene. Estamos hablando de Seguridad, de monitoreo, alertas, bitácoras, soporte entre otros.
El saber qué implementar es algo que las organizaciones entienden, y esto es simple porque la tendencia nos dice que el siguiente paso es la nube, escalar, ser tolerante a fallos, ser elásticos, entre otras aplicaciones.
Aún más importante que saber el “qué” es el saber “cómo” hacer de forma correcta y estandarizada lo anteriormente dicho. Basado en la necesidad de crear una especificación, algunas empresas como Red Hat, IBM, Microsoft, Oracle, Payara, Tomitribe y otros contribuyentes, se unieron con la meta de optimizar Java empresarial, i.e. “enterprise Java”, para arquitecturas de microservicios.
Con la premisa de crear una plataforma base para microservicios nace MicroProfile.io, un proyecto bajo la tutela de la Fundación Eclipse, que está formado por diferentes sub-proyectos que solucionan diferentes problemas en la arquitectura, y que se pueden consultar aquí. Eclipse MicroProfile no es un framework de desarrollo en sí, es una especificación. Por tanto existen diferentes proveedores que implementan la especificación.
Implementaciones de MicroProfile
- Quarkus
- Thorntail
- TomEE
- Payara Micro
- Websphere Libery
- OpenLiberty
- KumuluzEE
- Helidon
- Hammock
- Launcher
La especificación está formada a su vez por varios sub proyectos cada uno con su especificación y versionamiento.
Al día de hoy contamos con la versión 2.2 de la especificación que contiene lo siguiente:
- Eclipse MicroProfile Config
- Eclipse MicroProfile Fault Tolerance
- Eclipse MicroProfile JWT Auth
- Eclipse MicroProfile Health Metrics
- Eclipse MicroProfile Health Checks
- Eclipse MicroProfile OpenAPI
- Eclipse MicroProfile OpenTracing
- Eclipse MicroProfile TypeSafe Rest Client
Vale la pena mencionar que la version 2.2 de Eclipse MicroProfile también hace uso de CDI, JSON-P, JAX-RS, and JSON-B.
Factores de cultura importantes para el éxito de la implementación
Las empresas que estarían interesadas en implementar microservicios, en general están en la responsabilidad de evaluar su capacidad en infraestructura local o en la nube, así como su cultura organizacional en el área de TI, y es que existen diversos problemas basados en la cultura, que podrían desmotivar la inversión, como por ejemplo un área de operaciones que no ha sabido innovar, poco presupuesto o no comprender el concepto de DevOps.
Un factor importante a tomar en cuenta es qué tan auto-organizados y capacitados son los equipos de desarrollo, si hay empoderamiento del ciclo de vida de desarrollo por parte de las personas con respecto a herramientas y recursos como por ejemplo permitir la adopción de Git (Github, Gitlab, Bitbucket), Docker, Scrum y DevOps en general. El usar este tipo de herramientas permite a los equipos de desarrollo entregar productos de forma más organizada y de forma más breve y para esto la organización debe tener la capacidad de ofrecer capacitación con este tipo insumos y así llegar al estado zen de ciclo de vida de desarrollo de ágil con microservicios.
Los microservicios pueden ser la columna vertebral de toda la arquitectura de una organización, sin embargo puede existir como parte de una arquitectura preexistente (SOA, Message Broker) en forma de un componente más. Si el área de TI no entiende la necesidad y no invierte en los recursos necesarios se podría caer en un antipatrón y se crearían módulos independientes propensos a fallos con poca escalabilidad y sin monitoreo, difíciles de desplegar si no hay automatización y esto lo único que genera es sobre carga de operaciones.
¿Hay cultura de DevOps?
Docker y Kubernetes, si no los tienes debes pensártelo mejor para llevar a cabo con éxito lo que tu empresa se propone.
El éxito de microservicios es la automatización. La forma casi “mágica” en la que se descubren nuevos servicios y crecen elásticamente bajo demanda y son capaces de recuperarse. Todo esto se logra con una cultura ágil de operaciones que permita a los conocidos DevOps orquestar el despliegue. Si no tienes cultura DevOps, podrías caer en el antipatrón mencionado en el punto anterior.
Para finalizar
En mi humilde experiencia, he vivido la transformación digital, por tanto quiero recomendarte que realices al menos los puntos anteriores y esto no debería desanimarte, por el contrario empoderarte de la realidad de tu organización para planificar la mejor estrategia.
No quiero despedirme sin antes comentar que esta sería una de las primera entradas en español del Blog Oficial de MicroProfile, espero poder seguir entrando en temas más técnicos en próximas entregas.