度小满春晚筑城

“出事的概率是99%,只是事大或事小,能协调和不能协调,兜得住与兜不住。”不喜欢冒险的王继平相信墨菲定律:会出错的事总会出错。

在春节前的一个月里,王继平一直站在风口浪尖——他是度小满春晚红包运营活动的总指挥。

百度在2018年12月28日中标2019年春节联欢晚会的独家红包互动环节,度小满金融(原百度金融)承担了春晚红包的签约、绑卡、提现,简单说,就是保障老百姓摇到的红包能到自己的钱包里。

但是,要给上亿用户发红包、提现,这件事做起来一点都不简单。团队准备的checklist长达300多项,王继平形容:“简直就是N*N的问题矩阵,在活动开始前就能预见到,问题的高并发会是常态。”

时间是最大的敌人。

从中标到1月28日春晚红包活动开始,满打满算只有一个月时间,而且在前一周多里,商业协议、集团方案还没完全确定,严格意义上,留给设计、开发到测试、上线、压测的时间,只有两周多。

N*N的脉络

支付行业的从业者都清楚,年底的红包活动是支付行业的“大考”,因为红包活动对数据的一致性、可靠性、传输时间和用户的响应时间要求很高:

一个用户摇到了3元钱红包,如果入到度小满钱包余额的时候,你慢了五秒,他就会觉得3元是不是丢了?是不是这里面有什么bug把我的钱给盗了?

王继平最担心的问题是:“机器到没到位”,即在高并发的挑战下,如何保证计算资源。

算力的配置也不是简单加机器就能解决问题。

首先,从后台到前端的整个架构都要保证规模的可扩张性,这就是考验技术团队基本功的时候——在这一点,度小满技术团队的基本功是达标的。

真正带来压力的是计算资源的管理问题:有多少计算模块?每一个模块要承载多大的压力?这些机器分布在不同的机房,如何在最快时间内上架,完成部署?如何为每一个不同的服务分配最合理的资源?

王继平解释:“百度App准备了10万多台机器,分给我们的机器数量只有3800台,其中70%多的资源要砸在支付上,保证用户绑卡、提现的体验,余下的资源才会分配给信贷、理财、保险相关的业务,所以,资源的分配一定要计算得精细再精细,不能出任何错误。”

王继平把风险分为两种,一种是可控风险,比如计算资源的配置,能够做到兵来将挡,水来土掩,即便兜不住,也知道问题出在哪儿。

另一种是不可控风险,受到外部环境和因素的干扰,没有办法充分预知。

春晚红包这个体量的项目不可能只在度小满内部形成闭环。

从外部看, 度小满首先要和百度集团内的其它部门联动,包括百度App、网盘、贴吧、地图,每个入口都会展示红包活动,最后汇聚到度小满的提现服务,那么,就要保证数据的一致性,比如用户有一个权益,可能会从不同的入口看到,不能让用户看到的权益发生偏差,对度小满来说,跨部门后的可控难度一定是增大的。

真正不可控的是百度外部的相关机构和合作伙伴。度小满对接上千家的银行接口,每家银行卡的四项验证,还有第三方的数据服务,如果他们没办法配合做瞬时高并发的解决方案,那么如何把峰值期用户的请求缓冲?就像层层蓄水池一样把它们变成线性的,平稳的后端需求?

“风险”对应的是用户的基础体验问题,也就是度小满的支付系统会不会在春晚的红包雨中挂掉,接着就是用户的体验问题,比如度小满自己的用户会分为很多客群,拿信贷来说,有授信用户,授信未用信的用户,已用信的用户,结清的用户和新用户,如何为每种不同的用户去设计相关的权益,就成为另一个层面的复杂度。

当所有的事情需要在两周内并行解决,设计问题矩阵里每一个节点和其它节点之间的承接,甚至变成一个线性、可管控的流程,这就非常考验总指挥在复杂度中寻找方向,抓大放小的能力了。

度小满春晚筑城

王继平定下了一个原则:用80%的精力保证最坏的事情不会发生,即“外部的平台崩溃了,我们也不能挂掉”,余下的精力用以提升用户体验。

这实际上非常考验他在关键问题上的决策魄力,他形容:“一方面是用户的体验可能会有进一步的提升,另一方面改动会引入不可预知的风险,这种冲突越到后期越多,当类似的问题汇总到我这儿的时候,真的是天人交战的过程。”

如果改动带来的好处没有特别明显,他会毫不犹豫的否定;但如果那个“好处”很诱人,他会迅速和技术确认,改动后风险是否可控甚至可追溯。

在这里,他承认自己交过学费:“有一次为了解决一个问题,实际上是引入了另外一个逻辑上混乱的新问题,最后让我们又多花了一天时间去解决。”

“我感觉自己的生命受到了一次洗礼,上一次在百度内部以如此的激情和压力参与到一个大事件里,还是十年前的框计算。”王继平说。

约克城号的启示

王继平总用“约克城号的奇迹”给自己和同事打气。

1942年5月,刚在战斗中遭遇重创的约克号航空母舰要在一个月赶往中途岛,参加那场后人耳熟能详的,决定了二战太平洋战局的海战——短短69小时,1400名工程师没日没夜一点一点地修复着它的伤痕,终于不辱使命。

王继平说:“我们和约克城号的经历很像。”

在春晚红包战役里,加班加点可能是度小满团队最不值得一提的闪光点,最重要的是,面对硬仗:愿意打,敢打,会打。

在百度和春晚正式确立合作后,度小满马上召开了一次全体员工的动员会,但在很多员工看来,这场会议最重要的价值是明确目标和方向, “意愿和士气”是不需要动员的。

度小满支付总经理万涛遇到过这样的窘境:往年过年,亲戚朋友会在支付宝集福或微信红包的时候不经意地问他:“哎,你们百度没干点什么啊?”

其实,在移动支付层面,不论基础的技术能力,还是整个系统的稳定性和高并发能力方面,度小满过去一直在积累。万涛说:“我们希望在一个更大的舞台上让全国人民看到,春晚这个机会,我们一直憋着劲。”

万涛渴望一战。截至2019年2月,度小满钱包用户量已达1.5亿,年结算规模达到了万亿。这一次,能够让度小满钱包在全国人民面前亮相,是提高品牌影响力的绝佳机会。

度小满参与春晚红包项目的员工超过了300人,涉及二十多个部门:支付、信贷、理财、保险,其中的运营、业务、技术、产品……在后台支持的后端服务、风控、反欺诈、运维、客服……在信贷运营负责人颜婧的协调下,项目组从最初的几个人扩大到几百人,只用了两天的时间。

但是,研究过大公司治理的人应该都知道,大公司往往都有“内耗”问题,对春晚这种时间紧、复杂度高的项目来说,任何两个部门之间产生的沟通成本,都可能在N*N的矩阵中被放大,形成连锁反应,最后验证“墨菲定律”。

但就是在“更大舞台上证明自己”的愿景以及给全国人民拜年的责任感,让最容易发生摩擦的技术和产品已经主动站在对方的角度思考问题。

整个春晚红包战役的基调是:优先解决流量压力的冲击,保证用户体验的流畅。在这个基调下,春晚活动的第一轮红包方案,产品经理简化了用户摇到优惠券后点击查看的功能,以减轻研发上的复杂性。

但在内部测试中,工程师发现很多用户的习惯是会点击查看的,这样虽然减轻了流量压力,但是对用户体验实际上是有伤害的。于是主动找产品经理要把这项交互功能做到最完善,此时距离春晚仅剩3天。

春晚开始后,真正的考验来临,一件不可抗力事件发生。

在春晚主持人进行第一轮口播后,百度App一度因为瞬时流量压力过大,将用户摇到红包后的查看余额的入口暂时关闭,这意味着核心流量的压力瞬间转移到了度小满钱包里,所有人同时看到流量柱“嗖”地一下子飙了上去。

实际上,百度App在关闭入口前十多分钟就电话通知了王继平,团队提前知道了汹涌而至的流量可能会冲垮服务器,王继平回忆:“那时候,我们能做的,就是等待如洪水猛兽般的流量冲击,会不会怂,就是这一刻。”

最后的结果是:流量的增长曲线很快平滑,几分钟后就趋于平稳。

这不是偶然,也不是团队的运气好,而是此前技术和产品经理反复碰头开会,最终设计的安全阈值恰好比峰值多了那么一点点,而即便服务器在当时真的崩溃了,团队也准备了充足的降级预案,细节到在降级业如何引导用户排队以缓轻后端的服务压力,万一外部的短信平台不可控的崩了,如何让用户通过人脸识别验证……

产品经理曾罡回忆:“只有在春晚的战场,我们才真的能零距离看到技术同事们的责任心。”

在度小满的春晚作战指挥室,当春晚红包活动的瞬时流量冲到峰值,产品经理本能地欢呼时,技术们目不转睛,面色凝重地盯着屏幕……他注意到,就在峰值冲到接近极限的那一瞬间,一位技术同事盯着屏幕,他穿的衬衫后背全湿了。

当然,不止技术和产品在通力合作:反欺诈团队主动优化反欺诈模型,在权益的发放上提出了很多建议,以预防“薅羊毛”党的盗刷;设计团队只要在当天拿到修改需求,哪怕是午夜12点,第二天早上一定拿出方案……

客服团队通过3000个人工智能客服24小时回复用户问题,解决了春晚当天97%的在线问题。

这是基于过去积累的大数据与深度学习模型,对用户可能产生的问题做了预测,春晚当天预计会有70%的咨询集中在绑卡、提现等相关问题,再根据不同用户做到“千人千面”的问题推送,比如用户摇到了一张活动券,在咨询客服时,就会收到关于该活动券的相关问题推送。

这不仅筑起了当晚最后一道防线,还依据平时处理客户问题的积累,帮助研发团队规避了一些后期可能会踩到的坑。

王继平看到的“可爱的事情”太多了:度小满的OP团队在作战室每人穿一个马甲,看着既整齐又精神,他问:“屋子里温度这么高,你们不热吗?”团队回答:“我们就是要有这种团队作战的仪式感。”

王继平说:“为什么我要拿约克城号做比喻,因为这么紧急重大的项目是很难做到精细化管理的,每个人的主动性是最重要的。当团队的每个人都发挥了主人翁的精神,把和团队目标相关的事情串联起来,那么这个团队所能看的东西,做到的事情,是难以想象的。”

活动正式开启前,团队为了应对各种突发状况准备的降级方案达到20多套,但最后都成了“无用功”,而这种无用功让团队很快乐。

“可以去吃饺子了”

年三十下午四点,度小满马上要迎接春晚的大考,团队在公司附近的餐馆预订了二十多桌,算是当天的团圆饭,万涛回忆:“吃得很快,也没什么仪式和动员,很多人心事重重地吃了两口,就赶紧回公司了。”

还有些同事压根就没去,直接在公司点外卖解决了——万涛吃饭时旁边的两张桌子,就是空的。

回到公司后,万涛为了缓解团队紧张的气氛和大家讲道:“大家别急,我们做好了充分的准备,今晚会顺利度过的。”万涛的信心还是来自团队:

说到产品与开发, 其实在业界有一个“二八规律”,即80%的需求都是标准化的,有相对成熟的解决方案,而大量的“麻烦”是余下20%的长尾需求带来的,只要客观条件允许,团队里的每个人都愿意投入更多的努力,来尽可能满足用户们的长尾需求。

比如度小满钱包支持的绑卡银行数量从138家扩容到了上千家银行。

实际上,支持138家银行绑卡已经足够多。万涛说,他们是这样考虑的:

“春晚这根纽带连接的是整个中国,有些用户可能常用的是一些城商行、农商行、农信社的银行卡,我们不能让一个用户缺席,还有港澳台同胞和海外侨胞缺席。”

绑卡银行的扩容,自然也带来了压力测试上的挑战:

首先,时间紧, 即便所有的压力测试都在凌晨进行,分摊到每个业务团队头上,也只有短短的两个小时;

其次,团队也不可能做一个假接口模拟提现的过程,因为无法准确还原流量高峰时用户交互的所有场景,再考虑到用户的隐私与信息安全,只能让公司的同事们凑不同的银行卡。

一位运营同事在公司Hi群里发起了求助,不到一天时间,300张银行卡很快收集齐,包括乌鲁木齐商业银行这样的卡都很快找到。

……

类似“集卡”这么密集的信息同步在度小满是“小时级”的,每个人都主动把沟通群置顶,确保自己在第一时间看到,群内会随时蹦出各种各样的问题,小问题能在群内解决的就在群内解决,不能解决就以最快的速度开个碰头会解决……

藉此,活动筹备期间,度小满内部准备了大量细致而又完备的解决方案,王继平看在眼里,心里有底。当然,春晚开始前,他内心还是有些焦虑,像是玩德州扑克all in后等待看牌的心情。

晚上,在春晚第二轮红包发放完毕的时候,王继平知道:“这一次稳了。”他和旁边的同事说:“行了,可以吃饺子去了。”

这次战役,度小满钱包春晚期间每天清算上亿笔交易,流量高峰期平均入账时间0.89秒,出错率为0,体现了度小满支付团队过硬的技术能力。

度小满春晚筑城

当然,等他真的安心吃上那顿饺子,已经是大年初八了。

那天中午,吃完饺子后王继平拿出手机,给度小满金融CEO朱光发了一条信息。大致内容是,这夜有惊无险,侥幸过关,不辱使命,下周复盘。


分享到:


相關文章: