关于“放量”

所谓放量其实就是A/B测试,不过在咱们组内部喜欢叫“放量”。关于放量其实有不少种规则:时间、地区、用户区间、随机放量等。测试

为何要放量

放量只有在大流量的C端项目中才有这个需求,流量小的产品或者公司内部使用的管理系统一般不须要作放量。动画

这里衍生出一个问题“为何大流量C端项目须要作放量?”。网站

以某门户网站为例,假设去年日均PV是二个亿,一年的总收入是30亿人民币。code

那么能够推算出,若是不作任何改动的状况下,今年的收入和去年比不会有太多的波动;可是部门给规定的目标一般要高于去年的收入,因此产品须要作一些事情来增长收入。cdn

某门户网站简笔画
图1 - 某门户网站简笔画

通过一系列调研与讨论,最终决定把图中红圈的位置作一个改动,但愿这个位置能够获得更好的商业化效果,提高一些收入。blog

但咱们并不知道这个改动的结果是正面的仍是负面的,若是这个改动上线以后致使了负面效果(用户很讨厌这个改动,疯狂骂咱们),不但没增长收入反而下降了收入,这个后果是很是严重的。开发

因此咱们一般会作一件事就是“放量”,先小规模放10%的量看看效果如何。产品

这里的放量一般又根据不一样的状况分好几种:it

  1. 按用户区间放量(这是咱们最经常使用的放量方案)。
  2. 按地域放量(例如某些功能只放量给北京地区的用户)。
  3. 按时间放量(双十一期间页面会作一些开屏动画之类的活动效果,通常都是提早开发好,在指定的时间段内放全量)。

地域放量与时间放量很容易理解,这里主要解释下什么是按用户区间放量。io

放量10%的用户
图2 - 放量10%的用户

假设咱们的产品总共有10亿个用户,放量10%,那么咱们能够选择一个区间,是放给0~1亿这个区间的用户仍是放给1亿~2亿这个区间,这个就是用户区间

固然,这个名字是我随便起的,只是为了朗朗上口。

这里你可能会有一个疑问,为何要按照用户区间放10%的量,直接随机放10%的量不行么?

答案是“也能够”,但随机放量没法知足下列需求。

咱们仍是举个例子,假设图1的红圈位置通过一系列讨论,如今有两个升级方案,但不肯定哪一个效果好,最终决定将这两个版本都开发出来,而后对比下哪一个效果好就使用哪一个版本。

这时候随机放量就没法知足需求了,可是按用户区间放量能够知足需求。

方案1与方案2同时放量
图3 - 方案1与方案2同时放量

咱们能够将方案一放量给0~1亿这个区间的用户,把方案二投放给1亿~2亿区间的用户。

如何放量

任何产品都会为用户分配一个ID,假设为用户分配的ID是一个散列值MD5,那么当用户访问咱们的产品时,咱们就能够根据用户的ID来分辨该用户会命中哪一个版本(版本一?版本二?或者是未命中?)。

具体实现方案是,取用户ID的后三位(固然,后两位也行),而后用这个数除以三位的最大值,获得一个百分比。举个例子:

假设个人用户ID为4b3ab369fa40ca4faae404b2f8332b65,这是一个MD5值,咱们取出后三位b65,三位16进制的最大数转换成10进制为16^3 = 4096,因此咱们将b65转换成10进制后在除以4096,最终得出的数字为:(b65 = 2917) / 4096 = 0.71

上述例子将“方案一”投放给0~1亿这个区间的人,将“方案二”投放给1亿~2亿这个区间的人,很显然,当我访问页面时,红圈位置会发现个人数值是0.71,不在0~0.1这个区间,也不在0.1~0.2这个区间,因此我没有命中这一次的小规模放量测试,个人页面上该位置显示的是现有的稳定版。

这样实现的好处是:

  1. 能够经过简单且轻量的计算快速得到用户的所属区间。
  2. 不须要知道总用户数就能够进行准确的放量。

总结

相同的放量策略和实现方式能够放到服务端,也能够放到客户端;具体如何放量须要“具体状况,具体分析”。

相关文章
相关标签/搜索