コンテンツにスキップ

非同期処理のフォールバック戦略が設計されているか?(失敗時の再実行順序やデータの重複生成防止などの考慮)

Type: DeepDive
Category: データ
Audience: 設計リーダー / SRE / インフラ設計者 / レビュー担当者


背景・概要

非同期処理では、失敗や遅延が前提となる

そこで「どう再試行するか」「それでも駄目ならどうするか」を設計時に決めておく必要がある

これがフォールバック戦略。単なるリトライだけでなく、重複対策・順序制御・人手介入なども含めて設計する


  • 通知送信失敗時は最大3回まで再試行し、それでも失敗したらエラーチャンネルに転送して手動処理
  • API呼び出しが特定の例外(HTTP 429など)を返した場合は、指数バックオフ戦略で再試行する
  • 再試行による重複登録を避けるため、自然キーでの存在チェックを明示的に実装する

よくある失敗例

  • 通知送信エラー時にリトライもされず、ユーザーに何も通知されないまま放置
  • 全イベント処理が再試行され、同じリクエストが複数回走ってシステム障害に
  • 処理の再実行が順序を崩して、ステータス遷移に矛盾が発生

FAQ

Q. バックオフ戦略って何?

A. 再試行間隔を徐々に伸ばすことで、集中アクセスを避けてリカバリしやすくする手法。指数バックオフ(2倍, 4倍…)が代表例

Q. 失敗した処理を「捨てる」のはアリ?

A. 通知系・分析系など「ベストエフォートで許容される」処理ならアリだが、業務処理や課金系はNG。業務インパクトの程度で設計を変えるべき


関連観点