【PCD】WEB問題集:クラウドネイティブアプリの設計編

WEB問題集

PCD#1(designing)

あなたのチームはステートレスな REST API を構築しており、HTTPS、カスタムドメイン、リクエスト単位課金で、ゼロから毎秒数千リクエストまで自動スケールさせたいと考えています。コードはコンテナイメージとして配信されます。どの Google Cloud サービスを採用すべきですか。

正解:B

正解の根拠

Cloud Run はコンテナイメージをそのままデプロイでき、ゼロから水平スケール、HTTPS、カスタムドメイン、リクエスト単位課金(vCPU 秒・メモリ秒)をネイティブにサポートします。ステートレスな REST API の要件すべてに合致します。

要件Cloud Run の対応
コンテナ配信OCI イメージ直接デプロイ
ゼロスケールmin-instances=0 対応
HTTPS と独自ドメインマネージド証明書を自動発行
課金単位リクエスト処理時間に応じた秒課金

不正解の理由

  • A: App Engine Standard はコンテナではなく言語ランタイム前提で、コンテナ配信要件に合いません。
  • C: MIG は VM 単位の課金とウォームアップが必要で、リクエスト単位課金にはなりません。
  • D: Cloud Functions 1st gen はソース関数ベースであり、任意のコンテナイメージ実行はサポートされません。

参考:Cloud Run Docs

PCD#2(designing)

プロデューサーサービスからイベントを発行し、複数のコンシューマーへファンアウト配信したいと考えています。要件は at-least-once 配信、キー単位の順序保証、再試行とデッドレターキューのマネージド管理です。どのサービスを選ぶべきですか。

正解:A

正解の根拠

Pub/Sub は at-least-once 配信、ordering keys によるキー単位順序保証、dead-letter topic と retry policy をマネージドで提供します。複数サブスクリプションでファンアウト構成が可能です。

機能提供方法
ファンアウト1 トピックに複数サブスクリプション
順序保証ordering key(同一リージョン)
DLQdead_letter_topic を指定

不正解の理由

  • B: Cloud Tasks は単一ワーカーへのタスク投入用で、複数コンシューマーへのファンアウト配信に向きません。
  • C: Cloud Scheduler はクーロン起動のジョブスケジューラで、イベント配信機構ではありません。
  • D: Firestore トリガーは DB 書込起点で、汎用 Pub/Sub のファンアウト要件に応えられません。

参考:Pub/Sub Ordering

PCD#3(designing)

モバイルアプリのユーザープロファイルドキュメントを格納する必要があります。要件は低レイテンシ読取、モバイルクライアントへのリアルタイム同期、オフラインキャッシュ対応です。最も適したデータベースはどれですか。

正解:C

正解の根拠

Firestore Native モードは、モバイル/ウェブ SDK によるリアルタイムリスナー、オフラインキャッシュ、強整合な単一ドキュメント読取をネイティブに提供します。ユーザープロファイルなどスキーマ柔軟なドキュメントモデルに最適です。

要件Firestore の機能
リアルタイム同期onSnapshot リスナー
オフラインSDK のローカル永続化
低レイテンシ読取マルチリージョン自動レプリケーション

不正解の理由

  • A: Cloud SQL は OLTP RDB でモバイル SDK リアルタイム同期とオフラインキャッシュ機構を持ちません。
  • B: Spanner はグローバル強整合 RDB が強みで、モバイル直結 SDK の用途では Firestore に劣ります。
  • D: Bigtable は大規模時系列ワイドカラム DB で、ドキュメント同期 SDK を提供しません。

参考:Firestore Realtime

PCD#4(designing)

Cloud Run で稼働するアプリケーションが、Cloud SQL データベースへインターネットを介さずプライベートにアクセスする必要があります。どの構成を採用すべきですか。

正解:C

正解の根拠

Cloud Run の Direct VPC Egress(または Serverless VPC Access)と Cloud SQL のプライベート IP(VPC ピアリング)を組み合わせ、Cloud SQL Auth Proxy または直接接続を使うことで、トラフィックは Google ネットワーク内に留まりインターネットを通りません。IAM 認証にも対応します。

選択肢判定
A不正解
B不正解
C正解
D不正解

不正解の理由

  • A: Cloud NAT はアウトバウンドの公衆 IP 経路で、プライベート要件と方向が逆になります。
  • B: Authorized Networks 方式でも通信はパブリック IP 経由で公衆網を通過します。
  • D: Cloud Run はサーバーレスで VPN ピアの片端になれず、Cloud VPN の構成対象外です。

参考:Cloud SQL + Cloud Run

PCD#5(designing)

GKE 上のマイクロサービスを Blue/Green 戦略でデプロイし、エラー率が 1% を超えた場合に自動でロールバックさせたい場合、ベストプラクティスに合致する設計の組み合わせを 2 つ選んでください。

(2つ選択)

正解:A, B

正解の根拠

Cloud Deploy は GKE への Blue/Green/Canary 戦略をネイティブにサポートし、Skaffold によるレンダリングと自動ロールバックを提供します(A)。Cloud Monitoring メトリクスベースのアラートをプロモーション制御に組み込むことで、エラー率超過時の自動ロールバックを実現できます(B)。Cloud Build と統合した GitOps パイプラインが構築可能です。

役割サービス
ビルドCloud Build
デプロイ戦略Cloud Deploy(Blue/Green)
シグナルCloud Monitoring アラート

不正解の理由

  • C: Cloud Functions 単体ではマルチステージのプログレッシブデリバリを統制できません。
  • D: Cloud Composer はワークフロー指向で、デプロイ戦略の自動切替には設計が不適合です。
  • E: 手動 kubectl では Blue/Green と自動ロールバックを実現する仕組みが備わりません。

参考:Cloud Deploy 戦略