無限ノック › DOP 練習問題一覧 › 問題DOP SDLC の自動化 複数選択
開発チームはAWS CodeBuildとAWS CodePipelineを使用してJava Spring Bootアプリケーションをビルドしています。現在のビルド時間は平均15分で、分析の結果Mavenの依存関係ダウンロードがビルド時間の約70%を占めていることが判明しました。ビルド時間を最も効果的に短縮できる方法を2つ選択してください。
A CodeBuildのS3キャッシュ設定でMavenのローカルリポジトリ(~/.m2)をビルド間でキャッシュする
✓ 正解
S3キャッシュでMavenの~/.m2をキャッシュすると次回ビルド以降の依存関係ダウンロードをスキップできます(A)。CodeArtifactをプロキシにすると依存関係がAWSリージョン内にキャッシュされ外部リポジトリへのネットワークレイテンシーが解消されます(D)。両者の組み合わせで最大の効果が得られます。
B 全依存関係をインストール済みのカスタムDockerイメージをECRに保存し、CodeBuildのビルド環境イメージとして使用する
カスタムDockerイメージは初回は有効ですが、依存関係が変更されるたびにイメージの再ビルド・ECRプッシュが必要となり管理コストが高くなります。
C CodeBuildのLOCAL_DOCKER_LAYER_CACHEを有効化してDockerイメージレイヤーをキャッシュする
LOCAL_DOCKER_LAYER_CACHEはDockerイメージレイヤーのキャッシュであり、CodeBuildのビルドは毎回新しいコンテナ環境で実行されるためMaven依存関係のダウンロード削減には直接寄与しません。
D AWS CodeArtifactをMavenリポジトリのプロキシとして設定し、依存関係をAWSリージョン内にキャッシュする
✓ 正解
S3キャッシュでMavenの~/.m2をキャッシュすると次回ビルド以降の依存関係ダウンロードをスキップできます(A)。CodeArtifactをプロキシにすると依存関係がAWSリージョン内にキャッシュされ外部リポジトリへのネットワークレイテンシーが解消されます(D)。両者の組み合わせで最大の効果が得られます。
E CodeBuildのコンピューティングタイプをlarge(8 vCPU、15GB RAM)にアップグレードする
コンピューティングタイプのアップグレードはCPU・メモリ処理のボトルネックを解消するものであり、ネットワークI/Oが主因の依存関係ダウンロード問題には効果が薄いです。
解説 選択肢AはS3キャッシュでMavenの~/.m2をビルド間でキャッシュすることで、次回以降のビルドで依存関係ダウンロードをスキップできます。ビルド時間の約70%を占める依存関係問題に直接対処できます。
選択肢BのカスタムDockerイメージは初回ビルドでは有効ですが、依存関係が変更されるたびにイメージの再ビルド・ECRプッシュが必要となり管理コストが高くなります。
選択肢CのLOCAL_DOCKER_LAYER_CACHEはDockerイメージレイヤーのキャッシュであり、Mavenの依存関係ダウンロードの削減には直接寄与しません。
選択肢DはCodeArtifactをMavenリポジトリのプロキシとして設定することで、依存関係がAWSリージョン内にキャッシュされ、外部リポジトリへのネットワークレイテンシーを解消できます。
選択肢EのコンピューティングタイプのアップグレードはCPU・メモリ処理のボトルネック解消を目的としており、ネットワークI/Oが主因の依存関係ダウンロード問題には効果が薄いです。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDOPを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →