フィーチャーフラグのデフォルト値戦略
フラグの目的に基づいて適切なデフォルト値を選択します。フェイルセーフデフォルト、プラットフォーム固有のデフォルト、フォールバックチェーンをカバー。
Best Practices
詳細な説明
デフォルト値戦略
フィーチャーフラグのデフォルト値は、フラグシステムが利用できない場合、ユーザーがターゲティングルールに一致しない場合、またはフラグが初めて評価される場合に何が起こるかを決定します。適切なデフォルトの選択はシステムの信頼性に不可欠です。
ゴールデンルール
デフォルト値は最も安全で保守的な動作を表すべきです。
新機能の場合:デフォルトはOFF(機能を表示しない)。 キルスイッチの場合:デフォルトはON(システムを稼働させ続ける)。
デフォルト値の決定マトリクス
| フラグの目的 | タイプ | 推奨デフォルト | 理由 |
|---|---|---|---|
| 新機能 | boolean | false |
未完成の機能を公開しない |
| キルスイッチ | boolean | true |
フラグなしでもサービスが動作すべき |
| レート制限 | number | 保守的な値 | 高い制限の方が安全 |
| タイムアウト | number | 高い値 | 失敗するより遅い方が良い |
| UIバリアント | string | 現在/オリジナル | 予期せずUXを変更しない |
| 設定オブジェクト | json | 最小限の安全な設定 | 必須フィールドのみ含める |
フォールバックチェーン
デフォルトの評価順序:
- ターゲティングルールが一致 → ルールのバリエーション値
- ルールが一致せず、フラグON → フラグのフォールスルー値
- フラグがOFF → フラグのオフバリエーション
- フラグが見つからない → SDK レベルのデフォルトパラメータ
- SDKが初期化されていない → アプリケーションのハードコードされたデフォルト
よくある間違い
- 新機能のデフォルトを
trueに設定(準備前に公開される) - レート制限のデフォルトに
0を使用(すべてのリクエストをブロック) - 必須文字列設定に空文字列デフォルト
- フラグサービスが完全に利用不可になった場合のテスト不足
ユースケース
チームがインシデントのポストモーテムでフィーチャーフラグのデフォルトをレビュー。フラグサービスの短い障害時に、「true」デフォルトの新機能が全ユーザーに誤って公開されたことが判明。すべての新機能フラグはfalseをデフォルトとし、キルスイッチはtrueをデフォルトとするポリシーを確立。