この記事のポイント
- サーバーレスでの柔軟なコンテナアプリケーション実行環境
- KEDAによる自動スケーリングとリソースの最適化
- Daprを活用したマイクロサービスアーキテクチャの実現
- 他のAzureサービスとの効果的な使い分けと連携
- コスト効率の高い従量課金制と無料枠の提供
監修者プロフィール
坂本 将磨
Microsoft AIパートナー、LinkX Japan代表。東京工業大学大学院で技術経営修士取得、研究領域:自然言語処理、金融工学。NHK放送技術研究所でAI、ブロックチェーン研究に従事。学会発表、国際ジャーナル投稿、経営情報学会全国研究発表大会にて優秀賞受賞。シンガポールでのIT、Web3事業の創業と経営を経て、LinkX Japan株式会社を創業。
コンテナ技術の普及により、アプリケーションの開発と運用の方法は大きく変化しています。
Azure Container Appsは、この変化に対応する次世代のサーバーレスプラットフォームとして、コンテナ化されたアプリケーションの効率的な実行環境を提供します。
KEDAによる自動スケーリングとDaprによるマイクロサービス支援により、負荷に応じた柔軟なリソース調整と分散アプリケーションの構築が可能です。環境構築やインフラ管理の負担を軽減し、アプリケーション開発に集中できる環境を実現します。
Azure Functionsやコンテナインスタンス、Kubernetes Serviceなど、他のAzureサービスとの適切な使い分けにより、要件に最適な構成を選択できます。さらに、従量課金制と generous な無料枠により、コスト効率の高い運用が可能です。
本記事では、Azure Container Appsの主要機能から具体的な実装手順、活用シナリオまで、実務で即活用できる情報を体系的に解説します。
コンテナベースの近代的なアプリケーション開発に取り組む組織に、実践的なガイドを提供します。
Azure Container Appsとは
Azure Container Appsは、Microsoft Azureが提供するサーバーレスなコンテナ実行環境です。このサービスを使えば、コンテナ化されたアプリケーションを簡単にデプロイし、管理することができます。特に、マイクロサービスやイベントドリブンなアプリケーションをスムーズに構築・運用できる点が特徴です。
また、スケーリングの自動化やイベントベースのトリガーを備えており、リソースを効率的に活用できるため、コスト効率の高い運用が可能です。
Azure Container Appsイメージ(出典元:公式ホームページ)
コンテナとは
コンテナとは、アプリケーションとそれを動かすために必要な設定や環境を1つにまとめたものです。
通常は、アプリケーションを別のパソコンやサーバーに移すときに、「この環境では動かない」「依存しているライブラリが違う」などの問題が起きることがあります。しかし、コンテナを使うと、アプリが動くために必要なもの(例: ライブラリ、設定、バージョン)をすべて一緒にパッケージ化しているため、そうした問題が解消されます。
サーバーレスとは
サーバーレスは、アプリケーションを動かすサーバーの管理をユーザーが行わずに済むサービスモデルのことです。実際にはサーバーは存在しますが、インフラの管理(構築、メンテナンス、スケーリングなど)はすべてクラウドプロバイダー(ここではAzure)が自動で行います。
そして、上記コンテナとサーバーレスを組み合わせたサービスが「Azure Container Apps」であり、開発者がアプリケーションの構築や改善に専念できる環境を提供してくれます。
Azure Container Appsの機能
Azure Container Appsの機能は以下のとおりです。
1. サーバーレスアーキテクチャ
Azure Container Appsでは、サーバーやクラスタのセットアップが不要です。つまり、開発者がインフラ(サーバーの構築や管理)を気にする必要がありません。
このサービスは、アプリの負荷やリクエストに応じて自動で動き、スケールアップ(リソースを増やす)やスケールダウン(リソースを減らす)を行います。
2. 柔軟なコンテナ対応
Azure Container Appsは、好きなプログラミング言語やフレームワークを使ったアプリケーションをそのまま動かすことができます。
開発者がすでに慣れている技術(例: Python、Node.js、Java)やツールを利用できるため、新しい環境に適応する手間がありません。
3. スケーリング機能
Azure Container Appsは、KEDA(Kubernetes Event-driven Autoscaling)という仕組みを使っています。これにより、アプリケーションの負荷に応じてリソースを自動的に増減します。
KEDAは、Kubernetes(コンテナを管理する仕組み)で動作するツールの一つで、アプリケーションをイベントに基づいて自動的にスケールする仕組みを提供します。
例えば、
- 昼間にアクセスが集中したら、リソースを増やして対応します(スケールアップ)。
- 夜間にアクセスが少なくなったら、リソースを減らしてコストを抑えます(スケールダウン)。
4. マネージドなインフラストラクチャ
Azure Container Appsは、Azureがインフラを完全に管理してくれるマネージドサービスです。そのため、サーバーやクラスタの構築、更新、保守を気にせずに済みます。
Azure Container Appsの仕組み
ここでは、Azure Container Appsの仕組みについてご説明します。
Azure Container Appsの構成要素
Azure Container Appsの構成要素は以下のとおりです。
コンテナAPP仕組みイメージ(参考:マイクロソフト)
1. 環境(Environment)
Azure Container Appsでアプリが実行される基盤となるもので、ネットワークやログ設定などのインフラを管理します。複数のアプリが同じ環境で実行されることもあります。
この図では、環境の中に複数のアプリケーション(Container App)が配置されています。
2. アプリケーション(Container App)
アプリケーションは、特定のタスクやサービスを提供する単位であり、各アプリには複数のリビジョンやコンテナが含まれます。
図の「コンテナアプリ1」や「コンテナアプリ2」がそれぞれ1つのアプリケーションを指します。
3. リビジョン(Revision)
各アプリケーションには複数のリビジョンが存在します。リビジョンはアプリのバージョンを意味し、新しいバージョンをデプロイするたびに生成されます。
これにより、複数のバージョンを並行して実行したり、トラフィックを特定のバージョンに振り分けたりすることができます。
図では、リビジョン1 とリビジョン2がそれぞれ示されています。
4. レプリカ(Replica)
レプリカは、アプリケーションを複数のコピーとして動かし、負荷が増えたときにスムーズに対応する仕組みです。例えば、負荷が増加した場合、スケーリングによりレプリカを増やして対応します。
レプリカの中に複数の コンテナ(Container) が含まれています。
5. コンテナ(Container)
コンテナは、アプリケーションの動作に必要なコードや依存関係を含む実行単位です。例えば、1つのアプリケーションが複数のコンテナを持ち、それぞれ異なる機能を提供することも可能です。
全体の流れ
環境の中に複数のアプリケーション(Container App)が存在し、各アプリケーションは複数の「リビジョン」を持っています。
各リビジョンは、負荷やスケーリング要件に応じて複数のレプリカを実行します。するとレプリカの中でコンテナが動作し、ユーザーリクエストやイベントに応じてサービスを提供します。
この流れを例として考えると以下のようになります。
- 環境に「注文処理アプリ」と「在庫管理アプリ」が配置され、「注文処理アプリ」の新しいリビジョンがデプロイされている。
- アクセスが増えると、「注文処理アプリ」のレプリカが増え、トラフィックに対応。
- レプリカ内のコンテナが注文データを処理し、結果を返す。
このようにAzure Container Appsの動作は、「環境 → アプリケーション → リビジョン → レプリカ → コンテナ」の流れで進みます。
Dapr(Distributed Application Runtime)の統合
Daprは、分散アプリケーションを簡単に構築・運用するためのオープンソースランタイムです。
分散アプリケーションというのは、複数の小さなサービス(マイクロサービス)が協力して動くアプリケーションのことです。
例えば、オンラインショップのアプリでは、「在庫管理サービス」「支払い処理サービス」「配送サービス」といった複数の小さな機能が連携して1つのアプリとして動いています。
これが分散アプリケーションです。
Azure Container AppsはDaprと統合しているので、以下のような機能を簡単に利用できます。
-
マイクロサービス間の通信
Daprを使うと、マイクロサービス同士が簡単に通信できます。
通常、サービス間でデータをやり取りする際には通信ルールやプログラムを細かく設定する必要がありますが、Daprではこれを自動的に処理します。 -
状態管理
アプリケーションが一時的に保持するデータ(例:ユーザーの買い物カゴの内容やセッション情報)を、Daprが安全に保存してくれます。 -
イベント駆動モデル
イベント駆動とは、何かが起きたら、それに応じて別の処理を実行する」という仕組みです。Daprでは、メッセージキューやPub/Sub(Publish/Subscribe)を使って、非同期で効率的にイベントを処理できます。
例えば、「注文サービス」が注文を受け取ったら、「支払いサービス」に支払い処理を依頼し、「配送サービス」に商品の発送準備を指示する、という仕組みを作ることができます。
このように、Daprが統合されていることから、Azure Container Appsではマイクロサービス間の通信やデータ管理、イベント処理を簡単に実現できます。これにより、複雑なシステムを手軽に構築・運用できるようになります。
他のAzureコンテナサービスとの比較
Azureにはさまざまなコンテナ関連サービスがあり、それぞれ異なる場面に対応しています。
ここでは各サービスの違いを詳しく解説し、各サービスの適切な使い分けについて説明します
Azure Functions
Azure Functionsは、短時間で完結する軽量な処理を実行するサービスです。
例えば、画像処理やメール送信など、数秒〜数分で完了する「小さなタスク」に特化しています。コードをアップロードするだけで利用でき、シンプルで簡単に設定可能です。
【関連記事】
➡️Azure Functionsとは?その機能や使い方、料金体系を徹底解説!
Azure Container Instances
Azure Container Instances(ACI)は、単一のコンテナを短期間だけ動かすためのサービスです。
例えば、一時的なデータ処理やテスト環境を素早く準備したい場合に便利です。コンテナを1つだけ動かして、処理が終われば終了するシンプルな動作が特徴です。
【関連記事】
➡️Azure container Instancesとは?主な機能や使い方、料金体系を解説
Azure App Service
Azure App Serviceは、Webアプリケーションの開発と運用に特化したサービスです。例えば、Webサイトやブログ、CMSなどのWebアプリケーションを簡単にホスティングできます。
SSL証明書やカスタムドメイン、デプロイスロットなどのWebアプリ向け機能が豊富なのも特徴です。
【関連記事】
➡️Azure Web Appsとは?できることやメリットを徹底解説!
Azure Kubernetes Service(AKS)
Azure Kubernetes Service(AKS)は、フル機能のKubernetesクラスターを提供するサービスです。Kubernetesの高度な機能を利用して、大規模で複雑な分散アプリケーションを運用したい場合に適しています。ただし、クラスターの管理や詳細な設定が必要になるため、学習コストが高いです。
Azure Kubernetes Serviceイメージ
サービスの使い分け
上記をまとめると、それぞれの活用場面は以下のとおりになるでしょう。
サービス | ユースケース例 |
---|---|
Azure Functions | イベント駆動で短時間で終了する処理 |
Azure Container Instances | バッチ処理や小規模な社内システム |
Azure App Service | マイクロサービス以外のWebアプリ全般 |
Azure Container Apps | マイクロサービス向け |
Azure Kubernetes Service | 上記サービスで要件が満たせない場合 |
Azure Container Appsの作成方法
ここでは、Azure Container Appsの作成方法について具体的にご紹介します。
- Azureポータル画面の「リソースの作成」で「azure container apps」で検索し、「コンテナーアプリ」をクリックします。
コンテナーアプリ選択画面
- 「コンテナーアプリの作成」画面、「基本」タブで適切な設定をします。
「次へ : コンテナー」をクリックします。
基本タブ画面
- 「コンテナー」タブで適切な設定をします。
「確認と作成」をクリックします。
コンテナータブ画面
- 「確認と作成」タブで設定が適切なことを確認します。
「作成」をクリックします。
確認と作成タブ画面
Azure Container Appsの料金体系
Azure Container Appsは、利用した分だけ支払う従量課金制の料金体系を採用しています。
基本課金対象
Azure Container Appsでは、アプリケーションのリソース使用量に基づいて課金されます。主な課金対象は次の3つです。
-
vCPU使用量:
アプリケーションが使用するCPUリソースに応じて秒単位で課金されます。負荷が高くなるほど多くのvCPUが使われます。 -
メモリ使用量:
アプリケーションで使用されるメモリ量(GiB秒)に基づいて課金されます。必要なメモリ量に応じて設定可能です。 -
リクエスト数:
アプリケーションが処理するHTTPリクエストやTCP接続の数に基づいて課金されます。
無料枠
Azure Container Appsには、毎月の使用に対して以下の無料枠が用意されています。この無料枠を超えた場合のみ、課金が発生します。
- vCPU使用量: 180,000秒分(約50時間分)
- メモリ使用量: 360,000 GiB秒
- リクエスト数: 200万件
アイドル状態の割引料金
アプリケーションがアイドル状態(非アクティブ)になった場合、リソースの使用量が減少し、割引された料金で計算されます。
スケーリング
Azure Container Appsは、リクエストやイベントの発生状況に応じて、アプリケーションのリソースを自動スケーリングします。
1年・3年割引プラン
1年または3年の利用契約を結ぶことで、リソース使用量に応じた料金が最大17%割引されます。このプランは、継続的にAzure Container Appsを使用する場合に特に有効です。
具体的な料金は以下のとおりです。
アクティブ状態の使用量
リソース | 従量課金制料金 | 1年割引プラン | 3年割引プラン |
---|---|---|---|
vCPU(秒) | ¥0.0036836 | ¥0.00313100 | ¥0.00305733 |
メモリ(GiB秒) | ¥0.0004605 | ¥0.00039138 | ¥0.00038217 |
アイドル状態の使用量
リソース | 従量課金制料金 | 1年割引プラン | 3年割引プラン |
---|---|---|---|
vCPU(秒) | ¥0.0004605 | ¥0.00039138 | ¥0.00038217 |
メモリ(GiB秒) | ¥0.0004605 | ¥0.00039138 | ¥0.00038217 |
リクエスト数
リクエスト数 | 従量課金制料金 | 1年割引プラン | 3年割引プラン |
---|---|---|---|
100万件 | ¥61.393 | ¥52.184 | ¥50.956 |
Azure Container Appsの活用事例
ここでは、Azure Container Appsの活用場面についてご紹介します。
オンラインショップの裏側(バックエンド)で活用
オンラインショップの注文や支払い、在庫管理などを効率よく動かすことができます。それぞれの仕事(注文管理、在庫確認、支払い処理など)を「コンテナ」として分けて動かします。
- 具体例:
お客さんが商品を購入すると、注文を受け取るシステムが動き、在庫を確認して、支払いシステムが処理を進めます。
忙しい時間(セール時など)は自動でシステムを増やして対応でき、落ち着いた時間は無駄なリソースを使わずコストを節約できます。
定期的なデータ処理
夜や週末などにデータをまとめて処理したいときに使うことができます。リソースを必要なときだけ使うので、効率的です。
- 具体例:
毎晩、売上データを集計して、翌朝にレポートを自動で作成します。
作業が終わるとシステムが自動的に停止するので、コストが無駄になりません。
マイクロサービスでの活用
1つの大きなアプリを作るのではなく、いくつかの小さな「サービス」(マイクロサービス)に分けて作ることができます。たとえば、認証サービス、通知サービス、検索サービスなどをそれぞれ独立して動かすことができます。
- 具体例:
商品を検索するサービス、ユーザーに通知を送るサービス、ログイン情報を管理するサービスを別々に作って動します。
必要なサービスだけアップデートできたり、負荷が高いサービスだけスケールアップしたりできるので、柔軟で効率的です。
Webアプリケーションのホスティング
Azure Container Appsを使うと、簡単にWebアプリケーションを公開できます。利用者が増えるときには自動でリソースを増やして対応し、少ないときはリソースを減らしてコストを抑えることができます。
- 具体例:
ブログサイトやECサイトを作って、Azure Container Appsで動かします。ユーザーのアクセス数に合わせて、自動で対応できるので便利です。
IoTやメッセージ処理に活用
IoTデバイスやメッセージキューからのデータを受け取って処理するアプリケーションを作るのにも最適です。
- 具体例:
センサーが送るデータをリアルタイムで処理し、異常があれば通知されます。必要なときだけ動き、使わないときは停止するのでコストがかかりません。
まとめ
本記事では、Azure Container Appsの基本的な定義や特徴、ユースケース、主要機能、他のAzureコンテナサービスとの比較、料金体系について解説しました。
Azure Container Appsは、サーバーレスアーキテクチャでのマイクロサービスやイベント駆動型アプリケーションの構築に最適なプラットフォームです。シンプルな操作でコンテナアプリケーションをデプロイでき、柔軟なスケーリング機能と高度なセキュリティを備えているため、今後のクラウドネイティブ開発において重要な役割を果たすでしょう。
ぜひAzure Container Appsを活用して、次世代のアプリケーションを構築し、効率的でスケーラブルなシステム運用を実現してください。
本記事が皆様のお役に立てたら幸いです。