サーバーレス API
サーバー管理ゼロで自動スケールする Web/API 構成。CDN(WAFエッジ)+Object Storage のフロントと、API Gateway+Functions+NoSQL Database のバックを OCI のマネージドサービスだけで組む。
このパターンは?
サーバーを1台も持たずに Web/API を構築する、OCI でのサーバーレス構成。アイドル時はほぼ無料(Functions は GB 秒課金で実行時のみ、NoSQL はオンデマンド)、急なスパイクにも自動でスケールします。AWS の「CloudFront+S3/API Gateway+Lambda+DynamoDB」を、OCI の同等サービスに置き換えた形です。
構成
[ユーザー]
│ HTTPS
▼
CDN(WAFエッジポリシー) ──► Object Storage (SPA/静的サイト: HTML/CSS/JS)
│
│ /api/*
▼
API Gateway (JWTオーソライザー・レートリミット)
│
▼
Functions (ビジネスロジック / Fn Project)
│
▼
NoSQL Database (データ) ※ファイルは Object Storage、秘密情報は Vault
各コンポーネントの役割
- CDN + Object Storage: フロント(SPA/静的)を WAF エッジポリシーでキャッシュ・TLS 終端し、バケットは Private のまま PAR で配信
- API Gateway: API の玄関。JWT オーソライザー・レートリミット(PER_CLIENT)・CORS・ルーティングを集約
- Functions: ロジックをイベント実行。ステートレス・自動スケール(Fn Project ベース、コンテナイメージを OCIR から起動)
- NoSQL Database: 一桁ミリ秒・サーバーレスなデータストア(型付きスキーマ+SQL 風クエリ)
設計の勘所
状態は NoSQL Database / Object Storage に逃がし、Functions は小さく速く。コールドスタートが気になる箇所は Provisioned Concurrency で実行基盤を事前確保し、イメージを軽く保つ。
- 認証は JWT オーソライザー(IDCS / 外部 OAuth IdP の発行トークン)を API Gateway の玄関で検証し集約。独自ロジックが要るなら Functions オーソライザー
- NoSQL は アクセスパターン駆動で設計し、シャードキーを均等分散させて全件 SCAN を避ける(詳細)
- Functions から他サービスへの認証は リソースプリンシパルを使い、秘密情報は Vault の Secrets から実行時取得(鍵をコードや config に直書きしない)
- 非同期・重い処理は Queue でバッファし、Events で「オブジェクト作成 → Functions 起動」を疎結合に接着
レイヤ対応(AWS との置き換え)
サーバーレス API の各レイヤが、AWS と OCI でどのサービスに対応するかを押さえると設計・移行がスムーズです。
| レイヤ | AWS | OCI |
|---|---|---|
| 静的配信(エッジ) | CloudFront | CDN(WAF エッジポリシー) |
| 静的アセット保管 | S3 | Object Storage |
| API 受付 | API Gateway | API Gateway |
| ロジック実行 | Lambda | Functions(Fn Project) |
| データストア | DynamoDB | NoSQL Database |
| 認証 | Cognito + オーソライザー | JWT(IDCS) / Functions オーソライザー |
| 権限付与 | IAM 実行ロール | リソースプリンシパル + 動的グループ/ポリシー |
| 秘密情報 | Secrets Manager / Parameter Store | Vault(Secrets) |
| 非同期/イベント | SQS / EventBridge | Queue / Events |
| 監視/ログ | CloudWatch | Monitoring / Logging |
Well-Architected の観点
- コスト最適化: 従量課金・アイドル無料(Functions は GB 秒、NoSQL はオンデマンド、API Gateway はコール数)
- 運用上の優秀性: サーバー管理レス。デプロイメント仕様や関数を Resource Manager(Terraform)/ OpenAPI で IaC 化
- パフォーマンス効率: エッジ配信+自動水平スケール。NoSQL は一桁ミリ秒
- 信頼性: マネージドサービスの冗長性(API Gateway はリージョナルで複数 AD、NoSQL はリージョン内自動複製)を活用し、Queue でリトライ・退避
- セキュリティ: 玄関で認証集約、最小権限ポリシー、Vault による鍵管理、バケットは Private
よくある落とし穴
- Functions に状態を持たせる/イメージを巨大化させてコールドスタートを悪化させる
- NoSQL を RDB 感覚で正規化し、シャードキーが偏ってホットシャードになる/全件 SCAN を多用する
- API Gateway のレートリミット未設定でバックエンド(Functions・DB)が過負荷になる
- 共有のために Object Storage バケットを Public に切り替える(一時共有は期限付き PAR が正解)
- API キー/パスワードを Functions の config やイメージに直書き(リソースプリンシパル+Vault を使う)
API Gateway のエンドポイント種別(パブリック/プライベート)は作成後に変更できないため最初に決める。Functions の**最大実行時間は 300 秒(5 分)**で、メモリは離散値(128/256/512/1024/2048 MB)。長時間処理は Queue + 分割か、Container Instances / OKE といった常駐基盤を検討する。
メトリクス/ログは Monitoring(oci_apigateway / oci_faas 名前空間)と Logging、権限は IAM の動的グループ+ポリシーで最小化する。
OCI Pattern
サーバーレス APIを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
cost
比較で見る軸
クラウド: OCI / 難易度: intermediate / 関連サービス: 10件
導入後に効く点
サーバー管理ゼロで自動スケールする Web/API 構成。CDN(WAFエッジ)+Object Storage のフロントと、API Gateway+Functions+NoSQL Database のバックを OCI のマネージドサービスだけで組む。
先に潰すリスク
パターンをそのまま写すのではなく、可用性、権限、ネットワーク境界、運用手順を自分の要件に合わせる必要がある。
- クラウド
- OCI
- 難易度
- intermediate
- 関連サービス
- 10件
- 設計柱
- cost / operational / performance / reliability / security
判断チェックリスト
- 自社の用途が「cost / operational」に近いか確認する。
- 強みである「サーバー管理ゼロで自動スケールする Web/API 構成。CDN(WAFエッジ)+Object Storage のフロントと、API Gateway+Functions+NoSQL Database のバックを OCI のマネージドサービスだけで組む。」が本当に評価軸になるか確認する。
- 注意点の「パターンをそのまま写すのではなく、可用性、権限、ネットワーク境界、運用手順を自分の要件に合わせる必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。