知っておくとよいこと - Webhook の制限事項とシステム挙動
finlight が webhook のエラー、再試行、制限をどのように扱うかを理解すると、より信頼性の高い統合を構築し、クォータを効果的に管理できます。
再試行システム挙動
エラー処理と再試行
再試行ロジック
webhook の配信が失敗すると、finlight はリクエストを自動的に再試行します:
再試行スケジュール:
- 1 回目の再試行: 最初の失敗の直後
- 2 回目の再試行
- 3 回目の再試行
最大試行回数:
- webhook イベントごとに合計 3 回の配信試行
- 各再試行は同じペイロードとヘッダーを使用します
- すべての再試行は呼び出し履歴に記録されます
再試行をトリガーするもの
再試行は次の場合に発生します:
- HTTP エラーコード 4xx および 5xx の応答
- ネットワークタイムアウト(5 秒の制限)
- 接続の失敗(DNS エラー、接続拒否)
- SSL/TLS エラー(証明書の問題)
再試行をトリガーしないもの
次の場合は再試行されません:
- HTTP 2xx 応答(成功とみなされる)
- 無効な webhook 構成(不正な URL)
- 無効化された webhook
自動無効化失敗保護
自動無効化保護
連続失敗の追跡
finlight はクォータを保護し、果てしない失敗試行を防ぐために、連続する webhook の失敗を追跡します。
仕組み:
- 成功でカウンターをリセット - 配信が成功するたび(HTTP 2xx)に失敗カウンターが 0 にリセットされます
- 失敗でカウンターを増加 - 配信が失敗するたびに連続失敗回数が増えます
- 10 回で自動無効化 - 10 回連続で失敗すると、webhook は自動的に無効化されます
自動無効化の挙動
自動無効化がトリガーされるとき:
- すべての再試行を通じて 10 回連続の配信失敗
- webhook のステータスが「有効」から「無効」に変わります
- 自動無効化を示すダッシュボード通知が表示されます
- 手動で再有効化するまでそれ以上の webhook 試行は行われません
重要な注意:
- 自動無効化に数えられるのは連続した失敗のみです
- 配信が 1 回でも成功すればカウンターは 0 にリセットされます
- 手動での再有効化が必要です - webhook は自動的に有効化されません
- すべての失敗タイプが数えられます(タイムアウト、4xx、5xx 応答)
例示シナリオ
シナリオ 1: カウンターのリセット
Attempt 1: Failed (counter = 1)
Attempt 2: Failed (counter = 2)
Attempt 3: Success (counter = 0) ← Reset!
Attempt 4: Failed (counter = 1)
シナリオ 2: 自動無効化
Attempts 1-10: All failed (counter = 10)
→ Webhook automatically disabled
復旧オンラインに復帰
復旧と再有効化
手動での再有効化プロセス
再有効化の手順:
- 呼び出し履歴を使って根本原因を特定します
- エンドポイントの問題を修正します(認証、URL、サーバーエラー)
- ステータス設定を編集して webhook 詳細で webhook を再有効化します
- ダッシュボードのテストボタンで webhook を手動でテストします
- 最初の配信を監視して解決を確認します
予防策
自動無効化を避ける:
- エンドポイントに適切なエラー処理を実装します
- 適切な HTTP ステータスコードを返します
- webhook の健全性を能動的に監視します
- webhook の失敗に対してアラートを設定します
- 本番の前に開発環境で変更をテストします
クォータ使用状況の追跡
クォータ管理
ダッシュボードのグラフで使用状況を確認できます。使用状況は遅延して記録される点にご注意ください。
失敗したリクエストもクォータに数えられる
重要: 失敗した配信を含め、すべての webhook 配信試行がサブスクリプションのクォータに数えられます。
数えられるもの:
- 最初の配信試行 - クォータに数えられます
- すべての再試行 - 各再試行が個別に数えられます
- 失敗した配信 - それでもクォータを消費します
- webhook のテストリクエスト - これもクォータに数えられます
クォータへの影響の例:
1 webhook event with 5 failed retry attempts = 5 quota usage
1 webhook event with 1 successful delivery = 1 quota usage
クォータを効率的に管理する
ベストプラクティス:
- エンドポイントの問題を素早く修正し、失敗した再試行を最小限に抑えます
- 失敗パターンがないか呼び出し履歴を監視します
- 本番で webhook を有効化する前に入念にテストします
- 適切なステータスコードを返すために適切なエラー処理を使用します
クォータ保護: 自動無効化機能は、常に失敗するエンドポイントへの配信を停止することで、クォータの無駄遣いを防ぐのに役立ちます。
webhook 設定のガイダンスについては、webhook のメインドキュメントを参照してください。テストとデバッグについては、テストガイドを確認してください。