支付寶技術期末考:專業技術藍軍首次對外公開

轉眼間2018年的進度條已經拉到98%,年底正是大家忙碌的時候,我等上班族忙着做年終總結,學生忙着複習功課準備期末考試,而在支付寶大樓裏,本週也在進行着技術人員的期末考試:紅藍軍技術攻防演練。

12月的第三週,是支付寶技術人的“期末考試”。今年從12月7日開始,在支付寶辦公大樓6層的一間辦公室裏,9名技術人員身穿統一的藍色T恤,在一排藍色的可樂山之後緊張地工作,他們就是支付寶的專業技術藍軍,他們的工作是對螞蟻金服的各個業務線系統注入故障進行攻擊。而各業務線的技術人員則作爲紅軍,要對藍軍發起的突襲見招拆招,抵禦他們的進攻。

支付寶藍軍誕生背景

紅藍軍技術攻防演練與螞蟻金服的技術風險部發展息息相關。不管是數據中心遭雷劈光纜被挖斷這樣的天災,還是人工操作失誤代碼bug這樣的人禍,真實的故障都是隨機和不確定的。支付寶人意識到,如果只能等真實故障發生時才能夠檢驗,防控能力將處於被動的局面,所以他們必須要有未雨綢繆的策略,提高對技術風險的防禦能力。

2015年,支付寶把原來的技術質量部正式升級爲技術風險部,專注研發及架構的技術風險問題,並完成相應解決方案和落地平臺。2016年,技術風險部再次升級爲SRE團隊。螞蟻金服技術風險部負責人俊義介紹說,相較於谷歌提倡的以確保網站可靠性爲目的的SRE實踐來說,螞蟻金服的SRE團隊其實更應該叫做TRE (Tech Risk Engineering),因爲螞蟻金服的SRE團隊除了要確保網站、應用的可靠性,還花了很大一部分精力來建設技術風險防控的能力。近年來螞蟻金服自研的分佈式數據庫OceanBase,金融級分佈式中間件SOFA,TRaaS技術風險防控平臺等技術,從底層基礎設施到平臺都在不斷加強支付寶體系的抗風險能力。

SRE團隊成立後不久便發現,以往的技術攻防演練幾乎都是小打小鬧,不成體系,也很零散。同時,技術團隊發現了兩個極爲重要的現象,一是生產故障不是必然的,而通常都是偶然性的;二是生產故障是低頻的。這樣就帶來了一個很大的問題:故障的樣本很少。這意味着,沒有辦法證明,在真實的故障到來的時候以前設計的平臺和能力是不是管用。也就是說,SRE團隊建設的防禦系統的可靠性,無法充分驗證。
 
2017年7月,SRE團隊成立了專門的、獨立職能的技術藍軍,其主要的工作就是發掘防禦系統的弱點併發起真實的攻擊。技術藍軍並不對各業務方負責,只對這套防禦系統的穩定性和可靠性負責。
 
在技術藍軍看來,故障的發生是必然的,只是時間早晚而已,技術藍軍要想盡辦法去觸發這些故障,這樣,在故障真實發生的時候,纔有足夠的應付能力。所以,技術藍軍發掘各類脆弱點,並高頻地製造任意可能發生的故障,以驗證防禦系統的可靠性。

紅藍軍對抗

藍軍的執行軍長阿貴,在支付寶有十餘年的工作經驗。當我們驚訝於藍軍團隊目前總人數不超過10人時,阿貴說是的,尤其剛開始時感覺是在“以一己之力挑戰整個公司的技術人”。阿貴介紹說,藍軍要做的事情是去找各個業務線系統的脆弱點,並想盡辦法去觸發這些脆弱點。攻防對抗發生在鏡像系統中,該系統可以模擬生產環境中的流量行爲,避免對線上環境造成影響。

紅軍按業務線分爲8支隊伍:紅一支付軍,紅二微貸軍,紅三財富軍,紅四保險君,紅五芝麻軍,紅六國際軍,紅七安全軍和紅八平臺軍

技術藍軍日常的工作除了要對各業務線系統發出攻擊,還要從歷史事故中總結或從代碼邏輯中找漏洞,把故障表現模型抽象出來,基於模型去發現系統的脆弱點。但是藍軍一共還不到10個人,要找出螞蟻金服全局系統的脆弱點,阿貴承認壓力還是很大的。“在團隊招人的時候,除了看他們是否有好奇心,對高可用是否有很深刻的理解,候選人心理承受能力也相當重要。”藍軍團隊平時還需要開發故障挖掘平臺,設計探針和算法來採集和分析數據。

2017年秋天,藍軍團隊在成立後的兩個月內,自主研發了無侵入式故障注入系統Awatch,可以實時地對運行中的業務系統進行任意鏈路的編織侵入。2018年3月,藍軍推出故障場景挖掘平臺,基於Awatch探針探測應用內數據流,以此進行“弱點挖掘”。這套弱點挖掘體系,能夠自動發現故障場景,最高能夠在5分鐘內產生500+的故障場景。

而紅軍方面自然也是見招拆招。據俊義介紹,紅軍不像藍軍專門抽出了一支隊伍,而是分佈在各個業務線。當有人感覺到系統可能受到了攻擊,他會主動站出來去處理問題,這時候他就是一名紅軍。而在平時,各個業務線也會有專門的值班機制來緊盯系統是不是受到了攻擊。

藍軍有自己的故障挖掘平臺,紅軍也練就了一身好的防禦本領,祭出了全鏈路壓測平臺和資金監控平臺,能很好的監測故障並進行預防。同時紅軍也加強了“故障自愈”架構體系升級及能力建設,以效能爲目標,結合仿真,紅藍軍一起研發了“無損”攻防體系,並且推出與之匹配的度量平臺,自動度量攻防結果,將數據可視化。

紅藍軍雙方在相互較量中共同提高螞蟻金服的技術風險防控能力。有時候藍軍發動的攻擊會被紅軍的故障自愈體系防範住,這時候阿貴也會覺得“有點失落”。也有的時候會有紅軍找藍軍理論:這種低概率的問題爲什麼要費勁去改善?但是在阿貴看來,不管一個問題發生的概率有多低,都應該被注意到,並儘量對系統做改進以消除這些隱患。所以在紅軍感知到藍軍確實攻擊到脆弱點之後,會及時進行修復,如果不能在短時間內修復的,也會和藍軍約定時間提交修復方案。

目前,常態紅藍技術對抗保持每週200+個故障場景的節奏在持續運作。而在期末考期間,藍軍的攻擊密度會大大提升,在一星期內對各業務線猛烈地發動大約1000個攻擊。在期末考之前,紅軍也有個傳統,就是拜關公,給關二爺孝敬點瓜子、旺仔牛奶甚至是格子襯衫,這也是螞蟻金服獨特的工程師文化之一。

大概從2012年開始,在每年備戰雙十一的時候,支付寶技術人都會拜一拜關公,而關公也從照片到木質再到銅質不斷升級,成爲支付寶人的一個傳統:既是一種儀式感,也代表了支付寶人對技術的敬畏之心。

在期末考試中,紅軍會按照發現攻擊的時間和故障恢復的時間來進行排名。去年,紅軍的第一名和最後一名分別獲得了“金算盤”和“爛算盤”的獎品。阿貴對爛算盤印象深刻:是真的爛,鐵桿繡到發黑,算珠也有缺口,“也就只有在淘寶上能買到了”。

考試有排名,目的不是爭輸贏

當被問到是希望紅軍贏還是藍軍贏,阿貴回答說,其實紅藍軍攻防演練並不是爲了要爭誰輸誰贏。而是雙方在對抗的過程中都能不斷反思升級,瞭解到螞蟻金服全局系統中有哪些容易出問題的脆弱點,在現實生活中發生問題之前把問題免疫掉,再大的問題也能達到5分鐘故障恢復的目標。因爲金融行業關係到我們的日常生活,很多時候甚至會關係到整個社會的穩定。支付寶迄今全球活躍用戶已超過9億,安全穩定的技術系統是事關生死的基石。

除了平常的故障演練紅藍軍技術攻防,螞蟻金服還在前沿技術上不斷探索,致力於打造更穩定安全的技術體系,如:

  • AI。使用人工智能技術進行校驗業務。螞蟻金服內部有四道安全防線:第一道是研發團隊的代碼,第二道是質量團隊,第三道是SRE團隊,第四道是人工智能技術。目前螞蟻金服已經在其資金安全監控系統中使用AI技術,利用算法自動識別異常,做到故障自愈,再結合螞蟻金服的TRaaS技術風險平臺,可以覆蓋螞蟻金服80%以上的業務。
  • 區塊鏈。安全是區塊鏈技術的一大特點,而金融行業是對安全性、穩定性要求極高的行業,所以當區塊鏈技術剛被提出的時候,金融被認爲是最主要的應用場景之一。螞蟻金服也在探索區塊鏈技術,比如用於做容災等,在未來也計劃打造安全可靠的區塊鏈平臺。

經過不斷的打磨和錘鍊,支付寶的技術風險防控體系已經具有較好的可靠性和穩定性。從螞蟻金融科技官網上可以看到,這些技術風險相關的能力已經對外開放,目前共有3款產品,包括容災應急平臺、全鏈路壓測和資金安全監控;另外,變更管控、巡檢平臺和黑屏運維管控即將上線對外開放。

寫在最後

任何系統和軟件都不可能做到十全十美,只要是人在寫代碼,就難免會有漏洞,難免有考慮不到的盲區。我們身處技術改善生活的時代,也需要對技術保持敬畏之心,居安思危未雨綢繆才能設計打磨出更加穩定易用的產品。當今年雙十一能順利完成再創新高的2135億交易紀錄,當支付寶能扛住25.6萬筆/秒的交易峯值,這背後離不開這支藍軍隊伍的專業“找茬”,也離不開所有支付寶技術人強烈的風險意識。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章