Comparar as soluções
Descrevemos os tipos de implementação mais típicos para aplicações Java. Agora, iremos ver que serviço do Azure pode funcionar melhor consoante o tipo de implementação necessário.
Azure Container Apps
Os Aplicativos de Contêiner do Azure são um serviço gerenciado que executa contêineres do Docker.
Os Aplicativos de Contêiner do Azure podem executar qualquer aplicativo Java, quando empacotados como uma imagem do Docker (incluindo aplicativos Tomcat, Spring Boot e Quarkus). Construir e gerenciar essas imagens é sua responsabilidade (por exemplo, usando as Ações do GitHub): isso lhe dá muita flexibilidade, mas também requer alguma manutenção.
É uma solução econômica e escalável, o que a torna uma ótima opção para cargas de trabalho pequenas e médias.
Para executar um aplicativo monolítico Java baseado em contêiner, os Aplicativos de Contêiner do Azure são, portanto, a melhor opção.
Serviço de Aplicações do Azure
O Serviço de Aplicações do Azure é uma solução de plataforma como serviço disponibilizada pelo Azure. Ele oferece um serviço fácil de usar para executar aplicativos Web Java com atualizações e patches automáticos de SO e Java Virtual Machine (JVM), bem como dimensionamento automático ou monitoramento.
O Serviço de Aplicativo pode executar qualquer arquivo JAR executável, o que o torna uma alternativa aos Aplicativos de Contêiner do Azure para executar aplicativos monolíticos Java simples.
Ele também pode implantar qualquer aplicativo WAR em cima de servidores de aplicativos populares, como Apache Tomcat ou Red Hat JBoss. Isso o torna a melhor solução para executar aplicativos Jakarta EE no Azure.
Funções do Azure
As Funções do Azure são a plataforma sem servidor fornecida pelo Azure e suporta a execução de cargas de trabalho Java.
Geralmente, são necessários pequenos ajustes de configuração para executar uma aplicação Java nas Funções do Azure. Por sua natureza, as funções sem servidor têm vidas curtas (geralmente apenas alguns minutos), portanto, alguns dos serviços que você usaria tradicionalmente podem não ser tão eficientes ou práticos quanto o Serviço de Aplicativo do Azure.
Como resultado, as Funções do Azure foram concebidas para as aplicações que precisam de bastante escalabilidade. Podem ser interrompidas regularmente para reduzir os custos e aumentadas verticalmente para dar resposta a cargas elevadas.
Azure Spring Apps
O Azure Spring Apps é um serviço exclusivo do Azure que fornece uma solução de plataforma como serviço para executar microsserviços do Spring Boot. O Spring Cloud fornece muitas ferramentas, como um registo de serviço ou um servidor de configuração. Também fornece mecanismos de segurança e dimensionamento automático específico que simplificam bastante a utilização de uma arquitetura de microsserviços baseada no Spring Boot.
A oferta Spring Cloud é criada e gerida em conjunto pela Microsoft e pela Broadcom, a empresa que constrói o Spring Framework. O Spring Cloud fornece suporte para as atualizações e patches de JVM e SO, como o Serviço de Aplicações do Azure, e para serviços avançados do Spring.
Você também pode usar o serviço Azure Spring Apps para executar outras cargas de trabalho, como aplicativos monolíticos do Spring Boot ou até mesmo microsserviços .NET que usam o Steeltoe, mas o serviço é usado principalmente para executar microsserviços do Spring Boot.
Azure Kubernetes Service
O Azure Kubernetes Service (AKS) é uma solução do Kubernetes gerida e protegida que é disponibilizada pelo Azure. Pode executar qualquer imagem do Docker e tira partido da sua pertença a todo o ecossistema do Kubernetes. O AKS funciona bem se quiser fornecer aplicações nativas de cloud em qualquer linguagem, incluindo Java.
O Azure Kubernetes Service é uma ótima solução caso tenha cargas de trabalho heterogéneas ou queira um controlo preciso do seu ambiente. O AKS executa cargas de trabalho Java sem problemas, mas a compilação e manutenção das suas imagens do Docker ficam a seu cargo.
VMs do Azure
A execução de VMs no Azure oferece-lhe a maior flexibilidade e variedade de opções. Você pode escolher entre vários sistemas operacionais, normalmente Windows e as principais distribuições Linux. Você pode trazer seu próprio software ou usar algumas das imagens fornecidas.
Especificamente para Java, irá utilizar as VMs principalmente para:
- Instalar e executar uma aplicação Web Java manualmente no Windows ou Linux.
- Instalar e executar o Docker ou o AKS para executar uma imagem que contenha uma aplicação Web Java.
- Utilizar uma das ofertas suportadas, como o Oracle WebLogic, para executar aplicações Web Java nas suas VMs.
Ao utilizar as VMs do Azure, não há limite para o que pode instalar e executar, uma vez que tem controlo total sobre as mesmas. No entanto, a principal desvantagem com as VMs é que irá precisar de proteger e efetuar a manutenção das mesmas. Nas VMs, este trabalho de manutenção é da sua responsabilidade.