TL

サーバーレス API

サーバー管理ゼロで自動スケールするWeb/API構成。Cloud CDN+Cloud StorageのフロントとAPI Gateway+Cloud Run+Firestoreのバックを、Google Cloud のマネージドサービスで構成する。

中級コスト最適化運用上の優秀性パフォーマンス効率信頼性

このパターンは?

サーバーを1台も持たずにWeb/APIを構築する、Google Cloud で主流の構成。アイドル時はほぼ無料(リクエストが来た分だけ課金)、急なスパイクにも自動でスケールします。

AWS の「CloudFront+S3+API Gateway+Lambda+DynamoDB」をそのまま Google Cloud に置き換えると、Cloud CDN+Cloud Storage+API Gateway+Cloud Run(または Cloud Functions)+Firestore になります。

構成

[ユーザー]
   │ HTTPS
   ▼
外部 HTTP(S) ロードバランサ + Cloud CDN
   │
   ├──► Cloud Storage バケット (SPA/静的サイト: HTML/CSS/JS)
   │
   │ /api/*  (URL マップでパスルーティング)
   ▼
API Gateway (認証・レート制限・APIキー)
   │
   ▼
Cloud Run (ビジネスロジック / コンテナ)
   │
   ▼
Firestore (データ)    ※ファイルは Cloud Storage、認証は Identity Platform

各コンポーネントの役割

  • Cloud CDN + Cloud Load Balancing + Cloud Storage: フロント(SPA/静的)をグローバルエッジでキャッシュ配信。外部 HTTP(S) ロードバランサのバックエンドバケットとして公開し、Google マネージド SSL 証明書で HTTPS 化
  • API Gateway: APIの玄関。OpenAPI 定義で認証(JWT / Firebase / APIキー)レート制限(quota)・ルーティングを集約
  • Cloud Run: ロジックをコンテナで実行。ステートレス・リクエスト数に応じて0からN台へ自動スケール。軽量関数なら Cloud Functions でも可
  • Firestore: ミリ秒応答・サーバーレスなドキュメント DB。プロビジョニング不要で自動スケール

設計の勘所

サーバーレスはステートレス前提

状態は Firestore / Cloud Storage に逃がし、Cloud Run のコンテナは小さく速く。コールドスタートが気になる箇所は**最小インスタンス数(min-instances)**を1以上にして常駐させます。

  • 認証は Identity Platform(Firebase Authentication) で発行した JWT を、API Gateway 側で検証して玄関集約
  • Firestore はアクセスパターン駆動でコレクション設計(詳細)。クエリは複合インデックス前提
  • 非同期処理は Pub/Sub / Eventarc を挟み、Cloud Run をイベント駆動で起動
  • フロントとバックを同一ロードバランサにまとめ、/ は Cloud Storage バケット、/api/* は API Gateway へ URL マップで振り分けると CORS や独自ドメイン管理が楽

サービス対応(AWS との比較)

レイヤAWSGoogle Cloud
CDN / エッジ配信CloudFrontCloud CDN
静的ホスティングS3Cloud Storage(バックエンドバケット)
L7 ルーティング / TLSCloudFront ビヘイビア外部 HTTP(S) ロードバランサ(URL マップ)
API 管理API GatewayAPI Gateway / Apigee
関数 / 実行基盤LambdaCloud Run / Cloud Functions
NoSQL データDynamoDBFirestore
認証CognitoIdentity Platform(Firebase Auth)
非同期メッセージSQS / EventBridgePub/Sub / Eventarc
権限付与IAM ロールCloud IAM サービスアカウント
監視 / ログCloudWatchCloud Monitoring / Logging

Cloud Run と Cloud Functions の使い分け

観点Cloud RunCloud Functions
デプロイ単位コンテナイメージ(任意の言語/ランタイム)関数コード(対応ランタイム)
向いている用途API・Web アプリ・既存コンテナの移行単機能のイベント処理・グルー処理
同時実行1コンテナで複数リクエストを並行処理可1インスタンス1リクエスト(第2世代はRun基盤)
移植性高い(コンテナ標準)中(プラットフォーム寄り)

Well-Architected の観点

  • コスト最適化: リクエスト課金・アイドルは0台(Cloud Run)/読み書き従量(Firestore)でアイドルほぼ無料
  • 運用上の優秀性: サーバー管理レス・Terraform / gcloud でデプロイを標準化
  • パフォーマンス効率: Cloud CDN のグローバルエッジ配信+Cloud Run の自動スケール
  • 信頼性: マネージドサービスの冗長性(Firestore はマルチリージョン構成も選択可)を活用

よくある落とし穴

アンチパターン
  • Cloud Run コンテナにローカルファイルで状態を持たせる(再起動・スケールで消える)
  • Firestore を RDB 感覚で正規化し、コレクション全走査クエリを多用
  • API Gateway 側にレート制限(quota)を設定せず、バックエンドや Firestore が過負荷
  • 公開不要なバケット/サービスを allUsers に公開してしまう
コールドスタートと最小インスタンス

レイテンシ重視の API は Cloud Run の min-instances を1以上にして常駐させると初回応答が安定します。ただし常駐分は課金されるため、トラフィック特性に応じて調整してください。

メトリクス/ログは Cloud Monitoring / Logging に自動集約され、権限は Cloud IAMサービスアカウントで最小権限化します(Cloud Run → Firestore のアクセスはサービスアカウントの IAM ロールで制御)。

Google Cloud Pattern

サーバーレス APIを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

cost

比較で見る軸

クラウド: Google Cloud / 難易度: intermediate / 関連サービス: 8件

導入後に効く点

サーバー管理ゼロで自動スケールするWeb/API構成。Cloud CDN+Cloud StorageのフロントとAPI Gateway+Cloud Run+Firestoreのバックを、Google Cloud のマネージドサービスで構成する。

先に潰すリスク

パターンをそのまま写すのではなく、可用性、権限、ネットワーク境界、運用手順を自分の要件に合わせる必要がある。

数字・仕様の読み方
クラウド
Google Cloud
難易度
intermediate
関連サービス
8件
設計柱
cost / operational / performance / reliability

判断チェックリスト

  • 自社の用途が「cost / operational」に近いか確認する。
  • 強みである「サーバー管理ゼロで自動スケールするWeb/API構成。Cloud CDN+Cloud StorageのフロントとAPI Gateway+Cloud Run+Firestoreのバックを、Google Cloud のマネージドサービスで構成する。」が本当に評価軸になるか確認する。
  • 注意点の「パターンをそのまま写すのではなく、可用性、権限、ネットワーク境界、運用手順を自分の要件に合わせる必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

costoperationalperformancereliabilityCloud CDNCloud Load BalancingCloud StorageAPI Gateway / Apigee