灰度发布中的流量切分策略一线踩坑笔记

上周跟做电商的老陈撸串,冰啤刚喝了半瓶,他把手机往桌上一摔,说上个月大促前的灰度差点把他送走。

当时他们要上新版的结算页,技术组图省事,直接在网关配了10%的流量权重切到新集群。

谁知道刚好那10%的随机流量里,凑了七成是华南区的高净值用户——这些人用的旧版安卓APP,刚好和新版本的结算接口没做兼容,支付直接报错。

半天时间赔了快十万的优惠券,还被用户投诉到平台总部。

这坑我太懂了。

别上来就按百分比切流量

很多团队对灰度的理解,就是“切10%流量试试看”,完全不管这10%的流量到底是谁。

随机切的流量,本质上就是抽奖。你永远不知道这次抽中的是只看一眼就走的新用户,还是每天刷八小时的重度核心用户。

我之前在资讯平台做的时候,刚开始也这么干。切了5%的流量到新版本的推荐系统,本来想着小范围测测效果。

结果刚好抽中的全是凌晨刷资讯的重度用户,新版本的推荐模型还没调优,把用户常看的科技内容全换成了娱乐八卦。

投诉邮箱爆了三天,后台的卸载率直接涨了两个点。

网关流量权重切分配置界面截图
网关流量权重切分配置界面截图

说白了,按百分比切的唯一作用,就是测试新集群能不能扛住流量。真要测功能,这方法根本不靠谱。

你以为你测的是10%的平均用户,实际上可能测的是10%的极端用户。出了问题你连根因都找不到——你根本不知道那批用户有什么共性。

别偷懒。

按用户标签切才是真的稳

后来我们踩多了坑,才慢慢摸出了门道。切流量的核心不是切多少,是切谁的。

我们现在的灰度流程,第一步永远是切内部人员的流量。

所有测试、产品、运营的账号,请求头里直接打个内部标签,网关直接把这批请求全导到新版本。跑个三天,连内部人都觉得没问题了,再往下走。

第二步切种子用户。就是之前主动填问卷报名参加产品测试的用户,这些人本来就对新功能有期待,就算出点小bug,也不会直接卸载,甚至会主动给你提意见。

等这批人跑一周没问题,再切1%的非核心用户——注册超过半年,从来没消费过,也没在平台发过内容的那种。就算出问题,对平台的影响也微乎其微。

灰度发布用户标签分层配置示意图
灰度发布用户标签分层配置示意图

对了,这里有个必须注意的细节:用户标签的透传要贯穿全链路。

不能用户刚进首页是新版本,点个商品详情就跳回旧版本了。这种跳来跳去的体验,比直接上新版还招人烦。

我们之前就踩过这个坑,标签只在前端做了判断,跳转到第三方支付的时候,请求头里没带标签,用户付完款直接跳回旧版本的订单页,以为自己付的钱没了,投诉了好几个。

还有静态资源的问题。新版本的JS、CSS一定要和旧版本的路径分开,别图省事直接覆盖原来的文件。不然CDN缓存没清干净,用户拿到旧的JS调新的接口,直接报跨域错误,你查半天都找不到问题在哪。

这坑我踩过。真的疼。

留好一键回滚的后路

做灰度最忌讳的就是,出了问题还要改代码发版本回滚。

等你代码改完发上去,用户早就跑光了。

我们现在的灰度,所有切分规则全放在网关层。要切流量、要回滚,直接在后台改个配置,几秒钟就能生效。

而且每次改完切分规则,我们都会专门测一遍回滚——别等真出问题的时候,才发现回滚的开关是坏的。

监控也不能只盯着错误率。很多时候新版本的错误率没涨,但是接口耗时从200ms涨到了800ms,用户等半天刷不出来页面,就算没报错,也会直接关掉APP。

还有个不成文的规矩:大促前的灰度,绝对不要碰核心链路。

支付、下单、订单查询这些模块,大促前半个月绝对不要动。要测新功能,最多测测首页推荐、商品详情页的装修模块这些非核心的地方。

毕竟老陈上次的教训摆在那。

上周跟老陈再撸串,他说现在搞灰度,先把所有客服的账号导到新版本,跑三天没问题再切种子用户。

大促前再也没出过事。

说实话,哪有什么完美的流量切分策略。无非就是别拿核心用户当小白鼠罢了。

不过话说回来,也不是所有业务都适合按用户标签切。要是你做的是工具类APP,用户量本来就少,标签分层也没必要,那就按地域切。先切个三四线城市的小流量,出问题也不影响核心盘。

对吧。

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:灰度发布中的流量切分策略一线踩坑笔记
文章链接:https://www.itcdj.com/it/225.html