Webhookの再試行ポリシー、どう設計すれば安全?
Webhookは受信サーバーの一時的な障害やネットワーク問題で失敗することがあるため、再試行ロジックが必須です。このツールは単発リクエストの予想失敗率と再試行回数を基準に、最終的にすべての試行が失敗する確率を計算し、指数バックオフ方式での再試行別待機時間を表示します。
最終失敗率は(単発失敗率)^(再試行回数+1)で計算されます。例えば単発失敗率が10%で4回まで再試行する場合、すべての試行が失敗する確率は0.1^5 = 0.001%と非常に低くなります。再試行回数を増やすほど成功率は上がりますが、バックオフ倍率分だけ待機時間も指数的に増えるため、バランスが必要です。
バックオフ倍率を設ける理由は、障害発生時にすべてのクライアントが同時に再試行を送ると、受信サーバーの負荷がむしろ大きくなるためです。待機時間を段階的に増やしてサーバーが復旧する時間を確保することが、安定した設計の要です。
よくある質問
再試行回数を増やせば増やすほどいい?
成功率は上がりますが、最後の再試行までの総待機時間も増えます。リアルタイム性が重要なWebhookなら3~5回程度に制限するのが一般的です。
バックオフ倍率はなぜ必要?
障害発生時に全クライアントが同時に再試行すると、対象サーバーの負荷がさらに大きくなります。倍率を設けて待機時間を段階的に増やすことで、サーバーが復旧する時間を確保できます。
この計算は実際のサービスの失敗率と異なる?
はい。実際の失敗率は時間帯、トラフィック、障害タイプによって変わるため、過去のログデータに基づいて入力値を調整するのが正確です。