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

あるチームはAWS CodeBuildでPythonアプリケーションの1,000件のテストケースを逐次実行しており、1回のビルドに30分かかっています。テストを複数グループに分割して並列実行し、全グループの結果を統合したテストレポートを生成することでビルド時間を短縮したいと考えています。このユースケースに最も適したAWS CodeBuildの機能はどれですか?

A
複数の独立したCodeBuildプロジェクトを作成し、CodePipelineの同一ステージに並列アクションとして配置してそれぞれ異なるテストグループを実行させ、各プロジェクトの結果を後段で手動集約する
複数のCodeBuildプロジェクトをCodePipelineで並列配置する方式は、プロジェクト管理が複雑化し、テストレポートの統合が困難です。CodeBuildの単一プロジェクト内の機能を活用する方が運用効率が良いです。
B
バッチビルド機能を使用し、buildspec.ymlのbatch設定にbuild-listまたはbuild-matrixを定義して複数ビルドを並列実行する。各ビルドにシャードIDを渡して結果を統合する
✓ 正解
CodeBuildのバッチビルド機能でbuild-matrixを定義し、環境変数でシャードIDを渡すことで複数テストグループを並列実行できます。各ビルドが独立した環境で実行され、レポート統合もネイティブ機能として提供されます。
C
AWS Step Functionsで複数のLambda関数を並列実行し、各Lambda関数がテストのサブセットを担当するよう設定し、全関数の完了後に結果レポートを集約する仕組みを別途構築する
Lambdaの最大実行時間が15分に制限されているため、重いテストスイートの実行には不適切です。また、テスト結果の統合・管理を自前で実装する必要があり複雑です。
D
CodeBuildのbuildspec.ymlのinstallフェーズでAWS CLIからECS Fargateタスクを起動し、テストシャード(分割されたテストのかたまり)を並列実行させ、各タスクの結果を独自に収集・統合する
Fargateタスク起動にはかなりのオーバーヘッドが生じ、ECSタスクの管理・監視・結果収集を全て自前実装する必要があります。CodeBuildのネイティブ機能と比べ大幅に複雑になります。

解説

AWS CodeBuildのバッチビルド機能を使用すると、単一プロジェクト内でbuild-list(明示的なビルド定義のリスト)またはbuild-matrix(環境変数の組み合わせから自動生成)を使って複数のビルドを並列実行できます。各ビルドが独立したコンピューティング環境で実行され、テストレポートはバッチビルド単位で統合されます。 選択肢Aはプロジェクト管理の複雑化とレポート統合の困難さがあり、バッチビルドより運用コストが高くなります。 選択肢CはLambdaの最大実行時間が15分であり、重いテストスイートには適しません。また結果統合の仕組みを別途実装する必要があります。 選択肢DはFargateタスク起動のオーバーヘッドが大きく、ECSタスクの管理・監視・結果収集を自前で実装する必要があり、CodeBuildのネイティブ機能より大幅に複雑です。

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

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

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