灰度测试图,灰度测试中的灰度是什么意思

灰度测试是什么意思(分享常用的几种灰度发布方案)灰度,就是存

灰度是黑色和白色之间的平滑过渡区域。对于互联网产品来说,线上和线下是非黑即白,实现线下功能平滑过渡的一种方式叫做灰度发布。很多大厂在产品上线前都会进行灰度测试。本文作者总结了大厂常用的几种灰度释放方案。

大厂常用的几种灰度发布方案
大厂常用的几种灰度发布方案

什么是灰度发布?百度百科的解释如下:

灰度出版是指一种可以在黑白之间平滑过渡的出版方式。

测试是一种灰度发布的方式,允许一部分用户继续使用A,一部分用户开始使用B,如果用户对B没有异议,那么逐步扩大范围,将所有用户移到B,灰度发布可以保证整个系统的稳定性,可以在初始灰度发现问题并进行调整,保证其影响力。

从上面可以看出,灰度发布的功能如下:

减少释放的影响。虽然功能已经在测试环境中测试过了,但终究没有发布到生产环境中。如果有少部分用户先使用新版本,提前发现bug或性能问题,提前修复,就可以降低新版本的影响。通过新旧版本的对比,观察新版本的效果。结合工作中使用的灰度释放实践和其他大厂的灰度释放调查,总结出以下灰度释放方案。

一、灰度发布的划分

发布如果按端划分,可以分为web前端、客户端和服务器端灰度。

无论是哪种灰度,一般都需要满足以下两个要求:

需要大批量配置,为产品/运营人员配置大批量策略;有必要确保相同的用户总是访问相同版本的代码。如果同一个用户上一次请求访问版本A,下一次请求访问版本B,可能会出现问题。

1. web前端灰度

假设我们的前端资源存储在CDN上:每次发布一个新版本,我们就把资源增量上传到CDN上,然后给它分配一个唯一的版本号,然后存储所有的版本号。处理请求时,根据动态配置的转移策略决定用户使用哪个版本。

比如导流策略就是增加10%的量,也就是新版本随机增加10%的用户。当用户第一次命中资源版本号时,需要存储用户id和版本号的映射关系(可以存储在cookie中),以保证同一用户上一次和下一次访问的代码版本相同。

如果线上有紧急bug需要修复,需要重新发布新版本,如何处理目前的灰度?是想快点做完最后一个灰度再全文发布还是同时一起发?一般来说,当新版本发布或卷策略改变时,灰度要重新划分。

2. 服务端灰度

服务器灰度分为兼容变化灰度和不兼容变化灰度。

1)兼容变更

兼容性变化可分为物理灰度和逻辑灰度。

物理灰阶:物理灰阶相对简单,根据机器维度进行灰阶,新老版本直接部署在不同的机器上,流量均匀分布在新老版本上。这种方法虽然简单,但不适合不兼容的变更。逻辑灰度:逻辑灰度是根据更精确的流量策略来控制流量。这个灰度一般需要写一定的灰度代码。这种方法可以精确控制流量,但是增加了一定的格雷码,而且灰完之后删除相关的格雷码有点麻烦。2)不兼容的变更

不兼容变更是指当前功能发生了变化,即界面逻辑较之前版本发生了较大变化,必须同时发布前后端,否则一段时间内服务不可用。

一般的做法是引入接口版本号,接口新旧版本并存,比如/v1/api和/v2/api。前端使用的是/v2/api版本,等过了一段稳定期(可能是登录时间到期后)就可以下载/v1/api版本了。

3. 客户端灰度

web前端和服务器端的灰度发布可以在用户不知情的情况下顺利进行,并可以在出现问题时快速回滚

如果一个有bug的安装包被完整发布,一旦出现问题,我们只能快速定位问题,提醒用户安装新版本。是否安装取决于用户,所以客户端发布灰度非常必要。

客户端启动时会向灰度系统发出请求,灰度系统会根据客户端传来的参数和当前的卷策略决定是否升级客户端。通常情况下,系统会根据以下策略向用户提供升级提醒:

根据用户设备的系统和应用版本确定用户设备;按渠道:发布到不同应用市场的app会被贴上渠道的标签,所以可以根据渠道来区分用户;根据设备ID和用户ID对用户进行访问。设备ID主要用于控制提醒的频率,用户ID主要用于区分特征用户,比如向活跃用户发送提醒。

二、灰度放量策略

>流量策略一般分为以下几种:

1. 按流量百分比

先到先得的方式比如限制10%的用户体验的是新版本,90%的用户体验的是老版本。先访问网站的用户就优先命中新版本,直到流量用完为止。

2. 按人群划分

  1. 按用户id、用户ip、设备类型比如可通过平时的埋点上报数据得知用户的pv、uv、页面平均访问时长等数据,根据用户活跃度来让用户优先体验新版本,进而快速观察使用效果。
  2. 按地域、性别、年龄等用户画像比如可通过用户的性别、年龄等做下新老版本的对比效果来看看目标用户在新版本的使用年龄段,性别范围是多少。

3. 按渠道划分

比如根据用户的注册来源来放量。

三、灰度发布的代价

通过上面的讲解,可以看到一个完整的灰度发布,包括前端、后台都需要额外的代码量去实现,如果只有几万的用户,要去实现这样一套灰度发布,代价是比较高的。

但如果是百万~亿级用户,灰度发布是很值得的,它不仅能降低新版本bug的风险,还能通过版本对比,推出最好效果的版本应用。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/175965.html

(0)

相关推荐