Comparación de las soluciones

Completado

Hemos descrito los tipos de implementación más habituales para aplicaciones de Java. Ahora veremos qué servicio de Azure puede funcionar mejor, según el tipo de implementación que necesite.

Azure Container Apps

Azure Container Apps es un servicio administrado que ejecuta contenedores de Docker.

Azure Container Apps puede ejecutar cualquier aplicación java, cuando se empaqueta como una imagen de Docker (incluidas las aplicaciones Tomcat, Spring Boot y Quarkus). La creación y administración de esas imágenes es su responsabilidad (por ejemplo, mediante acciones de GitHub): esto le ofrece una gran flexibilidad, pero también requiere algún mantenimiento.

Es una solución rentable y escalable, lo que lo convierte en una excelente opción para cargas de trabajo pequeñas y medianas.

Para ejecutar una aplicación monolítica de Java basada en contenedores, Azure Container Apps es, por lo tanto, la mejor opción.

Azure App Service

Azure App Service es una solución de plataforma como servicio (PaaS) proporcionada por Azure. Ofrece un servicio fácil de usar para ejecutar aplicaciones web de Java, con actualizaciones y revisiones automáticas del sistema operativo y la Máquina virtual Java (JVM), así como escalado automático o supervisión.

App Service puede ejecutar cualquier archivo JAR ejecutable, lo que lo convierte en una alternativa a Azure Container Apps para ejecutar aplicaciones monolíticas de Java sencillas.

También puede implementar cualquier aplicación WAR sobre servidores de aplicaciones populares, como Apache Tomcat o Red Hat JBoss. Esto hace que sea la mejor solución para ejecutar aplicaciones de Jakarta EE en Azure.

Azure Functions

Azure Functions es la plataforma sin servidor que proporciona Azure y admite la ejecución de cargas de trabajo de Java.

La ejecución de una aplicación de Java en Azure Functions normalmente requiere algunos pequeños ajustes de configuración. Por naturaleza, las funciones sin servidor tiene una duración corta (normalmente solo unos minutos), por lo que algunos de los servicios que tradicionalmente usaría podrían no ser tan eficaces o prácticos como Azure App Service.

Como resultado, Azure Functions está diseñado para aplicaciones que necesitan mucha escalabilidad. Puede detenerlas con regularidad para reducir el costo, así como escalarlas para responder a una carga alta.

Azure Spring Apps

Azure Spring Apps es un servicio único de Azure que proporciona una solución de plataforma como servicio para ejecutar microservicios de Spring Boot. Spring Cloud proporciona muchas herramientas, como un registro de servicio o un servidor de configuración. También proporciona mecanismos específicos de seguridad y escalado automático que simplifican enormemente el uso de una arquitectura de microservicios basada en Spring Boot.

La oferta de Spring Cloud está creada y administrada conjuntamente por Microsoft y Broadcom, la empresa que crea Spring Framework. Spring Cloud proporciona compatibilidad con las actualizaciones y las revisiones del sistema operativo y JVM, como Azure App Service, y con servicios avanzados de Spring.

También puede usar el servicio Azure Spring Apps para ejecutar otras cargas de trabajo, como aplicaciones monolíticas de Spring Boot o incluso microservicios de .NET, que usan Steeltoe, pero el servicio se usa principalmente para ejecutar microservicios de Spring Boot.

Azure Kubernetes Service

Azure Kubernetes Service (AKS) es una solución de Kubernetes administrada y segura que proporciona Azure. Puede ejecutar cualquier imagen de Docker y se beneficia de pertenecer al ecosistema de Kubernetes. AKS funciona bien si quiere ofrecer aplicaciones nativas de nube en cualquier lenguaje, incluido Java.

Azure Kubernetes Service es una solución excelente si tiene cargas de trabajo heterogéneas o si quiere un control preciso de su entorno. AKS ejecuta bien las cargas de trabajo de Java, pero tendrá que compilar y mantener las imágenes de Docker.

Máquinas virtuales de Azure

La ejecución de máquinas virtuales en Azure le ofrece la máxima flexibilidad y variedad de opciones. Puede elegir entre numerosos sistemas operativos, normalmente Windows y las principales distribuciones de Linux. También puede traer su propio software o usar algunas de las imágenes proporcionadas.

En concreto, para Java, las máquinas virtuales se usan principalmente para lo siguiente:

  • Instalar y ejecutar una aplicación web de Java manualmente en Windows o Linux
  • Instalar y ejecutar Docker o incluso AKS para ejecutar una imagen que contiene una aplicación web de Java
  • Usar una de las ofertas admitidas, como Oracle WebLogic, para ejecutar aplicaciones web Java en las máquinas virtuales

Cuando usa máquinas virtuales de Azure, no se limita lo que puede instalar y ejecutar, ya que tiene control total sobre ellas. Aun así, el principal inconveniente de las máquinas virtuales es que debe mantenerlas y protegerlas. En el caso de las máquinas virtuales, este trabajo de mantenimiento es su responsabilidad.