Compare as opções de hospedagem de aplicativos Java no Azure

Azure Spring Apps
Serviço de aplicativo do Azure
AKS (Serviço de Kubernetes do Azure)
Máquinas Virtuais do Azure

O Azure oferece muitas opções para as equipes criarem e implantarem aplicativos Java. Este artigo aborda cenários convencionais para Java no Azure e fornece sugestões e considerações de planejamento de alto nível.

Apache®, Apache Kafka, Apache Struts, Apache Tomcat e o logotipo da chama são marcas registradas ou marcas comerciais da Apache Software Foundation nos Estados Unidos e/ou em outros países. O uso desta marca não implica aprovação por parte da Apache Software Foundation.

Plataforma

Antes de selecionar um cenário de nuvem para seu aplicativo Java, identifique sua plataforma. A maioria dos aplicativos Java usa uma das seguintes plataformas:

Aplicativos Spring Boot JAR

Os aplicativos Spring Boot JAR normalmente são invocados diretamente da linha de comando. Eles lidam com solicitações da Web. Em vez de depender de um servidor de aplicativos tratar as solicitações HTTP, esses aplicativos incorporam a comunicação HTTP e todas as outras dependências diretamente no pacote de aplicativos. Tais aplicativos muitas vezes são criados com estruturas como Spring Boot, Dropwizard, Micronaut, MicroProfile e Vert.x.

Esses aplicativos são empacotados em arquivos que têm a extensão .jar, conhecidos como arquivos JAR.

Aplicativos Spring Cloud

O estilo de arquitetura de microsserviços é uma abordagem para desenvolvimento de um único aplicativo como um conjunto de pequenos serviços. Cada serviço é executado em seu próprio processo e se comunica usando mecanismos leves, geralmente uma API de recurso HTTP. Esses serviços são criados em torno de recursos de negócios.

O mecanismo de implantação automatizada implanta esses microsserviços de maneira independente. Há um mínimo de gerenciamento centralizado, que pode ser escrito em linguagens de programação diferentes e usar tecnologias de armazenamento de dados diferentes. Esses serviços muitas vezes são criados com estruturas como a Spring Cloud.

Esses serviços são empacotados em vários aplicativos como arquivos JAR.

Aplicativos Web

Os aplicativos Web são executados dentro de um contêiner de servlet. Alguns usam as APIs de servlet diretamente, enquanto outros usam outras estruturas que encapsulam as APIs de servlet, como Apache Struts, Spring MVC e JavaServer Faces.

Os aplicativos Web são empacotados em arquivos que têm a extensão .war, conhecidos como arquivos WAR.

Aplicativos Jakarta EE

Os aplicativos Enterprise Edition (Jakarta EE) podem conter alguns, todos ou nenhum dos elementos dos aplicativos Web. Eles também podem conter e consumir muito mais componentes, conforme definido pela especificação Jakarta EE. Os aplicativos Jakarta EE anteriormente eram conhecidos como aplicativos Java EE ou aplicativos J2EE.

Os aplicativos Jakarta EE podem ser empacotados como arquivos WAR ou como arquivos que têm a extensão .ear, conhecidos como arquivos EAR.

Os aplicativos Jakarta EE devem ser implantados em servidores de aplicativos compatíveis com a Jakarta EE. Os exemplos incluem WebLogic, WebSphere, WildFly, GlassFish e Payara.

Os aplicativos que dependem somente de recursos fornecidos pela especificação da Jakarta EE podem ser migrados de um servidor de aplicativos compatível para outro. Se o aplicativo for dependente de um servidor de aplicativos específico, talvez seja necessário selecionar um destino de serviço do Azure que permita hospedar o servidor de aplicativos.

Opções de plataforma

Use a tabela a seguir para identificar possíveis plataformas para seu tipo de aplicativo.

Azure Spring Apps Serviço de Aplicativo Java SE Serviço de Aplicativo Tomcat Serviço de Aplicativo JBoss EAP Aplicativos de Contêiner do Azure AKS Máquinas Virtuais
Aplicativos Spring Boot/JAR
Aplicativos Spring Cloud
Aplicativos Web
Aplicativos Jakarta EE
Disponibilidade de região do Azure Detalhes Detalhes Detalhes Detalhes Detalhes Detalhes Detalhes

O AKS (Serviços de Kubernetes do Azure) e as Máquinas Virtuais dão suporte a todos os tipos de aplicativo, mas exigem que sua equipe assuma mais responsabilidades, conforme descrito na próxima seção.

Capacidade de suporte

Além das opções de plataforma, os aplicativos Java modernos podem ter outras necessidades de suporte, como:

Trabalhos agendados ou em lotes

Em vez de aguardar solicitações ou a entrada do usuário, alguns aplicativos são executados brevemente, executam uma carga de trabalho específica e são encerrados. Às vezes, esses trabalhos precisam ser executados uma vez ou em intervalos regulares agendados. No local, esses trabalhos geralmente são invocados na tabela cron de um servidor.

Esses aplicativos são empacotados como arquivos JAR.

Observação

Se o aplicativo usar um agendador, como o Spring Batch ou o Quartz, para executar tarefas agendadas, é altamente recomendável executar essas tarefas fora do aplicativo. Se seu aplicativo for dimensionado para várias instâncias na nuvem, o mesmo trabalho poderá ser executado mais de uma vez. Se o mecanismo de agendamento usar o fuso horário local do host, poderá haver comportamento indesejado quando você dimensionar um aplicativo entre regiões.

Integração de rede virtual

Quando você implanta um aplicativo Java em sua rede virtual, ele tem dependências de saída em serviços fora da rede virtual. Para gerenciamento e operações, seu projeto deve ter acesso a determinadas portas e nomes de domínio totalmente qualificados. Com as Redes Virtuais do Azure, você pode colocar muitos dos seus recursos do Azure em uma rede roteável fora da Internet. O recurso de integração de rede virtual permite que os seus aplicativos acessem recursos em uma rede virtual ou por meio dela. A integração de rede virtual não permite que seus aplicativos sejam acessados de modo privado.

Modelo de desenvolvimento sem servidor

Sem servidor é um modelo de desenvolvimento nativo da nuvem que permite aos desenvolvedores criar e executar aplicativos sem precisar gerenciar servidores. Com aplicativos sem servidor, o provedor de serviços de nuvem provisiona, escala e gerencia automaticamente a infraestrutura necessária para executar o código. Os servidores ainda existem no modelo sem servidor. Eles são abstraídos do desenvolvimento de aplicativos.

Transporte em contêineres

A conteinerização é o empacotamento de código de software com todos os seus componentes necessários, como bibliotecas, estruturas e outras dependências. O aplicativo é isolado em seu próprio contêiner.

CI/CD

A CI/CD (integração contínua e entrega contínua) é um método para entregar aplicativos com frequência aos clientes, introduzindo a automação nos estágios de desenvolvimento do aplicativo. Os principais conceitos em CI/CD são integração contínua, entrega contínua e implantação contínua. Todas as opções do Azure dão suporte à maioria das ferramentas de CI/CD. Por exemplo, você pode usar soluções como Azure Pipelines ou Jenkins.

Mecanismo de pesquisa de código aberto

As pesquisas fazem parte de qualquer aplicativo. Se a velocidade, o desempenho e a alta disponibilidade forem críticos, as pesquisas em terabytes e petabytes de dados poderão ser desafiadoras. Ao hospedar aplicativos Java no Azure, planeje hospedar suas instâncias relacionadas do Solr e do Elasticsearch. Como alternativa, considere migrar para o Azure Cognitive Search.

Ferramentas de Big Data

As ferramentas de Big Data permitem a automação do fluxo de dados entre os sistemas de software. Elas dão suporte a gráficos de roteamento de dados escaláveis, robustos e simplificados, em combinação com a lógica de mediação do sistema. Elas são utilizadas para criar pipelines de fluxo de dados em tempo real e aplicativos de fluxo. Saiba como o Nifi e o Apache Kafka no Azure podem ser adequados às suas necessidades.

Opções de capacidade de suporte

Use a tabela a seguir para identificar possíveis opções para seu tipo de aplicativo. O AKS e as Máquinas Virtuais dão suporte a todos os tipos de aplicativo, mas exigem que sua equipe assuma mais responsabilidades.

Azure Spring Apps Serviço de Aplicativo Java SE Serviço de Aplicativo Tomcat Serviço de Aplicativo JBoss EAP Aplicativos de Contêiner do Azure AKS Máquinas Virtuais
Trabalhos agendados ou em lotes
Integração de rede virtual
Sem servidor
Transporte em contêineres
Disponibilidade de região do Azure Detalhes Detalhes Detalhes Detalhes Detalhes Detalhes Detalhes

Além disso, consulte esta árvore de decisão.

O diagrama mostra uma árvore de decisão para Java nos serviços do Azure.

Baixe um Arquivo do Visio desse diagrama.

Criar ou migrar aplicativos Java

Para criar ou migrar os aplicativos Java, identifique a plataforma Java de seus aplicativos. Algumas plataformas populares são Java SE, Jakarta EE e MicroProfile.

Java SE

Java Platform, Standard Edition (Java SE) é uma plataforma computacional para o desenvolvimento e a implantação de código portátil para ambientes de servidor e desktop. Os projetos populares criados em Java SE incluem Spring Boot, Spring Cloud, Spring Framework e Apache Tomcat.

Jakarta EE

Jakarta EE é o futuro de código aberto do Java corporativo nativo da nuvem. Trata-se de um conjunto de especificações que estendem o Java SE com recursos corporativos, como computação distribuída e serviços Web. Os aplicativos Jakarta EE executam runtimes de referência. Esses runtimes podem ser microsserviços ou servidores de aplicativos. Eles lidam com transações, segurança, escalabilidade, simultaneidade e gerenciamento dos componentes implantados pelo aplicativo.

MicroProfile

O projeto MicroProfile fornece um conjunto de especificações projetadas para ajudar os desenvolvedores a criar microsserviços nativos da nuvem Enterprise Java. Quarkus e Open Liberty são implementações populares do MicroProfile.

Criar ou migrar resumo

A tabela a seguir fornece informações de compilação ou migração por tipo de aplicativo e serviço do Azure.

Tipo Java SE MicroProfile JarkartaSE
Máquina virtual IaaS
VMware Tanzu IaaS
Serviço de Kubernetes do Azure Contêiner
Red Hat OpenShift Contêiner
Aplicativo de Contêiner do Azure PaaS
JBoss EAP Serviço de Aplicativo de PaaS
Apache Tomcat Serviço de Aplicativo de PaaS
Java SE Serviço de Aplicativo de PaaS
Azure Spring Apps PaaS

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Principais autores:

Para ver perfis não públicos do LinkedIn, entre no LinkedIn.

Próximas etapas