無限ノック › DVA 練習問題一覧 › 問題
DVAデプロイ

開発チームがNode.jsアプリケーションをAWS CodeBuildでビルドしています。各ビルドで npm install による依存関係のダウンロードに毎回数分かかっており、ソースコードの変更が小さくても同じパッケージを再取得しています。ビルドプロジェクトの設定とbuildspecの最小限の変更で、複数ビルド間にわたって依存関係を確実に再利用しビルド時間を短縮したいと考えています。最も適切な方法はどれですか。

A
ビルドプロジェクトのキャッシュタイプをAmazon S3に設定し、buildspec.yml の cache セクションで paths に node_modules/**/* を指定する
✓ 正解
キャッシュタイプをS3にしてcache.pathsにnode_modulesを指定すると、ビルド終了時にS3へ保存され次回開始時に復元されるため、ホストが変わっても依存関係が確実に再利用され、追加スクリプトなしで時間短縮できる点が要件に合致します。
B
ビルドプロジェクトのキャッシュタイプをローカルキャッシュ(カスタムキャッシュ)に設定し、buildspec の cache.paths に node_modules を指定する
ローカルキャッシュはビルドホストのローカルボリュームに保持され、同じホストが再利用されたときだけ有効です。ホストは毎回保証されないためビルド間での確実な再利用にならず、要件を満たしません。
C
buildspec の install フェーズで aws s3 cp コマンドを使い、node_modules ディレクトリを手動でS3バケットへアップロード・ダウンロードする
aws s3 cpによる手動アップロード・ダウンロードは動作しますが、buildspecへのスクリプト記述と整合性管理が必要で保守負荷が高く、ネイティブのキャッシュ機能がある以上「最小限の変更」という要件に反します。
D
ビルド環境のコンピュートタイプをより大きいインスタンスに変更し、並列処理を有効化して npm install の実行を高速化する
コンピュートタイプ変更は依存関係の再利用には全く寄与せず、毎回npm installでダウンロードが繰り返されます。ビルド時間の根本原因を解決せずコストだけ増加するため不適切です。

解説

CodeBuildのS3キャッシュは、buildspecのcache.pathsで指定したディレクトリをビルド完了時にS3へ保存し、次回ビルド開始時に復元します。これによりビルドホストが変わっても依存関係が確実に再利用され、最小限の設定でビルド時間を短縮できます。 選択肢のローカルキャッシュはビルドホストのローカルボリュームに保持されるため、同一ホストが再利用された場合のみ有効で、ビルド間での再利用が保証されません。 選択肢の手動S3コピーは実現可能ですがbuildspecへのスクリプト追加と保守が必要で「最小限の変更」に反します。 選択肢のコンピュート増強は依存関係の再利用には寄与せず、ダウンロード自体は繰り返され、コストも増加します。

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

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

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