编辑导语:灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式;一个产品是选择全量发布还是灰度发布,需要通过实际情况来定;本文作者对此进行分析,我们一起来看一下。
之前参与了公司一款b端产品的重构项目,结束后就需要面对如何发布的问题,是全量发布还是灰度发布。
这需要根据实际情况来选择,当时我从“用户规模”和“新旧版本差异”两个角度考虑:
- 1. 用户规模:该产品用户规模大,涉及不同用户版本,不同版本的用户对新版本的接受度不同,可能存在不习惯新版本而导致流失的情况。
- 2. 新旧版版本差异:该产品重构后新版本相较于旧版本,部分功能缺失(白名单功能),会影响到部分用户的日常工作流程。
通过上述两个角度考虑,直接全量发布切换可能会影响到用户的日常工作和使用习惯,存在流失的风险,所以采取了灰度发布。
确定发布方式后,在选择首批灰度用户名单时,发现了一些存在的问题,本文就想和大家讨论初始阶段遇到的问题以及解决办法。
一、什么是灰度发布
灰色是介于黑色和白色之间的颜色,灰度发布就是介于未发布和完全发布之间的一种发布方式。
假定未发布的版本为A,通常为线上版本;完全发布的版本为B,通常是新版本。
灰度发布可以让一定百分比的用户优先体验版本B,其余用户仍然使用版本A,并且慢慢扩大百分比,最终将所用用户迁移到版本B。
那么为什么要进行灰度发布呢?
从开头我司的案例可以看出,灰度发布有一个隐藏的前提条件,用户规模远大于生产团队的规模;以至于生产团队没有足够的资源来应付全部用户使用新版本后带来的问题,包括不习惯所带来的不适应和线上bug。
而灰度发布可以通过控制发布面积,让使用新版本的用户控制在生产团队可以应付的范围内;将可能出现问题的用户圈定在“部分”用户,这个部分的范围由生产团队评估得出。
我们通过灰度发布,将一部分经过筛选后的用户纳入测试范围,由生产团队和用户共同完成对新版本的验收;主要的目的是检验了用户对于新版本的接受度,规避了因为产品决策冒失、冒进所带来的风险。
同时也可以检验产品质量,是否存在bug,以及在不同设备不同环境下的情况。
二、问题和策略
灰度发布帮助我们选定了一定比例的用户,是一种有效控制风险的发布方式。
但是在其初始阶段,也会存在一些问题,针对不同的问题,我们需要采用不同的策略来对应。
1. 新版本部分功能缺失
在现实场景中,受到了时间、资源和优先级等因素的制约,新版本相比较于老版本存在部分功能缺失的情况,常存在于大型版本迭代更替的过程中。
这种情况下,在选择首批灰度名单的时候会出现一个问题——引入的用户中存在依赖这些缺失的功能,导致用户的日常工作收到了影响。
b端产品的功能是解决用户工作中的问题的,功能缺失会导致用户的工作流不完整,影响到了用户的工作流;会造成用户的损失,也会让用户产生新版本不如“老版本”功能稳定的想法,从而放弃对新版本的使用。
因此,在面对这一问题时,需要我们在选择首批灰度用户时,对用户名单进行过滤和筛选。
具体的做法是:首先对比新版本和老版本的功能差异点,比如老版本有而新版本无的功能等;其次,评估每个差异点所带来的影响,是否真的会对用户的工作流产生影响,只有存在影响用户工作的差异点,才需要被解决;最后,在选择首批名单时剔除这些被影响的用户,同时通过迭代及时补上这些差异点。
案例:
某产品提供了对淘宝店铺的数据统计能力,其中有1个模块是对“预售”商品数据的统计;在最近的一次产品重构中,受限于时间的关系,以及评估“预售”模块是一个周期性的行为,在大促前会被商家频繁使用;平日使用到的商家非常之少,在本次产品重构中,没有做这一功能。
那么对于那些平日里也有“预售”商品,需要查看“预售”数据的商家来说,新版本就是缺失的,并且影响到了他们的日常工作流程,会对新版本产生不满的情绪。
上述的情况,就是出现了“新版本部分功能缺失”的现象,虽然平日使用该模块的商家数量非常少,但是如果引入的灰度名单中有这样的用户;缺失“预售”模块的新版本会影响到用户的正常工作,没有办法对预售商品的数据进行分析了。
这就需要我们在选择名单时剔除这部分用户,并且安排资源迭代“预售”模块
2. 覆盖不了全部用户
b端产品的用户构成是复杂的,是有很多不同的用户类型组成的;比如按新老用户划分可以划分为新用户和老用户;按用户规模可以划分大用户和小用户;按用户付费情况可以划分付费用户和免费用户。
产品的用户是有多种不同类型的用户组成的,而不同类型的用户对于产品的诉求是不同的;所以在切换版本的时候,理论上我们希望灰度名单能覆盖到所有类型的用户。
但是在现实场景中,往往是很难覆盖的,主要受到两个因素的制约:
- 首批灰度的名单数量不多,每种类型的用户没有办法全部覆盖到;
- 灰度的用户只有达到一定的数量才能起到效果,例如引入1个新用户和引入100个新用户是有差异的,1个新用户对新版本的接受度高并没有足够的说服力。
所以过分追求覆盖所有类型的用户,很可能导致每种用户的数量都不够,就没办法验证不同类型用户对于新版本的接受度了
这里就需要对不同类型的用户进行分析,找出产品当前阶段最核心的用户,灰度名单优先覆盖核心用户,保证核心用户的体验和使用。
而具体核心用户的类型会收到产品愿景的影响,比如当前产品的目标是拉新,那么核心用户类型就是新用户;如果当前产品的目标是营收,那么核心用户类型就是对当前营收贡献最多的用户类型。
案例
某产品提供对淘宝店铺的客服团队数据分析模块,在该产品重构升级后,对产品进行灰度发布,来验证用户对于升级后功能的接受度。
而首批灰度用户数量只有20个,就出现了“覆盖不了全部用户的”问题,这就需要我们优先覆盖核心用户
通过对用户类型进行了分类,以及确定产品当前阶段的目标是营收,分析得出不同类型用户对于营收的贡献度;发现中大型商户贡献最大,那就是该产品本阶段的核心用户。
在确定首批灰度名单时,我们就需要从中型商家、大型商家这两个用户范围内去寻找,优先保证这部分用户对于新版本的接受度。
3. 参与度不高
灰度发布初始阶段,通常是不进行强制切换的;而是采用的是圈定一个范围的用户,提供切换入口,让用户切换来体验灰度版本。
从这里我们可以发现,初期阶段,用户使用灰度版本是一种自发性的行为;我们在选取名单时就会受到客观条件和主观因素的影响,一旦选择的名单有问题就会导致参与度不高。
首先,是客观条件,用户群体中分为活跃用户和非活跃用户,如果我们在选择名单时挑选了非活跃用户。
想一想,这个用户很少登陆体验我们的产品,将它放入了灰度名单,用户都没有感知到自己会灰度了,不前往参与,引入这个用户就没有意义了。
所以我们在选择灰度名单时需要考虑活跃度这个指标,对于活跃度的判断可以参照产品本身对于活跃度的定义;比如有的产品用日活考察,有的产品会用近7日登陆来考察。
其次,是主观因素,用户对于产品的信任度不高,导致遇到问题后的对问题的容忍度低,对产品失去了耐心,也不愿意反馈问题;那么引入这个用户也不具有意义。
所以我们在选择灰度名单时要考虑用户对于信任感,b端产品可以选这关系较好的商家,对于产品的信任度也会较高。
三、总结
灰度发布的目的是在不影响用户正常使用工作的前提下,引入小部分的用户来使用新版本,帮助我们测试用户对于新版本的接受程度;避免决策失误所产生的问题影响到大部分甚至全量用户,保证了产品平滑过度。
而我们在挑选首批灰度名单时,需要从“是否会影响引入用户的正常工作”,“是否能覆盖到核心目标用户”以及“引入用户的参与度高不高”3个角度考虑;剔除不符合条件的用户,选择活跃度高、信任感强的用户进来和生产团队一起完成对新版本的验收。
作者:晌午,微信公众号:晌午自习室
本文由 @晌午,未经许可,禁止转载。