サーバーレス API
サーバー管理ゼロで自動スケールする Web/API 構成。Front Door+Blob のフロントと、API Management+Functions+Cosmos DB のバックを Azure のマネージドサービスで組む。
このパターンは?
サーバーを1台も持たずにWeb/API を構築する、Azure での主流構成。アイドル時はほぼ無料、急なスパイクにも自動でスケールします。AWS の「CloudFront + S3 / API Gateway + Lambda + DynamoDB」を、Azure の同等サービスに置き換えた形です。
構成
[ユーザー]
│ HTTPS
▼
Front Door / CDN ──► Blob Storage (静的Webサイト: HTML/CSS/JS)
│ ※WAF・エッジキャッシュ・SSL終端
│ /api/*
▼
API Management (認証・流量制限・変換)
│
▼
Azure Functions (ビジネスロジック)
│
▼
Cosmos DB (データ) ※ファイルは Blob、認証は Entra ID
各コンポーネントの役割
- Front Door / CDN + Blob Storage: フロント(SPA/静的)を静的Webサイト ホスティングで公開し、エッジからWAF・キャッシュ・SSL終端付きで配信
- API Management: API の玄関。**サブスクリプションキー / OAuth2(JWT 検証)**による認証・レート制限ポリシー・リクエスト変換・キャッシュ
- Functions: ロジックをイベント実行。ステートレス・自動スケール。Consumption(従量)プランならアイドル時は課金ゼロ
- Cosmos DB: 一桁ミリ秒・サーバーレス対応の分散 NoSQL データストア
設計の勘所
状態は Cosmos DB / Blob Storage に逃がし、Functions は小さく速く。コールドスタートが気になる箇所は Premium プラン の**常時稼働インスタンス(事前ウォーム)**で抑えます。
- 認証は Microsoft Entra ID(詳細)+ API Management の
validate-jwtポリシーで玄関に集約 - Cosmos DB はアクセスパターン駆動で設計し、パーティションキーを慎重に選ぶ(詳細)
- 非同期処理は Service Bus(キュー/トピック)や Event Grid(イベント駆動)を挟み、Functions のトリガー/バインディングで受ける
| レイヤ | AWS | Azure | Azure での要点 |
|---|---|---|---|
| エッジ/CDN | CloudFront | Front Door / CDN | WAF・エニーキャスト・ヘルスプローブ |
| 静的ホスト | S3 | Blob Storage(静的Web) | $web コンテナへ配置 |
| API ゲートウェイ | API Gateway | API Management | validate-jwt・レート制限ポリシー |
| 関数実行 | Lambda | Functions | トリガー/バインディングで結合 |
| NoSQL | DynamoDB | Cosmos DB | RU/秒 または サーバーレス課金 |
| 認証/認可 | Cognito / IAM | Entra ID + RBAC | マネージドIDで資格情報レス |
| 監視 | CloudWatch | Azure Monitor | Application Insights で分散トレース |
Well-Architected の観点
- コスト最適化: Functions Consumption と Cosmos DB サーバーレスで従量課金・アイドルほぼ無料
- 運用上の優秀性: サーバー管理レス・Bicep / ARM / Terraform で IaC デプロイ
- パフォーマンス効率: Front Door のエッジ配信+ Functions / Cosmos DB の自動スケール
- 信頼性: マネージドサービスの冗長性と Cosmos DB のマルチリージョンを活用
サービス間の認証
Functions から Cosmos DB や Blob へのアクセスは、接続文字列ではなく**マネージド ID + RBAC(データ プレーン ロール)**で行うとキー管理が不要になります。秘密値が避けられない場合は Key Vault 参照に寄せます。
よくある落とし穴
- Functions に状態を持たせる/巨大化させる(コールドスタートとスケール阻害の原因)
- Cosmos DB を RDB 感覚で正規化し、パーティション横断クエリを多用して RU を浪費
- API Management のレート制限/クォータ未設定でバックエンドが過負荷
- Consumption プランの従量スケールの上限を見落とし、大量同時実行で詰まる
メトリクス/ログ/分散トレースは Azure Monitor(Application Insights)、権限は Entra ID + RBAC で最小化します。
Azure Pattern
サーバーレス APIを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
cost
比較で見る軸
クラウド: Azure / 難易度: intermediate / 関連サービス: 7件
導入後に効く点
サーバー管理ゼロで自動スケールする Web/API 構成。Front Door+Blob のフロントと、API Management+Functions+Cosmos DB のバックを Azure のマネージドサービスで組む。
先に潰すリスク
パターンをそのまま写すのではなく、可用性、権限、ネットワーク境界、運用手順を自分の要件に合わせる必要がある。
- クラウド
- Azure
- 難易度
- intermediate
- 関連サービス
- 7件
- 設計柱
- cost / operational / performance / reliability
判断チェックリスト
- 自社の用途が「cost / operational」に近いか確認する。
- 強みである「サーバー管理ゼロで自動スケールする Web/API 構成。Front Door+Blob のフロントと、API Management+Functions+Cosmos DB のバックを Azure のマネージドサービスで組む。」が本当に評価軸になるか確認する。
- 注意点の「パターンをそのまま写すのではなく、可用性、権限、ネットワーク境界、運用手順を自分の要件に合わせる必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。