为什么你手机里的功能,别人早就用上了——聊聊灰度发布
前两天我妈给我发消息,说她的某宝突然多了一个“先用后付”的按钮,问我是不是被骗了。我一看自己手机,没有。我老婆的,也没有。我妈六十多岁的人了,反而成了全家第一个尝鲜的。
这事挺有意思的。后来我跟我妈解释,不是你运气好,是你被“选中”了。她没听懂,我也没细说,只说是平台在搞测试。
但这里面藏着一个几乎所有互联网用户都会碰到的现象:同一个App,同一个版本号,不同人打开看到的界面不一样。你以为是自己手机旧了、没更新、被抛弃了。其实,这背后是一整套产品发布逻辑在运作。它有个专门的名字——灰度发布。
先别急着卸载,可能只是没轮到你
得说清楚一件事。你看到的和别人看到的差异,九成不是bug,而是故意的。
大厂上线一个新功能,绝不敢一键推给所有人。为什么?因为人太多了。微信月活十几亿,一个按钮改错位置,投诉量能顶一家中型公司的全部客服容量。更别提如果新功能引发闪退、耗电、数据丢失,修复一次的成本远不如一开始就慢慢来。
所以他们的做法是:先推给一小部分人。比如1%的用户,用几天,盯数据。没问题,再加到5%、10%、30%,一直到全量。
这个比例也不是随便拍的。有时候按用户ID尾号筛,尾号是1的先来。有时候按城市,一线城市的人先试。有时候按设备型号,新款手机用户先吃螃蟹。还有按注册时间——老用户优先当小白鼠,因为他们的使用习惯稳定,反馈更靠谱。
我妈就是被随机算法选中的那拨。我给她解释“这不是骗子”,她倒挺得意:“那我比你们都先进。”
全量上线?那是赌命
你可能觉得,一个按钮而已,能出多大事。
我举个不精确但很能说明问题的例子。如果一家公司有100万用户,某个改动上线后导致0.5%的人闪退。那就是5000个人。假设其中500个人打了客服电话,客服每人处理10分钟,光接线就要83个小时。如果他们在社交媒体上发帖吐槽,品牌声誉的损失根本没法算。
更可怕的是,有些问题只有真实用户才碰得到。测试环境里跑得好好的代码,到了线上可能因为用户网络差、手机内存小、后台同时开了一堆App,直接崩掉。测试同学再厉害,也模拟不出几百种手机型号、几万种使用场景的排列组合。
所以灰度发布更像是一个缓冲垫。它不追求完美,只追求“即使出问题,也只影响一小撮人”。这一小撮人如果反馈正常,就继续放量。如果反馈异常,立刻回滚。整个过程可能就是几分钟的事。你没感觉,但后台已经经历了一场小地震。
像某些App的功能开关,代码早就躺在你的手机里了。服务器推一条指令过去,你这边UI就变了。不是你不知道,是开关没拨到你头上。

被选中的人,其实是免费质检员

这里有个挺残酷的事实。被灰度到的用户,往往不是幸运儿。他们是产品团队的眼线、试验田、人肉测试机。
你以为你抢先体验了新功能,可能在开发者眼里,你只是一个数据点。你点了几下新按钮,停留了多久,有没有弃用,有没有报错——这些行为都被记录、分析、比对。跟没被灰度到的用户一对比,这个功能到底行不行,就清楚了。
我妈那个先用后付按钮,如果她点了两次就不用了,后台数据会显示:老年用户对这个功能接受度低,按钮位置可能不对,引导文案可能看不懂。然后产品经理开会讨论,是改还是砍。这一切,我妈完全不知道。她只知道“今天这个App有点不一样”。
有些公司的做法更直接。他们有个“内测用户池”,这些人主动申请当小白鼠,代价是忍受bug,好处是能提前用到新东西。苹果的TestFlight、安卓的开发者预览版,都是这个逻辑。但更大规模的用户群,是被动卷入的。你没报名,但算法挑中了你。你没签协议,但你的使用数据已经成了决策依据的一部分。
说实话,我个人是不太喜欢被灰度的。新功能往往不稳定,耗电高,动不动就卡一下。有段时间我的某App天天弹新界面,烦得我直接卸载重装了旧版本。装完发现,竟然又变回去了,可见这个开关也能识别版本号。折腾一圈,还是回到原点。
那没被灰度到的人,是不是亏了

也不算。
灰度期的新功能,通常比较粗糙。按钮位置怪异、文案生硬、动效卡顿。等全量上线的时候,产品团队已经把骂声都听了一遍,修得差不多了。你拿到的是相对稳定的版本。虽然晚了,但不用当试验品。
更何况,灰度发布不是永久状态。它一定会结束。要么功能全量,要么直接砍掉。如果你等了很久都没看到那个功能,有可能不是没轮到你,而是这个功能已经被灰度数据否掉了。它死在了你看到它之前。你甚至不知道它存在过。
互联网产品就是这样。用户看到的是冰山一角。底下有多少功能正在灰度、正在测试、正在被砍,只有内部数据显示得清楚。你手机上的那个按钮,今天有,明天可能就没了。别太当真。
至于我妈那个先用后付按钮,后来我教她关掉了。她说不习惯,还是直接付钱踏实。行吧。