Migración de aplicaciones de Java a Azure

En este artículo se proporciona una introducción a las estrategias recomendadas para migrar aplicaciones de Java a Azure.

Esta guía de migración está diseñada para escenarios estándar de Java en Azure y para proporcionar sugerencias y consideraciones generales sobre el planeamiento. Si desea hablar sobre un escenario de migración de aplicaciones de Java específico con el equipo de Microsoft Java en Azure, rellene el cuestionario siguiente y un representante se pondrá en contacto con usted.

Identificación del tipo de aplicación

Antes de seleccionar un destino en la nube para la aplicación de Java, deberá identificar su tipo de aplicación. La mayoría de las aplicaciones de Java son de uno de los siguientes tipos:

Estos tipos se describen en las secciones siguientes.

Aplicaciones de Spring Boot/JAR

Muchas aplicaciones más recientes se invocan directamente desde la línea de comandos. Estas aplicaciones todavía controlan las solicitudes web pero, en lugar de depender de un servidor de aplicaciones para proporcionar el control de solicitudes HTTP, incorporan la comunicación HTTP y todas las demás dependencias directamente en el paquete de aplicación. Estas aplicaciones se suelen compilar con marcos como Spring Boot, Dropwizard, Micronaut, MicroProfile, Vert.x y otros.

Estas aplicaciones se empaquetan en archivos con la extensión .jar (archivos JAR).

Aplicaciones Spring que usan módulos middleware de Spring Cloud

El estilo arquitectónico de microservicios es un enfoque para desarrollar una aplicación individual como un conjunto de pequeños servicios. Cada servicio se ejecuta en su propio proceso y se comunica mediante mecanismos ligeros, a menudo una API de recursos HTTP. Estos servicios se crean en torno a las funcionalidades empresariales y se pueden implementar de forma independiente con maquinaria de implementación totalmente automatizada. Estos servicios tienen un mínimo de administración centralizada, que puede estar escrita en distintos lenguajes de programación y usar diferentes tecnologías de almacenamiento de datos. Estos servicios suelen compilarse con marcos como Spring Cloud.

Estos servicios se empaquetan en varias aplicaciones con la extensión .jar (archivos JAR).

Aplicaciones de Java EE

Las aplicaciones de Java EE (también conocidas como aplicaciones J2EE o, más recientemente, aplicaciones de Jakarta EE) pueden contener algunos, todos o ninguno de los elementos de las aplicaciones web. Estas aplicaciones también pueden contener y consumir muchos más componentes, tal y como se define en la especificación Jakarta EE.

Las aplicaciones de Java EE se pueden empaquetar como archivos con la extensión .ear (archivos EAR) o como archivos con la extensión .war (archivos WAR).

Las aplicaciones Java EE deben desplegarse en servidores de aplicaciones compatibles con Java EE (como Oracle WebLogic Server, IBM WebSphere, JBoss EAP, GlassFish, Payara y otros).

Las aplicaciones que solo se basan en las características proporcionadas por la especificación de Java EE (es decir, las aplicaciones independientes de la aplicación) se pueden migrar desde un servidor de aplicaciones compatible a otro. Si su aplicación depende de un servidor de aplicaciones específico (dependiente del servidor de aplicaciones), es posible que tenga que seleccionar un destino de servicio de Azure que le permita hospedar ese servidor de aplicaciones.

Aplicaciones web

Las aplicaciones web se ejecutan en un contenedor de Servlet. Algunas de estas aplicaciones usan las API de Servlet directamente, mientras que muchas usan otros marcos que encapsulan las API de Servlet, como Apache, Spring MVC, JavaServer Faces (JSF), etc.

Las aplicaciones web se empaquetan en archivos con la extensión .war (archivos WAR).

Trabajos por lotes o programados

Algunas aplicaciones están diseñadas para ejecutarse brevemente, ejecutar una carga de trabajo concreta y después salir, sin esperar solicitudes ni los datos proporcionados por el usuario. A veces, estos trabajos deben ejecutarse una vez o a intervalos regulares programados. En el entorno local, estos trabajos se suelen invocar desde el archivo crontab de un servidor.

Estas aplicaciones se empaquetan en archivos con la extensión .jar (archivos JAR).

Nota:

Si la aplicación usa un programador (como Spring Batch o Quartz) para ejecutar tareas programadas, es muy recomendable factorizar estas tareas para que se ejecuten fuera de la aplicación. Si la aplicación se escala en varias instancias en la nube, el mismo trabajo se ejecutará más de una vez. Además, si el mecanismo de programación utiliza la zona horaria local del host, el comportamiento podría no ser el esperado si la aplicación se escala en regiones diferentes.

Selección del destino de servicio de Azure

En las secciones siguientes se muestran los destinos de servicio que cumplen los requisitos de la aplicación y qué responsabilidades conllevan.

Tabla de opciones de hospedaje

Use la siguiente tabla para identificar posibles destinos para su tipo de aplicación. Como puede ver, Azure Kubernetes Service (AKS) y máquinas virtuales de Azure son compatibles con todos los tipos de aplicaciones, pero requieren que el equipo asuma más responsabilidades, como se muestra en la sección siguiente.

Destination →

Tipo de aplicación ↓
Aplicación
Service
Java SE
Aplicación
Service
Tomcat
Aplicación
Service
JBoss EAP
Azure Container Apps AKS Las máquinas
Machines
Aplicaciones de Spring Boot/JAR
Aplicaciones de Spring Cloud
Web Apps (WAR)
Aplicaciones Java EE (WAR | EAR)
Servidores de aplicaciones comerciales
(como Oracle WebLogic Server o IBM WebSphere)
Agrupación en clústeres en el nivel del servidor de aplicaciones
Trabajos por lotes o programados
Integración con redes virtuales y conexiones híbridas
Disponibilidad de regiones de Azure Detalles Detalles Detalles Detalles Detalles Detalles

Tabla de responsabilidad en curso

Use la tabla siguiente para comprender la responsabilidad que cada destino conlleva para su equipo después de la migración.

Las tareas indicadas con Azure se gestionan en su totalidad o en su mayor parte por Azure. Su equipo es responsable de forma continua de las tareas indicadas con . Se recomienda implementar un proceso sólido y muy automatizado para cumplir todas estas responsabilidades.

Nota:

Esta no es una lista exhaustiva de todas las responsabilidades.

Destination →

Tarea ↓
Aplicación
Service
Azure
Contenedor
Aplicaciones
AKS Las máquinas
Machines
Actualización de bibliotecas
(incluida la corrección de vulnerabilidades)
👉 👉 👉 👉
Actualización del servidor de aplicaciones
(incluida la corrección de vulnerabilidades)
Azure 👉 👉 👉
Actualización del tiempo de ejecución de Java
(incluida la corrección de vulnerabilidades)
Azure 👉 👉 👉
Desencadenamiento de actualizaciones de Kubernetes
(lo realiza Azure con un desencadenador manual)
N/D Azure 👉 N/D
Recuperación ante desastres Azure 👉 👉 Azure
Conciliación de los cambios de la API de Kubernetes no compatibles con versiones anteriores N/D 👉 👉 N/D
Actualización de la imagen base del contenedor
(incluida la corrección de vulnerabilidades)
N/D 👉 👉 N/D
Activación del sistema operativo
(incluida la corrección de vulnerabilidades)
Azure Azure Azure1 👉
Detectación y reinicio de instancias con errores Azure Azure Azure 👉
Implementación de purga y reinicio gradual de las actualizaciones Azure Azure Azure 👉
Administración de la infraestructura Azure 👉 👉 👉
Supervisión y administración de alertas 👉 👉 👉 👉

1 Algunas actualizaciones de seguridad pueden requerir reinicios de nodo, que no se realizan automáticamente. Para más información, consulte Aplicación de actualizaciones de kernel y seguridad a los nodos de Linux en Azure Kubernetes Service (AKS)

Si implementa el contenedor de Servlet (como Spring Boot) como parte de la aplicación, se considerará una biblioteca y, como tal, será siempre su responsabilidad.

Garantizar la conectividad local

Si su aplicación necesita acceder a cualquiera de los servicios locales, deberá aprovisionar uno de los servicios de conectividad de Azure. Para más información, consulte Connect an on-premises network to Azure (Conexión de una red local a Azure). También tendrá que refactorizar la aplicación para que use las API disponibles públicamente que exponen los recursos locales.

Debe completar este trabajo antes de iniciar cualquier migración.

Capacidad actual de inventario y uso de los recursos

Documente el hardware de los servidores de producción actuales, además del número medio y máximo de solicitudes y el uso de los recursos. Necesitará esta información para aprovisionar los recursos en el destino del servicio.

Guía de migración

Use las tablas siguientes para encontrar la guía de migración por tipo de aplicación y destino de servicio de Azure.

Aplicaciones de Java

Busque en las filas el tipo de aplicación de Java y, en las columnas, el destino de servicio de Azure que hospedará la aplicación.

Si desea migrar una aplicación de JBoss EAP a Tomcat en App Service, convierta primero la aplicación de Java EE a Java Web Apps (servlets) que se ejecuta en Tomcat, y siga las instrucciones que se indican a continuación.

Destination →

Tipo de aplicación ↓
Aplicación
Service
Java SE
Aplicación
Service
Tomcat
Aplicación
Service
JBoss EAP
Azure
Contenedor
Aplicaciones
AKS Las máquinas
Machines
Spring Boot/
aplicaciones JAR
N/D N/D N/D N/D N/D N/D
Spring Cloud/
applications
N/D N/D N/D N/D instrucciones
planeado
instrucciones
planeado
Aplicaciones web
en Tomcat
N/D instrucciones N/D instrucciones instrucciones instrucciones
planeado

Aplicaciones de Java EE

Busque en las filas el tipo de aplicación de Java EE que se ejecuta en un servidor de aplicaciones específico. Busque en las columnas el destino del servicio de Azure que hospedará la aplicación.

Destination →

Servidor de aplicaciones ↓
Aplicación
Service
Java SE
Aplicación
Service
Tomcat
Aplicación
Service
JBoss EAP
Azure
Contenedor
Aplicaciones
AKS Las máquinas
Machines
WildFly /
JBoss AS
N/D N/D instrucciones N/D instrucciones instrucciones
planeado
Servidor WebLogic de Oracle N/D N/D instrucciones N/D instrucciones instrucciones
IBM WebSphere N/D N/D instrucciones N/D instrucciones instrucciones
planeado
Red Hat JBoss EAP N/D N/D instrucciones N/D instrucciones instrucciones

Consulte también