Azureの新しいサーバーレスコンテナサービスとして、2021年に開催されたMicrosoft IgniteでAzure Container Appsが発表されました。
本記事では、発表からしばらく経ち機能も徐々に充実してきた、Azure Container Appsの概要と特徴についてご紹介いたします。
Azure Container Appsとは
Azure Container Appsは、Azure上でコンテナをホストしてアプリケーションを実行できる、PaaSのフルマネージドサーバーレスコンテナサービスです。
コンテナー化アプリケーションを実行するために、ユーザーが本来管理するインフラストラクチャが極力切り離されてサービスが提供されます。
大きな特徴は、Kubernetesの複雑さをうまく分離しながらKuberenetes基盤で構築されていることです。
Kubernetesのコントロールプレーンだけでなく、ワーカーノードなどのリソースの管理も不要なため、学習コストの高いKuberenetesの機能を、Kuberenetesをあまり意識せずに簡単に使用でき、コンテナオーケストレーションを活用したアプリやマイクロサービスを気軽に構築できます。
Kubernetes APIには直接アクセスできないため、Azure Kubernetes Serviceほど細かく設定はできませんが、Azure Container Instancesよりも柔軟に環境を設定でき、他のコンテナサービスと比べてちょうどいい中間のサービスとして設計されています。
Azure Container Appsの特徴
Azure Container Appsの主な特徴として、以下をご紹介いたします。
- Kuberenetes環境の抽象化
- 自動スケーリング
- マイクロサービス開発支援
Kuberenetes環境の抽象化
Azure Container Appsは、複雑なKubernetes環境を極力ユーザーに意識させずにコンテナ実行環境を使用させるために、Kubernetesのインフラストラクチャを 「Container Apps Environment」という仮想クラスタとして提供しています。
Container Apps Environmentでは以下の機能を設定できます。
- 課金プラン
- 仮想ネットワーク
- Container Apps Environmentでの複数のContainer Appsデプロイ
- マルチサービス統合(Container Apps EnvironmentへのAzure FunctionsまたはAzure Spring Appsの追加)
- Log Analytics
最低限コンテナを実行するために必要な環境をContainer Apps Environmentで作成し、その上で1個以上のコンテナを、Container Appというデプロイの単位で実行できます。
またContaine App内のコンテナはRevisionという単位でスナップショットを作成でき、アプリのバージョンをレコードとして保存することで、バージョン管理を行えます。
Revisionを利用することで、App Serviceのデプロイスロットのようにスムーズなロールバックが可能になります。
自動スケーリング
Azure Container Appsでは、Kuberenetesにおいて主要なスケーリング機能のプロジェクトであるKubernetes Event-driven Autoscaling(KEDA)がアドオンとして使用できるため、ユーザーが構築・管理を労せずに柔軟なスケーリングが可能になっています。
HTTP要求数、TCP接続数、CPUやメモリの使用率などの様々なトリガーに合わせて、アプリを自動的にスケーリングできます。
またレプリカ数をゼロにスケーリングすることも可能で、イベントドリブンな運用も可能です。レプリカ数がゼロの時は課金も止まります。Azure Container Instancesなどはスケーリングが難しいため、他のコンテナサービスとは差別化できている機能でもあります。
マイクロサービス開発支援
Azure Container Appsでは、Distributed Application Runtime (Dpar)のAPIをフルマネージドサービスとして利用できます。
Daprは分散型アプリケーションランタイムの一つであり、サービス間の呼び出し、ステート管理、Pub-Subメッセージング、リソースのバインディングとトリガー、アクターズなどの一通りの機能を揃えています。
APIを提供することでプログラム言語の違うサービス間の連携を容易にするため、マイクロサービスを簡易に開発したい場合などに効果的です。
最後に
上記の特徴以外にも、ネットワークにおいては仮想ネットワークやプライベートエンドポイントを使用したセキュアな接続や、Ingressアドオンを使用してのロードバランシングが可能であったり、Azure Log Analyticsを利用してのパフォーマンス監視などの機能も充実しています。
また、最近(2023年3月時点)では、HTTP/HTTPSだけでなくTCPベースのプロトコルをイングレスでサポートされたり、ジョブとして使用することがサポートされています。
最新のコンテナサービスとして、手軽さと機能性が伴った痒い所に手が届く嬉しい機能が追加されてますますAzure Container Appsから目が離せません。
次回は他のAzureコンテナサービスとの違いに注目した内容をご紹介できればと思います。
杉瀬 駿太郎(日本ビジネスシステムズ株式会社)
クラウドソリューション本部所属。 Azure製品全般のインフラ構築~運用までを中心とした案件に携わっています。 好きなサカナクションのアルバムはGO TO THE FUTUREです
担当記事一覧