フィーチャーフラグのデフォルト値戦略

フラグの目的に基づいて適切なデフォルト値を選択します。フェイルセーフデフォルト、プラットフォーム固有のデフォルト、フォールバックチェーンをカバー。

Best Practices

詳細な説明

デフォルト値戦略

フィーチャーフラグのデフォルト値は、フラグシステムが利用できない場合、ユーザーがターゲティングルールに一致しない場合、またはフラグが初めて評価される場合に何が起こるかを決定します。適切なデフォルトの選択はシステムの信頼性に不可欠です。

ゴールデンルール

デフォルト値は最も安全で保守的な動作を表すべきです。

新機能の場合:デフォルトはOFF(機能を表示しない)。 キルスイッチの場合:デフォルトはON(システムを稼働させ続ける)。

デフォルト値の決定マトリクス

フラグの目的 タイプ 推奨デフォルト 理由
新機能 boolean false 未完成の機能を公開しない
キルスイッチ boolean true フラグなしでもサービスが動作すべき
レート制限 number 保守的な値 高い制限の方が安全
タイムアウト number 高い値 失敗するより遅い方が良い
UIバリアント string 現在/オリジナル 予期せずUXを変更しない
設定オブジェクト json 最小限の安全な設定 必須フィールドのみ含める

フォールバックチェーン

デフォルトの評価順序:

  1. ターゲティングルールが一致 → ルールのバリエーション値
  2. ルールが一致せず、フラグON → フラグのフォールスルー値
  3. フラグがOFF → フラグのオフバリエーション
  4. フラグが見つからない → SDK レベルのデフォルトパラメータ
  5. SDKが初期化されていない → アプリケーションのハードコードされたデフォルト

よくある間違い

  • 新機能のデフォルトをtrueに設定(準備前に公開される)
  • レート制限のデフォルトに0を使用(すべてのリクエストをブロック)
  • 必須文字列設定に空文字列デフォルト
  • フラグサービスが完全に利用不可になった場合のテスト不足

ユースケース

チームがインシデントのポストモーテムでフィーチャーフラグのデフォルトをレビュー。フラグサービスの短い障害時に、「true」デフォルトの新機能が全ユーザーに誤って公開されたことが判明。すべての新機能フラグはfalseをデフォルトとし、キルスイッチはtrueをデフォルトとするポリシーを確立。

試してみる — Feature Flag Config Generator

フルツールを開く