9.1信頼性のための設計パターン
★★☆ 重要| パターン | 目的 | 要点・落とし穴 |
|---|---|---|
| タイムアウト | 遅い依存先に引きずられない | 未設定が最も危険。上流ほど長く、下流ほど短く設定する |
| リトライ | 一時的な失敗からの回復 | 指数バックオフ+ジッター必須。リトライ回数の上限。多段リトライは負荷を掛け算で増やす(リトライストーム) |
| 冪等性 | リトライや重複実行で結果が変わらない | 冪等キー(Idempotency-Key)、一意制約、処理済みIDの記録 |
| サーキットブレーカー | 壊れた依存先への呼び出しを止める | 失敗率で開閉。開いている間は即座にフォールバック |
| バルクヘッド | 1つの依存先の障害を隔離 | 依存先ごとにスレッドプールや接続プールを分ける |
| レート制限 | 過負荷から自分を守る | トークンバケット等。超過時は 429 を返す |
| グレースフルデグラデーション | 一部機能を落として全体を守る | レコメンドが落ちても購入はできる、など |
| バックプレッシャー | 処理能力以上の流入を抑える | キューの長さを見て受付を絞る |