Cómo desplegar aplicaciones mainframe refactorizadas en AWS
Tags: aws, cloud, mainframe, modernization
Published: 2024-07-12 22:41:31

>**Note:** ✋ Este post se publicó originalmente en mi blog [wiki-cloud.co](https://wiki-cloud.co/es/2024/07/how-to-deploy-refactored-mainframe-applications-aws/)

## **Introducción**

La modernización de aplicaciones se ha convertido en prioridad para muchas empresas que buscan mejorar su eficiencia operativa, su capacidad para adaptarse rápidamente a los cambios del mercado y lograr mantenerse competitivas en un entorno empresarial cada vez más digital y dinámico. Para muchas empresas se convierte en un reto migrar y modernizar aplicaciones legacy, como por ejemplo las aplicaciones de mainframe a entornos agiles y flexibles como la nube de AWS, sin embargo con las herramientas y soluciones que AWS provee, este proceso se hace mucho más fácil.

En este artículo, realizaremos un paso a paso sobre cómo desplegar una aplicación mainframe que ya ha sido analizada y refactorizada. Esto implica que el código COBOL original ha sido transformado a un lenguaje moderno como JAVA. Realizaremos el despliegue en un entorno de ejecución en AWS utilizando el servicio de **AWS Mainframe Modernization**.

## **AWS Mainframe Modernization**

En un [artículo](https://dev.to/aws-espanol/despidete-del-pasado-y-moderniza-tu-mainframe-con-aws-12bl) anterior di una introducción del servicio de AWS Mainframe Modernization, que básicamente es un conjunto de servicios y herramientas diseñadas para facilitar la migración y modernización de aplicaciones y cargas de trabajo que se ejecutan en mainframes hacia la nube de AWS.

Dentro de este conjunto de herramientas tenemos **AWS Blu Insights** que es una herramienta tipo SaaS y nos ayuda no solo a analizar las aplicaciones de mainframe sino también a realizar la trasformación y/o refactorización de estas aplicaciones legacy que están desarrolladas con lenguaje COBOL a lenguajes más modernos como JAVA preservando su lógica y funcionalidades originales.

Cuando realizamos el proceso de trasformación y/o refactorización de estas aplicaciones de mainframe con AWS Blu Insights, debemos tener en cuenta que el resultado de este proceso es la generación de un aplicación JAVA principalmente con dos capas (Frontend y Backend) y abierto a una capa adicional de persistencia donde podemos hacer uso de otros servicios que nos provee AWS como las bases de datos, almacenamiento de archivos y servicios de gestión de colas.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vkdg8nq6iralhqjzczvc.png)

## **Despliegue de aplicaciones mainframe refactorizadas**

Para este demo descargamos la aplicación de ejemplo que tiene AWS llamada [Planets Demo](https://d3lkpej5ajcpac.cloudfront.net/demo/bluage/PlanetsDemo-v1.zip), esta aplicación ya ha pasado por el proceso de refactorización por lo que esta lista para ser desplegada en el servicio de AWS Mainframe Modernization.

Para desplegar la aplicación debemos seguir los siguientes pasos:

- **<u>Paso 1 – Crear un bucket S3 y cargar la aplicación</u>**

Como primer paso debemos crear un bucket en S3 donde cargamos la aplicación ya refactorizada que se encuentra en formato ZIP para que el servicio de AWS Mainframe Modernización sea capaz de tomarla y procesarla dentro de su motor de ejecución.

Algo para tener en cuenta es que el bucket debe ser creado en la misma región donde se va a crear el despliegue de la aplicación en el servicio de AWS Mainframe Modernización y el archivo ZIP debe estar almacenado dentro de una carpeta.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9ifsucyl5wjp4zbbtqdi.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rdqs67s0iklnk418ukza.png)

- **<u>Paso 2 – Definición de la aplicación</u>**

Como requisito para desplegar una aplicación refactorizada de mainframe en el servicio de AWS Mainframe Modernization, se debe configurar una archivo tipo JSON donde se define la ubicación y la configuración de la aplicación, para que el servicio de AWS Migration Modernization tome estos parámetros y se ejecute correctamente el proceso de despliegue en el motor de ejecución del servicio.

La configuración es muy sencilla y para este ejemplo en el siguiente código JSON configuramos el nombre del bucket, la ruta donde se encuentra el archivo ZIP dentro de este bucket y el puerto por donde va a ser escuchada la aplicación cuando se digite la URL en un navegador.

```
{
    "template-version": "2.0",
    "source-locations": [{
        "source-id": "s3-source",
        "source-type": "s3",
        "properties": {
            "s3-bucket": "demo-aws-mainframe-modernization", 
            "s3-key-prefix": "PlanetsDemo/v1"
        }
    }],
    "definition": {
        "listeners": [{
            "port": 8194,
            "type": "http"
        }],
        "ba-application": {
            "app-location": "${s3-source}/PlanetsDemo-v1.zip"
        }
    }
}
```
Una vez realizadas las configuraciones en el archivo JSON, es importante cargarlo en la misma carpeta dentro del Bucket donde ya se ha cargado el archivo ZIP con la aplicación refactorizada.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vth38nn0kjlf5gtfieln.png)

- **<u>Paso 3 – Creación del entorno de ejecución en AWS Mainframe Modernization</u>**

Un entorno de ejecución es un conjunto integral de recursos de infraestructura que incluye un motor de ejecución, diseñado específicamente para alojar y gestionar una o varias aplicaciones de mainframe migradas.

Para crear el entorno de ejecución lo primero que hacemos es buscar el servicio de AWS Mainframe Modernization dentro de la consola de AWS y allí seleccionamos la opción “Refactor con Blu Age”.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/04nz0vzw5xeezwyncq2u.png)

En este demo, la aplicación ya paso por el proceso de refactorización con la solución de Blue Age, lo que vamos a hacer ahora es realizar el despliegue de la aplicación de mainframe en el motor de ejecución del servicio. Para esto seleccionamos la opción de despliegue y la opción crear entorno de ejecución.  

Ahora nos preguntamos, qué es la refactorización?, como bien dice la página del servicio “Es la transformación automática de aplicaciones de lenguajes heredados (Ej. COBOL) en servicios ágiles basados ​​en Java con AWS Blu Age, aprovechando los marcos web más nuevos y las mejores prácticas de DevOps en la nube.”

Seleccionamos la opción despliegue, luego “crear entorno de ejecución” y por último continuar.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kir5gypraev5xg8nccrs.png)

Otra forma de acceder a la creación de este entorno de ejecución es ingresando por el menu de la izquierda, seleccionando la opción “Environments”.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c658mgikmivzv8x6wpco.png)

Independiente del camino por donde accedamos a la creación del entorno de ejecución, se llega al primer paso que es especificar la información básica, donde damos un nombre y una descripción al entorno de ejecución.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fh1zaf7e8gf8g83obq3s.png)

Ahora nos solicita que seleccionemos el motor, como esta es una aplicación que ya paso por el proceso de refactorización con la herramienta de Blu Age, debemos seleccionar este motor y la versión, para efectos de esta demostración seleccionaremos la que nos aparece por defecto que es la versión 3.70, sin embargo se recomienda trabajar con últimas versiones que vienen con muchas mejoras y actualizaciones.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4cn4jntafbljp5ttptgy.png)

Al finalizar esta especificación de información básica, la misma página del servicio indica que una vez sea creado el entorno de ejecución, automáticamente se van a crear métricas y almacenar logs en Amazon CloudWatch. Si se desea también se puede aplicar tags.

Ahora pasamos al paso 2 que es la especificación de la configuración, en esta sección configuramos la disponibilidad del entorno de ejecución, donde el servicio de AWS Mainframe Modernization ofrece dos opciones que son el entorno de ejecución standalone y el clúster de alta disponibilidad. En el entorno de ejecución standalone se configura una única instancia en una zona de disponibilidad, escenario perfecto para demos como esta y para probar aplicaciones de mainframe ya transformadas y refactorizadas, en el caso de del clúster de alta disponibilidad se recomienda para escenarios de entorno de producción donde tendremos instancias redundantes en dos zonas de disponibilidad, por supuesto este escenario es más costoso.

Para este demo seleccionaremos la opción de entorno de ejecución standalone.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xkqsabd6hio1chaxpk1i.png)

Otra sección es la parte de recursos donde seleccionamos el tipo de instancia que queremos que se despliegue para nuestro entorno de ejecución. AWS Mainframe Modernization ofrece una serie de tipos de instancias que podemos utilizar dependiendo del tipo de la carga de trabajo o aplicación que vayamos a procesar en el motor de ejecución. Para esta demo utilizaremos la más pequeña que es la instancia M2.m5.large.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4hl8z7w6ix60qhc7zt0h.png)

Por último pasamos a la sección de seguridad y redes donde seleccionamos la VPC, las subredes y grupos de seguridad que queremos utilizar para desplegar estas instancias. Para este demo seleccionamos la opción “Permitir que las aplicaciones implementadas en este entorno sean accesibles públicamente”, esta opción asigna una dirección IP pública a la aplicación para que se pueda acceder a ella desde un navegador web.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cuzyviplc4relf4o8n32.png)

El siguiente paso es seleccionar el almacenamiento, en caso de que nuestra aplicación de mainframe requiera de un almacenamiento como EFS o FSx podemos configurarlo en esta opción. Para esta demo no será necesario estos tipos de almacenamiento.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ilj9myoc3prcuqdhvzm.png)

Ahora pasamos a la programación del mantenimiento, como AWS Mainframe Modernization es un servicio gestionado, AWS se encarga de realizar el mantenimiento y aplicar las actualizaciones, sin embargo debemos seleccionar cuando se deben programar estas ventanas de mantenimiento para no afectar el funcionamiento de las aplicaciones de mainframe que ya se encuentran desplegadas. Para esta demo seleccionaremos la opción de no preferencia.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ltzf7xhydvzll76943cr.png)

Ya para finalizar la creación de nuestro entorno de ejecución, se muestra un resumen de la configuración seleccionada para hacer un último chequeo antes de crear el entorno. En esta demo la creación del entorno de ejecución tardo aproximadamente entre 4 y 5 minutos.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6u46uw49wmlz7dlxg3qc.png)

- **<u>Paso 4 – Creación de la aplicación de mainframe</u>**

En este paso lo que hacemos es configurar la aplicación de mainframe que queremos desplegar.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pyevvrdqo8qxgv7lg6zn.png)

El paso 1 de esta sección es la especificación de la información básica, donde damos un nombre a nuestra aplicación, una descripción y seleccionamos el tipo de motor que en este caso es Blu Age.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4zjzlzgzagzh9j73deu9.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7o7h137q6mky3a2zk4te.png)

Adicionalmente se ofrecen otras opciones de configuración como lo es adicionar un llave de KMS, adicionar un rol de IAM y tags para asignar a estos recursos.

El paso 2 de esta sección hace referencia a la especificación de recursos y configuraciones, este paso es clave configurarlo adecuadamente, porque de esta configuración dependerá en gran parte la correcta ejecución de la aplicación. Acá simplemente copiamos el código JSON que configuramos anteriormente donde definimos el bucket y la ruta donde se encuentra el archivo ZIP con la aplicación de mainframe refactorizada o simplemente seleccionamos la ruta del bucket donde se encuentra este archivo JSON.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r0uukaebkhtlldn245ba.png)

El último paso de esta sección es la revisión y la creación de la configuración de la aplicación de mainframe. Para esta demo este proceso tardo aproximadamente 30 segundos.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ezgcljdredx84n47eo9.png)

- **<u>Paso 5 – Desplegar la aplicación mainframe</u>**

Ya habiendo creado el entorno de ejecución y la configuración de la aplicación, únicamente nos haría falta desplegar la aplicación refactorizada con Blue Age en este entorno de ejecución que hemos creado y configurado.

Para acceder a la configuración de despliegue simplemente damos click en el nombre de la configuración de aplicación que acabamos de definir para este demo “app_planetsdemo” y damos click en el botón Deploy.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cshiwluf837vxcx0quxg.png)

En este paso lo único que hacemos es seleccionar la versión de nuestra aplicación de mainframe y el entorno de ejecución donde queremos desplegarlo.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6hdjw5tkdb98cowll6g5.png)

Para esta demo este proceso tardo en desplegar la aplicación aproximadamente 15 min.

- **<u>Paso 6 – Ejecutar y probar la aplicación</u>**

Después de haber realizado todos estos pasos y su respectiva configuración, procedemos a ejecutar y probar la aplicación de ejemplo de AWS Planets Demo. Vamos a notar algo interesante y es que al haberse realizado la refactorización de la aplicación de mainframe, modernizando el código de COBOL a JAVA, ingresaremos a la aplicación en modo web por medio de un navegador. Pero antes de ejecutar la aplicación en vivo, debemos iniciarla y una vez iniciada vamos a la sección de información de la aplicación, donde podemos observar que se configuro y se asigno un DNS Hostname que es la dirección que debemos ingresar en el navegador web.

> _[Ver GIF Animado](https://wiki-cloud.co/wp-content/uploads/2024/07/article_image_aws_deploy_refactored_mainframe_applications_23.gif)_
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/68ow0c3u3twyjnucatu0.png)

Para muchos esta aplicación les recordara épocas del pasado pero que ahora son una realidad tenerlas en la nube de AWS y en su servicio de AWS Mainframe Modernization. Esta aplicación es muy sencilla simplemente digitamos un nombre de un planeta del sistema solar e inmediatamente nos trae información sobre el planeta que hemos buscado. Como la aplicación se ejecuta en un ambiente web podemos cambiar la apariencia de la pantalla.

En el navegador ingresamos la siguiente URL: http://{DNS hostname}:{port}/PlanetsDemo-web-1.0.0/

Ahora vamos a la acción !!

> _[Ver GIF Animado](https://wiki-cloud.co/wp-content/uploads/2024/07/article_image_aws_deploy_refactored_mainframe_applications_24.gif)_
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d9de1cqlng65xx59qxtz.png)

- **<u>Paso 7 – Monitoreo aplicación mainframe</u>**

Dentro de la sección de aplicación, aparecen varias pestañas con determinada información y una de ellas es la de monitoreo, cuando ingresamos a esta, se muestran diferentes graficas con métricas que miden el performance de la infraestructura y de la aplicación mainframe.

> _[Ver GIF Animado](https://wiki-cloud.co/wp-content/uploads/2024/07/article_image_aws_deploy_refactored_mainframe_applications_25.gif)_
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/18bnnnsjyj3y8yrrybrh.png)

## **Conclusión**

La adopción de herramientas y servicios específicos de AWS, como AWS Mainframe Modernization, facilita el proceso de transición, garantizando que las aplicaciones de mainframe refactorizadas conserven su funcionalidad y rendimiento óptimos. Modernizar aplicaciones de mainframe en AWS no solo representa una evolución tecnológica, sino también una oportunidad para que las empresas innoven y mejoren sus operaciones, manteniendo su relevancia y competitividad en un entorno empresarial en constante cambio. AWS proporciona una amplia gama de recursos y herramientas que no solo simplifican este proceso, sino que también potencian la transformación empresarial a través de la modernización de aplicaciones de mainframe.

## **Recursos**

Consulte los siguientes recursos para obtener más información sobre el servicio de AWS Mainframe Modernization::

- [AWS Mainframe Modernization](https://aws.amazon.com/mainframe-modernization/)
- [YouTube – Introducción AWS Mainframe Modernization](https://youtu.be/Qpz1QmwiHpQ)
- [Blog – AWS Mainframe Modernization](https://aws.amazon.com/blogs/apn/tag/mainframe/)
- [Guía de usuario AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html)
- [AWS Mainframe Modernization Refactorización con AWS Blu Age](https://aws.amazon.com/es/mainframe-modernization/capabilities/refactor)
- [AWS MAP para Mainframe](https://aws.amazon.com/migration-acceleration-program/mainframe/?nc1=h_ls)

Espero sea de utilidad !!!

Saludos,

**Síguenos:**

> 👉[Wiki Cloud](http://wiki-cloud.co/) | 👉[X](https://x.com/johnbulla) | 👉[LinkedIn](https://www.linkedin.com/in/johnbulla) | 👉[Github](https://github.com/johnbulla) | 👉[Youtube](https://www.youtube.com/user/johnbulla)