Feature Flag 治理:让开关成为短期控制面

规范功能开关的类型、生命周期、权限与降级行为,避免长期旗标堆积形成隐藏配置系统。

文章目录 · 4 节

Feature Flag 能把代码发布与功能启用解耦,也会引入组合爆炸和运行时不确定性。每个开关都应有明确目的、默认值和删除日期。

按用途分类

  • Release flag:灰度新功能,生命周期通常按天或周
  • Experiment flag:分流实验,绑定统计假设与结束时间
  • Ops flag:降级或切断依赖,要求高可靠和演练
  • Permission flag:长期授权,不应伪装成临时发布开关

为每个 flag 记录 owner、创建日期、预期删除日期、影响服务和失败默认值。

{
  "key": "checkout_v2",
  "owner": "payments",
  "default": false,
  "expires_at": "2025-12-15"
}

安全启用

先对内部流量或小比例用户开启,比较错误率、延迟和业务指标。配置分发失败时,客户端应使用缓存且有明确 fail-open 或 fail-closed 选择。

控制风险

  • 生产修改需要审计和分级权限
  • 不在日志中输出用户完整分组属性
  • 避免一个请求中多次读取到不同 flag 值
  • 删除 flag 时同时删除死代码和旧指标

收尾清单

每周报告过期和长期未变化的开关。对关键 ops flag 定期演练,确保紧急关闭路径不依赖已经故障的控制面。