SAP新しいソリューションのための設計
あるeコマース企業は、セールイベント時に通常の50倍のトラフィックが発生する注文処理システムを運用しています。
現行システムはLambda関数から各マイクロサービスへ直接API呼び出しを行う構成で、特定サービスの障害がカスケード障害を引き起こしています。
新アーキテクチャでは以下を実現する必要があります。
①注文の重複処理防止(べき等性の確保)
②注文確認→在庫引当→決済→出荷指示の順次実行と実行状態のリアルタイム可視化
③各ステップ失敗時の指数バックオフによる自動リトライ
④ステップが部分的に完了した際の補償トランザクション実行
これらを最もシンプルかつ確実に満たすアーキテクチャはどれですか?
AAmazon Kinesis Data Streamsでイベントをシャード処理し、DynamoDB条件付き書き込みでべき等性を確保。各ステップのLambda関数がSNSで次ステップをトリガーし、失敗時はKinesisシャードイテレーターの再試行機能でイベントをリプレイする。
Kinesis Data Streamsはログ・クリックストリームなどのストリーミングデータ向けサービスで、マルチステップワークフローのオーケストレーション機能を持ちません。SNSによるステップ間トリガーでは実行状態の可視化(要件②)と補償トランザクション(要件④)が欠如しています。
BAmazon SQS FIFOキューの重複排除IDでべき等性を実現し、AWS Step Functionsスタンダードワークフローで4ステップをオーケストレーション。各Lambda関数にDynamoDB冪等性キーを設定し、CatchブロックとWaitステートで補償トランザクションを実装する。
✓ 正解
SQS FIFO重複排除IDでべき等性(要件①)、Step Functionsスタンダードで実行可視化と順序保証(要件②)、組み込みRetry設定で指数バックオフ(要件③)、CatchブロックとWaitステートで補償トランザクション(要件④)をすべてマネージドサービスで実現します。
CAmazon EventBridgeカスタムイベントバスで注文イベントを各Lambda関数にルーティング。SQSデッドレターキューで失敗イベントを捕捉。DynamoDBにワークフロー状態を手動保存しEventBridgeスケジューラーで定期リトライを実行する。
EventBridgeは柔軟なイベントルーティングを提供しますが、スケジューラーによる定期リトライは指数バックオフ要件を満たしません。DynamoDB手動状態管理はStep Functionsの可視化ダッシュボードと比較して実装コストが高く、本要件には最適ではありません。
DAmazon SNSファンアウトで全ステップへ並列通知しSQSキューで順序制御。各Lambdaがアプリケーションコードでサガパターンを実装してロールバック処理を行い、DynamoDBトランザクションでアトミックに状態更新する。
SNSファンアウトは複数のエンドポイントへの並列通知向けの設計で、今回の4ステップ順次処理制御には適していません。アプリケーションコードでのサガパターン実装はStep Functionsの組み込み補償トランザクション機能で代替でき、開発・テスト工数が増加します。
解説
SQS FIFOとStep Functionsスタンダードワークフローの組み合わせが4つの要件を最もシンプルに満たします。
SQS FIFOキューはMessageDeduplicationIdによる5分間の重複排除をマネージドサービスとして提供し、追加実装なしにべき等性を保証します(要件①)。Step Functionsスタンダードワークフローは各ステップをステートマシンとして定義し、AWS Management ConsoleのGUIでリアルタイムに実行状態を可視化できます(要件②)。各ステートに組み込みのRetry設定(IntervalSeconds・BackoffRate・MaxAttempts)を指定でき、指数バックオフリトライをコードなしで実現します(要件③)。失敗ステートをCatchブロックで捕捉し補償トランザクション用ステートに遷移することで部分失敗に対応します(要件④)。
選択肢AのKinesis Data Streamsはリアルタイムストリーミング向けサービスで、マルチステップオーケストレーション機能を持ちません。SNSトリガーによるステップ間連携は実行状態可視化と補償トランザクション機能が欠如しており要件②④を満たせません。
選択肢CのEventBridgeスケジューラーによる定期リトライは指数バックオフ要件を満たさず、DynamoDBへの手動状態管理はStep Functionsの可視化機能に比べ開発・運用負荷が高くなります。
選択肢DのSNSファンアウトは並列配信向けの設計であり順次処理の制御に適していません。アプリケーションコードでのサガパターン実装はStep Functionsの組み込み機能で代替でき、開発・テスト工数が不必要に増加します。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでSAPを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →