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

本番環境のEC2 Auto Scalingグループで動画エンコードジョブを処理しています。スケールイン時にインスタンスが終了する直前、処理中のエンコードジョブを完了させ、中間ファイルをS3に退避してからインスタンスを終了させる必要があります。データ損失を最小化しながら最も確実にこの処理を実現する方法はどれですか?

A
Auto Scalingのスケールイン保護(インスタンス保護)を全インスタンスに有効にし、エンコード完了後にアプリケーション側からAPIを呼び出して保護を解除する
スケールイン保護は対象インスタンスをスケールインの選択対象から除外するだけで、終了直前に処理完了やS3退避といったカスタム処理を実行・保証する仕組みではないため、本要件には不向きです。
B
Auto Scalingライフサイクルフック(Lifecycle Hook)をEC2_INSTANCE_TERMINATINGイベントに設定し、インスタンス上のスクリプトが処理完了・S3退避後にcomplete-lifecycle-actionを呼び出すまで終了を保留させる
✓ 正解
Auto Scalingライフサイクルフックは終了処理をWait状態で一時停止し、インスタンス上でエンコード完了やS3退避を行った後にcomplete-lifecycle-actionを呼ぶまで終了を保留できるため、データ損失を最小化できます。
C
ALBのコネクションドレイニング(登録解除の遅延)のタイムアウトを3600秒に設定し、すべてのエンコード処理が完了するまでインスタンスへのトラフィックを維持する
ALBのコネクションドレイニングは登録解除時に既存のHTTPリクエストを完了させる仕組みで、バックグラウンドで動くエンコードジョブの完了やファイル退避を保証する機能ではありません。
D
CloudWatchカスタムメトリクスで処理中ジョブ数を監視し、ゼロになったタイミングでEventBridgeからAuto ScalingのTerminateInstanceAPIを呼び出す
CloudWatchメトリクスとEventBridgeで手動制御する方法は、メトリクス更新の遅延や判定と終了の競合状態が生じやすく、確実に終了前処理を完了させる保証がありません。

解説

Auto Scalingライフサイクルフックは、インスタンスの終了をWait状態で一時停止し、カスタム処理を完了させてからcomplete-lifecycle-actionを呼び出すことで終了を許可する機能です。 選択肢Aのスケールイン保護は、スケールイン対象から除外するだけで、終了前処理には不向きです。 選択肢CのALBのコネクションドレイニングは、HTTPリクエストのドレイン向けであり、バックグラウンドエンコードジョブには機能しません。 選択肢DのCloudWatchカスタムメトリクスと EventBridge による手動制御は、競合状態のリスクがあります。

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

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

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