無限ノック › SAA 練習問題一覧 › 問題
SAA弾力性に優れたアーキテクチャの設計

ある企業がApplication Load Balancer(ALB)とAuto Scalingグループ(ASG)を組み合わせたWebアプリケーションを運用しています。一部のAPIリクエストのレスポンスには最大45秒かかります。スケールイン時に、ALBがEC2インスタンスをターゲットグループから登録解除するタイミングで処理中のリクエストが強制切断され、ユーザーにエラーが返ることがあります。アプリケーションコードの変更を最小限にして、スケールイン時のリクエスト切断を防ぐ設定の組み合わせはどれか。

A
ALBターゲットグループのderegistration delay(登録解除の遅延)を60秒に設定し、ALBのアイドルタイムアウトも60秒へ延長する
Deregistration delayのみでは不十分。アイドルタイムアウトはアイドル接続の切断制御であり、ASGがドレイン中にインスタンスを強制終了する競合状態は残るため、処理中リクエストが切断される問題は解消されない。
B
ASGのスケールインクールダウン期間を120秒に延長し、ALBのターゲットグループで1インスタンスあたりの同時接続数上限を設定する
スケールインクールダウン期間は次のスケールインアクションの発動を遅らせる設定であり、現在終了中のインスタンスに対して処理中リクエストを保護する機能を持たない。
C
ALBターゲットグループのderegistration delayを60秒に設定し、ASGにTerminating:Wait lifecycle hookを追加してドレイン完了後に終了を許可する
✓ 正解
Deregistration delay(ALBの新規ルーティング停止+既存接続待機)とlifecycle hook(ASGによる強制終了の保留)を組み合わせることで、処理中リクエストを安全にドレインできる最適な構成。
D
NLBに切り替えてTCPパススルーを活用し、長時間接続の管理をアプリケーション側のTCP接続管理ロジックに委任する
NLBへの切り替えはALBのレイヤー7機能を失う可能性があり、大きなアーキテクチャ変更が必要。アプリケーションコードの最小変更という要件にも反する。

解説

スケールイン時のリクエスト切断を防ぐには2つの設定を組み合わせる必要があります。 ①ALBターゲットグループのderegistration delayを最長レスポンス時間(45秒)以上(例:60秒)に設定すると、ALBは対象インスタンスへの新規ルーティングを停止しつつ、既存の処理中リクエストが完了するまで最大60秒間待機します。 ②ただし、ASGのデフォルト動作ではALBのドレイン完了を待たずにインスタンスをTerminatingにすることがあるため、ASGのlifecycle hookでTerminating:Wait状態を追加し、ドレイン完了後にcomplete-lifecycle-actionを送信してインスタンス終了を制御します。 この2つの組み合わせにより、処理中リクエストを切断せずにスケールインを安全に完了できます。 選択肢AのALBアイドルタイムアウト延長はderegistration delayとは別設定であり、ASGがALBドレイン完了前にインスタンスを強制終了する競合状態は解消されません。 選択肢Bのスケールインクールダウンは次のスケールインアクション発動を遅延させるものであり、現在終了中のインスタンスの処理中リクエスト保護には無効です。 選択肢DのNLBへの切り替えはALBが提供するパスベースルーティングやヘッダー操作などの機能を失う可能性があり、大きなアーキテクチャ変更が必要で要件に反します。

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

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

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