設問
Northern Trail Outfittersは、製造システムのWebサービスに注文を送信しています。最近、システム障害が発生し、数日間サービスが利用できなくなりました。
このようなサービス障害が発生した場合、アーキテクトはどのようなエラー処理を推奨すべきでしょうか?
選択肢
A. アウトバウンド メッセージングを使用して、失敗したサービス呼び出しを自動的に再試行します。
B. ミドルウェアのキューイングとバッファリングを使用して、Salesforce をシステム停止から保護します。
C. プラットフォーム イベント replayId とカスタム スケジュールされた Apex プロセスを使用して、見逃したイベントを取得します。
D. @future jobId とカスタムスケジュールされた Apex プロセスを使用して、失敗したサービス呼び出しを再試行します。
解答
B. ミドルウェアのキューイングとバッファリングを使用して、Salesforce をシステム停止から保護します。
解説
A. アウトバウンド メッセージングを使用して、失敗したサービス呼び出しを自動的に再試行します。
不正解です。
アウトバウンドメッセージには自動再試行機能があり、失敗時は24時間まで指数関数的に間隔を広げながら再試行されます。しかし、アウトバウンドメッセージには配信のSLAがなく、キューが数時間フリーズすることもあります。また、システム障害時の完全な保護には不十分です。
B. ミドルウェアのキューイングとバッファリングを使用して、Salesforce をシステム停止から保護します。
正解です。
ミドルウェアを使用することで、キューイングとバッファリングにより非同期メッセージ処理が可能になり、Salesforceをシステム停止から保護できます。外部システムがダウンした場合、ミドルウェアがキューにメッセージを保持し、システムが復旧した際に自動的に処理を再開できます。
C. プラットフォーム イベント replayId とカスタム スケジュールされた Apex プロセスを使用して、見逃したイベントを取得します。
不正解です。
プラットフォームイベントは24時間しか保存されず、replayIdは保持期間外では一意性が保証されません。また、イベント駆動型のため、外部システムへの同期的な呼び出しには適していません。
D. @future jobId とカスタムスケジュールされた Apex プロセスを使用して、失敗したサービス呼び出しを再試行します。
不正解です。
@futureメソッドはvoid型しか返せず、jobIdのような識別子を取得できません。また、非同期処理の制御が限定的で、システム障害時の包括的な保護には不適切です。
第34問
こちらをクリック