工程效率与质量 / 进阶
金丝雀发布实战:用指标决定继续还是回滚
从小流量开始逐步放量,把健康指标、观察窗口和自动回滚写进发布流程。
发布前先定义成功
如果团队在发布后才讨论哪些指标算异常,就无法自动化。为服务选出少量直接反映用户体验的指标,例如请求成功率、P95 延迟和关键业务成功率,并为新旧版本使用相同查询窗口。
技术指标:5xx 比例、延迟、资源饱和度;业务指标:下单成功率、支付完成率;护栏指标:队列积压、数据库连接数;样本要求:最小请求量与最短观察时间。
逐步放量,每一步都有暂停点
流量比例应结合请求量决定。低流量服务即使观察十分钟也可能没有足够样本,需要延长窗口或使用影子流量。数据库迁移、消息格式和缓存键也必须保持前后版本兼容。
EXAMPLE / 02金丝雀发布
steps:
- setWeight: 5
- pause: { duration: 5m }
- analysis: { templateName: api-health }
- setWeight: 25
- pause: { duration: 10m }
- setWeight: 50回滚路径要提前演练
自动分析失败后应立即停止放量并切回稳定版本,同时保留新版本日志和指标。若发布包含不可逆数据写入,应用回滚可能不够,因此要在设计阶段使用兼容迁移和功能开关。
记录从异常出现到稳定版本恢复流量的时间。只有真实演练过,团队才知道回滚按钮背后是否完整。