4 Types of Feature Flags

4 種類的 Feature Flag 與使用時機

前言

先前探討到:什麼是 Feature Flag 以及它解決什麼問題?,了解 Feature Flag 存在的價值後,今天了解更多關於 4 種類型的 Feature Flag 以及實戰上的用途,不同目的的 Flag,在生命週期、動態程度與管理策略上都有不同的特性。

Feature Flag 的 2 個維度

Feature Flag 可以被 2 個維度所分類:「存在時長」與「動態性」。

  • 存在時長:
    • 短期:通常目的是過渡,如功能釋出或實驗。
    • 長期:往往成為產品設計的一部分。
  • 動態性:
    • 低動態:值通常固定,極少在運行期間改變。
    • 高動態:值會頻繁變化,可能依據使用者、請求、環境即時決定。

四個象限分類出不同用途的 Feature Flag:

高動態
Experiment │ Permissioning
Flags │ Flags
──────────────────────┼────────────────────→ 存在時長
Release │ Ops
Flags │ Flags
低動態

Feature Flag 的 4 個象限

短期 × 低動態 → Release Flags

設定明確移除期限,在功能完全釋出後應盡快移除

Trunk Based Development🔗 不使用分支而是使用 Feature Flag 來實現「代碼部署與功能發佈的脫鉤」,透過解耦部署與發布保持開發效率。

  • 漸進發布:先部署代碼但不啟用功能,等準備好再打開開關
  • 金絲雀發布:先對小部分用戶開放新功能,觀察穩定性
  • 快速回滾:如果新功能出問題,可以立即關閉開關而不需要重新部署
  • 解耦部署與發布:讓代碼部署和功能上線成為兩個獨立的動作

短期 × 高動態 → Experiment Flags

為了收集數據做出決策而實驗,實驗結束一定要根據結論收斂
  • A/B 測試:比較不同版本的 UI、算法或功能,看哪個表現更好
  • 用戶分群實驗:動態針對不同用戶群體測試不同策略

長期 × 高動態 → Permissioning Flags

設計清晰的權限模型,避免與實驗混用

用戶的權限、訂閱狀態、特徵屬性會頻繁變化,需要即時反應:

  • 實驗權限:早期採用者計劃、內部員工測試功能
  • 地理位置限制:某些功能只在特定國家/地區開放、當地法規要求
  • 不同族群:管理員 vs 普通用戶、免費 vs 付費功能

長期 × 低動態 → Ops Flags

可靠性與可觀測性
  • 防禦性回退:流量高峰時關閉非核心功能、降低資源密集型操作的頻率、啟用快取機制或簡化版功能
  • 維護模式:資料庫維護時切換為唯讀模式、系統升級時顯示維護頁面、暫時關閉某些服務端點
  • 特殊情境:在特定時段啟用額外的監控或日誌記錄

延伸閱讀