要点: フィーチャーフラグは一時的な運用スイッチです。担当者と期限がなければ技術的負債になります。
この記事の用語: フィーチャーフラグ:機能を切り替える運用スイッチ。公開記録:利用者が実際に機能を見た記録。
現場の課題
複数フラグの組み合わせは未試験経路を増やし、サービスごとに異なる設定版を読む可能性もあります。緊急停止スイッチは訓練していなければ緊急時に役立ちません。
単純な対策だけでは不十分な理由
フィーチャーフラグはデプロイと公開を分けますが、テストすべき分岐も増やします。担当者、期限、バージョン、公開記録がなければ運用技術的負債になります。
処理フロー
バージョン ポリシー→SDK スナップショット
Local Evaluation→アプリケーション
フラグ Decision→Telemetry
公開記録・Outcome
アーキテクチャ上の判断
Purpose別Type
リリース、実験、緊急停止スイッチ、利用権限を分けます。
Local Evaluation
Signed スナップショットで中央依存を避けます。
公開記録
実到達時のパターンを記録します。
さらに深く考える
両パターン互換
コード、スキーマ、イベントで互換を維持します。
組合せ制限
依存サービスと排他を定義します。
実装手順
- リリース、実験、権限、緊急運用のフィーチャーフラグを区別します。
- すべてのフラグへ担当者、作成日、期限、安全な既定値を設定します。
- 決定的な利用者グループへ段階公開し、パターン別にSLOと業務成果を比較します。
コード例: Typed フラグ Declaration
flag checkout_v2 {
type: RELEASE
owner: commerce-team
expires: 2026-08-31
default: CONTROL
targeting: stableHash(tenantId)
}Validatorで担当者、既定値、期限を強制します。
想定しておく障害
- サービス間バージョンが違います。
- 破壊マイグレーションはフラグで戻りません。
- 未公開記録 利用者を実験に数えます。
監視すべきこと
| 指標 | 何が分かるか |
|---|---|
| バージョン別公開記録 | 実コード Pathを示します。 |
| パターン別SLO | Rollout判断です。 |
| フラグ Age | 技術的負債を測ります。 |
設計の検証方法
- SDK間パターンを比較します。
- 管理系停止を試験します。
- 緊急停止スイッチを負荷下で訓練します。
本番導入の進め方
型付き管理台帳を導入し、既存フラグを棚卸しします。公開記録を記録し、CIでは期限超過を警告から始め、段階的に失敗扱いして定期削除します。
本番前チェックリスト
- 同Subjectは同パターンです。
- 失敗 既定値を定義します。
- Expired フラグをCIで止めます。
まとめ
フィーチャーフラグは、判断を観測でき、ライフサイクルを確実に終えられるときだけリリースを安全にします。
