二○○七年,淘寶網的流量讓後台系統再次遭遇支撐瓶頸。程立及團隊臨危受命,啟動了對支付寶系統的升級改造項目。圖/新華社
新華社港台部供稿
二○○七年,淘寶網的流量讓後台系統再次遭遇支撐瓶頸。程立及團隊臨危受命,啟動了對支付寶系統的升級改造項目。
通俗來說,他們要做的就是怎樣用0和1的代碼,創造出一台能支撐十四億人同時上線付款的「巨型收銀台」——不僅要做到所有人在付款時都能不排隊「秒付」,還要確保收支的每筆錢都沒有任何錯誤。讓程立倍感壓力的是,這套系統需要在三個月之內上線。
用戶流如潮水襲來
對程式設計師而言,做系統最忌諱的就是「將所有雞蛋都裝到一個筐裡」。但因為時間緊、任務重,為完成任務,程立和他的團隊決定孤注一擲。原定二○○八年一月初發布的新系統,在一拖再拖的趕鴨子上架式催促下,終於上線問世。
新老系統平穩過渡,需要將老系統裡數以億計的用戶和資金數據完整準確移入新系統,程立和他的團隊決定停機八小時。
停機,意味著用戶在此期間無法正常進行交易。停機時間愈長,用戶「跳票」的可能性就愈大,對企業的損失也就愈高。所以,如何在約定停機時間內完成新老系統的切割,顯得尤為重要。
在零點停機後的八個小時裡,新系統與老系統的數據一直無法配平,資金校驗也一直無法通過。直到中午十二點,問題才得以解決。當天下午三點,程立和業務負責人決定將新系統上線五分鐘進行測試。
「滴滴滴……」系統剛剛上線,數據異常的警報聲響徹機房。一群人圍著時任支付寶首席業務架構師的倪行軍(花名「苗人鳳」),尋找癥結所在。
大家在臘月裡都穿著厚厚的冬衣,但圍著倪行軍的每個人額頭上和手心裡都滲出了冷汗。
時間一分一秒地過去,問題還是沒有找到。這時,程立站出來,替換了計算機前的另一個程式設計師,一番緊張的摸索之後排除了故障——原來,核對數據的公式出了問題。
下午五點,新系統再次上線。積攢了十七個小時的用戶流如潮水般襲來,不一會兒系統就「決堤」了。
在這頭,程立帶著團隊搶修系統;另一頭,數據異常的警報聲再次響起。更讓人揪心的是,互聯網上諸如「支付寶帶錢跑路」的流言已滿天飛……
「我主導的項目會不會就這麼讓支付寶完蛋?」連續多日沒有闔眼的程立內心有些崩潰。好在事情在用戶潮湧退去後發生了轉機。在仔細核查相關數據後,程式設計師發現數據異常的警報僅是「誤報」。
化身人肉雲計算
大部分人對阿里巴巴的「雙十一」購物狂歡節並不陌生。二○一○年「雙十一」前夕,支付寶的全體技術人員都在做最後的準備工作,根據前一年「雙十一」的經驗,系統被提前留出比平時高出一倍的餘量。二○一○年十一月十一日零點剛過,系統餘量瞬間被瘋狂的用戶流占用,程立和他的團隊被這一突發情況打了個措手不及。
「趕緊調配可用資源!」程立在第一時間做出反應。那時,雲計算還未普及,後台程式設計師化身「人肉雲計算」,這邊的系統資源閒下了馬上頂上,那邊的系統資源過載了就趕緊遷移。忙活了一整天,本以為手忙腳亂應付過了當年的「雙十一」,誰知事情又向戲劇化方向發展。
時間到了晚上十一點五十九分三十秒,系統最核心的數據庫即將崩潰。一旦這個數據庫崩潰,意味著之前所有的努力都將付諸東流。
「把會計程序『殺掉』,先收錢,後點錢,快!」千鈞一髮之際,程立的團隊再次做出正確決定。當天,交易悉數準確無誤地完成。
「做程式設計師真需要一顆強大的內心。我們只要寫錯一個代碼,對用戶來說可能就是成千上萬元的損失。」
程立說,在充當了一次又一次的「消防隊員」後,他逐漸明白,一個優秀的程式設計師不光是要自己一個人悶頭寫程序,還要嘗試著引導一個團隊去思考,怎樣做才能在滿足用戶多樣性需求的基礎之上,創造更多的社會價值。