無限ノック › SOA 練習問題一覧 › 問題
SOA信頼性とビジネス継続性

EC2 Auto ScalingグループとALBを使用したWebアプリケーションがあります。新しいEC2インスタンスが起動する際、S3から最新のアプリケーションコードをダウンロードし、データベース接続の初期化スクリプトを実行した後でのみALBターゲットグループに追加されるようにしたいと考えています。初期化が完了していないインスタンスにトラフィックが流れることを確実に防ぐ、最もシンプルな方法はどれですか?

A
ALBターゲットグループのスロウスタートモード(Slow Start duration)を600秒に設定し、新インスタンスへのトラフィックを段階的に増加させてスパイクを防ぐ
スロウスタートモードはトラフィック量を段階的に増やす機能ですが、初期化が完了していないインスタンスへのトラフィック流入自体を防ぐことはできません。
B
Auto Scalingグループのヘルスチェック猶予期間(Health Check Grace Period)を600秒に設定し、初期化スクリプトが完了するまでの固定待機時間を設ける
ヘルスチェック猶予期間は固定時間の待機であり、初期化スクリプトの完了を動的に検知できません。スクリプトが遅延した場合、未初期化インスタンスへリクエストが届くリスクがあります。
C
Auto Scalingライフサイクルフック(Lifecycle Hook)をEC2_INSTANCE_LAUNCHINGフェーズに設定し、User Dataで初期化完了後にcomplete-lifecycle-actionを呼び出してInService状態へ移行させる
✓ 正解
ライフサイクルフックはインスタンスをPending:Wait状態に維持し、complete-lifecycle-actionが呼ばれた後にInServiceへ移行するため、初期化が完了するまで確実にALBへの登録を防ぎます。
D
EventBridgeルールでEC2インスタンスの「running」状態変化を検知してLambdaを起動し、Systems Manager Run Commandで初期化スクリプトを実行した後にALBターゲットを手動登録する
EventBridge+Lambda+SSM Run Commandの連携は機能的には実現可能ですが、複数サービスの組み合わせが必要で構成が複雑になり、ライフサイクルフックより運用コストが高くなります。

解説

Auto Scalingのライフサイクルフックを使うと、インスタンスがPending:Wait状態(ALBに追加される前)で処理を一時停止できます。User Dataスクリプト等で初期化を完了した後にcomplete-lifecycle-actionを呼び出すことでInServiceに移行し、ALBターゲットグループに登録されます。 選択肢A(ALBターゲットグループのスロウスタートモード)はトラフィック量を制御するだけで未初期化インスタンスへの流入を防げません。 選択肢B(Health Check Grace Period)は単なる時間待機であり初期化の完了を保証しません。 選択肢D(EventBridge+Lambda)の構成は複雑で運用負荷が高くなります。

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

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

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