Implantar aplicativos Java com confiança e facilidade
O ecossistema Java inclui diversas tecnologias, como Java SE, Jakarta EE (sucessor do Java EE e J2EE), Spring, vários servidores de aplicativos e outras estruturas. Não importa o que você esteja fazendo com o Java, criando um aplicativo, usando uma estrutura e executando um servidor de aplicativos, o Azure dá suporte à sua carga de trabalho com várias opções. Da mesma forma, o Azure dá suporte a qualquer arquitetura de aplicativo, desde aplicativos monolíticos em execução em VMs ou em contêineres até aplicativos nativos da nuvem baseados em microsserviços em execução em serviços totalmente gerenciados.
Normalmente, para executar seu aplicativo Java, você o implanta em um servidor de aplicativos, uma instância da JVM (Máquina Virtual Java) que executa seus aplicativos. Ou então, você pode criar um aplicativo autônomo um servidor de aplicativos inserido. 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 criar aplicativos autônomos com servidores de aplicativos inseridos. O Azure é compatível com 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 de qualquer servidor de aplicativos, sem restrições e sem precisar gerenciar sua própria infraestrutura física. Você decide o nível de controle que deseja ter ou quanto gerenciamento diário você deseja que o Azure lide para você 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 em conjunto e mantidas para todos eles.
Opções de implantação
O Azure fornece diversas opções de implantação para aplicativos Java, incluindo serviços de hospedagem IaaS (infraestrutura como serviço), CaaS (contêineres como serviço) e PaaS (plataforma como serviço). Você pode fazer lift-and-shift de aplicativos Java existentes para máquinas virtuais (VMs), conteinerizá-los de várias maneiras ou implantá-los em serviços 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ê pode 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 é toda sua. Apenas tenha em mente que você precisa configurar manualmente a infraestrutura e seus componentes. As opções de implantação que se enquadram nessa categoria são:
Máquinas Virtuais do Azure, que oferecem a flexibilidade da virtualização sem precisar comprar e manter o hardware físico que as executa. No entanto, você ainda precisa manter a VM instalando, configurando e corrigindo o software que será executado nela.
Conjuntos de Dimensionamento de Máquinas Virtuais do Azure, os quais 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 de Kubernetes gerenciado lidando com toda a sobrecarga operacional para você, incluindo tarefas críticas, como manutenção e monitoramento de integridade. O AKS dá suporte ao provisionamento elástico de capacidade, incluindo o dimensionamento automático controlado por eventos e os gatilhos KEDA.
Red Hat OpenShift no Azure, o qual fornece clusters OpenShift altamente disponíveis e totalmente gerenciados sob demanda. O OpenShift fornece recursos de valor agregado para complementar o Kubernetes, tornando-o uma plataforma de contêiner pronta para uso com uma experiência aprimorada de desenvolvedor e operador.
Embora você possa implantar qualquer runtime Java em todos esses serviços IaaS e CaaS, recomendamos usar um dos seguintes runtimes:
Microsoft Build do OpenJDK para Java 11 ou 17 - as imagens de contêiner base para as quais a Microsoft fornece e mantém.
Eclipse Adoptium Temurin para Java 8 - o runtime Java para o qual é fornecido pelo projeto Eclipse Adoptium (anteriormente, o projeto OpenJDK).
Esses dois builds estão disponíveis gratuitamente para desenvolvimento e teste locais, bem como para a criação de binários prontos para produção que usam qualquer plataforma ou ferramentas de DevOps - sem ter que pagar taxas de licenciamento. Nós os recomendamos por uma questão de conveniência. Ao usar um desses builds, se você tiver problemas e tiver um plano de suporte qualificado para o Azure, poderá abrir um tíquete de suporte do Azure sem nenhum custo adicional. Dito isso, vale ressaltar que essas recomendações são apenas isso: as opções que recomendamos entre vários outros builds disponíveis gratuitamente do OpenJDK para facilitar o suporte. Para obter mais informações, confira Suporte a Java no Azure e no Azure Stack.
Todas essas opções de implantação de IaaS e CaaS permitem implantar com facilidade o servidor de aplicativos Apache Tomcat. Se você estiver usando uma oferta comercial, como o Spring Runtime da VMware, o JBoss EAP da Red Hat, o WebLogic Server da Oracle ou o WebSphere da IBM, o Azure também oferecerá opções de hospedagem desenvolvidas em conjunto e mantidas por esses fornecedores. Elas serão abordadas posteriormente, em Soluções criadas em conjunto e mantidas por 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:
- Aplicativos de Contêiner do Azure, os quais permitem que você execute microsserviços e aplicativos conteinerizados em uma plataforma sem servidor. Os usos comuns incluem implantar pontos de extremidade de API, hospedar aplicativos de processamento em segundo plano, lidar com processamento controlado por eventos e executar microsserviços. Os aplicativos criados nos Aplicativos de Contêiner do Azure podem ser dimensionados dinamicamente com base em tráfego HTTP, processamento controlado por eventos, carga de CPU ou memória ou qualquer dimensionador compatível com KEDA.
- 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 tem suporte para recursos completos de DevOps, como implantação contínua, gerenciamento de pacotes, ambientes de preparo, domínios personalizados e certificados TLS/SSL.
Os runtimes Java para Serviço de Aplicativo do Azure e Aplicativos de Contêiner do Azure implantados como código ou binários (JAR/WAR) são fornecidos e mantidos pela Microsoft. Eles são compatíveis apenas com 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 em conjunto e mantidas (abordadas posteriormente) usam seus próprios runtimes.
Para Aplicativos de Contêiner do Azure criados a partir de suas próprias imagens de contêiner, uma vez que 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 disparado em escala, talvez por milhões e milhões de eventos. Esses eventos podem ser ingeridos por meio de Hubs de Eventos do Azure, processados pelo código Java sem servidor controlado por eventos em execução em escala no Azure Functions e salvos em um armazenamento de dados, como o Azure Cosmos DB.
Soluções criadas em conjunto e mantidas por parceiros do ecossistema Java
A Microsoft fez uma parceria com os principais fornecedores do ecossistema Java para oferecer as melhores soluções para a execução de Java no Azure, desde serviços gerenciados desenvolvidos em conjunto e mantidos 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.
JBoss EAP (Red Hat)
A Red Hat fornece soluções de código aberto para a empresa. Uma dessas soluções é o JBoss Enterprise Application Platform (EAP), uma plataforma popular de servidor de aplicativos com certificação Java EE e em conformidade com o Jakarta EE tanto no Perfil da Web quanto na Plataforma Completa. A Red Hat também é uma 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 requerer uma assinatura ou licença separada do Red Hat 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 Dimensionamento de VMs do Azure e em ARO (Azure RedHat OpenShift) – este último também operado em conjunto pela Microsoft e Red Hat.
WebLogic Server (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 de Kubernetes do Azure. Essas soluções facilitam as migrações para o Azure, automatizando operações padronizadas, como o provisionamento de redes virtuais/armazenamento, a instalação de recursos Linux/Java, a configuração do WebLogic Server e a configuração de segurança com um grupo de segurança de rede.
WebSphere/Liberty/Open Liberty (IBM)
Fizemos uma parceria com a IBM, desenvolvendo em conjunto soluções para o WebSphere Application Server (WAS) em VMs do Azure, o WebSphere Liberty e Open Liberty no Serviço de Kubernetes do Azure e o WebSphere Liberty e Open Liberty no Azure Red Hat OpenShift. Para obter mais informações, consulte Quais são as 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 do WebSphere altamente disponível. A parceria abrange uma variedade de casos de uso, que varia de cargas de trabalho críticas existentes até aplicativos nativos de nuvem.
Apache Kafka na Confluent Cloud (Confluent)
No passado, os clientes do Azure que queriam usar o serviço Kafka da Confluent tinham que criar e gerenciar recursos e usuários separadamente no Azure e no Confluent Cloud. Para facilitar, a Confluent e a Microsoft fizeram uma parceria para fornecer o Apache Kafka para 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 do Confluent Cloud por meio do portal do Azure, da CLI do Azure ou dos SDKs de Gerenciamento do Azure.
Atualmente, a experiência do cliente é mais simples, segura e mais integrada. Os clientes podem provisionar e gerenciar recursos do Confluent Cloud junto com seus recursos do Azure, como parte de um fluxo de trabalho unificado – e aproveitar os conectores totalmente gerenciados criados para Azure Functions, Armazenamento de Blobs do Azure, Hubs de Eventos do Azure, Azure Data Lake Storage Gen2 e Microsoft SQL Server. Os desenvolvedores podem continuar codificando por meio de bibliotecas de cliente do Apache Kafka.
Resumo
O desenvolvimento conjunto com parceiros para muitas dessas ofertas é um esforço contínuo. À medida que nossos parceiros continuam inovando em suas ofertas, estamos trabalhando em estreita colaboração com eles para trazer rapidamente essas mesmas inovações para o Azure, a fim de 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 variedade de opções, independentemente do que você está fazendo com o Java. Você pode criar qualquer aplicativo Java, usar qualquer estrutura, executar qualquer servidor de aplicativos e dar suporte a qualquer arquitetura de aplicativo, desde aplicativos monolíticos executados em VMs ou em contêineres até aplicativos nativos de nuvem baseados em microsserviços executados em serviços totalmente gerenciados.
Próxima etapa
Dimensione com segurança, monitoramento e automação de ponta a ponta