Container Apps と他の Azure コンテナー オプションの比較

チームには、クラウド ネイティブおよびコンテナー化されたアプリケーションを Azure でビルドしてデプロイするための多くのオプションがあります。 この記事は、Azure Container Apps に最適なシナリオとユース ケース、および次に示す Azure 上の他のコンテナー オプションとの比較を理解するのに役立ちます。

すべてのユース ケースとすべてのチームに完璧なソリューションはありません。 次の説明では、チームと要件に最適なものを見つけるのに役立つ一般的なガイダンスと推奨事項を示します。

コンテナー オプションの比較

Azure Container Apps

Azure Container Apps を使用すると、コンテナーに基づいてサーバーレス マイクロサービスとジョブをビルドできます。 Container Apps の特徴は次のとおりです。

  • 汎用コンテナー (特に、コンテナーにデプロイされた多くのマイクロサービスにまたがるアプリケーション向け) を実行するように最適化されています。
  • Kubernetes と、DaprKEDAenvoy などのオープンソースのテクノロジが利用されています。
  • サービス検出トラフィック分割などの機能によって Kubernetes スタイルのアプリやマイクロサービスをサポートします。
  • トラフィックに基づくスケーリングをサポートし、ゼロにスケーリングなど、キューのようなイベント ソースからプルすることで、イベント駆動型アプリケーション アーキテクチャを有効にします。
  • オンデマンド、スケジュール済み、イベント ドリブンのジョブの実行をサポートします。

Azure Container Apps では、基になる Kubernetes API への直接アクセスは提供されません。 Kubernetes API とコントロール プレーンにアクセスする必要がある場合は、Azure Kubernetes Service を使用してください。 ただし、Kubernetes スタイルのアプリケーションを構築したいが、すべてのネイティブ Kubernetes API とクラスター管理への直接アクセスは必要ない場合は、Container Apps により、ベスト プラクティスに基づくフル マネージド エクスペリエンスが提供されます。 このような理由から、多くのチームが、Azure Container Apps を使用してコンテナー マイクロサービスの構築を開始することを選択する場合があります。

クイックスタートを使用して、初めてのコンテナー アプリの作成を始めることができます。

Azure App Service

Azure App Service では、Web サイトや Web API を含む、Web アプリケーション用のフル マネージド ホスティングが提供されます。 これらの Web アプリケーションは、コードまたはコンテナーを使用してデプロイできます。 Azure App Service は、Web アプリケーション用に最適化されています。 Azure App Service は、Azure Container Apps や Azure Functions などの他の Azure サービスと統合されます。 Web アプリを構築する場合、Azure App Service は理想的な選択肢です。

Azure Container Instances

Azure Container Instances (ACI) では、オンデマンドで Hyper-V 分離コンテナーの単一ポッドが提供されます。 これは、Container Apps と比較した場合、下位レベルの "ビルディング ブロック" オプションと考えることができます。 スケーリング、負荷分散、証明書のような概念は、ACI コンテナーでは提供されません。 たとえば、5 つのコンテナー インスタンスにスケーリングするには、5 つの個別のコンテナー インスタンスを作成します。 Azure Container Apps によって、証明書、リビジョン、スケーリング、環境など、多くのアプリケーション固有概念がコンテナーの上に提供されます。 多くの場合、ユーザーは他のサービスを介して Azure Container Instances を操作します。 たとえば、Azure Kubernetes Service では、仮想ノードを介して、ACI の上にオーケストレーションとスケーリングをレイヤー化できます。 Azure Container Apps で最適化されているシナリオに一致しない、あまり "厳格" でない構成ブロックが必要な場合、Azure Container Instances は理想的なオプションです。

Azure Kubernetes Service

Azure Kubernetes Service (AKS) では、Azure でフル マネージド Kubernetes オプションが提供されます。 Kubernetes API への直接アクセスがサポートされ、すべての Kubernetes ワークロードが実行されます。 クラスター全体がサブスクリプション内に存在し、クラスターの構成と運用はユーザーの制御と責任の範囲内となります。 Azure で Kubernetes のフル マネージド バージョンを探しているチームにとって、Azure Kubernetes Service は理想的なオプションです。

Azure Functions

Azure Functions は、サーバーレスのサービスとしての関数 (FaaS) ソリューションです。 これは、関数プログラミング モデルを使用してイベント駆動型アプリケーションを実行するように最適化されています。 スケールやイベントとの統合に関して Azure Container Apps と多くの特性を共有していますが、コードまたはコンテナーとしてデプロイされるエフェメラル関数用に最適化されています。 Azure Functions プログラミング モデルには、イベントに応じて関数の実行をトリガーし、他のデータ ソースにバインドしようとするチームにとって生産性のメリットがあります。 FaaS スタイルの関数を構築する場合は、Azure Functions が理想的なオプションです。 Azure Functions プログラミング モデルは、基本コンテナー イメージとして使用でき、他のコンテナー ベースのコンピューティング プラットフォームに移植可能です。そのため、チームは環境要件の変化に応じてコードを再利用できます。

Azure Spring Apps

Azure Spring Apps は、Spring 開発者のためのフル マネージド サービスです。 Spring Boot、Spring Cloud、またはその他の Spring アプリケーションを Azure で実行する場合は、Azure Spring Apps が最適なオプションです。 Spring アプリケーションのインフラストラクチャはこのサービスによって管理されるため、開発者はコードに専念できます。 Azure Spring Apps では、包括的な監視と診断、構成管理、サービス検出、CI/CD 統合、ブルー/グリーン デプロイなどを使用して、ライフサイクルを管理できます。

Azure Red Hat OpenShift

Red Hat と Microsoft が共同で設計、運用、サポートを行う Azure Red Hat OpenShift では、Kubernetes を利用する OpenShift を実行するための統合された製品とサポートのエクスペリエンスが提供されます。 Azure Red Hat OpenShift を使うことでチームは、OpenShift からの自動的なソース コード管理、コンテナーとアプリケーションのビルド、デプロイ、スケーリング、正常性の管理などに、独自のレジストリ、ネットワーク、ストレージ、CI/CD のソリューションを選ぶか、組み込みのソリューションを使うことができます。 チームまたは組織が OpenShift を使っている場合は、Azure Red Hat OpenShift が最適なオプションです。

次のステップ