Migración de aplicaciones de Java a Azure

En este artículo se proporciona información general sobre las estrategias recomendadas para migrar aplicaciones 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 analizar un escenario específico de migración de aplicaciones Java con el equipo de Microsoft Java en Azure, rellene el siguiente cuestionario 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 de Spring que usan módulos de 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. Hay un mínimo de administración centralizada de estos servicios, que se pueden escribir en diferentes 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 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 como se define en la especificación de 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 implementarse 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 api de servlet directamente, mientras que muchas otras plataformas que encapsulan las API de servlet, como Apache Struts, Spring MVC, JavaServer Faces (JSF) y otras.

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 Azure Virtual Machines admiten todos los tipos de aplicaciones, pero requieren que el equipo asuma más responsabilidades, como se muestra en la sección siguiente.

→ de destino

Tipo de aplicación →
Aplicación
Servicio
Java SE
Aplicación
Servicio
Tomcat
Aplicación
Servicio
JBoss EAP
Azure
Spring
Aplicaciones
Azure Container Apps AKS Virtual
Machines
Aplicaciones de Spring Boot/JAR
Aplicaciones de Spring Cloud
Aplicaciones web
Aplicaciones de Java EE
Servidores de aplicaciones comerciales
(como Oracle WebLogic Server o IBM WebSphere)
Persistencia a largo plazo en el sistema de archivos local
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 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.

Azure administra completamente o principalmente las tareas indicadas con Azure . Su equipo es responsable continuamente 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.

→ de destino

Tarea →
Aplicación
Servicio
Azure
Spring
Aplicaciones
Azure
Contenedor
Aplicaciones
AKS Virtual
Machines
Actualización de bibliotecas
(incluida la corrección de vulnerabilidades)
👉 👉 👉 👉 👉
Actualización del servidor de aplicaciones
(incluida la corrección de vulnerabilidades)
Azure Azure 👉 👉 👉
Actualización del tiempo de ejecución de Java
(incluida la corrección de vulnerabilidades)
Azure Azure 👉 👉 👉
Desencadenamiento de actualizaciones de Kubernetes
(lo realiza Azure con un desencadenador manual)
N/D Azure Azure 👉 N/D
Recuperación ante desastres Azure Azure 👉 👉 Azure
Conciliación de los cambios de la API de Kubernetes no compatibles con versiones anteriores N/D Azure 👉 👉 N/D
Actualización de la imagen base del contenedor
(incluida la corrección de vulnerabilidades)
N/D Azure 👉 👉 N/D
Activación del sistema operativo
(incluida la corrección de vulnerabilidades)
Azure Azure Azure Azure1 👉
Detectación y reinicio de instancias con errores Azure Azure Azure Azure 👉
Implementación de purga y reinicio gradual de las actualizaciones Azure Azure Azure Azure 👉
Administración de la infraestructura Azure 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 seguridad y kernel 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 obtener más información, consulte. Elección de una solución para conectar 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.

Si desea migrar una aplicación web en Tomcat a Azure Spring Apps, primero convierta la aplicación en aplicaciones de Spring Cloud y siga las instrucciones que se indican a continuación.

→ de destino

Tipo de aplicación →
Aplicación
Servicio
Java SE
Aplicación
Servicio
Tomcat
Aplicación
Servicio
JBoss EAP
Azure
Contenedor
Aplicaciones
Azure
Spring
Aplicaciones
AKS Virtual
Machines
Spring Boot/
aplicaciones JAR
N/D N/D N/D N/D instrucciones N/D N/D
Spring Cloud/
applications
N/D N/D N/D N/D instrucciones instrucciones
planeado
instrucciones
planeado
Aplicaciones web
en Tomcat
N/D instrucciones N/D instrucciones 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.

→ de destino

Servidor de aplicaciones →
Aplicación
Servicio
Java SE
Aplicación
Servicio
Tomcat
Aplicación
Servicio
JBoss EAP
Azure
Contenedor
Aplicaciones
Azure
Spring
Aplicaciones
AKS Virtual
Machines
WildFly /
JBoss AS
N/D N/D instrucciones N/D N/D instrucciones instrucciones
planeado
Servidor WebLogic de Oracle N/D N/D instrucciones N/D N/D instrucciones instrucciones
IBM WebSphere N/D N/D instrucciones N/D N/D instrucciones instrucciones
planeado
Red Hat JBoss EAP N/D N/D instrucciones N/D N/D instrucciones instrucciones

Consulte también