歷年雙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層、應用層到開放的技術平臺,釘釘的工程師們仍在探索,在數字化浪潮里努力書寫屬于他們的故事。