首页/开发/系统分析与架构设计速查/功能开关(Feature Flags)

功能开关(Feature Flags)

功能开关把发布与启用解耦:代码随时可发布,功能按开关灰度;按用途分为发布、实验、运维与权限开关,并为每个开关设定生命周期与清理责任人。

语义清晰的判断示例

语义清晰的判断示例
if (flags.isEnabled('checkout-v2', { userId })) {
  新流程();
} else {
  旧流程();
}
// 通过 OpenFeature 等标准接口调用,避免业务代码绑定具体供应商 SDK
  • 发布开关:灰度放量与快速回滚,全量后按计划清理
  • 实验开关:A/B 实验,产出结论后下线
  • 运维开关:降级与熔断的 kill switch
  • 权限开关:按用户或租户开放能力

易错点

  • 开关只增不删,代码分支组合持续膨胀
  • 用开关替代权限系统,产生越权风险

数据来源与参考

  • Pete Hodgson:Feature Toggles(martinfowler.com,2017)
  • OpenFeature 规范(CNCF 项目)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌