Implemente aplicativos Java com confiança e facilidade

O ecossistema Java inclui diversas tecnologias como Java SE, Jakarta EE (sucessor de Java EE e J2EE), Spring, vários servidores de aplicativos e outros frameworks. O que quer que você esteja fazendo com o Java - criando um aplicativo, usando uma estrutura e executando um servidor de aplicativos - o Azure oferece suporte à sua carga de trabalho com muitas opções. Da mesma forma, o Azure dá suporte a qualquer arquitetura de aplicativo - de aplicativos monolíticos executados em VMs ou em contêineres a aplicativos baseados em microsserviços nativos da nuvem executados em serviços totalmente gerenciados.

Normalmente, para executar seu aplicativo Java, você o implementa em um servidor de aplicativos - uma instância da JVM (Java Virtual Machine) que executa seus aplicativos. Ou você pode criar um aplicativo autônomo com um servidor de aplicativos incorporado. De qualquer forma, o servidor de aplicativos fornece infraestrutura de aplicativo comum e recursos funcionais, colaborando com contêineres da Web para retornar uma resposta dinâmica e personalizada a uma solicitação do cliente. A solicitação do cliente pode ser processada usando componentes de software que podem incluir servlets, páginas dinâmicas, enterprise beans, classes de suporte, bibliotecas dependentes e drivers de dados.

Tomcat, JBoss EAP, WildFly, WebLogic e WebSphere são servidores de aplicativos populares. Da mesma forma, Spring Boot, Quarkus e Open Liberty são estruturas populares para a criação de aplicativos autônomos com servidores de aplicativos incorporados. O Azure oferece suporte a todos eles, permitindo que você use qualquer servidor de aplicativos Java e implante seu aplicativo Java com confiança e facilidade.

Implantar o aplicativo Spring Boot ou Java em qualquer servidor de aplicativos - Tomcat e Jakarta EE

Com o Azure, você pode executar qualquer versão e qualquer distribuição do Java e qualquer servidor de aplicativos, sem restrições e sem precisar gerenciar sua própria infraestrutura física. Você decide quanto controle deseja ou quanto gerenciamento diário deseja que o Azure lide com opções como máquinas virtuais, contêineres e serviços totalmente gerenciados. Se você estiver usando servidores ou estruturas de aplicativos Java com suporte comercial, como VMware Spring Runtime, Red Hat JBoss EAP, Oracle WebLogic Server ou IBM WebSphere, Liberty ou OpenLiberty - o Azure oferece ofertas desenvolvidas e com suporte conjunto para todos eles.

Opções de implantação

O Azure fornece uma abundância de opções de implantação para aplicativos Java, incluindo serviços de hospedagem de infraestrutura como serviço (IaaS), contêineres como serviço (CaaS) e plataforma como serviço (PaaS). Você pode elevar e deslocar aplicativos Java existentes para máquinas virtuais (VMs), conteinerizá-los de várias maneiras ou implantá-los em serviços de PaaS totalmente gerenciados para otimizar a facilidade de gerenciamento, a produtividade operacional e do desenvolvedor e o custo total de propriedade.

VMs e contêineres

Você é livre para usar qualquer distribuição e versão do Java - e qualquer servidor de aplicativos - ao implantar em máquinas virtuais ou contêineres no Azure. A escolha é inteiramente sua. Apenas lembre-se, você precisa configurar manualmente a infraestrutura e seus componentes. As opções de implantação que se enquadram nessa categoria incluem:

  • Máquinas Virtuais do Azure, que oferecem a flexibilidade da virtualização sem precisar comprar e manter o hardware físico que a executa. No entanto, você ainda precisa manter a VM instalando, configurando e aplicando patches no software que é executado nela.

  • Conjuntos de Dimensionamento de Máquina Virtual do Azure, que permitem criar e gerenciar um grupo de VMs com balanceamento de carga. O número de instâncias de VM pode aumentar ou diminuir automaticamente em resposta à demanda ou a um agendamento definido.

  • Serviço de Kubernetes do Azure (AKS), que simplifica a implantação de um cluster Kubernetes gerenciado manipulando toda a sobrecarga operacional para você, incluindo tarefas críticas, como manutenção e monitoramento de integridade. O AKS oferece suporte ao provisionamento elástico de capacidade, incluindo dimensionamento automático orientado a eventos e gatilhos KEDA.

  • Azure Red Hat OpenShift, que fornece clusters OpenShift altamente disponíveis e totalmente gerenciados sob demanda. O OpenShift oferece recursos de valor agregado para complementar o Kubernetes, tornando-o uma plataforma de contêiner pronta para uso que oferece melhor experiência para desenvolvedores e operadores.

Embora seja possível implementar qualquer tempo de execução Java em todos esses serviços IaaS e CaaS, recomendamos que você use um dos seguintes tempos de execução:

Ambas as compilações estão disponíveis gratuitamente para desenvolvimento e teste locais e para a criação de binários prontos para produção usando qualquer plataforma ou ferramentas de DevOps - sem ter que pagar nenhuma taxa de licenciamento. Nós os recomendamos por uma questão de conveniência. Ao usar uma dessas compilações, se você tiver algum problema e tiver um plano de suporte qualificado para o Azure, poderá abrir um tíquete de suporte do Azure - sem mais custos. Dito isso, vale a pena ressaltar que essas recomendações são apenas isso - as opções que recomendamos entre várias outras compilações disponíveis gratuitamente do OpenJDK para facilitar o suporte. Para obter mais informações, confira Suporte a Java no Azure e no Azure Stack.

Diagrama com o título 'Criar ou migrar aplicativos Java' e um gráfico mostrando a relação entre as tecnologias Java e as categorias de serviço do Azure.

Todas essas opções de implantação de IaaS e CaaS permitem implantar facilmente o servidor de aplicativos Apache Tomcat. Se você estiver usando uma oferta comercial - como Spring Runtime da VMware, JBoss EAP da Red Hat, WebLogic Server da Oracle ou WebSphere da IBM - o Azure também oferece opções de hospedagem desenvolvidas e com suporte conjunto desses fornecedores. Eles são abordados posteriormente, em Soluções construídas e suportadas em conjunto com parceiros do ecossistema Java.

Serviços totalmente gerenciados (PaaS)

Os serviços de PaaS totalmente gerenciados para executar aplicativos Java no Azure incluem as seguintes opções:

  • Azure Spring Apps, que facilita a implantação de aplicativos Spring Boot no Azure - sem alterações de código. O serviço gerencia toda a infraestrutura para aplicativos Spring Boot. Essa infraestrutura inclui monitoramento e diagnóstico abrangentes, gerenciamento de configuração, descoberta de serviços, segurança, ciclo de vida do aplicativo, logs e métricas de publicação, integração de CI/CD, implantações azul-verdes e muito mais. Desenvolvido em parceria com a Pivotal (agora parte da VMware), o Azure Spring Apps é operado em conjunto e suportado pela Microsoft e pela VMware.
  • Serviço de Aplicativo do Azure, um serviço baseado em HTTP para hospedar aplicativos Web, APIs REST e back-ends móveis - com segurança interna, balanceamento de carga, dimensionamento automático e gerenciamento automatizado. O Serviço de Aplicativo também oferece suporte a recursos abrangentes de DevOps, como implantação contínua, gerenciamento de pacotes, ambientes de preparo, domínios personalizados e certificados TLS/SSL.
  • Aplicativos de Contêiner do Azure, que permite executar microsserviços e aplicativos em contêineres em uma plataforma sem servidor. Os usos comuns incluem a implantação de pontos de extremidade de API, a hospedagem de aplicativos de processamento em segundo plano, a manipulação de processamento orientado a eventos e a execução de microsserviços. Os aplicativos criados nos Aplicativos de Contêiner do Azure podem ser dimensionados dinamicamente com base no tráfego HTTP, no processamento orientado a eventos, na CPU ou na carga de memória ou em qualquer dimensionador com suporte do KEDA.

Os tempos de execução Java para Aplicativos Spring do Azure e Serviço de Aplicativo do Azure são fornecidos e mantidos pela Microsoft. Eles suportam apenas distribuições LTS do OpenJDK, usando o Eclipse Adoptium Temurin para Java 8 e o Microsoft Build do OpenJDK para Java 11 e 17. Dito isso, há algumas ressalvas - por exemplo, nossas ofertas de parceiros desenvolvidas e suportadas em conjunto (discutidas mais adiante) usam seus próprios tempos de execução.

Para Aplicativos de Contêiner do Azure, como você precisa criar e gerenciar suas próprias imagens de contêiner a partir do código-fonte, você está livre para usar a distribuição e a versão do Java - e do servidor de aplicativos - de sua escolha.

Funções sem servidor

Às vezes, você não precisa de um aplicativo Java inteiro. Por exemplo, para processamento de dados em tempo real, você pode precisar apenas de um pequeno pedaço de código que pode ser acionado em escala - talvez por milhões e milhões de eventos. Esses eventos podem ser ingeridos por meio dos Hubs de Eventos do Azure, processados por código Java sem servidor controlado a eventos em execução em escala no Azure Functions e salvos em um armazenamento de dados, como o Azure Cosmos DB.

Soluções construídas e suportadas em conjunto com parceiros do ecossistema Java

A Microsoft fez parceria com os principais fornecedores do ecossistema Java para fornecer as melhores soluções da categoria para executar Java no Azure - desde serviços gerenciados desenvolvidos e suportados em conjunto até ofertas do Azure Marketplace para servidores de aplicativos Java populares. Também integramos ferramentas populares de monitoramento de aplicativos, que serão abordadas posteriormente nesta documentação.

Diagrama com o título

Azure Spring Apps (Pivotal/VMware)

Desenvolvido em conjunto pela Microsoft e pela Pivotal, o Azure Spring Apps é um serviço totalmente gerenciado que resolve muitos dos desafios comuns que desenvolvedores, operadores de TI e equipes de DevOps enfrentam ao executar aplicativos Spring Boot em escala. Ele abstrai a complexidade do gerenciamento de infraestrutura para executar aplicativos baseados em Spring e componentes de middleware Spring Cloud, permitindo que os desenvolvedores Java se concentrem em seu código enquanto permite que o Azure cuide do dimensionamento dinâmico, patches de segurança, padrões de conformidade, alta disponibilidade e assim por diante.

JBoss EAP (Chapéu Vermelho)

A Red Hat fornece soluções de código aberto para a empresa. Uma dessas soluções é a JBoss Enterprise Application Platform (EAP), uma popular plataforma de servidor de aplicativos certificada e compatível com Jakarta EE tanto no perfil da Web quanto na plataforma completa. A Red Hat também é colaboradora dos padrões Java , OpenJDK, MicroProfile, Jakarta EE e Quarkus.

Fizemos uma parceria com a Red Hat para fornecer o Red Hat JBoss Enterprise Application Platform (EAP) no Serviço de Aplicativo do Azure - permitindo que os desenvolvedores Java implantem seus aplicativos Jakarta EE no Serviço de Aplicativo sem exigir uma assinatura ou licença Red Hat separada com suporte integrado de ambas as empresas. Também lançamos ofertas conjuntas semelhantes para o JBoss EAP em VMs do Azure, em Conjuntos de Escala de VM do Azure e no Azure RedHat OpenShift (ARO) - este último também operado em conjunto pela Microsoft e pela Red Hat.

Servidor WebLogic (Oracle)

Fizemos uma parceria com a Oracle para fornecer o Oracle WebLogic Server (WLS) em VMs do Azure e o Oracle WebLogic Server no Serviço Kubernetes do Azure. Essas soluções facilitam migrações fáceis para o Azure automatizando operações clichês, como provisionamento de redes/armazenamento virtual, instalação de recursos Linux/Java, configuração do WebLogic Server e configuração de segurança com um grupo de segurança de rede.

WebSphere/Liberdade/Open Liberty (IBM)

Fizemos parceria com a IBM, desenvolvendo em conjunto soluções para WebSphere Application Server (WAS) em VMs do Azure, WebSphere Liberty e Open Liberty no Azure Kubernetes Service e WebSphere Liberty e Open Liberty no Azure Red Hat OpenShift. Para obter mais informações, consulte O que são soluções para executar a família de produtos IBM WebSphere no Azure? Essas soluções permitem a migração fácil de cargas de trabalho do WebSphere para o Azure, automatizando a maioria das tarefas de provisionamento de recursos necessárias para configurar um cluster WebSphere altamente disponível. A parceria abrange uma variedade de casos de uso - desde cargas de trabalho de missão crítica existentes até aplicativos nativos da nuvem.

Apache Kafka na nuvem Confluent (Confluent)

No passado, os clientes do Azure que queriam usar o serviço Kafka do Confluent tinham que criar e gerenciar recursos e usuários separadamente no Azure e no Confluent Cloud. Para aliviar essa dor, a Confluent e a Microsoft fizeram uma parceria para fornecer o Apache Kafka for Confluent Cloud, uma oferta do Azure Marketplace que fornece o Apache Kafka como um serviço totalmente gerenciado - incluindo a capacidade de criar e gerenciar recursos da Confluent Cloud por meio do portal do Azure, da CLI do Azure ou dos SDKs de Gerenciamento do Azure.

Hoje, a experiência do cliente é mais simples, segura e perfeita. Os clientes podem provisionar e gerenciar recursos da Confluent Cloud junto com seus recursos do Azure, como parte de um fluxo de trabalho unificado - e aproveitar os conectores totalmente gerenciados criados para o Azure Functions, o Armazenamento de Blobs do Azure, os Hubs de Eventos do Azure, o Azure Data Lake Storage Gen2 e o Microsoft SQL Server. Os desenvolvedores podem continuar a codificar usando bibliotecas de cliente Apache Kafka.

Resumo

O desenvolvimento conjunto com parceiros para muitas dessas ofertas é um esforço contínuo e contínuo. À medida que nossos parceiros continuam a inovar em suas ofertas, estamos trabalhando em estreita colaboração com eles para trazer rapidamente essas mesmas inovações para o Azure, para que os clientes possam implantar e dimensionar seus aplicativos Java com confiança e facilidade.

Em resumo, o Azure dá suporte à sua carga de trabalho com uma abundância de opções, independentemente do que você está fazendo com Java. Você pode criar qualquer aplicativo Java, usar qualquer estrutura, executar qualquer servidor de aplicativos e oferecer suporte a qualquer arquitetura de aplicativo - de aplicativos monolíticos executados em VMs ou em contêineres a aplicativos baseados em microsserviços nativos da nuvem executados em serviços totalmente gerenciados.

Diagrama com o título 'Implementar aplicativos Java com confiança e facilidade' e logotipos para as opções de implementação descritas neste artigo.

Próxima etapa

Dimensione com segurança, monitoramento e automação de ponta a ponta