Comparer les solutions

Effectué

Nous avons décrit les types de déploiement les plus courants pour les applications Java. Voyons à présent quel service Azure convient le mieux en fonction du type de déploiement nécessaire.

Azure Container Apps

Azure Container Apps est un service managé qui exécute des conteneurs Docker.

Azure Container Apps peut exécuter n’importe quelle application Java lorsque celle-ci est empaquetée en tant qu’image Docker (notamment les applications Tomcat, Spring Boot et Quarkus). Vous êtes responsable de la création et de la gestion de ces images (par exemple, avec GitHub Actions), ce qui vous offre beaucoup de flexibilité, mais une maintenance est également requise.

C’est une solution économique et évolutive, ce qui en fait une excellente option pour les charges de travail petites et moyennes.

Pour exécuter une application monolithique Java basée sur conteneur, Azure Container Apps est par conséquent la meilleure option.

Azure App Service

Azure App Service est une solution PaaS (platform as a service) fournie par Azure. Il offre un service facile à utiliser pour exécuter des applications web Java avec des mises à jour et des correctifs automatiques du système d’exploitation et de JVM (Machine virtuelle Java), ainsi qu’avec une mise à l’échelle automatique ou une supervision.

App Service peut exécuter n’importe quel fichier JAR exécutable, ce qui en fait une alternative à Azure Container Apps pour exécuter des applications monolithiques Java simples.

Il peut également déployer n’importe quelle application WAR sur des serveurs d’applications connus comme Apache Tomcat ou Red Hat JBoss. C’est donc la meilleure solution pour exécuter des applications Jakarta EE sur Azure.

Azure Functions

Azure Functions est la plateforme serverless fournie par Azure qui prend en charge l’exécution de charges de travail Java.

L’exécution d’une application Java sur Azure Functions implique généralement peu de configuration. En substance, les fonctions serverless ont une durée de vie limitée (seulement quelques minutes en règle générale). Il est donc possible que certains services courants ne se révèlent pas aussi efficaces ou pratiques qu’avec Azure App Service.

Par conséquent, Azure Functions est adapté aux applications nécessitant beaucoup de scalabilité. Vous pouvez les arrêter régulièrement pour réduire les coûts et effectuer un scale-up pour répondre aux charges élevées.

Azure Spring Apps

Azure Spring Apps est un service Azure unique qui fournit une solution PaaS (Platform as a Service) pour l’exécution de microservices Spring Boot. Spring Cloud fournit de nombreux outils, comme un registre de service ou un serveur de configuration. Il fournit également des mécanismes de mise à l’échelle automatique et de sécurité spécifiques qui simplifient considérablement l’utilisation d’une architecture de microservices basée sur Spring Boot.

Le produit Spring Cloud est créé et géré à la fois par Microsoft et par Broadcom, l’entreprise qui génère le framework Spring. Spring Cloud prend en charge les mises à jour et les correctifs du système d’exploitation et de JVM, comme Azure App Service, ainsi que les services Spring avancés.

Vous pouvez aussi utiliser le service Azure Spring Apps pour exécuter d’autres charges de travail, comme des applications monolithiques Spring Boot, voire des microservices .NET qui utilisent Steeltoe. Toutefois, le service sert principalement à exécuter des microservices Spring Boot.

Azure Kubernetes Service

Azure Kubernetes Service (AKS) est une solution Kubernetes managée et sécurisée fournie par Azure. Elle peut exécuter toute image Docker et bénéficie de son appartenance à l’ensemble de l’écosystème Kubernetes. AKS fonctionne bien si vous voulez fournir des applications cloud natives dans tous les langages, notamment Java.

Azure Kubernetes Service est une solution intéressante si vous disposez de charges de travail hétérogènes ou si vous voulez un contrôle précis sur votre environnement. AKS exécute correctement les charges de travail Java, mais vous devrez créer et gérer vos images Docker.

Machines virtuelles Azure

L’exécution de machines virtuelles sur Azure vous offre la plus grande flexibilité et le plus large éventail d’options. Vous pouvez choisir parmi plusieurs systèmes d’exploitation, généralement Windows et les principales distributions Linux. Vous pouvez apporter vos propres logiciels ou utiliser les images fournies.

En ce qui concerne Java précisément, vous utilisez principalement des machines virtuelles pour :

  • Installer et exécuter manuellement une application web Java sur Windows ou Linux.
  • Installer et exécuter Docker, voire même AKS, pour exécuter une image qui contient une application web Java.
  • Utiliser l’une des offres prises en charge, comme Oracle WebLogic, pour exécuter des applications web Java sur vos machines virtuelles.

Quand vous utilisez des machines virtuelles Azure, ce que vous pouvez installer et exécuter n’est pas limité, car votre contrôle est total. Le principal inconvénient des machines virtuelles, en revanche, est que vous devez en assurer la maintenance et les sécuriser. Pour les machines virtuelles, ce travail de maintenance relève de votre responsabilité.