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.
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:
- Asir Vedamuthu Selvasingh | Gerente de Programas Principal
- Hang Wang | Gerente de Produto
- Xinyi Zhang | Gerente Principal de PM
Para ver perfis não públicos do LinkedIn, entre no LinkedIn.
Próximas etapas
- Visão geral sobre os Aplicativos de Contêiner do Azure
- Serviço de Kubernetes do Azure
- Documentação do Azure Spring Apps
- Integração da Rede virtual do Azure
- Máquinas virtuais no Azure