Target從掃碼失效事故中學到四個教訓,也決定優先強化SRE團隊的四大能力,甚至要導入到全IT團隊都要熟悉這些SRE能力。(圖片來源/Target)

在2020年3月13日這一天,如果Target SRE工程師沒有發現監控儀表板上的異常訊號,進而查出好幾家分店POS系統掃碼速度變慢,恐怕到了周末復活節檔期,這家美國零售巨擘所有線上與實體賣場都難以順利進行任何一筆結帳。「店內系統掃碼服務當機,轉移到總部機房內的備援服務接手,才出現了掃碼速度變慢的徵兆。」Target的SRE總監Kathryn Blanchard直到事發一年後,才敢在2021年自家技術研討會上,公開這起差點造成Target營運全面中斷的事故。

Kathryn Blanchard直言,尤其當時Target也是SRE新手,第一次面對如此重大的事件,也從中學到了4個教訓,這些經驗都成為Target的SRE團隊日後要優先強化的4類能力目標。

第一個教訓是,因為系統異動造成的問題,經常會延後發酵

像這次事故根源是系統異動導致記憶體占用問題,但是當下沒有產生影響,反而是部署一周以後,才出現在少數地方,而且不是所部署的2千家分店都同時出現災情。Kathryn Blanchard提醒,因此,調查事故原因時,特別得從歷史紀錄開始著手。

第二個教訓是監控機制必須連同備用系統都監控,才有完整數據。Target導入微服務架構後,在正式環境中建立了一套混合雲的備援架構和故障轉移機制,但是,SRE一開始的監控機制,沒有涵蓋到備用系統,也就沒有在總部機房備援服務接手時,更早一步發現異常,反而是等到顧客結帳櫃檯掃碼速度變慢了,他們才發現,分店掃碼服務已經當機了。

不過,這次應變中值得嘉許的一點是,第一時間先採取緩解對策,而不是先找出問題根源來處理,這也是Kathryn Blanchard學到的第三個教訓。因為SRE工程師決定先將服務退回前個一版本重新啟動,讓分店掃碼服務可以先恢復正常,所以,顧客一點都沒有察覺到系統出錯。

優先強化四大SRE能力,將SRE能力擴大到全IT團隊

「先緩解主要影響,再來修補,將影響顧客的時間最小化,這是Target很大的思維改變。」Kathryn Blanchard強調。而最後一項教訓就是不要浪費事故教訓的價值,必須從這些事件來累積和學習。後來,Target決定把SRE能力擴大推廣Target整個IT團隊,也發展出四項SRE能力和機制,不只SRE團隊,連網路團隊、儲存團隊等也能共用,也特別重視事後檢討報告的撰寫和分析。

第一項能力是將SRE能力整合到開發生命周期管理,對正式環境也要進行程式碼管理。因為Target每一次異動,都得更新2千家分店的系統,等於得重複部署2千次,因此不能採取一次全面部署的高風險作法,尤其很多問題會在幾個禮拜後才發生。因此,Target後來採取了金絲雀部署(Canary Deployment)作法,先在少數店導入新版,搭配全面監控比較導入前後的變化,再決定是否近一步擴大導入到所有分店,這個做法也會用來比較測試環境和正式環境的差異和影響。甚至,Target金絲雀部署的範圍,還可以更細緻區分出,不同程式碼儲存庫或者針對不同使用者範圍來進行局部測試,進一步來降低和管理可能發生的影響。

先前提到掃碼失效事故,若能先在少數店家部署,監控服務運作過程,就可以發現記憶體用量比舊版高,一旦出現異常,Target自動化機制會先將這些店家的系統,自動復原到舊版程式,「具備自動復原和標準部署能力的平行金絲雀部署,可以讓Target開發團隊放心部署。」Target運算服務總監John Engelman強調。

除了SRE更整合開發之外,SRE自身也要建立更完善的服務級別目標(SLO)和服務水準指標(SLI),Target會考慮實體硬體、應用程式和資料這三者之間的的關係和相依性來訂定指標,並建立一個分層式的視覺化圖表,反映這些相關系統行為的運作狀態。例如顧客在結帳櫃檯掃碼行為,就是一個Target很愛用的SLI指標,利用掃描動作等待多久才發出「嗶」聲的時間作為指標。John Engelman解釋:「這是一個顧客很容易察覺的指標,也是一個很好的顧客體驗指標。」

Target考慮實體硬體、應用程式和資料這三者之間的關係和相依性來訂定指標,並建立一個分層式的視覺化圖表,來反映相關系統行為的運作狀態。圖片來源/Target

Target打造了一個監測SLI指標的UNIMatrix工具,例如監控結帳櫃檯的商品掃描行為,也就是掃碼嗶的時間,甚至可以監控有多少掃描順利完成,多少次掃空重新掃碼的行為,也可以細緻到每一家店內的每一個櫃檯,不管是新款POS或是舊款,連自助式結帳機的掃碼行為都可以監控。換句話說,Target的SRE團隊,可以隨時看到全美近2千家分店,每一道結帳櫃檯的掃碼狀態,哪一道櫃檯慢了,SRE工程師都能知道。在UNIMatrix儀表板上,會立刻標記出哪一個櫃檯服務水準低於要求,用紅色色塊來提醒SRE待命人員,「一旦發現異常,SRE就能主動追蹤,不用等到顧客抱怨、分店通報後才開始採取行動。」John Engelman強調。

Target打造了一個監測SLI指標的UNIMatrix工具,哪一個櫃檯服務水準低於要求,就會出現紅色色塊提醒SRE待命人員,不用等到顧客抱怨才採取行動。圖片來源/Target

為了更及時排除系統異常,Target強化的第三項SRE能力就是事件應變能力。目標是在SRE主動發現異常之後,如何快速展開應變。John Engelman指出:「要找到對的團隊,讓他們快速介入,快速行動,關鍵是要有一個流暢溝通的機制。」

Target打造了一款事件命令列工具(Incident command tool),這是一個一站式工具,可以管理工程回應訊息,也整合待命系統,能夠讓相關人員快速追蹤關鍵訊息、事件時間、缓解路徑,也能與所有應變參與人員直接溝通,還有一個專用對話頻道,可用聊天室、打電話或直接視訊,甚至這個工具還整合了所有的維運腳本或部署腳本資料,能針對歷史資料或最新資料進行整合分析。

最後一項SRE強化能力是要善用歷史錯誤來學習。經過3月掃碼失效事件後,Target後來改以「系統一定會出錯」的前提,來建立高可用架構,不只上線服務採取雙活(Active-Active)架構,連備份都會考慮到備份失效的再備援機制。另外在工程文化面,也大力推廣從錯誤中學習文化,不責難文化等,遇到事件時會格外重視事件回顧,撰寫驗屍報告時時,還特別講究問題分析、運用情境來描述根本原因,並且要列出可改善的關鍵處置和提前預防事故的機會點分析,SRE團隊每周二進行可靠性回顧會議,討論大量驗屍報告,每一個與會成員都可以發問。

從事故體會到專門SRE團隊真正的價值

到了2021年初,Target逐漸完善了這四大SRE能力的強化,也才首度對外公開,從一年前那次當時未公開事故中學到的教訓,他們第一個SRE團隊設立一年來,也繳出了漂亮的成績單,讓Target偵測到問題的時間,縮短了82%,更早一步察覺到異常,還能讓異常影響持續的時間,縮短了44%。

「2020年那一次未公開的事故,讓Target真的體會到專門SRE團隊的價值。」這位一手催生Target SRE團隊的主管Kathryn Blanchard這樣說。


熱門新聞

Advertisement