Déployer des applications Java avec confiance et facilité

L’écosystème Java comprend diverses technologies telles que Java SE, Jakarta EE (successeur de Java EE et J2EE), Spring, de nombreux serveurs d’applications et d’autres infrastructures. Ce que vous faites avec Java - création d’une application, utilisation d’une infrastructure et exécution d’un serveur d’applications - support Azure votre charge de travail avec une abondance de choix. De même, support Azure toute architecture d’application , des applications monolithiques s’exécutant sur des machines virtuelles ou dans des conteneurs à des applications basées sur le cloud natives et basées sur des microservices s’exécutant sur des services entièrement managés.

En règle générale, pour exécuter votre application Java, vous la déployez sur un serveur d’applications , une instance de la machine virtuelle Java qui exécute vos applications. Vous pouvez également créer une application autonome avec un serveur d’applications incorporé. Dans les deux cas, le serveur d’applications fournit une infrastructure d’application et des fonctionnalités courantes, en collaboration avec des conteneurs Web pour retourner une réponse dynamique et personnalisée à une demande cliente. La demande cliente peut être traitée à l’aide de composants logiciels qui peuvent inclure des servlets, des pages dynamiques, des haricots d’entreprise, des classes de prise en charge, des bibliothèques dépendantes et des pilotes de données.

Tomcat, JBoss EAP, WildFly, WebLogic et WebSphere sont des serveurs d’applications populaires. De même, Spring Boot, Démarqueus et Open Liberty sont des frameworks populaires pour la création d’applications autonomes avec des serveurs d’applications incorporés. support Azure toutes ces applications, ce qui vous permet d’utiliser n’importe quel serveur d’applications Java et de déployer votre application Java en toute confiance et en toute simplicité.

Déployer l’application Spring Boot ou Java sur n’importe quel serveur d’applications - Tomcat et Jakarta EE

Avec Azure, vous pouvez exécuter n’importe quelle version et toute distribution de Java et de n’importe quel serveur d’applications, sans restrictions et sans avoir à gérer votre propre infrastructure physique. Vous décidez de la quantité de contrôle souhaitée, ou de la quantité de gestion quotidienne que vous souhaitez qu’Azure gère pour vous avec des options telles que des machines virtuelles, des conteneurs et des services entièrement managés. Si vous utilisez des serveurs ou des frameworks d’applications Java pris en charge commercialement, tels que VMware Spring Runtime, Red Hat JBoss EAP, Oracle WebLogic Server ou IBM WebSphere, Liberty ou OpenLiberty, Azure offre conjointement des offres développées et prises en charge pour toutes ces offres.

Options de déploiement

Azure fournit une abondance d’options de déploiement pour les applications Java, notamment l’infrastructure en tant que service (IaaS), les conteneurs en tant que service (CaaS) et les services d’hébergement PaaS (platform-as-a-service). Vous pouvez déplacer des applications Java existantes vers des machines virtuelles, les conteneuriser de plusieurs façons ou les déployer sur des services PaaS entièrement managés pour optimiser la facilité de gestion, le développeur et la productivité opérationnelle, ainsi que le coût total de possession.

Machines virtuelles et conteneurs

Vous êtes libre d’utiliser n’importe quelle distribution et version de Java , et n’importe quel serveur d’applications, lorsque vous déployez sur des machines virtuelles ou des conteneurs sur Azure. Le choix est entièrement à vous. N’oubliez pas que vous devez configurer manuellement l’infrastructure et ses composants. Les options de déploiement qui appartiennent à cette catégorie sont les suivantes :

  • Azure Machines Virtuelles, qui vous donnent la flexibilité de la virtualisation sans avoir à acheter et à maintenir le matériel physique qui l’exécute. Toutefois, vous devez toujours gérer la machine virtuelle en installant, configurant et corrigeant le logiciel qui s’exécute dessus.

  • Groupes de machines virtuelles identiques Azure, qui vous permet de créer et de gérer un groupe de machines virtuelles à charge équilibrée. Le nombre d’instances de machine virtuelle peut augmenter ou diminuer automatiquement en fonction d’une demande ou d’un calendrier défini.

  • Azure Kubernetes Service (AKS), qui simplifie le déploiement d’un cluster Kubernetes managé en gérant toute la surcharge opérationnelle pour vous, y compris les tâches critiques telles que la maintenance et la surveillance de l’intégrité. AKS prend en charge l’approvisionnement élastique de la capacité, notamment la mise à l’échelle automatique pilotée par les événements et les déclencheurs KEDA.

  • Azure Red Hat OpenShift, qui fournit des clusters OpenShift hautement disponibles et entièrement gérés à la demande. OpenShift offre des fonctionnalités à valeur ajoutée pour compléter Kubernetes, ce qui en fait une plateforme de conteneur clé en main qui offre une expérience de développement et d’opérateur améliorée.

Bien que vous puissiez déployer n’importe quel runtime Java sur tous ces services IaaS et CaaS, nous vous recommandons d’utiliser l’un des runtimes suivants :

  • Build Microsoft d’OpenJDK pour Java 11 ou 17 : images conteneur de base pour lesquelles Microsoft fournit et gère.

  • Eclipse Adoptium Temurin pour Java 8 - le runtime Java pour lequel est fourni par le projet Eclipse Adoptium (anciennement le projet OpenJDK).

Ces deux builds sont disponibles gratuitement pour le développement et les tests locaux, et pour la création de fichiers binaires prêts pour la production à l’aide de n’importe quelle plateforme ou outil DevOps , sans avoir à payer de frais de licence. Nous vous recommandons de les recommander à titre pratique. Lorsque vous utilisez l’une de ces builds, si vous rencontrez des problèmes et que vous disposez d’un plan de support éligible pour Azure, vous pouvez ouvrir un ticket de support Azure , sans plus de coûts. Cela dit, il est important de souligner que ces recommandations sont juste que - les options que nous recommandons parmi d’autres builds disponibles librement d’OpenJDK pour faciliter la prise en charge. Pour plus d’informations, consultez Prise en charge de Java sur Azure et Azure Stack.

Diagramme avec le titre « Générer ou migrer des applications Java » et un graphique montrant la relation entre les technologies Java et les catégories de service Azure.

Toutes ces options de déploiement IaaS et CaaS vous permettent de déployer facilement le serveur d’applications Apache Tomcat. Si vous utilisez une offre commerciale, comme Spring Runtime à partir de VMware, JBoss EAP de Red Hat, WebLogic Server d’Oracle ou WebSphere à partir d’IBM, Azure propose également des options d’hébergement développées et prises en charge conjointement par ces fournisseurs. Ils sont abordés plus tard, sous des solutions intégrées et prises en charge conjointement avec des partenaires de l’écosystème Java.

Services PaaS complètement managés

Les services PaaS complètement managés pour l’exécution d’applications Java sur Azure incluent les options suivantes :

  • Azure Spring Apps, qui facilite le déploiement d’applications Spring Boot sur Azure, sans aucune modification du code. Le service gère toutes les infrastructures pour les applications Spring Boot. Cette infrastructure comprend une supervision et des diagnostics complets, la gestion de la configuration, la découverte de services, la sécurité, le cycle de vie des applications, la publication des journaux et des métriques, l’intégration CI/CD, les déploiements bleu-vert, etc. Développé en partenariat avec Pivotal (désormais partie de VMware), Azure Spring Apps est conjointement géré et pris en charge par Microsoft et VMware.
  • Azure App Service, un service HTTP pour l’hébergement d’applications web, d’API REST et de back-ends mobiles , avec une sécurité intégrée, un équilibrage de charge, une mise à l’échelle automatique et une gestion automatisée. App Service prend également en charge des fonctionnalités DevOps complètes, telles que le déploiement continu, la gestion des packages, les environnements intermédiaires, les domaines personnalisés et les certificats TLS/SSL.
  • Azure Container Apps, qui vous permet d’exécuter des microservices et des applications conteneurisées sur une plateforme serverless. Les utilisations courantes incluent le déploiement de points de terminaison d’API, l’hébergement d’applications de traitement en arrière-plan, la gestion du traitement piloté par les événements et l’exécution de microservices. Les applications basées sur Azure Container Apps peuvent être mises à l’échelle dynamiquement en fonction du trafic HTTP, du traitement piloté par les événements, du processeur ou de la charge de mémoire, ou de n’importe quel scaler pris en charge par KEDA.

Les runtimes Java pour Azure Spring Apps et Azure App Service sont fournis et gérés par Microsoft. Ils prennent uniquement en charge les distributions LTS d’OpenJDK, à l’aide d’Eclipse Adoptium Temurin pour Java 8 et de La build Microsoft d’OpenJDK pour Java 11 et 17. Cela dit, il existe quelques mises en garde : par exemple, nos offres partenaires développées conjointement et prises en charge (abordées plus tard) utilisent leurs propres runtimes.

Pour Azure Container Apps, étant donné que vous devez générer et gérer vos propres images conteneur à partir du code source, vous êtes libre d’utiliser la distribution et la version de Java et le serveur d’applications de votre choix.

Fonctions sans serveur

Parfois, vous n’avez pas besoin d’une application Java entière. Par exemple, pour le traitement des données en temps réel, vous pouvez simplement avoir besoin d’un petit morceau de code qui peut être déclenché à grande échelle , peut-être par millions et millions d’événements. Ces événements peuvent être ingérés via Azure Event Hubs, traités par le code Java serverless piloté par les événements s’exécutant à grande échelle dans Azure Functions, et enregistrés dans un magasin de données tel qu’Azure Cosmos DB.

Solutions intégrées et prises en charge conjointement avec les partenaires de l’écosystème Java

Microsoft s’est associé à des fournisseurs de premier plan dans l’écosystème Java pour offrir des solutions de classe optimales pour l’exécution de Java sur Azure, allant des services managés développés conjointement et pris en charge aux offres de Place de marché Azure pour les serveurs d’applications Java populaires. Nous avons également intégré des outils de surveillance des applications populaires, qui sont abordés plus loin dans cette documentation.

Diagramme avec le titre « Écosystème des partenaires forts » et logos pour les partenaires décrits dans cet article.

Azure Spring Apps (Pivotal/VMware)

Développé conjointement par Microsoft et Pivotal, Azure Spring Apps est un service entièrement géré qui résout de nombreux défis courants auxquels sont confrontés les développeurs, les opérateurs informatiques et les équipes DevOps lors de l’exécution d’applications Spring Boot à grande échelle. Il extrait la complexité de la gestion de l’infrastructure pour l’exécution d’applications spring et de composants de middleware Spring Cloud, ce qui permet aux développeurs Java de se concentrer sur leur code tout en permettant à Azure de prendre en charge la mise à l’échelle dynamique, les correctifs de sécurité, les normes de conformité, la haute disponibilité, et ainsi de suite.

JBoss EAP (Red Hat)

Red Hat fournit des solutions open source pour l’entreprise. L’une de ces solutions est JBoss Enterprise Application Platform (EAP), une plateforme de serveur d’applications populaire certifiée Java EE et Jakarta EE conforme à la plateforme Web Profile et Full Platform. Red Hat est également un contributeur pour les normes Java, OpenJDK, MicroProfile, Jakarta EE et Jakartaus.

Nous avons collaboré avec Red Hat pour fournir Red Hat JBoss Enterprise Application Platform (EAP) sur Azure App Service , ce qui permet aux développeurs Java de déployer leurs applications Jakarta EE dans App Service sans nécessiter de licence ou d’abonnement Red Hat distinct avec prise en charge intégrée des deux entreprises. Nous avons également lancé des offres conjointes similaires pour JBoss EAP sur des machines virtuelles Azure, sur des groupes de machines virtuelles identiques Azure et sur Azure RedHat OpenShift (ARO), qui sont également exploitées conjointement par Microsoft et Red Hat.

WebLogic Server (Oracle)

Nous avons collaboré avec Oracle pour fournir Oracle WebLogic Server (WLS) sur des machines virtuelles Azure et Oracle WebLogic Server sur Azure Kubernetes Service. Ces solutions facilitent les migrations vers Azure en automatisant les opérations réutilisables telles que l’approvisionnement de réseaux virtuels/stockage, l’installation de ressources Linux/Java, la configuration de WebLogic Server et la configuration de la sécurité avec un groupe de sécurité réseau.

WebSphere/Liberty/Open Liberty (IBM)

Nous avons collaboré avec IBM, en développant conjointement des solutions pour WebSphere Application Server (WAS) sur des machines virtuelles Azure, WebSphere Liberty et Open Liberty sur Azure Kubernetes Service, et WebSphere Liberty et Open Liberty sur Azure Red Hat OpenShift. Pour plus d’informations, consultez Quelles sont les solutions permettant d’exécuter la famille de produits IBM WebSphere sur Azure ? Ces solutions facilitent la migration des charges de travail WebSphere vers Azure, automatisant la plupart des tâches d’approvisionnement de ressources nécessaires à la configuration d’un cluster WebSphere hautement disponible. Le partenariat couvre un éventail de cas d’usage , des charges de travail stratégiques existantes aux applications natives cloud.

Apache Kafka sur Confluent Cloud (Confluent)

Par le passé, les clients Azure qui souhaitaient utiliser le service Kafka de Confluent devaient créer et gérer des ressources et des utilisateurs séparément dans Azure et Confluent Cloud. Pour faciliter cette douleur, Confluent et Microsoft ont collaboré pour fournir Apache Kafka pour Confluent Cloud, une offre Place de marché Azure qui fournit Apache Kafka en tant que service entièrement managé, y compris la possibilité de créer et de gérer des ressources Confluent Cloud via les kits de développement logiciel (SDK) Portail Azure, Azure CLI ou Azure Management.

Aujourd’hui, l’expérience client est plus simple, plus sûre et plus transparente. Les clients peuvent provisionner et gérer des ressources Confluent Cloud ainsi que leurs ressources Azure, dans le cadre d’un flux de travail unifié, et tirer parti des connecteurs entièrement managés créés pour Azure Functions, Stockage Blob Azure, Azure Event Hubs, Azure Data Lake Stockage Gen2 et Microsoft SQL Server. Les développeurs peuvent continuer à coder à l’aide de bibliothèques clientes Apache Kafka.

Résumé

Le développement conjoint avec des partenaires pour la plupart de ces offres est un effort continu et continu. À mesure que nos partenaires continuent d’innover sur leurs offres, nous travaillons en étroite collaboration avec eux pour apporter rapidement ces mêmes innovations à Azure, afin que les clients puissent déployer et mettre à l’échelle leurs applications Java avec confiance et facilité.

En résumé, support Azure votre charge de travail avec une abondance de choix, indépendamment de ce que vous faites avec Java. Vous pouvez créer n’importe quelle application Java, utiliser n’importe quelle infrastructure, exécuter n’importe quel serveur d’applications et prendre en charge n’importe quelle architecture d’application , des applications monolithiques s’exécutant sur des machines virtuelles ou dans des conteneurs vers des applications basées sur le cloud, basées sur des microservices s’exécutant sur des services entièrement managés.

Diagramme avec le titre « Déployer des applications Java avec confiance et facilité » et logos pour les options de déploiement décrites dans cet article.

Étape suivante

Mettre à l’échelle avec la sécurité, la surveillance et l’automatisation de bout en bout