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 定期演练,确保紧急关闭路径不依赖已经故障的控制面。