リソース · 54

Webhook: 繰り返し、遅延、およびリカバリの処理

受信した通知を、障害発生後も回復可能な、一意で追跡可能なビジネス効果に変換する。

更新済み · 4 min

このガイドが達成するのに役立つこと

  • 通知を認証する
  • レシートと処理を分離する
  • 重複効果を防止する
  • ブロックされたイベントを回復する

クイックチェック

  • どのバイトが署名されているか?
  • レシートはいつ永続的になるか?
  • 2 つのワーカーが同時に動作できるか?
  • プロバイダは順序を保証するか?
  • 失われたイベントはどのように検出されるか?

手順

  1. 1

    プロバイダ契約を読み込む

    レコードのタイプ、バージョン、アカウントコンテキスト、署名、タイミング、再試行ルールを記録する。 Stripe は配信順序が保証されておらず、重複が発生する可能性があると述べている。 すべての API に Stripe 固有の遅延を適用しない。

    納品物:日付付きプロバイダ契約。

  2. 2

    効果発生前に検証する

    プロバイダが必要とするライブラリと生のボディを使用して署名を確認する。 受け入れ可能なサイズとタイプを制限する。 認証済み環境で、秘密情報をログに記録せずに、無効な署名と予期しないアカウントコンテキストをテストします。

    成果物:影響のない拒否。

  3. 3

    確認応答の前に永続化します。

    永続的な受信と低速な処理を分離します。 キューがイベントを受け入れられない場合、保持されたイベントとして報告しないでください。 成功は、契約に基づく受信を示すものであり、必ずしもビジネスアクションの完了を示すものではありません。

    成果物:受信、処理中、完了、ブロック状態。

  4. 4

    冪等性を強制します。

    イベントキーとビジネス効果の同一性を定義します。 逐次配信だけでなく、同時繰り返しをテストします。 アトミック制約やロックを使用しない予備チェックでは、2つのワーカーが同じ効果を生み出す可能性があります。

    成果物:効果の一意性の証拠。

  5. 5

    遅延と無秩序を処理します。

    古い通知が現在の状態を記述していると想定しないでください。 契約で許可されている場合はソースを参照し、検証済みのビジネス遷移を適用します。 解釈できないイベントは保持する。

    成果物:遷移と逆順テスト

  6. 6

    調整とリプレイ

    所有者、原因、試行回数、および終了条件を含むエラーキューを準備する。 リプレイ中は重複保護を維持する。 プロバイダとアプリケーションを定期的に比較する。リカバリが成功したからといって、イベントが欠落していないとは限らない。

    成果物:リカバリ手順と不一致レポート

再利用可能なワークシート

承認された観察結果を記入してください。 これらのフィールドは作業用テンプレートであり、観察結果ではありません。

フィールド記録する情報
イベントプロバイダー、アカウント、識別子、バージョン
レシート検証済み署名と永続タイムスタンプ
効果ビジネスキー、状態、一意性証明
復旧原因、試行、所有者、終了

架空の事例

具体的な状況

架空の例:復旧中に2人の作業者が同じ確認通知を受け取る。

決定と期待される証拠

固有のビジネス効果制約とトランザクション状態により、両方の納品が追跡可能である一方で、1回の履行のみが可能となる。

メカニズムの区別

メカニズム目的検証または制限
署名契約に基づいてオリジンを検証する効果を一意にしない
重複排除繰り返し通知を認識する同時実行性とビジネスへの影響も確認する
調整欠落と差異を検出するソースと期間を指定する

管理指標

指標測定対象最初のアクション
キューの経過時間未完了イベントの遅延最も古いイベントを検査する
重複効果誤って繰り返されたビジネスアクション正しいアトミック性
ソース/アプリケーションのギャップ存在しない状態または異なる状態クロージャエビデンスとの調整

よくある間違い

  • 署名ボディ検証前の解析
  • 永続的な受信前の確認応答
  • 順序付き配信を想定する
  • 重複を順次のみテストする

よくある質問

HTTPの成功は処理完了を意味するのか?

契約によります。 非同期処理の場合、永続的な受信を意味するはずですが、ビジネス状態は別途追跡されます。

1回限りの納品を前提とできるか?

実際の契約に基づき、固有の効果と調整を考慮した、繰り返しや障害発生時の設計を行う。

本体全体を保持すべきか?

適切なアクセス権限と保持期間が確保された、必要な場合にのみ保持する。 最小限の痕跡は、機密情報を保持することなく、診断と復旧を支援するものでなければならない。

公式参照文献

参照文献はメソッドを裏付けるものです。 チェックは状況に合わせて調整してください。 これらは認証ではありません。 元の参照文献のタイトルやソース文書は別の言語で書かれている場合があります。

参照資料の確認日 .