0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AzureFunctions のホスティングプランやサーバーレスを解説する(従量課金 / Flex従量課金 / Functions Premium / App Service)

Posted at

こんにちは、
AzureFunctionのホスティングプランで無知が原因でここ数年のうちに、
ほぼすべてを試すことになってしまったので共有します。
これから試す皆さんの参考になればうれしいです。

対象読者
AzureFunctions をこれから触りはじめるエンジニア向け。
「まずは AzureFunctions で API をサクッと公開したい。でもホスティングプランが色々あって違いがわからない…」という方を想定しています。

この記事でわかること

image.png

  • Azure Functions の主要 4 プランのイメージと違い:

    1. 従量課金
    2. Flex従量課金
    3. Functions Premium
    4. 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
と段階的に拡張していくのがおすすめです。

ご意見・修正提案はコメントでぜひ!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?