交付自動化 中階
什麼是 Feature Flags?它如何支援持續部署和降低發布風險?
Feature Flags(功能旗標)
在程式碼中加入條件判斷,讓你能在不重新部署的情況下動態開啟或關閉功能。
if (featureFlags.isEnabled('new-checkout-flow', userId)) { return newCheckoutFlow(); } else { return legacyCheckoutFlow(); }
使用場景
漸進式發布:先對 1% 的使用者開啟新功能,確認正常後逐步擴大範圍
Trunk-based Development:開發中的不完整功能可合併至主分支但保持關閉,避免長期 feature branch
緊急關閉:生產環境發現問題時,無需回滾部署,即時關閉問題功能
A/B 測試:針對不同用戶群展示不同版本,收集業務指標
Beta 測試:只對特定使用者(如內部員工或 beta 群組)開放新功能
Flag 類型
| 類型 | 特點 | 生命週期 |
|---|---|---|
| Release Flag | 控制功能上線 | 短暫(功能穩定後移除) |
| Experiment Flag | A/B 測試 | 短暫(實驗結束後移除) |
| Ops Flag | 緊急熔斷控制 | 長期 |
| Permission Flag | 基於用戶權限 | 長期 |
常見工具
- 開源:Unleash、Flagsmith
- 商業 SaaS:LaunchDarkly、Split.io
技術債警告
Feature flags 是技術債的來源。每個 flag 都需要最終移除,否則程式碼中的條件分支會不斷累積,增加複雜度和測試負擔。應建立 flag 的生命週期管理機制。
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
