【正解】B、C
【0からの解説】
①前提知識
・Cloud CDN(コンテンツ配信ネットワーク)は、外部アプリケーション ロードバランサ(旧称: 外部 HTTP(S) ロードバランサ)のバックエンド サービスやバックエンド バケットで有効化するだけで、Google が世界中に持つエッジ拠点に静的コンテンツ(画像・動画・CSS・JavaScript など)をキャッシュし、ユーザーに近い場所から配信するマネージド サービスです。オリジン(アプリケーション サーバーや Cloud Storage)まで往復する必要がなくなるため、ページ読み込みが速くなり、オリジンの負荷も下がります。
・Memorystore for Redis は、フルマネージドのインメモリ データストアです。データベースへの問い合わせ結果、商品情報、セッション情報などをメモリ上にキャッシュしておくことで、ミリ秒未満の応答でデータを返せます。毎回データベースにアクセスするよりも、動的なリクエストのレイテンシを大きく短縮できます。
②要件の整理
・商品の「画像や動画」が多い → 大きな静的コンテンツの配信がボトルネックになりやすい。
・「ページ読み込み速度の改善」と「顧客リクエストのレイテンシ短縮」の 2 点が目的。
・2 つ選ぶ問題なので、静的コンテンツ側と動的リクエスト(データ取得)側の両方を高速化する組み合わせが最適です。
③正解が要件をどう満たすか
・C:外部 HTTPS ロードバランサで Cloud CDN を有効にすると、画像や動画がエッジにキャッシュされ、地理的に離れた顧客にも低レイテンシで配信されます。ページ読み込み時間の大部分を占めるメディアの配信が速くなるため、「ページ読み込み速度の改善」に直接効きます。
・B:Memorystore for Redis を、データベースの手前のキャッシュ(キャッシュアサイド パターン)として使うことで、商品一覧や商品詳細などの頻繁に読まれるデータをメモリから即座に返せます。これにより、動的な API リクエストのレイテンシが短縮されます。
このように「静的コンテンツは CDN」「頻繁に読まれるデータはインメモリ キャッシュ」という 2 層のキャッシュは、Google Cloud の Web アプリケーションのパフォーマンス改善における定番の構成です。
【誤りの選択肢】
A:Cloud Run の同時実行は、1 つのコンテナ インスタンスで複数のリクエストを並行処理できるようにしてインスタンス数やコストを抑える設定です(しかも Cloud Run ではデフォルトで有効)。リクエストごとの処理時間やメディア配信の速さそのものを改善するものではなく、画像・動画の配信速度という本問の課題を解決しません。
D:Bigtable も Spanner もどちらも低レイテンシのデータベースであり、Spanner に変更してもレイテンシが改善するとは限りません(Spanner はグローバルな整合性を持つリレーショナル DB で、強整合性のための書き込みコストもあります)。データベースの大規模な移行は手間が大きく、画像・動画の配信という本問の課題とも関係しません。
E:GKE Autopilot は、ノードの管理を Google に任せて運用負荷を下げるための運用モードです。運用面のメリットはありますが、アプリケーションのレスポンスやページ読み込み速度を改善する仕組みではありません。
【参考】
Cloud CDN の概要Memorystore for Redis の概要コンテンツ配信のベスト プラクティス | Cloud CDN