欢迎访问网易云社区,了解更多网易技术产品运营经验。
4.6.3 灰度发布
灰度发布本质上是指选取部分用户或部分区域发布产品新特性,互联网产品的发布普 遍采用灰度发布方式。A/B 测试是常用的灰度发布方式。A/B 测试按一定的策略选定一部 分用户继续用 A,而另一部分用户开始用 B,产品可以通过使用 B 的用户反馈决策是否扩 大发布范围,最终达到产品新特性向所有用户全量发布。灰度发布可以保证整体系统的可 用性,在开始灰度的时候就可以发现、解决产品新特性带来的问题。
灰度发布策略
灰度发布常见实现方式有代码 Flag 标记、产品预发布和路由转发。一个完整的灰度发 布还必须考虑有状态数据是否改变、是否与原来数据兼容,以及数据备份和回滚策略。
产品代码 Flag 标记
在产品代码中加入 Flag 标记,由用户自行选择是否进入新版本或继续使用老版本,系 统后台可根据用户设置的 Flag 重定向到新版本或老版本。此方式可实现快速回滚,不需要 重新发布和重启系统。
产品预发布
一个接近线运行的测试环境或演练环境,内部用户或白名单用户可以直接访问产品新 功能。此方式实际上是选取小部分用户群体做灰度发布。产品预发布实现方式简单,但内 部用户始终有限,无法模拟大规模用户的场景,不够灵活。
路由转发
在用户或流量接入到产品应用之前部署负载均衡器,如 Nginx、Haproxy、LVS 等其他 负载均衡设备。采用一个灵活的配置,使负载均衡将部分用户或流量导入新产品,另一部 分用户或流量导入老版本产品,实现灰度发布策略。此方式配置灵活,可控性比较强,用 户需要较强的业务部署和管理能力。
回滚策略
不同的灰度发布实现方式有不同的回滚策略。
网易云基础服务灰度发布
如图 4-45 所示,网易云基础服务自身产品灰度发布主要使用 Flag 标记和路由转发的方 式。用户可以自行选择是否体验新版本。选择体验新版本的用户信息中带有 Flag 标记,这 个用户发起的所有请求都会被重定向到新版本试用环境中,其他用户请求访问正式环境。 用户的请求也可以从新版本切回原来发布版本环境中。网易云基础服务为用户提供的灰度 发布采用路由转发方式,用户产品需要用 service 的方式部署,灰度发布时可以通过 Lable 选择部分服务发布,用户还可以控制平台后端负载服务转化比率。
图 4-45 网易云基础服务灰度发布方案
文章节选自《云原生应用架构实践》 网易云基础服务架构团队 著
网易云计算基础服务深度整合了 IaaS、PaaS 及容器技术,提供弹性计算、DevOps 工具链及微服务基础设施等服务,帮助企业解决 IT、架构及运维等问题,使企业更聚焦于业务,是新一代的云计算平台。点击可免费试用。