ソリューションを比較する

完了

Java アプリケーションの最も一般的なデプロイの種類について説明しました。 次に、必要なデプロイの種類に応じて、どの Azure サービスが最も適しているかを見てみることにしましょう。

Azure Container Apps

Azure Container Apps は、Docker コンテナーを実行するマネージド サービスです。

Azure Container Apps では、Docker イメージ (Tomcat、Spring Boot、Quarkus アプリケーションを含む) としてパッケージ化されている場合、任意の Java アプリケーションを実行できます。 このようなイメージの構築と管理はユーザーが行う必要があります (たとえば、GitHub Actions を使います)。これにより、柔軟性は大幅に向上しますが、メンテナンスも必要です。

これはコスト効率に優れ、スケーラブルなソリューションであり、小規模および中規模のワークロードに最適なオプションです。

そのため、コンテナーベースの Java モノリシック アプリケーションを実行する場合は、Azure Container Apps が最適なオプションです。

Azure App Service

Azure App Service は、Azure によって提供されるサービスとしてのプラットフォーム (PaaS) ソリューションです。 これは、Java Web アプリケーションを実行するための使いやすいサービスであり、OS および Java 仮想マシン (JVM) の自動更新とパッチ適用に加えて、自動スケーリングや監視の機能を備えています。

App Service は任意の実行可能 JAR ファイルを実行できるため、単純な Java モノリシック アプリケーションを実行する Azure Container Apps の代わりに使用できます。

また、Apache Tomcat や Red Hat JBoss などの一般的なアプリケーション サーバー上に任意の WAR アプリケーションをデプロイすることもできます。 そのため、Jakarta EE アプリケーションを Azure 上で実行するには最適なソリューションです。

Azure Functions

Azure Functions は、Azure によって提供されるサーバーレス プラットフォームであり、Java ワークロードの実行がサポートされています。

Azure Functions で Java アプリケーションを実行するには、通常、多少の構成と設定が必要です。 その性質上、サーバーレス関数は寿命が短いため (通常はたった数分)、従来使用しているサービスの一部が Azure App Service ほど効率的でも実用的でもなくなる場合があります。

そのため、Azure Functions は高いスケーラビリティを必要とするアプリケーション向けに調整されています。 コストを削減するために定期的に停止したり、高負荷に対応するためにスケールアップしたりすることができます。

Azure Spring Apps

Azure Spring Apps は Azure 固有のサービスであり、Spring Boot マイクロサービスを実行するためのサービスとしてのプラットフォーム ソリューションが提供されます。 Spring Cloud には、サービス レジストリや構成サーバーなどの数多くのツールが用意されています。 また、Spring Boot に基づくマイクロサービス アーキテクチャの使用を大幅に簡素化する、特定の自動スケーリングおよびセキュリティのメカニズムも用意されています。

Spring Cloud オファリングは、Microsoft と Broadcom (Spring Framework を構築した会社) によって共同で作成および管理されています。 Spring Cloud では、OS および JVM の更新とパッチの適用 (Azure App Service など) がサポートされるだけでなく、高度な Spring サービスもサポートされます。

Azure Spring Apps サービスを使用して、Spring Boot モノリシック アプリケーションや、Steeltoe を使用する .NET マイクロサービスなど、その他のワークロードを実行することもできますが、このサービスは主に Spring Boot マイクロサービスを実行するために使用されます。

Azure Kubernetes Service

Azure Kubernetes Service (AKS) は、Azure によって提供される、セキュリティで保護されたマネージド Kubernetes ソリューションです。 どんな Docker イメージでも実行でき、Kubernetes エコシステム全体に属しているという利点があります。 AKS は、Java などの任意の言語でクラウドネイティブ アプリケーションを提供したい場合に適しています。

Azure Kubernetes Service は、異種ワークロードがある場合や、環境を正確に制御する必要がある場合に最適なソリューションです。 AKS によって Java ワークロードを適切に実行することができますが、Docker イメージをビルドおよび保守する必要があります。

Azure VM

Azure で VM を実行する場合は、最大限の柔軟性と多様なオプションが得られます。 複数のオペレーティング システム (通常は Windows) と主要な Linux ディストリビューションから選択できます。 独自のソフトウェアを導入したり、提供されているイメージの一部を使用したりすることもできます。

特に Java では、主に VM を使用して次のことを行います。

  • Windows または Linux 上に Java Web アプリケーションを手動でインストールして実行する。
  • Docker または AKS をインストールして実行し、Java Web アプリケーションを含むイメージを実行する。
  • サポートされているサービス (たとえば Oracle WebLogic など) のいずれかを使用して、VM 上で Java Web アプリケーションを実行する。

Azure VM を使用する場合、どんなものでもインストールして実行することができます。それを自分で完全に制御できるためです。 ただし、VM の主な欠点は、保守とセキュリティの保護を自分で行う必要があることです。 VM の場合、このメンテナンス作業はお客様の責任になります。