設問
Northern Trail Outfitters はコールセンターで断続的なネットワーク障害を経験しました。ネットワーク復旧後、営業担当者が製造システムに返信確認が失われた結果、重複注文を誤って作成してしまいました。重複注文を回避するため、アーキテクトはどのようなソリューションを推奨すべきでしょうか?
選択肢
A. スケジュールされた Apex を使い、製造システムへクエリを実行して重複または不足のある注文を検出
B. べき等性(Idempotent)設計を実装し、営業担当者に問題のある注文を再試行してもらう
C. アウトバウンドメッセージングを使用し、製造側に注文受領の確認を確実に行わせる
D. 応答が成功しなかった注文を、スケジュールされた Apex で再送信する
解答
B. べき等性(Idempotent)設計を実装し、営業担当者に問題のある注文を再試行してもらう
解説
A. スケジュールされたApexを使用して、製造システムにクエリを実行し、重複または不足している可能性のある注文を検出します。
不正解です。
クエリのための追加APIコールが必要)とあり、事後的な重複検出では根本的な解決にならず、APIリソースも消費するため非効率です。
B. べき等設計を実装し、営業担当者に問題のある注文を再試行してもらいます。
正解です。
一意のメッセージIDを追加して重複リクエストを認識できるようにすると明記されています。また、べき等レシーバーがないと同じトランザクションを複数回処理してしまうとあり、べき等設計により再試行しても重複注文を防げます。
C. アウトバウンドメッセージングを使用して、製造部門が注文の受領を確認するようにします。
不正解です。
アウトバウンドメッセージングだけでは、確認応答が失われた場合の重複リスクを回避できません。受信側でべき等な処理が必要です。
D. 応答が成功しなかった注文をスケジュール済みのApexで再送信します。
不正解です。
べき等設計を実装せずに単純に再送信すると、べき等でない場合、同じメッセージを繰り返し呼び出すと異なる結果になりデータ整合性の問題が発生するとあるように、重複注文のリスクがあります。
第54問
こちらをクリック