Migración y modernización de aplicaciones a Open Liberty

Sindy Tatiana Moncada Pisso
Bancolombia Tech
Published in
8 min readJan 13, 2024

Open Liberty es uno de los servidores de aplicaciones backend, de tipo runtime, más eficientes en el mundo Open Source. En Bancolombia, se visualiza como una tecnología estratégica en procesos de modernización de tecnologías on-premise hacia la nube, dado que permite la contenerización de aplicaciones y su orquestación mediante Kubernetes.

Dado que las tecnologías de código abierto han demostrado ser la piedra angular de la innovación tecnológica en todo el mundo, en Bancolombia se impulsa su adopción a través de la iniciativa del Journey to Open, fomentada por la Oficina Open Source del banco, en donde se apalancan procesos de migración de tecnologías privativas hacia su homólogo Open Source. En este artículo se detallará la experiencia obtenida en procesos de modernización de aplicaciones WAS (WebSphere Application Server) hacia Open Liberty en la nube.

Empezaremos abordando algunos conceptos…

¿A qué se refiere cuando hablamos de migración y modernización de aplicaciones?

Cuando hablamos de migración nos referimos a aplicaciones que se encuentran en ambientes de tipo on-premise y se planea desplegar en la Nube con Open Liberty.

Para modernización de aplicaciones nos referimos a aplicaciones que se encuentran en Nube y se planea desplegar con Open Liberty.

¿Qué es servidor de aplicaciones?

Es aquel software que posee distintos servicios como puertos, red, seguridad, protocolos, etc., que nos permite al cliente lanzar y publicar el código de una o varias aplicaciones, para que distintos usuarios tengan acceso disponible a esa aplicación y puedan consumirla en tiempo real.

Existen múltiples alternativas de opciones de servidores de aplicaciones, para el caso específico del banco, hacemos uso del servidor de aplicaciones Open Liberty desarrollado por IBM.

¿Qué es Open Liberty?

Proyecto de código abierto de IBM, ligero, rápido y eficiente para microservicios de Java cloud-native. El cual es utilizado como servidor de aplicaciones en el Banco de manera contenerizada, de forma sencilla y ágil al configurar. Open Liberty

¿Por qué migrar de Servidor WAS a Servidor Open Liberty?

Porque al implementar un servidor de aplicaciones Open Liberty obtendremos ventajas importantes ante un servidor WAS, por ejemplo, el soporte para ejecutar contenedores (Docker), despliegue de aplicaciones mediante tecnología Kubertenes (k8s), tiempo de respuesta en levantar una aplicación Java es muy inferior a otros servidores de aplicaciones, esto es gracias a la arquitectura ultraligera que posee Open Liberty ante un servidor WAS, otra ventaja es la optimización y mejor uso administrado de recursos del servidor, el uso de este servidor no requiere licencia privativa, es decir Open Liberty no tiene costos para poder ser usado e implementado.

¿Qué es contenerización de aplicaciones?

En palabras simples, nos podemos referir como un empaquetado o comprimido en un software que posee inmersamente la lógica del negocio (código de la aplicación / artefacto), bibliotecas del sistema operativo y mínimas dependencias necesarias para la ejecución de la aplicación como archivos de configuración, propiedades, librerías y etc.

Este empaquetado ejecutable se le conoce como contenedor y se ejecuta bajo cualquier infraestructura compatible con contenedores, sea local o en la nube. Unas de las aplicaciones más conocidas en el mercado tecnológico que nos permite trabajar con contenedores es Docker y Podman, se resalta que existen más alternativas.

¿Qué es Kubernetes o K8?

Kubernetes o K8 es una tecnología de código abierto, fabricado por Google, que al implementar esta tecnología junto a la contenerización de nuestras aplicaciones, esta nos ofrece una administración de los contenedores permitiendo la orquestación del entorno, ofreciendo múltiples configuraciones avanzadas como auto escalamiento, replicas, monitoreo de recursos físicos como memoria y CPU de los contenedores, entre otros.

¿Qué es Azure pipelines?

Azure Pipeline es un servicio que proviene de la plataforma de cómputo en la nube de Microsoft, caracterizándose por seguir prácticas DevOps (CI / CD), este ofrece un conjunto de funcionalidades que permiten crear pipelines para la ejecución de procesos automatizados como compilar, crear pruebas, empaquetar código, entre otros. Microsoft Learn.

¿Que es AWS?

Amazon Web Services más se conocido como AWS, una de las plataformas lideres en el mercado tecnológico para trabajar computo en la nube, es una excelente opción como proveedor aliado gracias a su robusticidad, calidad, soporte, costo relación, flexibilidad y disponibilidad para confiar nuestra lógica de negocio medio del catálogo de soluciones tecnologías que ofrece, para el manejo de nuestras aplicaciones y dentro del banco trabajamos con este aliado ya que es hacia la nube donde llevamos nuestras migraciones y/o modernizaciones de aplicaciones.

Ahora que abordamos ciertos conceptos conozcamos desde nuestra experiencia que pasos se destacan y permiten llevar a casos de éxito de migraciones de aplicaciones en Bancolombia.

Pasos de migración y modernización de aplicaciones en el banco

Ahora contaremos un poco de los pasos que llevamos dentro de la migración y modernización de aplicaciones de manera general.

1. Discovery de aplicación

Dentro de las migraciones y/o modernizaciones podemos encontrar diversas aplicaciones de diferentes áreas del banco, desde el equipo Open Source debemos abordar el Discovery, es decir entender funcionalmente que hace, para que sirve, como está desplegada, si tiene dependencia a otros sistemas, su arquitectura, si está en nube o en tierra, sus repositorios, pipelines, documentación e información general de aplicación.

2. Identificar tipo de aplicación

Debemos revisar si es una aplicación con acceso a su código fuente es decir caja blanca o sin acceso al código fuente caja negra. ya que podemos enfrentarnos a cambios requeridos en la migración, esto se debe validar con los dueños de aplicación, la responsabilidad y viabilidad de dichos ajustes, ya que en ocasiones podemos encontrarnos con aplicaciones que tienen varios años de construcción con diferentes librerías y cambios que pueden influir en la compatibilidad con Open Liberty en el momento de la migración.

3. Evaluación de compatibilidad con Open Liberty

Se debe ejecutar la evaluación de compatibilidad, validar el estado actual de la aplicación y verificar si es compatible con el servidor de aplicaciones Open Liberty. Para esto se hace con ayuda de una herramienta proporcionada por IBM llamado Transformation Advisor el cual nos permite configurar y cargar el compilado de la aplicación a migrar y nos arrojara un reporte del estado actual y el resumen de evaluación donde mostrara la viabilidad de la migración a Open Liberty.

una vez generado el reporte, se procese a resolver las reglas arrojadas y que requieren ajustes para la compatibilidad de Open Liberty. Este reporte puede arrojar un server.xml de base para el proceso de migración.

4. Despliegue local de aplicación

Una vez se tiene un compilado apto para migración, se inicia con la configuración local de la contenerización de la aplicación.

Se construye el archivo dockerfile usando una Imagen Open Liberty, generalmente la última versión, se construye el server.xml y se adicionan las librerías de ser requeridas. Para pasar a realizar un despliegue local de la aplicación y poder visualizarla con Open Liberty.

dockerfile de ejemplo:

FROM docker.io/open-liberty:23.0.0.10-full-java8-openj9
ENV VERBOSE=true
USER root

#depende de la app
RUN mkdir -p /config/libs/ && chown -R 1001:0 /config/libs/

# Open Liberty
COPY --chown=1001:0 ojdbc6.jar /wrkdirr/gd/app/libs/
COPY --chown=1001:0 libs/*.jar /wrkdirr/gd/app/libs/
COPY --chown=1001:0 server.xml /config/
COPY --chown=1001:0 app.ear /config/apps/

RUN configure.sh

HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD curl --fail http://localhost:9080/app/ || exit 1

5. Construcción y despliegue de Infraestructura Cloud EKS

Dentro de Bancolombia se maneja IaC (Infraestructura como Código) y para ello utilizamos Temples construidos y cargados dentro de los diferentes repositorios de las aplicaciones y con ayuda de Azure creamos Pipelines de ejecución.

  1. Debemos contar con un repositorio donde administremos el código fuente de la Infraestructura de la aplicación y su versionamiento, para crear los archivos templates (yaml) donde se describirán los recursos de infraestructura de las aplicaciones en nube, en estos archivos yaml se detallan elementos como: Secury Gruop, IAM, Policies, etc.
  2. Creamos un pipeline dentro del módulo Azure donde configuraremos que este ejecute nuestros yaml, ya cargados al repositorio de una rama específica, adicional de tener configurados los parámetros para que Azure pueda comunicarse con AWS, teniendo en cuenta que son 2 plataformas independientes.
  3. Ejecución de Pipeline de Infraestructura, el cual con Cloudformation de AWS nos creara la infraestructura en la nube.

Teniendo en cuenta estos elementos podemos decir que tendremos la infraestructura que utilizara nuestra aplicación dentro de la migración y/modernización.

6. Construcción de pipeline de build

Para la construcción de pipeline de build de las aplicaciones a migrar y/o modernizar seguimos las buenas prácticas y estándares para procesos automatizados DevOps implementadas por el Banco.

En Azure Pipeline creamos otro pipeline que nos permitirá la automatización de la compilación de la aplicación y demás recursos requeridos para el despliegue, como los son: Artefactos, configuración docker (contenerización), templates de kubernetes, pruebas, dependencias, entre otras. Es muy importante tener en cuenta que estos elementos debemos tenerlos cargados en un repositorio independiente al ya utilizado para el pipeline de infraestructura, es decir contaremos con dos repositorios en el proceso de migración y/o modernización a Open Liberty (repositorio de aplicación y repositorio de infraestructura).

Finalmente al ejecutar este pipeline se obtendrá un compilado el cual será posteriormente utilizado en el despliegue de la aplicación en AWS de manera contenerizada.

7. Construcción de pipeline de release

Manteniendo los estándares recomendados dentro del marco DevOps para mantener una integración y entrega continua (CI / CD), se creara un nuevo un pipeline en Azure, para el release o despliegue de la aplicación y este nos permitirá tomar los recursos ya compilados por el pipeline de build, adicionalmente se configuran los pasos y datos requeridos para hacer el despliegue de la aplicación en AWS y hacer uso de la infraestructura que desplegamos anteriormente.

Es muy importante tener en cuenta que los procesos que hemos venido ejecutando en los pasos anteriores son enfocados a un modelo contenerizado con kubernetes dentro del servicio de EKS de AWS.

En este punto se tienen presentes los pasos como construcción de la imagen de la aplicación, reemplazo de variables usando librerías, realización de escaneos de la aplicación (código, seguridad, y otros), uso de certificados digitales, despliegue, pruebas de aceptación, pruebas de performance, y otros pasos que sean requeridos para lograr que la aplicación quede desplegada con Open Liberty en EKS de AWS.

Finalmente el pipeline de release se puede amoldar para trabajar los diferentes ambientes (DEV, QA, PDN) y así poder replicar los cambios en cada uno de ellos.

Conclusión

El proceso de migración y/o modernización de aplicaciones desde el Equipo Open Source de Bancolombia, puede tener ciertas variaciones ya que como se menciona diversas áreas cada día inician este proceso y cada aplicación es diferente en cuanto procesamiento, robustes, conexiones, bases de datos, tecnologías, usuarios, etc. En este articulo abordamos los puntos mas importantes que nos han llevado a tener casos de éxito en las migraciones a tecnologías Open Source en Bancolombia en los dos últimos años y que también como profesionales de la industria del software nos ha llevado a adquirir nuevos conocimientos y conocer mas y mas de cada una de las aplicaciones que existen en Bancolombia y que son utilizadas por muchísimos usuarios internos y externos del Banco.

Artículo redactado por Sindy Tatiana Moncada Pisso y Daniel Andrés Tapias Galeano del equipo Open Source Bancolombia.

--

--

Sindy Tatiana Moncada Pisso
Bancolombia Tech

Ingeniera de Sistemas y Especialista en Procesos de Desarrollo de Software, Ingeniera de Software en Bancolombia