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:
- Aplicaciones de spring:
- Aplicaciones de Java EE
- Aplicaciones web
- Trabajos por lotes o programados
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 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) |
👉 | 👉 | 👉 | |
Actualización del tiempo de ejecución de Java (incluida la corrección de vulnerabilidades) |
👉 | 👉 | 👉 | |
Desencadenamiento de actualizaciones de Kubernetes (lo realiza Azure con un desencadenador manual) |
N/D | 👉 | N/D | |
Recuperación ante desastres | 👉 | 👉 | ||
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) |
1 | 👉 | ||
Detectación y reinicio de instancias con errores | 👉 | |||
Implementación de purga y reinicio gradual de las actualizaciones | 👉 | |||
Administración de la infraestructura | 👉 | 👉 | 👉 | |
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 |