キルスイッチフィーチャーフラグパターン
フィーチャーフラグを使用してキルスイッチパターンを実装し、コードデプロイやサーバー再起動なしに本番環境の問題のある機能を即座に無効化します。
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();
}
インシデント対応ランブック
- 障害コンポーネントを特定する
- 対応するキルスイッチをOFFに切り替える
- システムが安定することを確認する
- 根本原因を調査する
- 修正をデプロイする
- キルスイッチをONに戻す
- 再発を監視する
ベストプラクティス
- 明確にラベル付け: 説明にプレフィックス「KILL SWITCH:」を付けてオンコールエンジニアがすぐに見つけられるようにする
- ターゲティングルールなし: キルスイッチはすべてのユーザーに即座に影響する必要がある
- オフパスのテスト: デグレードされた体験が正しく動作することを定期的に検証する
- 高速伝播: ストリーミングSDKを使用してトグルと効果の間の遅延を最小化する
- 依存関係の文書化: 各キルスイッチの影響を受けるサービスを記録する
ユースケース
ブラックフライデーセールイベント中に、サードパーティの決済プロセッサが断続的な障害を経験。オンコールエンジニアがpayment-processing-enabledキルスイッチをOFFに切り替え、顧客にエラーを表示する代わりに注文を後で処理するためにキューに入れます。決済プロバイダが安定した後にスイッチを復元。