こんにちは、
AzureFunctionのホスティングプランで無知が原因でここ数年のうちに、
ほぼすべてを試すことになってしまったので共有します。
これから試す皆さんの参考になればうれしいです。
対象読者
AzureFunctions をこれから触りはじめるエンジニア向け。
「まずは AzureFunctions で API をサクッと公開したい。でもホスティングプランが色々あって違いがわからない…」という方を想定しています。
この記事でわかること
-
Azure Functions の主要 4 プランのイメージと違い:
- 従量課金
- Flex従量課金
- Functions Premium
- App Service プラン
-
「サーバーレス」と「(常時)サーバーあり」の違い
-
「サーバーレス」のコールドスタートについて
-
スロット (Deployment Slots) の有無と使いどころ
-
Python 関数アプリを例にした費用シミュレーションとプラン選択フロー
サーバーレスって何?
まずここが分かれば 8 割理解できます。
サーバーレス = サーバーをずっと借りっぱなしにせず、イベント発生時だけクラウドから“ちょっとだけサーバー(=コンピュート)”を借りて関数を実行するモデル です。使った時間・リソースぶんだけ課金されます。
- 従来: 常時 VM を起動 → 24h 分の料金がかかる。
- サーバーレス: イベントが来た瞬間だけコンピュートを割り当て → 実行時間ぶんだけ課金。
コールドスタートについて
この「その場で割り当てる」準備段階に要する時間が コールドスタート です。
コンテナ割当・依存ライブラリ読み込み・接続確立などが走るため、初回リクエストは遅くなります。(最長で数秒程度)
コールドスタート対策の基本
- 初回アクセス前にウォームアップ リクエストを送る
- 常時インスタンスを確保できるプラン (Premium / App Service) を使う
- Python の重いライブラリを遅延ロードにする
コールドスタートは毎リクエストは発生しません。
コールドスタートが発生するのは、以下のような場合です。
- しばらく放置(20分間)し、割り当て解除される
- 負荷増による動的スケールなどで、新たにインスタンスが割り当てられる
これら以外の場合は、コールドスタートによる遅延は発生しません。
4 プランざっくり比較
プラン | サーバーレス? | スケール方式 | コールドスタート | VNet | スロット | 課金の主軸 | 主な用途 |
---|---|---|---|---|---|---|---|
従量課金 (Consumption) | ✔ 0→N | イベント駆動 | あり (5〜20s 目安) | ❌ | ❌ | 実行回数 + GB-秒 | 無料枠で試す / 低頻度ジョブ |
Flex従量課金 | ✔ 0→N | 高速イベント駆動 + サイズ指定 | あり (短縮傾向) | ✔ | ❌ | 実行数 + GB-秒 (+任意ウォーム) | メモリ要求柔軟 / より高速、コールドスタート対策あり / 将来拡張 |
Functions Premium (EP1-3) | ✖ 常時1+台 | イベント駆動で自動バースト | ほぼ解消 (Always Ready) | ✔ | ✔ (最大20) | コア&メモリ秒 (固定ベース+) | レイテンシ厳しめ API / 企業向け |
App Service プラン (P1v3等) | ✖ | 手動 or ルールベース (HTTP 自動※Functions不可) | ほぼ解消 | ✔ | ✔ (最大20) | インスタンス常時課金 | WebApps とリソース共有 |
表の値は執筆時点の一般的な目安です。リージョン/更新で変わることがあります。必ず公式ドキュメントと料金計算ツールで確認してください。
従量課金 (Consumption) プラン
最大のメリットは「無料枠」 です!
- 月あたり 100 万リクエストまで無料
- 400,000 GB-秒 (メモリ時間) 無料
- クレカを気にせず PoC / ハッカソン を始められる
その他特徴:
- イベントが無いときはインスタンス 0(コスト 0)。
- Python で小さな関数をテストするのに最適。
- 上限メモリは ~1.5GB 程度(重い ML モデルは厳しい)。
- VNet 直結不可(外部 DB にプライベート接続したい場合は別プラン)。
コールドスタートに注意
初回アクセスで数秒〜十数秒待たされるケースは珍しくありません。ユーザー向け本番 API で厳しい SLA (例: p95 < 1s) があるなら Flex か Premium を検討してください。
Flex従量課金プラン
「無印従量課金の弱点をかなり解消した“ほぼ上位互換”」と考えると理解しやすい最新世代プランです。
主な強化ポイント:
- メモリサイズを細かく選べる (最大 16GB 級) → Python + 大型モデルも可。
- VNet 統合対応 → 社内システム/DB へのプライベート接続。
- スケールアウト(水平拡張)が速い設計(高スループットなイベント駆動)。
- 大規模スケール (公称最大 1000 インスタンス規模オプション)。
- ウォーム構成でコールドスタートを一定程度低減可能。
費用モデル:基本は従量課金と同じく 実行回数 + GB-秒。メモリを増やすと単価が上がるので、必要メモリを見極めることが重要です。
Flex = とりあえずこちらを第一候補に
無料枠重視の超小規模案件を除けば、新規開発は Flex スタートで将来の拡張に備えるのがおすすめです。
Functions Premium プラン (Elastic Premium / EP1-EP3)
コールドスタートが致命的 / VNet 必須 / エンタープライズ要件 ならこのプラン。
特徴:
- Always Ready (常時起動) インスタンスで初回遅延をほぼ解消。
- イベントに応じて 自動バースト(SKU と設定で上限可変)。
- 複数の Function App を同じ Premium プランで共有できるので部門間でコスト集約可能。
- 長時間実行や高スループット、VNet 統合、プライベートアクセス、拡張タイムアウトなど上位機能。
- デプロイ スロット (最大 20) により Blue/Green, A/B テストが簡単。
課金イメージ:
- 実行回数ではなく 確保したコア秒 + メモリ秒 (最低 1 インスタンス分) がベース。
- バーストで増えた分は追加課金。
Premium は常時課金
アクセスが少ないと割高です。予測トラフィックが小さい場合は Flex で十分か再評価しましょう。
App Service プラン (Dedicated / P1v3 など)
App Service はもともと Web App / API App 向けの PaaS です。Functions も配置できますが注意点があります。
重要な注意点
- App Service Premium の プラットフォーム自動スケール (HTTP ベース) は Functions を同じプランに含めると無効。
- Functions のイベントドリブンスケールは使えません。スケールが必要なら Azure Monitor のルールベース Autoscale を自分で構成する必要があります。
使う場面
- 既存の Web App とコンピュートを共有したい(インスタンスをまとめて管理)。
- 常時固定負荷があり、サーバーレスでの起動/停止のオーバーヘッドが不要。
- 複数アプリ (Web+API+Functions) を同一インフラ領域で管理したい。
スロット
Premium レベル以上で 最大 20 スロット。Web と Function を同じスロット戦略で扱えるのでリリース管理が楽。
動的スケールが欲しいなら App Service プランは選ばない
Functions Premium または Flex を検討してください。
デプロイ スロット早見
プラン | スロット対応 | 用途例 |
---|---|---|
従量課金 / Flex | ✖ (別リソースでステージング) | 本番・ステージングを丸ごと複製 |
Functions Premium | ✔ 最大20 | Blue/Green / Canary / 切替テスト |
App Service | ✔ 最大20 | Web + Function 同期デプロイ |
コスト感シミュレーション (概算, Japan East 参考, 2025-07)
為替や割引で変わるため必ず公式料金計算ツールで再確認してください。以下は考え方の例です。
計算の基本式
- 従量課金 / Flex:
料金 ≒ 実行回数課金 + (割当メモリGB × 実行秒 × 単価) − 無料枠控除 - Premium:
料金 ≒ (vCPU × 単価 + メモリGB × 単価) × 稼働秒 + バースト追加 - App Service:
料金 ≒ インスタンス月額 × インスタンス数 (+ スケール追加)
Azure Functions / App Service 価格早見表 (2025-07時点)
Azure Functions (公式価格ページ参照)
従量課金 (Consumption)
- 実行時間: $0.000016 / GB-秒(約0.00256円 / GB-秒)
- 実行回数: $0.20 / 100万実行(約32円 / 100万実行)
- 無料枠: 100万実行 + 400,000 GB-秒 / 月
Flex 従量課金 (プレビュー価格例)
- 無料枠: 25万実行 + 100,000 GB-秒 / 月 (オンデマンド分)
- Always‑Ready インスタンス分は別課金 (GB-秒)
Functions Premium (秒課金: vCPU & メモリ)
- 公開レート例: vCPU $124.10/月(約19,856円/月)
- メモリ $8.906/GB/月(約1,425円/GB/月)
- EP1(1vCPU, ~3.5GB) → $124.10 + (3.5×8.906) ≒ $155/月(約24,834円/月)
- EP2(2vCPU, ~7GB) → 約 $310/月(約49,667円/月)
- EP3(4vCPU, ~14GB) → 約 $621/月(約99,334円/月)
- ※少なくとも 1 インスタンス常時課金。
App Service Premium v3 (P1v3等)
(日本東リージョン, 2025-07 Azureポータル表示)
- P0v3: 約14.09円/時(約10,288円/月)
- P1v3: 約24.07円/時(約17,571円/月)
無料枠を最大活用するなら従量課金。ただしメモリ/VNet/コールドスタート要件が出てきたら Flex への移行を検討 しましょう。Flex は「ほぼ上位互換」であり、将来 Premium へスケールアップする際も考え方が近く移行しやすいです。
注意
- 最新価格はAzure公式価格ページ参照。為替レートにより大きく変動します。
- 実際の料金は課金開始日・無料枠超過量・インスタンス種別・構成によって異なります。
- 上記金額帯は “ざっくり感覚値” です。実際は MSDN / EA / CSP 契約、予約割引、Azure Savings プラン等で大きく変動します。
プラン選定フローチャート
AIに作ってもらいましたので、参考程度に・・
速攻チェックリスト (Python プロジェクト用)
質問 | Yes | No | 推奨プラン |
---|---|---|---|
無料でまず触りたい? | ✔ | 従量課金 | |
2GB 超のライブラリ使う? | ✔ | Flex / Premium | |
低レイテンシ必須? | ✔ | Premium | |
社内 DB に VNet で繋ぐ? | ✔ | Flex / Premium / AppSvc | |
Web アプリと同じインフラで一括管理? | ✔ | App Service |
よくある質問 (FAQ)
Q. コールドスタートを避けるには?
A. Premium/App Service で Always Ready を有効化する。Flex ならウォーム構成を検討。Cron で定期的に呼び出す方法もある。
Q. 従量課金から Premium に途中変更できる?
A. 同 OS なら CLI の az functionapp update --plan
で移行可。OS が異なる場合は再デプロイ。
Q. Python で重いライブラリ(Torch/Pandas)を使うには?
A. Flex 以上を推奨。Consumption はメモリ不足/OOM になりやすい。
参考資料
おわりに
Azure Functions は「ちょっとした処理を API 化」するのに最適ですが、ホスティングプラン選びしだいでパフォーマンスもコストも大きく変わります。
特に最近は Flex従量課金 の登場で選択肢が広がりました。
まずは無料枠で動かし、要件が固まったら
Flex → Premium
と段階的に拡張していくのがおすすめです。
ご意見・修正提案はコメントでぜひ!