注目★★★★★Lobsters
リトライはイベント順序の問題を解決しない──分散システムの設計勘違い
30秒で把握
- 1リトライはイベント順序遅延を『障害』と誤認識する設計パターンで、実は問題を見誤っている
- 2全データ保存 + 前提条件チェック方式でデッドレターキュー・手動リプレイが不要になり運用負担削減
- 3ネットワークタイムアウトへのリトライは有効だが複数回施行は本来の問題を解くべき
要約
リトライは分散システムで必要なものとして多用されるが、イベント順序の遅延を「障害」と誤認識する設計パターンの結果だと著者は論じた。必要なデータが未到着でもシステムは正常に機能しており、これはイベンチュアルコンシステンシーの性質であり例外状態ではない。到着したデータを全て保存し、前提条件が揃った時点で処理を実行する設計にすれば、リトライ・デッドレターキュー・手動リプレイが不要になり、運用複雑度が大幅に削減される。
あなたへの影響
マイクロサービス環境でイベント間の依存関係を実装するチームは、順序待ちを『障害』ではなく『イベンチュアルコンシステンシーの通常状態』と捉え直すことで、デッドレターキュー管理やリプレイ処理の運用負担を削減できる可能性がある。
推奨:現在リトライロジックで複数回試行している箇所が本当に一時的ネットワーク障害対策か、イベント順序遅延への過剰対応かを検証する価値がある。