このテーマを扱うきっかけ
私のインターン先でFeature Flagの運用が始まったので、ちょっと触れてみます!
Feature Flagのメリット
(1)より早く、ストレスレスで開発できる
- トランクベース開発が行える
(2)本番環境でのテストが可能になる
- カナリアリリース
- ベータリリース
- ダークローンチ
- ドッグフーディング
- ABテスト
フィーチャーフラグ(Feature Flag)はなぜ必要なのか?
Feature Flagのデメリット
- コード量の増加
- フラグの管理コスト
- フラグ同士が依存してしまう
フィーチャーフラグ(Feature Flag)はなぜ必要なのか?
Feature Flag使用時の注意点
- 1つのフィーチャーに関するフラグを複数のレイヤーに挿入することは避ける
- 振る舞いを切り替えたい箇所からフィーチャーフラグへの依存を分離する
- 役割を終えたフィーチャーフラグを削除する仕組みを作る
フィーチャーフラグ(Feature Flag)導入と運用のベストプラクティス
Feature Flagには4種類ある
↓XPの有名人マーティン・ファウラーさんの元資料
https://martinfowler.com/articles/feature-toggles.html
Feature Flagの種類まとめ
Toggleの種類 | 目的 | 主なユーザー | 持続期間 |
---|---|---|---|
Release Toggle | 機能の段階的リリース | 開発者 | 短期(数日〜数週間) |
Experiment Toggle | A/Bテストなどの実験 | プロダクトチーム | 短期(数日〜数週間) |
Ops Toggle | システム運用の制御 | 運用チーム・SRE | 中〜長期(数週間〜数ヶ月) |
Permission Toggle | ユーザーごとの機能制御 | サポート・管理者 | 長期(数ヶ月〜年単位) |
軸 | デプロイごとに変更 | リクエストごとに変更 |
---|---|---|
変更タイミング | アプリのデプロイ時 | リアルタイム |
実装方法 | 設定ファイル・環境変数 | DB・キャッシュ・API |
対象のトグル | Release Toggle, 一部のOps Toggle | Experiment Toggle, Permission Toggle, 一部のOps Toggle |