加载中...
特性开关(Feature Flag / Feature Toggle)是在代码里植入条件判断,通过运行时配置而非重新部署来控制功能的开启与关闭,是实现灰度发布、A/B 测试和紧急关闭的底层机制,与持续部署实践紧密结合。

| 又称 | Feature Toggle、Feature Switch |
| 类型 | 软件开发实践 / 发布工程工具 |
| 主流工具 | LaunchDarkly、Unleash(开源)、Statsig、Flagsmith |
没有特性开关时,新功能要么上线要么不上线,两种状态之间的切换都需要重新部署。有了特性开关,你可以:把还未完成的功能代码合并到主干(避免长期分支),但用开关关闭,等功能完整后再开启;先给 1% 的用户开启新功能观察效果;发现问题时在 30 秒内关掉,不需要回滚部署。
Facebook 曾公开介绍,他们的工程师一天向主干合并数百次提交,大量未完成功能都通过 Gatekeeper 系统关闭,只有通过实验验证的功能才逐步打开。[1]
Pete Hodgson 在 martinfowler.com 的文章中把特性开关分为四类:发布开关(控制功能上线节奏)、实验开关(A/B 测试)、运维开关(紧急关闭某功能降级)、权限开关(按用户角色/等级显示不同功能)。
特性开关最大的风险是技术债务积累:一个功能上线后忘了清理开关代码,几年后代码库里全是已经永久打开的条件判断,没人敢删。LaunchDarkly、Unleash、Statsig 等专业工具提供了开关生命周期管理,可以标记过期开关并提醒清理。

| 又称 | Feature Toggle、Feature Switch |
| 类型 | 软件开发实践 / 发布工程工具 |
| 主流工具 | LaunchDarkly、Unleash(开源)、Statsig、Flagsmith |
登录 后参与讨论
暂无讨论,来发表第一条评论吧