【Microsoft Azure】Azure Functionsのプラン選択で最適なソリューションを見つける方法(パート1)

目次
こんにちは、MS開発部の渋谷です。
この記事を読んでいる方は、Azure Functionsのプラン選択やAzure OpenAIとの連携方法について悩んでいるのではないでしょうか? サーバーレスアプリケーションの開発やデプロイを効率的に行うためには、自身のニーズに合ったプランを選ぶことが非常に重要です。適切なプランを選択することで、コストを最適化しながら、高性能でスケーラブルなアプリケーションを構築できます。
Azure Functionsには、従量課金プラン、プレミアムプラン、専用(Dedicated)プランなど、複数のホスティングオプションが提供されており、それぞれにメリットとデメリットがあります。また、これらのプランを選択する際にAzure OpenAIと組み合わせることで、AIを活用した高度な機能を実装することも可能です。
本記事では、全2回のシリーズのパート1として、Azure Functionsの各プランの特徴や選択のポイントを詳しく解説します。次回のパート2では、Azure OpenAIとの連携について詳しくご紹介します。プロジェクトやビジネスに最適なプランとソリューションを見つけるための一助となれば幸いです。
(※本記事は2025年2月時点での情報を元にしています。最新情報はマイクロソフト公式ドキュメントをご確認ください。)Azure Functions の概要
Azure FunctionsはAzureのPaaS製品の中でも特に、サーバーレスソリューションに分類される製品で、ユーザはアプリケーションのコードのみに集中することができます。
アプリケーション実行のための必要なリソースはAzureによって管理されているため、サーバーのデプロイや管理について心配する必要はなくなります。
Azure Functionsでは C#、Java、JavaScript、Pythonといった言語での開発をネイティブにサポートし、トリガーやバインディングといった他のAzure製品との統合を追加のコード無しで実現する機能もあり、比較的軽量な処理であれば非常に便利なソリューションです。
一方で、Azure Functionsにはいくつかのホスティングオプションがあり、こちらの選択には迷われる方も多いのではないかと思います。
そこでここからは Azure Functions のホスティングオプションについて解説します。
Azure Functions のホスティングオプション
Functions で提供しているホスティングプランの概要は以下の通りです。
Consumption(従量課金)プラン | Pay-as-you-goで利用可能な基本的なプラン。インスタンスの数は自動的にスケールアウトされ、料金は関数が実行された時間のみ課金される。 |
Premium プラン | 従量課金プランよりも強力なインスタンスが必要なワークロードや、コールドスタートの回避、仮想ネットワークとの接続が必要な場合に利用するプラン。料金は利用したインスタンス数に応じて課金される。 |
専用プラン | App Service Planを利用してFunctionsを実行するプラン。 |
Flex Consumption プラン | 2024年に発表された新しいプラン。より高速な水平スケールや仮想ネットワークのサポートを従量課金制で実現。 |
コンテナーアプリ | Azure Container Appsを利用して Functionsを実行するプラン。コンテナ化されたFunctionsアプリを実行する場合の新しい選択肢。 |
多くの場合、Consumption(従量課金)プランから考え、ユースケースに応じてほかのプランを検討するというアプローチをとられると思います。ここからは、各プランの特徴について解説します。
Consumption(従量課金)プラン
Consumption(従量課金)プランは、Azure Functionsで利用可能な基本的なプランです。真の「サーバーレス」ホスティングを実現する既定のホスティングプランで、関数を実行するインスタンスは受信イベントの数に応じて自動的にスケーリングされます。
また、このプランの利用料金は「関数の実行時間と実行回数」によって決められます。
ちなみに、Consumption(従量課金)プランでは、Azureサブスクリプション単位で毎月の無料実行回数が提供されますので、初期費用を抑えて開発をスタートすることができるユニークな点もあります。
- OSサポート:Windows、Linux(コンテナは非対応)
- タイムアウト期間:最大10分
- スケールアウト:イベントドリブンにホストのインスタンスがスケール
- 最大インスタンス数:Windows 200、Linux 100
- コールドスタート:あり
- 仮想ネットワークのサポート:なし
- 課金単位:関数が実行されている時間と実行回数に依存
Premium プラン
Premiumプランは、その名前の通りConsumption(従量課金)プランと比較してより高性能なインスタンスや機能を提供するプランです。
Consumption(従量課金)プランでは提供されなかったインスタンスのスケーリング管理の機能があり、需要に応じて自動スケーリングを行いながら、事前ウォーミングされたインスタンスを使いコールドスタートを回避するといった制御が可能となります。
また、仮想ネットワークへの接続もサポートされているため、閉域要件が存在するユースケースにも対応しています。
このプランの利用料金は「インスタンス全体にわたって割り当てられたコア秒数とメモリ」によって決められます。
なお、1つのPremiumプランにつき少なくとも1つのインスタンスは常に割り当てられている必要があるため、Consumption(従量課金)プランと比較して価格が高くなる場合が多くなります。
- OSサポート:Windows、Linux、Linuxコンテナ
- タイムアウト期間:無制限※
- スケールアウト:イベントドリブンにホストのインスタンスがスケール
- 最大インスタンス数:Windows 100、Linux 20-100
- コールドスタート:常時使用可能なインスタンスがサポート
- 仮想ネットワークのサポート:あり
- 課金単位:利用しているインスタンス数に応じた課金
※設定上の数値、スケールイン中やプラットフォームの更新中などはその限りではありません。
専用プラン
専用プランは、App Service Planのコンピューティングリソースを利用してFunctionsを実行するプランです。
スケーリングや利用料金はApp Service Planに準拠するため、料金の見積もりは比較的行いやすいです。
一方で、スケーリングのメカニズムはAzure Functions独自の高速なものではなく、App Service Planの機能を用いるため、需要の増減が大きいアプリや突発的な需要への対処が比較的難しくなります。
そのため、こちらのプランでは常に一定のリクエストが流れてくるようなユースケースで利用されることが多いです。
- OSサポート:Windows、Linux、Linuxコンテナ
- タイムアウト期間:無制限※
- スケールアウト:App Serviceのメカニズムに依存(自動スケールもしくは手動スケール)
- 最大インスタンス数:10-30(ASEの場合は100)
- コールドスタート:なし
- 仮想ネットワークのサポート:あり
- 課金単位:App Serviceと同様の請求
※設定上の数値、スケールイン中やプラットフォームの更新中などはその限りではありません。
Flex Consumption プラン
Flex Consumptionプランは、2024年に発表された新しい従量課金プランです。
語弊を恐れずに表現すると、従来の従量課金プランとPremiumプランの良いとこどりをしたようなプランと考えると最初はイメージしやすいと思います。
従量課金のモデルでありながら、仮想ネットワークへの接続がサポートされており、コールドスタートを回避するための常時使用可能なインスタンスを設定することも可能です。
また、コンカレンシー制御も比較的細かくできる点もユニークです。
2024年2月現在では東日本リージョン・西日本リージョンともに利用できませんが、今後Azure Functionsを利用する際のベースラインとなるようなプランになると思います。
- OSサポート:Linux(コンテナは非対応)
- タイムアウト期間:無制限※
- スケールアウト:関数ごとのスケーリング(トリガーによって方法は異なります)
- 最大インスタンス数:リージョン内で利用されている合計メモリ利用量にのみ制限される
- コールドスタート:常時使用可能なインスタンスをサポート
- 仮想ネットワークのサポート:あり
- 課金単位:関数を実行している時間や実行回数、常時使用可能なインスタンスの数に依存
※設定上の数値、スケールイン中やプラットフォームの更新中などはその限りではありません。
Container App
Container App によってホストされるAzure Functionsのプランになります。
コンテナ化された関数アプリを実行するため、カスタムライブラリをAzure Functionsのコードとともにパッケージ化することも可能になります。
また、Container AppにはGPUへの対応もされているため、関数アプリの中でGPUが必要となるような高負荷の処理能力が必要となる場合も選択肢となります。
Container Appによってホストされる場合でも、従来のAzure Functionsのプログラミングモデルを利用してイベントドリブンなアプリを作成可能です。
- OSサポート:Linuxコンテナのみ
- タイムアウト期間:無制限※
- スケールアウト:イベントドリブン
- 最大インスタンス数:300-1000
- コールドスタート:Container Appの「レプリカの最小数」の設定に依存
- 仮想ネットワークのサポート:あり(プライベートエンドポイントは無し)
- 課金単位:Container Appと同様の請求
※設定上の数値、スケールイン中やプラットフォームの更新中などはその限りではありません。
まとめ
本記事では、Azure Functionsのホスティングプランの特徴についてそれぞれ解説しました。
一言でサーバーレスコンピューティングといっても、様々な特徴があり、ユースケースやワークロードによって最適なプランを選択する必要があります。
Azure Functionsのホスティングプランの選択の一助になれば幸いでございます。
以上、最後までご愛読いただき
ありがとうございました。
お問い合わせは、
以下のフォームへご連絡ください。