灰度发布是指在不影响生产环节可用性的前提下,将软件版本部署到生产灰度区(小范围、小流量),对其进行持续一段时间的监控及验证,最后根据监控验证结果决定软件新版本是否正式发布的软件发布过程。
灰度发布可以进行以下区分:
能力维度 | 能力指标 | 灰度发布能力成熟度 | ||
指标项 | 定义 | Level 1 版本灰度(也叫技术灰度、节点灰度) | Level 2 产品灰度(也叫业务灰度、全链路灰度) | |
灰度用户对象 | 单应用/多应用 | 支持单应用/服务或者多应用/服务,进行区分 | 仅对应用/服务发布版本本身进行灰度验证、监控,在正式发布前导入一定比例的真实流量进行一定时间的观察 | 在Level 1的基础上,支持产品功能调用多个应用/服务灰度发布 |
流量控制(路由策略) | 灰度区流量控制(路由) | 路由用户流量到灰度区的控制能力。用户流量是指内部用户及外部真实的用户流量,不包括测试流量。 | 内部用户及一定比例的外部真实用户流量验证 | 支持真实用户流量按策略路由,支持按真实用户流量配置构成一个产品的多个应用/服务全链路调用路由 |
常用的灰度发布度量指标:
灰度发布占比=执行灰度发布的版本数/总的版本发布次数
平均灰度时长=版本执行灰度发布的累计时长/总的版本发布次数
灰度成功率=灰度发布成功的版本数/总的灰度发布次数
灰度回滚占比=进行回滚操作的版本数/总的灰度发布次数