確実かつ簡単に Java アプリケーションをデプロイする
Java エコシステムには、Java SE、Jakarta EE (Java EE と J2EE の後継)、Spring、多数のアプリケーション サーバー、その他のフレームワークなど、さまざまなテクノロジが含まれています。 Java を使用して行っているあらゆること (アプリの構築、フレームワークの使用、アプリケーション サーバーの実行など) について、Azure は豊富な選択肢でそのワークロードをサポートします。 同様に、Azureは、VM またはコンテナーで実行しているモノリシック アプリケーションからフル マネージド サービスで実行しているクラウド ネイティブのマイクロサービス ベースのアプリケーションまで、あらゆるアプリケーション アーキテクチャをサポートしています。
通常の場合、Java アプリケーションを実行するには、アプリケーション サーバー (アプリケーションを実行する Java 仮想マシン (JVM) のインスタンス) にデプロイします。 または、埋め込みアプリケーション サーバーを使用してスタンドアロン アプリケーションを構築することもできます。 どちらの方法でも、アプリケーション サーバーは共通のアプリケーション インフラストラクチャと機能機能を提供し、ウェブ コンテナーと連携して、クライアント要求に対する動的でカスタマイズされた応答を返します。 クライアント要求は、サーブレット、動的ページ、エンタープライズ Bean、サポート・クラス、依存ライブラリー、およびデータ・ドライバーを含むソフトウェア・コンポーネントを使用して処理できます。
Tomcat、JBoss EAP、WildFly、WebLogic、および WebSphere は、よく使用されているアプリケーション サーバーです。 同様に、Spring Boot、Quarkus、Open Liberty は、埋め込みアプリケーション サーバーを使用してスタンドアロン アプリケーションを構築するためによく使用されているフレームワークです。 Azure ではそのすべてをサポートしているため、あらゆる Java アプリケーション サーバーを使用して Java アプリケーションを簡単で確実にデプロイできます。
Spring Boot または Java アプリを任意のアプリケーション サーバーにデプロイする - Tomcat および Jakarta EE
Azure を使用すると、独自の物理インフラストラクチャを管理する必要なく、制限なしで、Java と任意のアプリケーション サーバーの任意のバージョンと任意のディストリビューションを実行できます。 仮想マシン、コンテナ、フル マネージド サービスなどのオプションを使用して、必要な制御の度合いや Azure で処理する日常的な管理の度合いを指定できます。 商用でサポートされている Java アプリ サーバーまたはフレームワーク (VMware Spring Runtime、Red Hat JBoss EAP、Oracle WebLogic Server、IBM WebSphere、Liberty、OpenLiberty など) を使用している場合、Azure は、そのすべてに対して共同で開発およびサポートされているオファリングを提供します。
配置オプション
Azure には、サービスとしてのインフラストラクチャ (IaaS)、サービスとしてのコンテナー (CaaS)、サービスとしてのプラットフォーム (PaaS) ホスティング サービスなど、Java アプリケーションに向けたデプロイのオプションが豊富に用意されています。 既存の Java アプリケーションを仮想マシン (VM) にリフト アンド シフトしたり、複数の方法でコンテナー化したり、管理の容易さ、開発者と運用の生産性、総保有コストを最適化するためにフル マネージドの PaaS サービスにデプロイしたりできます。
VM とコンテナ
Azure 上の仮想マシンまたはコンテナにデプロイする場合は、任意のディストリビューションとバージョンの Java と任意のアプリケーション サーバーを自由に使用できます。 その選択は使用者次第です。 ただし、インフラストラクチャとそのコンポーネントを手動で構成する必要があります。 このカテゴリに分類されるデプロイのオプションは次のとおりです。
Azure 仮想マシン、これにより VM を実行する物理的なハードウェアを購入して維持する手間を省き、仮想化がもたらす柔軟性を提供します。 ただし、VM 上で動作するソフトウェアのインストール、構成、修正プログラムの実行によって VM のメンテナンスを行う必要があります。
Virtual Machine Scale Sets、これにより、負荷分散が行われる VM のグループを作成して管理することができます。 需要または定義されたスケジュールに応じて、VM インスタンスの数を自動的に増減させることができます。
Azure Kubernetes Service (AKS)、これにより、メインテナントや正常性の監視などの重要なタスクを含め、すべての運用オーバーヘッドを処理することで、マネージド Kubernetes クラスターのデプロイを簡略化します。 AKS では、イベントによる自動スケーリングや KEDA トリガーなど、容量のエラスティック プロビジョニングがサポートされています。
Azure Red Hat OpenShift、これにより、可用性の高いフル マネージド OpenShift クラスターがオンデマンドで提供されます。 OpenShift では Kubernetes を補完する付加価値機能がもたらされるため、開発者とオペレーターのエクスペリエンスが向上するターンキー コンテナ プラットフォームになります。
これらすべての IaaS サービスと CaaS サービスに任意の Java ランタイムをデプロイできますが、次のいずれかのランタイムを使用することが推奨されます。
Microsoft Build of OpenJDK for Java 11 または 17 - Microsoft が提供し維持するベース コンテナ イメージ。
Eclipse Adoptium Temurin for Java 8 - Eclipse Adoptium プロジェクト (旧称 OpenJDK プロジェクト) が提供する Java ランタイム。
この両方のビルドは、ローカルでの開発とテストおよび任意のプラットフォームまたは DevOps ツールを使用して実稼働可能なバイナリをビルドするために無料で利用できます。ライセンス料金を支払う必要はありません。 利便性を考慮すると、これらの使用をお勧めします。 これらのビルドのいずれかを使用すると、問題が発生したときに Azure の対象となるサポート プランがある場合は、Azure サポート チケットを開くことができます。コストはかかりません。 ただし、これらのおすすめは、サポートを容易にするために OpenJDK でほかにもフリーで利用できるさまざまなビルドの中からおすすめしているオプションであることもご留意ください。 詳細については、「Azure および Azure Stack での Java のサポート」を参照してください。
これらすべての IaaS および CaaS デプロイ オプションでは、Apache Tomcat アプリケーション サーバーを簡単にデプロイできます。 VMware の Spring Runtime、Red Hat の JBoss EAP、Oracle の WebLogic Server、IBM の WebSphere などの商用オファリングを使用している場合、Azure では、これらのベンダーから共同で開発およびサポートされているホスティング オプションも提供します。 これらについては後ほど、Java エコシステム パートナーと共同で構築およびサポートされているソリューションで取り上げます。
フル マネージド (PaaS) サービス
Azure で Java アプリケーションを実行するためのフル マネージド PaaS サービスには、次のようなオプションがあります。
- Azure Container Apps、これによりサーバーレス プラットフォームでマイクロサービスとコンテナー化されたアプリケーションを実行できます。 一般的な用途には、API エンドポイントのデプロイ、バックグラウンド処理アプリケーションのホスト、イベントによる処理の取り扱い、マイクロサービスの実行があります。 Azure Container Apps 上に構築されたアプリは、HTTP トラフィック、イベントによる処理、CPU またはメモリのロード、または KEDA がサポートするスケーラーに基づいて動的にスケーリングできます。
- Azure アプリ Service、これはウェブ アプリケーション、REST API、モバイル バックエンドをホストするための HTTP ベースのサービスであり、ビルトイン セキュリティ、ロードバランサ、自動スケーリング、および自動管理が備わっています。 App Service では、継続的デプロイ、パッケージ管理、ステージング環境、カスタム ドメイン、TLS/SSL 証明書などの包括的な DevOps 機能もサポートされています。
コードまたはバイナリ (JAR/WAR) としてデプロイされた Azure App Service および Azure Container Apps の Java ランタイムは、Microsoft によって提供および保守されます。 Eclipse Adoptium Temurin for Java 8 と Microsoft Build of OpenJDK for Java 11 および 17 を使用して、OpenJDK の LTS ディストリビューションのみをサポートしています。 ただし、いくつかの注意事項があります。たとえば、共同で開発およびサポートされているパートナー オファリング (後ほど取り上げます) は、独自のランタイムを使用します。
独自のコンテナー イメージから構築された Azure Container Apps の場合、ソース コードから独自のコンテナー イメージを構築して管理する必要があるため、選択した Java ディストリビューション/バージョンおよびアプリケーション サーバーを使用できます。
サーバーレスな Functions
Java アプリケーション全体を必要としない場合があります。 たとえば、リアルタイムのデータ処理では、大規模にトリガーできる小さなコード (おそらく数百万から数百万のイベント) が必要な場合があります。 このようなイベントは、Azure Event Hubs を介して取り込み、Azure Functions で大規模に実行されるイベントによるサーバーレス Java コードによって処理され、Azure Cosmos DB などのデータ ストアに保存されます。
Java エコシステム パートナーと共同でビルドおよびサポートされるソリューション
Microsoft は、Java エコシステムの大手ベンダーと提携し、共同で開発およびサポートされているマネージド サービスから、一般的な Java アプリケーション サーバー向けの Azure Marketplace オファリングまで、Azure で Java を実行するためのクラス最高のソリューションを提供しています。 また、このドキュメントで後ほど取扱う一般的なアプリケーション監視ツールも統合されています。
JBoss EAP (Red Hat)
Red Hat は、エンタープライズ向けのオープンソースのソリューションを提供します。 そのようなソリューションの1つが JBoss Enterprise Application Platform (EAP) です。これは、Web Profile および Full Platform の両方で Java EE 認証と Jakarta EE 準拠の一般的なアプリケーションサーバープラットフォームです。 Red Hat は、Java 標準、OpenJDK、MicroProfile、Jakarta EE、Quarkus のコントリビューターでもあります。
Microsoft は Red Hat と提携して Red Hat JBoss Enterprise Application Platform (EAP) を Azure App Service に提供します。これにより、Java 開発者は、別の Red Hat サブスクリプションや両社からの統合サポートを利用したライセンスを必要とせずに、Jakarta Enterprise Edition アプリケーションを App Service にデプロイできます。 また、Azure VM、Azure VM Scale Sets、Azure RedHat OpenShift (ARO) 上の JBoss EAP でも同様の共同オファリングを開始しました。後者も Microsoft と Red Hat が共同で運営しています。
WebLogic サーバー (Oracle)
Microsoft は Oracle と提携して、Azure VM では Oracle WebLogic Server (WLS)、Azure Kubernetes Service では Oracle WebLogic Server を提供します。 これらのソリューションでは、仮想ネットワーク/ストレージのプロビジョニング、Linux/Java リソースのインストール、WebLogic Server の設定、ネットワーク セキュリティ グループによるセキュリティの構成などの定型的な操作を自動化することで、Azureへの簡単な移行を容易にしています。
WebSphere/Liberty/Open Liberty (IBM)
Microsoft は IBM と提携して、Azure VM の WebSphere Application Server (WAS)、Azure Kubernetes Service の WebSphere Liberty と Open Liberty、Azure Red Hat OpenShift の WebSphere Liberty と Open Liberty へのソリューションを共同で開発しました。 詳細については、「Azure で IBM WebSphere 製品ファミリーを実行するためのソリューション」を参照してください。これらのソリューションを使用すると、WebSphere ワークロードを Azure に簡単に移行し、高可用性の WebSphere クラスターを設定するために必要なほとんどのリソース プロビジョニング タスクを自動化できます。 このパートナーシップは、既存のミッション クリティカルなワークロードからクラウド ネイティブ アプリケーションまで、幅広いユースケースを対象としています。
Confluent Cloud の Apache Kafka (Confluent)
以前は、Confluent の Kafka サービスを使用する Azure のお客様は、Azure と Confluent Cloud でリソースとユーザーを個別に作成して管理する必要がありました。 この問題を緩和するために、Confluent と Microsoft は提携して、Apache Kafka をフル マネージド サービスとして提供する Azure Marketplace オファリングである Apache Kafka for Confluent Cloud を提供するようになりました。これには、Azure portal、Azure CLI、または Azure Management SDK を使用して Confluent Cloud リソースを作成、管理する機能が含まれます。
現在では、カスタマー エクスペリエンスはシンプルで安全、そしてシームレスです。 お客様は統合ワークフローの一環として Confluent Cloud リソースと Azure リソースをプロビジョニングおよび管理し、Azure Functions、Azure Blob Storage、Azure Event Hubs、Azure Data Lake Storage Gen2、Microsoft SQL Server 用に構築されたフル マネージド コネクタを利用できます。 開発者は、Apache Kafka クライアント ライブラリを使用して引き続きコードを記述できます。
まとめ
これらのオファリングにおけるパートナーとの共同開発の多くは、継続的に現在行われている取り組みです。 パートナーがオファリングのイノベーションを続ける中で、Microsoftは同様のイノベーションを Azure に迅速に導入するためにパートナーと緊密な共同作業を行っています。これにより、お客様は確実で容易に Java アプリケーションをデプロイおよびスケーリングできるようになります。
つまり、Azure では、Java の用途に関わらず、豊富な選択肢によってお客様のワークロードをサポートしています。 任意の Java アプリの構築、任意のフレームワークの使用、任意のアプリケーション サーバーの実行を行うことができ、VM またはコンテナーで実行されているモノリシック アプリケーションからフル マネージド サービスで実行されているクラウド ネイティブのマイクロサービス ベースのアプリケーションまで、あらゆるアプリケーション アーキテクチャをサポートできます。