難易度は Level 1(やさしめ)〜Level 5(難関) の5段階です。
GCP PCDのサンプル問題(本番形式・解説付き)
GCP PCD(Google Cloud・Professional Cloud Developer(PCD))の出題形式を、実際の問題で確かめられます。ここに掲載する5問は、無料の会員登録で解ける模試 第1回(55問)の冒頭から抜粋したオリジナル問題です。当サイトは全550問を本番CBT準拠の形式で収録しており、この5問はそのごく一部にあたります。
設問1
製造業の設計部門が、社内で長年使ってきた解析アプリケーションを Google Cloud へ移行する計画を立てている。このアプリケーションは専用のカーネルモジュールを読み込み、既存のライセンス持ち込み(BYOL)で稼働させる必要がある。運用チームは負荷に応じて台数を増減させ、ヘルスチェックに失敗した実行環境を自動で作り直したいと考えている。この要件を満たす実行基盤はどれか。
- Cloud Run services にコンテナをデプロイし、最小インスタンス数と最大インスタンス数を指定して稼働台数を増減させる
- GKE Autopilot クラスタに Deployment を作成し、ノードのプロビジョニングとアップグレードとビンパッキングを Google に受け持たせる
- Cloud Run jobs にタスク数と並列度を指定して登録し、Cloud Scheduler から定期的に起動する
- Compute Engine のマネージドインスタンスグループ(MIG)を作成し、オートスケーラーと自動修復(autohealing)の両方を組み合わせて構成する(正解)
解説
カーネルモジュールへの依存とライセンス持ち込み(BYOL)は Compute Engine を選ぶ合図であり、スケールと自己修復が要るという要件にはマネージドインスタンスグループ(MIG)のオートスケーラーと自動修復(autohealing)が対応する。Cloud Run services はコンテナのサーバーレス実行でありカーネルモジュールの読み込みを前提にできない。GKE Autopilot はノード管理を任せたい場合の選択肢で、OS・カーネルへの依存という要件には応えられない。Cloud Run jobs はリクエストを受けず実行して終了するバッチ型で、常駐する解析基盤の要件に合わない。
設問2
小売企業の会員サイトは、ログイン後のセッション情報をサーバー上のローカルファイルへ書き込む従来型のアプリケーションである。開発チームはこれをコンテナ化して Cloud Run へ載せたが、利用者が操作の途中で突然ログアウトする事象が報告された。アプリケーションの改修方針として適切なものはどれか。
- Cloud Run のセッションアフィニティを有効にし、同じクライアントを同じインスタンスへ届け続ける
- コンテナが待ち受けるポートを環境変数 PORT ではなく固定値に変更し、起動チェックの失敗を避ける
- セッションストアを Memorystore for Redis へ外出しし、インスタンスの外側で状態を保持させる(正解)
- ローカルディスクへの書き込みを続けたまま、リクエストタイムアウトを引き上げる
解説
Cloud Run のローカルディスクはインメモリ(tmpfs)扱いでインスタンス終了時に消えるため、セッションは Memorystore などの外部ストアへ外出しするのがリファクタリングの正解である。セッションアフィニティはベストエフォートで、スケールインやリビジョンの入れ替えが起きれば別のインスタンスに回されるため状態の保存手段にはならない。ポートは環境変数 PORT で待ち受けるのがコンテナの契約であり、固定値への変更は契約に反する。リクエストタイムアウトの引き上げは1リクエストの処理時間の上限を変えるだけで、インスタンスをまたぐ状態の消失は解決しない。
設問3
保険会社の見積もり API は Cloud Run で稼働しており、1リクエストの中でデータベースへ複数回クエリを投げる設計になっている。利用者からの応答が遅いという苦情が続き、担当者が構成を確認したところ、アプリケーションとデータベースが大陸をまたいで別々の場所に置かれていた。レイテンシが高い原因の説明として適切なものはどれか。
- リージョナル構成のサービスをゾーナル構成へ変更していないため、ゾーン間の往復が1リクエストごとに積み上がっている
- データが計算から離れた場所にあり、大陸をまたぐ往復の数十ミリ秒から100ミリ秒超が、1リクエストのクエリの回数だけ加算されている(正解)
- マルチリージョンの構成を採用していないため、グローバルロードバランサがユーザーに近いリージョンへ振り分けられていない
- アプリケーションとデータベースの区分がどちらもリージョナルであり、マルチリージョナルの区分へ引き上げられていない
解説
レイテンシの設計原則はユーザーに近いリージョンで受けデータを計算の近くに置くことであり、大陸をまたぐ往復は数十ミリ秒から100ミリ秒超になるため、1リクエストで複数回クエリを投げる設計では致命的に遅くなる。同一リージョン内のゾーン間往復はおおむね1ミリ秒未満から数ミリ秒で、この規模の遅延の説明にならない。マルチリージョン化は要件にない限りコストと書き込み遅延が跳ね上がる方向であり、ここでの原因はリージョンの不一致そのものである。区分をマルチリージョナルへ引き上げることは可用性の話であり、往復の距離が縮むわけではない。
設問4
通信事業者が、機器から UDP で送られてくる測定データを受け取る収集基盤を Google Cloud に構築する。受信側のアプリケーションは、送信元となる機器の実際の IP アドレスをそのまま参照して機器を識別する。この要件に合うロードバランサはどれか。
- 外部パススルーネットワークロードバランサを構成し、TCP/UDP をそのまま通して送信元 IP を保持したまま渡す(正解)
- グローバル外部アプリケーションロードバランサを構成し、URL マップによるパス振り分けと Cloud CDN を併用する
- リージョン外部アプリケーションロードバランサを構成し、処理を1つのリージョン内に留めたうえで公開する
- 内部アプリケーションロードバランサを構成し、VPC 内のマイクロサービス間でパスベースのルーティングを行う
解説
UDP を分散したい、クライアントの実 IP をアプリケーションで見たい、という要件はパススルーネットワークロードバランサであり、外部の機器から受けるので外部パススルーネットワークロードバランサになる。アプリケーションロードバランサはプロキシであるため送信元は Google のプロキシ IP になり、実クライアント IP は X-Forwarded-For ヘッダーで渡される。グローバル外部アプリケーションロードバランサとリージョン外部アプリケーションロードバランサはいずれも L7(HTTP/HTTPS)で、UDP をそのまま通す用途に当たらない。内部アプリケーションロードバランサは VPC 内の HTTP 振り分け用である。
設問5
動画配信サービスの運用チームが、アプリケーションロードバランサの背後にあるバックエンドのインメモリキャッシュをより効かせたいと考えている。利用者の多くは携帯回線の NAT 配下からアクセスするため特定のバックエンドに偏りやすく、また移動中に IP アドレスが変わっても同じバックエンドへ届き続ける必要がある。有効にすべきセッションアフィニティの種類はどれか。
- CLIENT_IP を選び、クライアント IP アドレスを鍵にして同じバックエンドへ振り分ける
- HEADER_FIELD を選び、マイクロサービスで使う独自のキーを指定した HTTP ヘッダーから読み取る
- HTTP_COOKIE を選び、アプリケーションが指定した既存のセッション Cookie に合わせて振り分ける
- GENERATED_COOKIE を選び、ロードバランサが発行する Cookie を鍵にして配信先へ割り当てる(正解)
解説
GENERATED_COOKIE はロードバランサが発行する Cookie を鍵にするため HTTP(S) で最も一般的で、IP が変わっても維持される点がこの場面の決め手になる。CLIENT_IP は単純だが NAT 配下の多数ユーザーが同一バックエンドに偏るという弱点が要件と正面から衝突する。HEADER_FIELD はマイクロサービスで独自のキーを使う場面のもので、携帯回線の利用者が送るヘッダーを前提にできない。HTTP_COOKIE は既存のセッション Cookie に合わせる場合の選択で、アプリケーション側に Cookie を用意させる必要がある。
続きは、会員登録なしでそのまま50問解けます。採点と解説つきで、上と同じ本物の問題です。
登録なしで50問解く