サーキットブレーカーフィーチャーフラグ
フィーチャーフラグをサーキットブレーカーとして使用し、障害時にクリティカルでない機能を無効化することでアプリケーションをカスケード障害から保護します。
Safety Patterns
詳細な説明
サーキットブレーカーフィーチャーフラグ
サーキットブレーカーフラグは、非クリティカルなサービス依存が信頼性を失った際に自動的または手動で無効化します。これにより、1つの障害サービスがアプリケーション全体をダウンさせるカスケード障害を防ぎます。
設定例
{
"recommendation-engine-enabled": {
"name": "レコメンデーションエンジンサーキットブレーカー",
"description": "障害時にレコメンデーションサービスへの呼び出しを停止するために無効化",
"type": "boolean",
"enabled": true,
"defaultValue": true,
"targeting": []
}
}
サーキットブレーカーの状態
CLOSED(正常) → サービスは正常、フラグはON
|
v(障害が閾値を超える)
OPEN(トリップ) → サービスが障害中、フラグはOFF
|
v(クールダウン期間経過)
HALF-OPEN(テスト) → 限定トラフィックで回復をテスト
|
v(成功)
CLOSED(正常) → フルトラフィックを復元
グレースフルデグラデーション戦略
| サービス | 無効化時 | フォールバック |
|---|---|---|
| レコメンデーション | 「おすすめ」セクションを非表示 | 人気アイテムを表示 |
| 検索 | インスタント検索を無効化 | 基本的なSQL検索にフォールバック |
| ソーシャルプルーフ | 「X人が閲覧中」を非表示 | 何も表示しない |
| メール通知 | メールをキューに入れる | 後でバッチ送信 |
| 分析トラッキング | トラッキング呼び出しを停止 | ローカルにイベントをバッファ |
ベストプラクティス
- すべての外部依存関係を特定し、それぞれにサーキットブレーカーを作成する
- フォールバックパスを定期的にテストする(カオスエンジニアリング)
- 現在オープンなサーキットブレーカーを表示するダッシュボードを設定する
- 各サーキットブレーカーフラグの明確なオーナーシップを定義する
ユースケース
ECサイトが時折レイテンシーが急上昇するレコメンデーションエンジンに依存している。サーキットブレーカーフラグにより、これらの急上昇時にレコメンデーションAPI呼び出しを即座に無効化し、代わりに人気商品を表示できます。これにより、遅いレコメンデーションサービスがすべてのユーザーのページロード時間を増加させることを防ぎます。