無限ノック › DOP 練習問題一覧 › 問題
DOPSDLC の自動化

ある開発チームはUnityを利用したアプリケーションのバックエンドをAWS上で構築しています。ソースコードは外部のGitリポジトリ(GitHub)で管理されており、AWS CodePipelineを利用してCI/CDパイプラインを構築しています。ビルドステージではAWS CodeBuildを使用し、テストとアーティファクトの生成を行っていますが、最近npmパッケージやDockerイメージなどの外部依存関係のダウンロードに時間がかかり、ビルド時間が長くなっています。ビルド時間を短縮するための最も効果的なアプローチはどれですか。

A
CodeBuildプロジェクトの設定でローカルキャッシュ(カスタムキャッシュ)とS3キャッシュを有効化し、依存関係のディレクトリをキャッシュする
✓ 正解
CodeBuildにおける依存関係のダウンロードによる遅延を解決するベストプラクティスは、キャッシュ機能の活用です。ローカルキャッシュはホスト上に保持され非常に高速であり、S3キャッシュと組み合わせることで外部からの不要なダウンロードを回避しビルドを大幅に短縮できます。
B
CodeBuildのコンピューティングタイプをより大きなインスタンスクラス(例:BUILD_GENERAL1_LARGE)にスケールアップしてネットワーク帯域幅を広げる
コンピューティングリソースのスケールアップによりCPUやメモリのパフォーマンスは向上しますが、外部リポジトリ(npmやDocker Hubなど)からのダウンロード時間は外部のネットワーク遅延やスロットリングに依存するため、根本的な時間の解決にはならずコストのみが増大します。
C
GitHub Webhooksを利用してCodeBuildを直接トリガーし、CodePipelineのアーティファクト保存処理をバイパスすることでオーバーヘッドを削減する
CodePipelineをバイパスしてCodeBuildを直接実行したとしても、ビルド環境内で依存関係を最初からダウンロードするプロセスは変わらないため、ビルド時間そのものの短縮にはつながりません。また、パイプラインの統合管理を放棄することになり不適切です。
D
CodeBuildのビルド仕様(buildspec.yml)で、依存関係のインストールコマンドの前に `sleep 30` を追加してネットワーク接続を安定させる
ネットワーク通信の前に意図的に待機時間(sleep)を追加することは、ビルドプロセスを不必要に長引かせるだけであり、依存関係のダウンロード速度を改善する効果は全くありません。トラブルシューティングとしても不適切なアプローチです。

解説

AWS CodeBuildでは、ビルドプロセス間で再利用可能なファイル(依存関係、コンパイル済みバイナリ、Dockerレイヤーなど)をキャッシュすることで、ビルド時間を大幅に短縮できます。CodeBuildは、Amazon S3キャッシュとローカルキャッシュの2種類をサポートしています。S3キャッシュはビルドアーティファクトをS3バケットに保存し、複数のビルド環境で共有するのに適しています。ローカルキャッシュはCodeBuildのビルドホスト上に直接保存され、Dockerレイヤーキャッシュやカスタムディレクトリ(node_modulesなど)のキャッシュに利用でき、S3へのネットワーク転送が発生しないため非常に高速です。buildspec.ymlのcacheセクションでディレクトリを指定することで毎回のダウンロードを回避し、CI/CDパイプラインのフィードバックループを最適化できます。 選択肢Bのコンピューティングタイプのスケールアップは、CPU・メモリを増強してビルド処理自体を高速化しますが、外部依存関係のダウンロード時間はネットワーク待ち時間に依存するため根本解決にならず、継続的なコスト増も招きます。 選択肢CのGitHub WebhooksによるCodeBuild直接トリガーはパイプライン起動方式の変更であり、依存関係のダウンロード時間そのものを短縮しません。CodePipelineのアーティファクト保存バイパスもビルド時間増加の原因とは無関係です。 選択肢DのCodeBuild開始前に`sleep 30`を追加することはビルド時間を不必要に30秒延長させるだけで、依存関係のダウンロード遅延を解消する根拠がなく逆効果です。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDOPを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DOP の問題一覧に戻る