キルスイッチフィーチャーフラグパターン

フィーチャーフラグを使用してキルスイッチパターンを実装し、コードデプロイやサーバー再起動なしに本番環境の問題のある機能を即座に無効化します。

Safety Patterns

詳細な説明

キルスイッチパターン

キルスイッチは、問題が発生した際に機能やサービスを即座に無効化するために設計されたフィーチャーフラグです。新機能を有効にする通常のフィーチャーフラグとは異なり、キルスイッチは本番環境で常にオンであり、インシデント時にオフにされます。

設定例

{
  "payment-processing-enabled": {
    "name": "決済処理有効",
    "description": "キルスイッチ:インシデント時にすべての決済処理を停止するために無効化",
    "type": "boolean",
    "enabled": true,
    "defaultValue": true,
    "targeting": []
  }
}

通常フラグとの主な違い

側面 通常フラグ キルスイッチ
デフォルト状態 オフ(機能無効) オン(機能有効)
アクション オンにして有効化 オフにして無効化
緊急度 計画的ローンチ 緊急対応
ライフタイム 一時的(ローンチ後に削除) 恒久的
命名 enable-feature-x feature-x-enabledまたはcircuit-breaker-x

コードでの実装

// アプリケーションコードでのキルスイッチパターン
if (featureFlags.isEnabled("payment-processing-enabled")) {
  processPayment(order);
} else {
  // グレースフルデグラデーション
  queuePaymentForLater(order);
  showMaintenanceMessage();
}

インシデント対応ランブック

  1. 障害コンポーネントを特定する
  2. 対応するキルスイッチをOFFに切り替える
  3. システムが安定することを確認する
  4. 根本原因を調査する
  5. 修正をデプロイする
  6. キルスイッチをONに戻す
  7. 再発を監視する

ベストプラクティス

  • 明確にラベル付け: 説明にプレフィックス「KILL SWITCH:」を付けてオンコールエンジニアがすぐに見つけられるようにする
  • ターゲティングルールなし: キルスイッチはすべてのユーザーに即座に影響する必要がある
  • オフパスのテスト: デグレードされた体験が正しく動作することを定期的に検証する
  • 高速伝播: ストリーミングSDKを使用してトグルと効果の間の遅延を最小化する
  • 依存関係の文書化: 各キルスイッチの影響を受けるサービスを記録する

ユースケース

ブラックフライデーセールイベント中に、サードパーティの決済プロセッサが断続的な障害を経験。オンコールエンジニアがpayment-processing-enabledキルスイッチをOFFに切り替え、顧客にエラーを表示する代わりに注文を後で処理するためにキューに入れます。決済プロバイダが安定した後にスイッチを復元。

試してみる — Feature Flag Config Generator

フルツールを開く