灰度发布,对于大厂来说是必不可少的,对于我这种从来没有灰度发布过的,并不是很清楚,估计也有很多人不知道这个东西。以前只是直到灰度发布,这次稍微了解一下。
灰度发布是指新版本或者新功能通过一定策略选取一些用户,让他们先使用,通过使用情况对功能、性能、稳定性等指标评估是否扩大范围直至全面发布。
灰度发布开始到结束期间的这一段时间,称为灰度期。
优点:
提前收集用户使用意见,提前优化、修复bug。
让用户参与产品测试,加强与用户互动,降低产品升级所影响的用户范围。
选取用户是很关键的一点,可以通过城市、年龄、id等一系列条件选取少部分用户,而资源则通过选取之后,判断是否是灰度用户,然后指定呈现新版本还是旧版本。
web前端灰度发布如果是服务端渲染,通过服务端判断是否是灰度用户直接返回对应的版本页面。如果是通过框架,那么就需要在一个html里面判断,然后分别使用打包后的两个不同资源。如果是原生html的项目,则所需要判断的会更多。
如果是客户端的灰度发布,应该是可以按照用户逐渐推送更新安装包。而服务端的灰度发布则会相应容易一些,毕竟是在后台实现。
现在有专门的灰度发布模式A/B测试,通过业务代码区分流量访问不同代码。但是区分流量是业务代码做的。通过少量用户到新版本,然后对新旧版本对比,这就是A/B测试。
nginx这块我不会,所以也不知道能不能实现两个分支nginx静态代理。理论上来说是没有问题。
其实针对大型的系统,还有蓝绿部署、滚动发布等,还有专门的测试云服务提供商。
灰度发布除了代码层面之外,对服务这块要求还是蛮大的,灰度发布不同于预发布,灰度发布是直接让线上用户参与,而一般预发布是发布到线上,由测试人员进行测试。
当然,会使用灰度发布的,一般来说都是千万级别用户的项目了,虽然很想使用灰度发布,但还是需要考虑实际场景,也希望以后能有机会使用灰度发布。
(完)