サーキットブレーカーフィーチャーフラグ

フィーチャーフラグをサーキットブレーカーとして使用し、障害時にクリティカルでない機能を無効化することでアプリケーションをカスケード障害から保護します。

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呼び出しを即座に無効化し、代わりに人気商品を表示できます。これにより、遅いレコメンデーションサービスがすべてのユーザーのページロード時間を増加させることを防ぎます。

試してみる — Feature Flag Config Generator

フルツールを開く