Comparación de las opciones de hospedaje de aplicaciones Java en Azure

Azure Spring Apps
Azure App Service
Azure Kubernetes Service (AKS)
Azure Virtual Machines

Azure ofrece muchas opciones para que los equipos creen e implementen aplicaciones Java. En este artículo, se tratan los escenarios estándar de Java en Azure y se proporcionan sugerencias y consideraciones de planeación generales.

Apache®, Apache Kafka, Apache Struts, Apache Tomcat y el logotipo de la llama son marcas registradas o marcas comerciales de Apache Software Foundation en los Estados Unidos y otros países. El uso de estas marcas no implica la aprobación de Apache Software Foundation.

Plataforma

Antes de seleccionar un escenario en la nube para la aplicación Java, identifique su plataforma. La mayoría de las aplicaciones Java utilizan una de las siguientes plataformas:

Aplicaciones JAR de Spring Boot

Las aplicaciones JAR de Spring Boot se invocan normalmente directamente desde la línea de comandos. Controlan las solicitudes web. En lugar de confiar en un servidor de aplicaciones para controlar las solicitudes HTTP, estas aplicaciones incorporan comunicación HTTP y otras dependencias directamente en el paquete de aplicación. Estas aplicaciones se suelen crear con marcos como Spring Boot, Dropwizard, Micronaut, MicroProfile y Vert.x.

Estas aplicaciones se empaquetan en archivos con la extensión .jar, conocidos como archivos JAR.

Aplicaciones 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 basan en las funcionalidades empresariales.

La maquinaria de implementación automatizada implementa de forma independiente estos microservicios. Hay una administración centralizada mínima, que puede estar escrita en distintos lenguajes de programación y usar diferentes tecnologías de almacenamiento de datos. Estos servicios se suelen crear con marcos como Spring Cloud.

Estos servicios se empaquetan en varias aplicaciones como archivos JAR.

Aplicaciones web

Las aplicaciones web se ejecutan en un contenedor de servlets. Algunas usan las API de servlet directamente, mientras que otras usan otros marcos que encapsulan las API de servlet, como Apache Struts, Spring MVC y JavaServer Faces.

Las aplicaciones web se empaquetan en archivos con la extensión .war, conocidos como archivos WAR.

Aplicaciones de Jakarta EE

Las aplicaciones de Jakarta Enterprise Edition (Jakarta EE) pueden contener algunos, todos o ninguno de los elementos de las aplicaciones web. También pueden contener y consumir muchos más componentes, tal y como se define en la especificación de Java EE. Las aplicaciones de Jakarta EE se conocían anteriormente como aplicaciones Java EE o aplicaciones J2EE.

Las aplicaciones de Jakarta EE se pueden empaquetar como archivos WAR o como archivos con la extensión .ear, conocidos como archivos EAR.

Las aplicaciones de Jakarta EE se deben implementar en servidores de aplicaciones compatibles con Jakarta EE. Algunos ejemplos son WebLogic, WebSphere, WildFly, GlassFish y Payara.

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

Opciones de plataforma

Use la siguiente tabla para identificar las posibles plataformas para su tipo de aplicación.

Azure Spring Apps Java SE en App Service Tomcat en App Service JBoss EAP en App Service Azure Container Apps AKS Virtual Machines
Aplicaciones de Spring Boot/JAR
Aplicaciones de Spring Cloud
Aplicaciones web
Aplicaciones de Jakarta EE
Disponibilidad de regiones de Azure Detalles Detalles Detalles Detalles Detalles Detalles Detalles

Azure Kubernetes Service (AKS) y Virtual Machines admiten todos los tipos de aplicaciones, pero requieren que el equipo asuma más responsabilidades, como se describe en la sección siguiente.

Compatibilidad

Además de las opciones de plataforma, las aplicaciones Java modernas pueden tener otras necesidades de compatibilidad, como:

Trabajos por lotes y programados

En lugar de esperar solicitudes o entradas de usuario, algunas aplicaciones se ejecutan brevemente, ejecutan una carga de trabajo determinada y, a continuación, finalizan. A veces, estos trabajos se deben ejecutar una vez o a intervalos regulares programados. En el entorno local, estos trabajos se suelen invocar desde la tabla cron de un servidor.

Estas aplicaciones se empaquetan como archivos JAR.

Nota

Si la aplicación usa un programador (como Spring Batch o Quartz) para ejecutar tareas programadas, se recomienda ejecutar esas tareas fuera de la aplicación. Si la aplicación se escala a varias instancias en la nube, el mismo trabajo se puede ejecutar más de una vez. Si el mecanismo de programación usa la zona horaria local del host, es posible que haya un comportamiento no deseado al escalar una aplicación entre regiones.

Integración de la red virtual

Cuando se implementa una aplicación Java en la red virtual, tiene dependencias de salida de servicios fuera de la red virtual. Para la administración y las operaciones, el proyecto debe tener acceso a determinados puertos y nombres de dominio completos. Con Azure Virtual Network, puede colocar muchos de los recursos de Azure en una red que se pueda enrutar distinta de Internet. La característica de integración de red virtual permite a las aplicaciones acceder a los recursos de una red virtual o mediante esta. La integración de red virtual no permite el acceso privado a las aplicaciones.

Modelo de desarrollo sin servidor

El modelo sin servidor es un modelo de desarrollo nativo de la nube que permite a los desarrolladores crear y ejecutar aplicaciones sin tener que administrar servidores. En las aplicaciones sin servidor, el proveedor de servicios en la nube aprovisiona, escala y administra automáticamente la infraestructura necesaria para ejecutar el código. Los servidores siguen existiendo en el modelo sin servidor. Se abstraen del desarrollo de aplicaciones.

Inclusión en contenedores

La contenedorización es el empaquetado conjunto del código del software con todos sus componentes necesarios, como bibliotecas, marcos y otras dependencias. La aplicación está aislada en su propio contenedor.

CI/CD

La integración continua y entrega continua (CI/CD) es un método para entregar con frecuencia aplicaciones a los clientes mediante la introducción de la automatización en las fases del desarrollo de aplicaciones. Los conceptos principales de CI/CD son la integración continua, la entrega continua y la implementación continua. Todas las opciones de Azure admiten la mayoría de las herramientas de CI/CD. Por ejemplo, puede usar soluciones como Azure Pipelines o Jenkins.

Motor de búsqueda de código abierto

Las búsquedas son partes integrales de cualquier aplicación. Si la velocidad, el rendimiento y la alta disponibilidad son críticas, las búsquedas en terabytes y petabytes de datos pueden ser un desafío. Al hospedar aplicaciones Java en Azure, planee hospedar las instancias de Solr y Elasticsearch relacionadas. Como alternativa, considere la posibilidad de migrar a Azure Cognitive Search.

Herramientas de macrodatos

Las herramientas de macrodatos permiten la automatización del flujo de datos entre sistemas de software. Admiten gráficos de enrutamiento de datos escalables, sólidos y optimizados junto con la lógica de mediación del sistema. Se usan para crear canalizaciones de flujo de datos en vivo y aplicaciones de transmisión. Obtenga información sobre cómo pueden ser adecuados para sus necesidades Nifi y Apache Kafka en Azure.

Opciones de compatibilidad

Use la siguiente tabla para identificar las posibles opciones para su tipo de aplicación. AKS y Virtual Machines admiten todos los tipos de aplicaciones, pero requieren que el equipo asuma más responsabilidades.

Azure Spring Apps Java SE en App Service Tomcat en App Service JBoss EAP en App Service Azure Container Apps AKS Virtual Machines
Trabajos por lotes y programados
Integración de redes virtuales
Sin servidor
Inclusión en contenedores
Disponibilidad de regiones de Azure Detalles Detalles Detalles Detalles Detalles Detalles Detalles

Además, consulte este árbol de decisión.

Diagrama que muestra un árbol de decisión para Java en servicios de Azure.

Descargue un archivo de Visio de este diagrama.

Creación o migración de aplicaciones Java

Para crear o migrar las aplicaciones Java, identifique la plataforma de Java de las aplicaciones. Algunas plataformas populares son Java SE, Jakarta EE y MicroProfile.

Java SE

La plataforma Java Standard Edition (Java SE) es una plataforma informática para el desarrollo e implementación de código portátil para entornos de escritorio y servidor. Entre los proyectos más populares basados en Java SE, se incluyen Spring Boot, Spring Cloud, Spring Framework y Apache Tomcat.

Jakarta EE

Jakarta EE es el futuro del código abierto de Java empresarial nativo de nube. Se trata de un conjunto de especificaciones que amplían Java SE con características empresariales como la informática distribuida y los servicios web. Las aplicaciones de Jakarta EE ejecutan entornos de ejecución de referencia. Estos entornos de ejecución pueden ser microservicios o servidores de aplicaciones. Controlan las transacciones, la seguridad, la escalabilidad, la simultaneidad y la administración de los componentes que implementa la aplicación.

MicroProfile

El proyecto MicroProfile proporciona una colección de especificaciones diseñadas para ayudar a los desarrolladores a crear microservicios nativos de nube de Java Enterprise. Quarkus y Open Liberty son implementaciones populares de MicroProfile.

Resumen sobre la creación o migración

En la tabla siguiente, se proporciona información de creación o migración por tipo de aplicación y servicio de Azure.

Tipo Java SE MicroProfile JarkartaSE
Máquina virtual IaaS
VMware Tanzu IaaS
Azure Kubernetes Service Contenedor
Red Hat OpenShift Contenedor
Azure Container Apps PaaS
JBoss EAP App Service de PaaS
Apache Tomcat App Service de PaaS
Java SE App Service de PaaS
Azure Spring Apps PaaS

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Creadores de entidad de seguridad:

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes