En el ciclo de vida de cualquier herramienta de software llega un momento en el que ésta se ha quedado obsoleta o ha crecido de manera que ha ido más allá de su propósito inicial, probablemente a través de parches y remiendos que han hecho que no esté optimizada de la mejor manera posible, o que sus distintos componentes añadidos hayan creado una estructura que no resulta del todo eficiente. El coste del mantenimiento aumenta, la herramienta requiere de un ‘expertise’ específico y complejo, o no es compatible con el uso que se quiere hacer de nuevas tecnologías emergentes. Llegado este escenario una de las tendencias actuales es la migración de legacy a microservicios.
¿Legacy o microservicios? ¿Qué beneficio obtenemos al migrar a servicios y cuáles son los costes derivados de este servicio?
Existen varios pasos que tenemos que tener en cuenta en la migración de una aplicación legacy a microservicios, pero antes de ello tenemos que resolver la siguiente cuestión:
Éstas son algunas de las ventajas por las cuales podemos querer apostar por una arquitectura basada en microservicios:
Si buscamos beneficiarnos de esta serie de características al trasladar nuestro entorno legacy a un ecosistema de microservicios, entonces tenemos que prepararnos concienzudamente, a través de un análisis de la aplicación actual, para dar este paso tan importante.
Para empezar es necesario contar con un plan de migración detallado que responda a las siguientes cuestiones:
Una vez analizada la aplicación a través de estos puntos, se tendrá una idea más clara de qué es lo que puede aportar la migración a microservicios. Este análisis previo de la aplicación ayudará a revisar su estado, el proceso de negocio que alberga y las dependencias que tiene. Gracias a este proceso también se podrá obtener cierta información de la herramienta, como cuáles son las partes que más se usan, las librerías más pesadas, etc.
De este modo será más fácil contestar la pregunta crucial: ¿se puede migrar la aplicación a microservicios? La reflexión realizada servirá para poder estructurar de manera adecuada la aplicación de microservicios, de manera que sea escalable, reutilizable y fácil de modificar y mejorar.
Decidida ya la migración de la aplicación, y planteados los correspondientes requerimientos y necesidades, llegamos a otra etapa crucial en este proceso, el establecimiento de un plan de migración.
El plan de migración de legacy a microservicios pasa por las siguientes fases diferenciadas:
Si no se dispone de un entorno para poder lanzar microservicios, lo primero que se debe hacer es definir el entorno en que van a correr los microservicios.
Para ello se evalúan las diferentes opciones existentes en el mercado, barajando entre la opción de tener una cloud privada, pública o híbrida.
Cuando se habla de microservicios normalmente este término suele ir relacionado con la palabra “contenedores”, especialmente con “Docker”.
Docker es un sistema de virtualización ligero que reutiliza el kernel de Linux. Al reutilizar el kernel de Linux sus imágenes son más ligeras y consumen menos recursos que con las tradicionales máquinas virtuales.
Elegir el entorno adecuado para microservicios será el punto de partida que marcará nuestros desarrollos y adaptaciones.
Actualmente, la mayoría de las herramientas para gestionar contenedores se integran con el gestor de integración continua JENKINS.
Este flujo de integración continua y despliegue continuo ayudará a convertir los cambios que se realicen en el código, en nuevas imágenes listas para ser lanzadas en contenedores. Ya no se trabaja con artefactos, sino con imágenes Docker/Rocket que contienen el código.
Definir este flujo ayudará a generar automáticamente las imágenes que posteriormente serán desplegadas. Además servirá para poder migrar imágenes en concreto de un entorno de desarrollo a uno de producción de manera sencilla, simplemente promocionando.
El siguiente paso es migrar la aplicación actual para que pueda correr en contenedores. En este paso se obtendrán las diferentes partes que se tengan de la aplicación (base de datos, servidor Tomcat, frontal NodeJS…) y se adaptarán para que corran en contenedores.
Al tener la aplicación en contenedores se obtienen ya todas las ventajas de correr en una infraestructura de contenedores (DevOps, escalabilidad, load balancing, etc).
Ésta es la última parte del plan de migración. Una vez se tenga el entorno montado y se haya migrado a contenedores la aplicación legacy, se puede empezar a transformar. Requiere de desarrollo para poder separar las diferentes piezas de negocio que ahora correrán sobre microservicios.
Poco a poco se irá desglosando la aplicación legacy en varios microservicios listos para correr en contenedores.
El proceso de migración de legacy a microservicios no sólo nos dará ventajas en cuanto flexibilidad, escalabilidad, etc, sino que nos reportará beneficios extra tanto a medio como largo plazo. Además de todas las ventajas inherentes a un sistema basado en contenedores, habremos dejado nuestra aplicación preparada para que interactúen con ella diferentes elementos y nuevos desarrollos como aplicaciones móviles, etc.
Al tener nuestra lógica de negocio en módulos aislados, totalmente replicables, podemos hacer uso de estos módulos desde otras aplicaciones, y podemos escalarlas de manera sencilla y eficiente conforme aumente nuestra carga sobre esos servicios.
Podremos ahorrar recursos al identificar el proceso de negocio que más carga genera, replicando este proceso de negocio y no la aplicación entera.
Sí además disponemos de un orquestador de contenedores como Kubernetes, nuestro servicio estará balanceado automáticamente cuando levantemos más réplicas del microservicio, pudiendo incluso escalar las réplicas de este microservicio automáticamente frente a picos de carga puntuales.
Las distintas fases de un proceso de migración de legacy a microservicios han sido analizadas. Pero cualquier transformación, más aún en el ámbito digital, deberá adaptarse a los elementos y circunstancias propios de cada escenario. Te hemos ofrecido un análisis global del proceso, pero cada situación es distinta y habrá que saber adaptarse a las distintas realidades de las compañías.
En Conasa podemos estudiar tu caso para ofrecerte mejoras en el rendimiento de tu infraestructura informática, tanto a nivel de software como de hardware. Tanto en la migración de legacy a microservicios, como en cualquier otro proceso de renovación y mejora de tus sistemas de información, analizamos tu contexto, planteamos posibles soluciones, y acometemos con éxito su despliegue e implantación. Ponte en contacto con nosotros si necesitas un aliado tecnológico que te ayude a superar los distintos retos tecnológicos a los que se enfrenta tu empresa en el día a día.
Y si prefieres seguir leyendo antes de llamarnos, no te pierdas la segunda entrega de este artículo, en la que nos pondremos el mono de trabajo para ofrecerte el ejemplo de un caso práctico sobre migración de legacy a microservicios.