配信リトライ:配信と運用
配信リトライのためのキュー、プロバイダー、リトライ、重複排除、追跡、可観測性、フォールバック、および障害処理を指定します。環境固有の制限を設定可能なまま、採用境界と可観測な障害証拠を確定します。
パッケージステータス: 人間によるレビューのためのリファレンスコンテキストが準備完了。契約とテストシナリオは完了していますが、採用実装がそれらを通過したという主張はありません。
決定
配信リトライには、プロバイダーの試行とは独立して識別される耐久的な通知意図を採用します。名前付きシグナル、有界容量、所有アラート、診断ランブック、およびテスト済みの復旧証拠でこの機能を運用します。このパッケージはリファレンス契約であり、採用チームは自環境の証拠に基づいて数値制限、プロバイダー、管轄区域、および運用オーナーを選択する必要があります。
範囲
- この運用ブロックで記述される配信リトライのアクター、入力、出力、状態、ポリシーまたはスキーマバージョン、および外部に見える成果。
- 主および代替インターフェース、バックグラウンド作業、キャッシュ、統合、サポート経路、および同じ境界を行使できる証拠。
- リファレンスを安全に適用するために必要な採用固有の設定、展開、復旧、および検証責任。
このブロックの外
- すべての採用者に対して普遍的なベンダー、フレームワーク、管轄区域、数値閾値、保持期間、またはサービスレベル目標を選択すること。
- パッケージ化されたシナリオが下流の実装で実行されたことを主張すること、またはこのリファレンスが法的、セキュリティ、アクセシビリティ認証を付与すること。
契約
- 受信者、目的、テンプレートバージョン、ロケール、スケジュール、感度、および重複排除IDを持つ1つの通知意図を作成する。
- 配信直前に検証済みの受信者状態、チャネルの好み、静穏時間、および法的または製品による抑制を適用する。
- キューイング、試行、受理、配信(観測可能な場合)、失敗、抑制、およびキャンセルを別個の状態として追跡する。
- プロバイダーごとにリトライを制限し、同じ意図IDを保持してフォールバックチャネルが重複したユーザーアクションを作成できないようにする。
- 正常、劣化、枯渇、および利用不可の状態を決定指標と明示的なオペレーターアクションで定義する。
- フェイルオーバー、リプレイ、ロールバック、および修復中に受理済み作業のIDを保持し、復旧時に効果の重複や黙示的な喪失が起きないようにする。
- 1つの耐久的通知意図をプロバイダーの試行から分離し、検証、永久拒否、一時的失敗、スロットリング、タイムアウト、および曖昧な受理を分類する。
- 指数的バックオフ、ジッター、試行回数と経過時間の制限、安定した重複排除、プロバイダーの照合、および検査可能な終端状態を持つ安全なクラスのみをリトライする。
実装ガイダンス
- 代表的な環境でランブックを実践し、復旧時間、データ損失境界、および未解決の仮定を記録する。
- フレームワークやベンダーの詳細を選択する前に、配信リトライの入力、出力、アクター、状態、不変条件、副作用、および証拠をモデル化する。
- 適用される配信リトライ契約またはポリシーバージョンを重要な状態と共に保存し、マイグレーション、リプレイ、およびサポートの判断が追跡可能であるようにする。
- 制御された展開の背後にある経路を導入し、期待される結果と観測された結果を比較し、採用証拠が完了するまでテスト済みの復旧ルートを維持する。
障害処理と安全策
- 永続的なアドレスまたはポリシーの失敗はさらなる試行を抑制し、一時的な失敗は制限付きリトライを使用し、その後オペレーターが確認可能な終端状態に遷移する。
- 無効または矛盾する配信リトライ状態は拒否または隔離される。実装は権限を拡大したり効果を重複させる値を推測しない。
- リトライは制限され耐久的IDを使用し、枯渇後は検査可能な終端状態に達し、責任のあるオーナーが存在する。
検証と運用
- 飽和、依存障害、古い設定、およびテレメトリ損失を注入し、宣言された劣化動作を確認する。
- 配信リトライの成功、拒否、検証失敗、依存失敗、リトライ枯渇、および契約バージョンごとの復旧を機密ペイロードの詳細なしで監視する。
- ポリシー、スキーマ、依存関係、マイグレーション、または境界の変更後に正負のフィクスチャを再実行し、結果の証拠を保持する。
採用の前提
- 例にある名前と値は具体的なフィクスチャであり、普遍的なデフォルトではない。採用者は文書化された証拠と所有権を通じて置き換える。
- 採用システムは認証済みID、耐久的な操作または記録バージョン、有界テレメトリ、および制御された変更経路を提供できる。
このパッケージの実行可能に見える例はフィクスチャおよび受け入れ契約です。構造とメタデータを検証するためにコレクションバリデーターを実行し、ターゲットリポジトリでシナリオを翻訳・実行してから実装証拠を記録してください。