DOPSDLC の自動化
マイクロサービスアーキテクチャで、各サービスが独立したCodePipelineを持つ構成において、すべてのサービスのビルドが成功した後にのみ統合テストを実行したい。最もコスト効率の高い実装方法はどれですか?
A各パイプラインの完了をPollingするLambdaを作成し、全完了後にStepFunctionsで統合テストを起動する
Pollingは継続的なAPI呼び出しが必要となるため、コスト効率が低い。また、ポーリング間隔中のラグで統合テストの開始遅延も発生する。
BEventBridgeルールで各パイプラインのSUCCEEDEDイベントを捕捉し、DynamoDBでカウントを管理してすべて完了したらCodePipelineの統合テストパイプラインをトリガーする
✓ 正解
イベント駆動アーキテクチャで不要なAPI呼び出しがなく、DynamoDBのカウンター管理により複数パイプラインの完了を効率的に追跡できるため、最もコスト効率が高い。
CすべてのサービスパイプラインをStepFunctionsのParallel状態で束ね、全完了後に統合テストステップを実行する
StepFunctionsでパイプライン自体を束ねると各パイプラインの独立性・スケーラビリティが失われ、マイクロサービスアーキテクチャの利点が減少する。
DCodePipelineのクロスパイプライントリガー機能を使い、すべてのパイプラインを親パイプラインにリンクする
CodePipelineのクロスパイプライントリガーは1対1の連携には利用できるが、複数パイプラインの全完了を待ち合わせて別パイプラインをトリガーするネイティブ機能は存在しない。
解説
正解:
EventBridgeルールで各パイプラインのSUCCEEDEDイベントを捕捉し、DynamoDBでカウントを管理してすべて完了したらCodePipelineの統合テストパイプラインをトリガーする。
選択肢Aは、各パイプラインの完了をPollingするLambdaは不要なAPI呼び出しが発生してコスト増加につながります。StepFunctionsを使う点は有効ですが、Polling起点のアーキテクチャはコスト効率が低くなります。
選択肢Bは、EventBridgeとDynamoDBを組み合わせたイベント駆動アーキテクチャが最もコスト効率が高い方法です。Lambdaがイベントを受け取るたびにDynamoDBのカウンターをインクリメントし、全サービス数と一致したら統合テストをトリガーします。
選択肢Cは、すべてのサービスパイプラインをStepFunctionsのParallel状態で束ねると各パイプラインの独立性が失われ、マイクロサービスの分離原則に反します。
選択肢Dは、CodePipelineのクロスパイプライントリガーは1対1の連携には利用できますが、複数パイプラインの全完了を待ち合わせて別パイプラインをトリガーするネイティブ機能は存在せず、この要件を満たすことができません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDOPを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →