模擬問題集 › GCP-PCD › 練習問題 11

GCP-PCD 練習問題 11|アプリケーションのビルドとテスト

Professional Cloud Developer・無料公開(全 200 問中 15 問を無料公開中)

問題
あなたはコンテナ化されたアプリケーションを GKE にデプロイしようとしています。Cloud Build を使用して、Java アプリケーションをビルドし、アプリケーションのコンテナ イメージを Artifact Registry に push するビルド パイプラインを設定しました。ビルド パイプラインは、同じレイヤを持つ Docker コンテナ イメージを参照する複数の連続したステップを実行します。Cloud Build パイプラインの実行の完了に予想以上に時間がかかっていることに気付きました。Docker イメージのビルド プロセスをどのように最適化すべきですか。

選択肢と解説

  • 1
    Docker ビルドステップに --squash パラメータを追加して、新しくビルドされたレイヤを 1 つのレイヤに結合する。
  • 2
    パイプラインの実行に VPC 内のプライベート プールを使用するよう Cloud Build を構成する。
  • ✓
    ビルド構成ファイルに --cache-from 引数を追加し、そのイメージをキャッシュのソースとして指定して、キャッシュされたイメージを指定する。
  • 4
    コンテナ アーティファクトを Cloud Storage に保存する。Cloud Storage バケットで Cloud CDN を構成し、エッジ ロケーションでのキャッシュを有効にする。

解説

【正解】C

【0からの解説】
①前提知識:Docker イメージは、Dockerfile の各命令ごとに作られる「レイヤ」の積み重ねでできています。ローカルの Docker では、変更のないレイヤは前回のビルド結果(レイヤ キャッシュ)を再利用するため、2 回目以降のビルドが速くなります。しかし Cloud Build では各ビルドが新しい使い捨ての環境で実行されるため、前回のレイヤ キャッシュが残っておらず、毎回すべてのレイヤを最初から作り直すことになります。
・--cache-from:docker build に「このイメージのレイヤをキャッシュとして使ってよい」と指示する引数です。Cloud Build の公式ドキュメント「ビルドを高速化する際のベスト プラクティス」では、前回ビルドして Artifact Registry に push したイメージを最初のステップで docker pull し、docker build に --cache-from でそのイメージを指定する方法が紹介されています(他の方法として Kaniko キャッシュもあります)。

②要件の整理:「同じレイヤを持つイメージを参照する複数の連続したステップ」「パイプラインの実行に時間がかかる」「Docker イメージのビルド プロセスを最適化したい」。同じレイヤを何度もビルドし直していることが遅さの原因と考えられます。

③正解の理由:C のように --cache-from でキャッシュ元のイメージを指定すれば、変更のないレイヤ(ベースイメージや依存ライブラリのレイヤなど)は再ビルドせずに再利用され、Java のビルドを含むビルド時間を大幅に短縮できます。Cloud Build が公式に推奨している高速化手法です。

【誤りの選択肢】
A:--squash は新しく作ったレイヤを 1 つにまとめてイメージを小さくする(実験的な)オプションです。レイヤが 1 つにまとまると、むしろ一部の変更でもレイヤ全体を作り直すことになり、キャッシュによる再利用が効きにくくなります。ビルド時間の短縮にはつながりません。
B:プライベート プールは、VPC 内のリソースへのアクセスや、より大きなマシンタイプ、ネットワークの制御が必要な場合に使う専用のワーカー プールです。マシンを大きくすれば多少速くなる可能性はありますが、同じレイヤを毎回作り直すという根本原因は解消されず、コストも増えます。
D:Cloud CDN は Web コンテンツをエンド ユーザーに近いエッジでキャッシュして配信する仕組みで、Docker ビルドのレイヤ キャッシュとは無関係です。また、コンテナ イメージの保存先としては Artifact Registry を使うのが推奨であり、Cloud Storage に移しても Cloud Build のビルドは速くなりません。

【参考】
ビルドを高速化する際のベスト プラクティス | Cloud Build
← 練習問題 10練習問題 12 →
GCP-PCD の模擬問題集は全 200 問

本番形式の練習テスト 4 回を、試験モード/演習モードで受験できます。 全問に解説付き、ドメイン別の弱点分析にも対応。模試プラン(月額 ¥980)からご利用いただけます。

GCP-PCD の模試を受ける料金プランを見る

GCP-PCD の無料公開問題

問題 1問題 2問題 3問題 4問題 5問題 6問題 7問題 8問題 9問題 10問題 11問題 12問題 13問題 14問題 15