历年双11,引人瞩目的是GMV、订单量和支付笔数。但鲜为人知的是,支撑双11顺利运转的,不仅仅是交易链路和支付链路,还有一套至关重要的消息链路。
这条链路一方面连接着阿里、上千万商家与数亿消费者,另一方面还承担着双11线上协同作战的指挥链路,就像战场上的通讯兵,不仅要保障指挥中心的“耳聪目明”,还要保障消息在每一个参战单位之间的顺畅流通。
这套系统有多高效? “60.69万条/秒”,这是2021年双11当天,淘宝、天猫、钉钉等双11核心APP的消息处理峰值。
这套系统,就叫作钉钉消息平台,内部名称IM PaaS。
普通人或许对这个名字感到陌生,因为它“沉”在一系列肉眼可见的应用“下方”。不过,如果你打开手淘,点进一个商品和商家讨价还价两句,那么你们敲下的每一个字和每一个表情,就都跑在这套“看不见”的底座之上。
几乎没有人知道,人们在淘宝内发消息时的底层软件从旺旺切换成了钉钉,但这并不是用户不够细心,而是钉钉刻意为之。
工程师们将这个为期三年的项目,比喻成“开着飞机换引擎”,他们希望飞机上的乘客不会感到一丝颠簸,同时也让飞机运转效率有更大的提升。
在光明顶陪跑的一群人
双11从2009年开始举办,第一年只是淘宝商城不太起眼的冬季运营活动,参与活动的的人员一个会议室就能挤得下,交流基本靠吼。2013年,位于黄龙园区的支付宝加入双11,需要和阿里西溪园区线上协作时,旺旺成为了首任内部通讯平台。
钉钉首次被邀请参加,是在诞生之初的2015年。如今成为钉钉IM技术负责人的达野至今还记得钉钉首次参战双11的场面。那一年,双11历经六年时间,已经成为阿里一年一度最大的盛典,能进入阿里巴巴西溪园区核心作战指挥室“光明顶”参与技术会战的,无一不是阿里核心业务的精兵强将。
未满周岁的钉钉,甚至还没有成为阿里内部通用的沟通的工具,却在“光明顶”有了一席之地,这自然让钉钉IM团队的成员们兴奋不已。
但钉钉那时所承担的角色,用一句不太好听的话来说,是“备胎”。
每年双11技术保障都需要建几十甚至数百个内部沟通群,2015年到2018年的三年时间里,这些群既有旺旺群,也有钉钉群,两个通讯工具互为备胎,一旦其中一个挂了,就迁移到另外一个上。
说起来是和旺旺“互为备胎”,但钉钉的工程师内心有数。当时钉钉的技术人员不多,保障双11方面经验更少,达野直白地承认,对于钉钉受邀参加双11,“一开始我们完全不敢相信。我们都很清楚,集团是在借助这种方式照顾钉钉,表达对我们的重视。”
“备胎”一当就是四年。虽然这四年中,钉钉在功能和技术上不断创新,以肉眼可见的速度成熟起来,“已读未读”、“组织架构可视化”、“群协作”等产品接连上线,也拿下了阿里内部主要沟通工具的地位,但在双11的舞台上,还始终欠缺一个至关重要的机会。
一生一次的转正机会
机会说来就来了。
2019年,阿里巴巴CTO线轰轰烈烈的开展了三大战役:统一阿里小程序、阿里经济体全面上云和统一IM,最年轻的钉钉扛起了统一IM的重担。
消息一出,钉钉很兴奋。所有的技术人员都无比自豪:“统一IM的工作交给钉钉,这是对钉钉能力的肯定。”
他们接到的任务听上去并不困难:在2019年的双11中,承接淘宝5%的核心交易信息。
但现在钉钉IM PaaS的负责人聚望一听,就知道这活儿不好干。因为这需要把钉钉的消息系统和手淘集成打通,这件事他和达野从2017年左右就尝试过,达野说:“当时我们想把钉钉的IM系统集成到手淘中去,让手淘的用户跟钉钉的用户可以聊起来。”
愿望丰满,现实骨感,那次尝试,他们铩羽而归。
这个代号叫作“天地汇”的项目旨在联合钉钉和手淘,尝试打通B端商家和C端消费者之间的消息链路。在这个项目上马之前,阿里的各个应用几乎都有自己的IM系统,光是手机淘宝就有两套IM工具(手淘自己的IM、旺旺),再加上商家们很多在使用钉钉进行办公协同,这些IM工具像一个个重复的烟囱,彼此并不互通,重复建设和日常运维也给运转效率带来了不小的压力。
“天地汇”成为一次打破两个产品之间信息烟囱的创新,无论是钉钉还是手淘对此都很重视。但困难比重视更重。钉钉工程师将钉钉的SDK集成到了手淘当中,加上手淘自己的SDK和旺旺的SDK,客户端架构不堪重负。2018年318,“天地汇”项目的成果上线,实践了一段时间,这个项目逐渐停止。
2019年,统一IM的重任一来,钉钉的工程师们就明白,是时候重新发起与手淘集成的打通的攻坚战了。
统一IM的项目命名为“巴拿马”,顾名思义,就是要在阿里众多应用之间修建一条能让消息流动起来的“运河”,首先被打通的就是阿里的核心应用手机淘宝、千牛,随后阿里生态内的其他应用的消息能力也大都一一由钉钉IM PaaS承接。
“巴拿马”项目的第一战,就是“攻下”手淘。
选择用户数大、系统复杂的淘宝,是阿里技术人的传承,“先搞定最大和最难的,后面的就不成问题”,钉钉第一年的目标就是要承接2019年双11淘宝5%的核心交易消息。
2019年4月项目正式启动,9月就要开始接受双11的压测和验收,留给他们的时间并不多。巴拿马项目的成员南星说:“这是最后的机会,如果再失败,钉钉可能此生都没有机会接入淘宝了。”
他们从5%看到了未来
前面提到的聚望,是巴拿马项目的负责人之一。他原本属于旺旺团队,整个团队一起并入钉钉IM,联合钉钉和手淘大几十人团队一起再次发起了攻坚战。
还剩不到半年时间,两大挑战摆在聚望团队的面前。
挑战一:到底要为手淘打造一个什么样的IM平台?
虽然第一战要攻克的是手淘难题,但钉钉的初衷不仅是打通淘宝,而是做整个阿里巴巴的消息技术平台,所以他们既要满足淘宝对IM的定制化需求,同时也要建立一套可以支撑所有阿里生态内应用的通用技术架构。
搭建一套什么样的架构?实现哪些功能?哪些功能由淘宝自己的业务团队实现?这些问题像一重又一重的关卡摆在巴拿马团队面前。
挑战二由阳凯发起,阳凯从2010年就开始参与双11的技术保障,2018年开始作为钉钉双11技术风险的负责人,同时也是双11钉钉的技术大队长,他的核心职责就一个词:保稳定。
对阳凯而言,在双11这种大考里换新系统,这就是最大的不稳定因素。“一个新系统要在双11承担5%的流量,还是核心交易消息,我是持怀疑态度和反对态度的。”阳凯说。人人都在兴奋,但在这场“开着飞机换引擎”的战争里,总要有人扮演一个“演练失败”的角色,让风险发生在事前,而不是双11中掉链子。
因此他几乎天天给聚望“泼冷水”,想方设法地提出可能出现失败的情况。“预案充分吗?新系统的性能承压行不行?为什么一定要在双11上,不能双12吗?”
压力来到聚望带领的巴拿马团队身上。这一次,巴拿马项目不再打算采用将钉钉集成到淘宝当中的方案,而是用钉钉的技术能力和创新能力搭建一套全新的技术系统IM PaaS平台。
对做了多年旺旺消息技术的聚望来讲,前一套方案是旺旺的升级版,但也仅仅只是升级版,要做就做大的。
聚望说:“我们希望为所有的业务提供一套高可用、高稳定性的消息平台,未来业务团队只考虑业务场景的创新,而不用担心底层的技术。”
此时的他,心中也有一个没有说出来的想法。从事IM平台技术多年,聚望知道单从技术上看,IM系统的门槛不高,但一个独立团队想做到优秀,需要投入的人力、资源和时间,不亚于重做一套钉钉。如果这套消息平台做到足够成熟,未尝不可能有一天从阿里走出去,成为业界的的一个通用IM平台。
为阿里打造的消息技术中台,钉钉拿出了全部本领,在高可用、高稳定、高扩展的基础上,钉钉IM PaaS平台和存储团队合作开发,对存储模型进行优化,支持读写扩散、异地容灾、智能流量管理、同步平台升级、消息队列升级、SmartOps平台等技术创新。
对消费者而言,他们并不知道淘宝、千牛、旺旺甚至淘特底层采用同一套消息平台。但不管是登录哪一个应用,钉钉的IM PaaS平台都可以保障多端消息同步。“即便重新安装,所有的数据都在。”聚望说。
2019年6月,巴拿马项目各项功能开发完成,他们特意举办了一场showcase表演,南星导演,达野摄影,聚望策划,整个项目组的人在会议室里都显得十分兴奋。
南星说:“那一天就像是一座大桥的左右两边合龙,对钉钉和淘宝而言,都是一个重要的里程碑。”
大桥合龙后,还要经过无数次测试和真正的通行才能宣告成功。2019年双11,尽管阳凯从9月开始就不断的向他们发起挑战,但钉钉IM PaaS非常坚决,他们一定要在这一年承接5%的核心交易消息流量。
这一天终于来了。双11当天,光明顶灯火通明,即便是经验最丰富的阳凯也因为IM PaaS的上线感到无比紧张。消息链路某种程度比支付和交易更需要稳定,因为钉钉还担负着故障应急和内部协调的责任,承接5%的核心交易消息听起来并不多,但放在双11这一天却会影响上千万人。
假如双11当天,消息系统出问题会怎么样?聚望非常严肃地回答:“如果消息出问题,最坏的情况下,交易会下跌20%。”
2019年双11的GMV是2684亿,20%是多大的体量,无需赘言。
因此钉钉IM PaaS团队必须谨慎再谨慎,他们从5万用户规模、100万用户规模、1000万用户的规模,2000万用户规模,做了多次容灾演练,保障即便双11真的出现问题,也能从容的从新系统切回老系统。
万事俱备,但这一夜并不顺利。零点之前,按照预案,聚望团队为了提高双11系统的整体性能,撤掉了一些过度占用资源的防御性系统,但之后不久,意料之外的攻击出现了,消息系统遭到了大量运营类垃圾消息的冲击,“系统很快就要撑不住了,我们的神经更是如此。”
聚望立即组织团队现场写脚本进行攻防,将违规账号从系统出提出进行限制。直到熬过零点后的半小时,这激烈的消息系统保卫战才结束。战斗结束后,虽然没有人立即说话,但所有人都不约而同的松了口气。
所有人都知道IM PaaS这一仗,钉钉打赢了。
追着飞机换引擎
这一场胜仗的附带成果是,钉钉从“备胎”转正了。2019年开始,参战双11的技术人员就不再建旺旺的备份群,因为钉钉已经实现了异地多活的高可用性和高稳定性。除了基础沟通,双11期间,所有故障的监控预警、故障应急协同、应急快反全都依赖于钉钉,大部分的故障都可以依靠钉钉的协同系统自动化处理,从发现到处理甚至能做到秒级。
2019之后的三年,钉钉悄无声息地逐步接管了更多的消息流量。到2021年,钉钉彻底给包括手淘、天猫、千牛等三十多款应用换上了新的消息底座,保障了千万卖家和数亿消费者的买卖沟通。
这一切在大众层面都难以感知,几乎没有人知道过去人们在淘宝内发消息时的底层软件从旺旺切换成了钉钉,但这并不是用户不够细心,而是钉钉刻意为之。
这是一群追着飞机换引擎的人。
参与巴拿马项目的工程师们将这个为期三年的项目,比喻成“开着飞机换引擎”,他们希望飞机上的乘客不会感到一丝颠簸,同时也让飞机运转效率有更大的提升。
今年11月11日,交易系统顺利抗住流量洪峰,钉钉的IM PaaS也成功抗住了“60.69万条/秒”的消息峰值,阳凯松了一口气,悄悄掏出手机点击购物车,给自己一早添加好的商品结账。
参与双11技术作战超过10年,阳凯对阿里的技术保障系统越来越有信心“以前零点过后一个小时我们都不敢分心,但现在扛过前五分钟,我们就比较有信心了。”
钉钉今年要负责承接双11的全量消息,IM PaaS团队此前已经进行了60多次压测、容灾演练,128个预案演练,通过了集团总共4次全链路压测验收。
双11是阿里的技术大考,但已经备战三年的钉钉,早已底气十足。
钉钉的“进化论”
扛住双11前5分钟的洪峰没有难倒钉钉,但钉钉的“野心”不仅如此。甚至双11的洪峰,也并不是钉钉面对过的最大挑战。
2020年初疫情爆发,短时间内暴增的线上办公与上课,让钉钉消息峰值一度超过每分钟2亿条,而且这一次没有演练,也没有压测。所幸,经过双11的实战,以及阿里云紧急调度的计算资源,平稳度过。
(疫情防控期间,在线办公、上课成为常态)
曾经只是双11大战中最不起眼的配角,如今不仅抗住了双11,还一次次地扛住了后疫情时代里,一次又一次的流量洪峰。
达野说,过去钉钉还小时,最紧张的是过年发红包时的流量峰值。但在经历了疫情期间三天扩容16倍,完不成就可能被全国人民骂上热搜的惊心动魄,作为一个亿级DAU的产品,钉钉见过了高处的风景,也磨练出了应对巨大挑战的责任心和能力。
“现在几乎隔一段时间就会经历一次双11,比如最近寒潮,钉钉的流量峰值就一路飙升。”
但不管是达野,还是聚望、阳凯,乃至钉钉的每一位工程师,都已经能够快速的应对这些挑战,不再有第一年切换时的那种压力。
他们在历年的“征战”之中成熟,钉钉也在历年的打磨之中成长。
2021年双11,钉钉已经完成了双11阿里消息平台全面切换,内部协同、小二与商家、商家内部协同、商家与消费者的消息,一天数百亿条消息在钉钉打造的统一消息平台上传递信息,创造价值。但钉钉不再满足于只作为消息工具存在,以开放平台为使命的钉钉,渴望和阿里的电商业务紧密结合。
事实上,巴拿马项目立项不久后,钉钉IM的产品团队也同步接下了淘宝的另外一个难题,为其在应用层定制了一套高效的沟通工具,实现了以200个小二服务400万商家的效率,而且,这套产品能力沉淀下来,还可以在阿里其他业务中复用。
但钉钉并不会止步于此,他们的愿景是为每一家企业打造新生产力工具。IM PaaS在阿里内部的实战是一次内部实践,未来还会有更多的“巴拿马”打通红海、地中海或者其他海域,帮助不同的企业完成数字化的进阶。
而且,这套支撑了阿里内及阿里生态中100多款应用的消息平台,已经演化为一套PaaS服务,向外界开放。也就是说,无论是客户还是创业者,都可以即开即用获取百万级并发的即时通讯。阳凯说,前几年的钉钉在技术上是一个吸收者,现在钉钉正在将类似IM,这些经过双11检验的技术能力陆续开放出去,为用户创造更多价值。
从PaaS层、应用层到开放的技术平台,钉钉的工程师们仍在探索,在数字化浪潮里努力书写属于他们的故事。