上週咱們分享了故障管理中,應該如何對待故障,怎樣作好故障定級和定責方面的管理工做。今天我就和你分享當故障真正發生後,咱們在故障通報和故障覆盤方面的實踐經驗。服務器
當故障真實發生後,帶來的影響不只僅是技術層面的,更多的是業務層面的,好比用戶和商家的批量投訴,交易量下跌,廣告資損等等。而這些影響又會產生巨大的外部壓力,並傳遞到技術團隊,這時若是沒有很好的故障應對機制,技術團隊就很容易陷入慌亂,不知所措。網絡
咱們可否有效應對這種突發且高壓的情況,我以爲有兩個方面十分關鍵。架構
這也是咱們在故障應急狀態下必定要堅守的第一原則:優先恢復業務,而不是定位問題。這就須要咱們事先有充足的預案准備以及故障模擬演練,這就跟咱們前面介紹的各類穩定性保障措施相關,經過穩定性平臺的建設,與咱們可以預見到的,以及咱們經歷過的故障場景相結合,當發生故障時可以第一時間執行對應的恢復預案。工具
同時,預案的執行不能僅僅在故障發生時才執行,而是應該把故障模擬和恢復演練放在平時。我在團隊中常常傳遞的一個理念就是:凡是沒有演練過的預案,都是耍流氓。也就是若是咱們在平常系統穩定的狀態下都不敢執行預案,或者執行了沒效果,那真到了故障發生後,在更爲複雜的情況下,預案100%也是不敢作的,由於這種異常狀態下,咱們還要考慮執行了預案是否會致使次生故障。學習
關於故障模擬,能夠分爲不一樣層面來梳理,好比:開發
關於故障模擬,我再次向你推薦Netflix的Chaos Engineering,介紹得很是全面。同步
故障發生後的排障和恢復操做,每每須要多個技術團隊協做完成,這時就須要有必定的應急機制,來確保相關人員可以快速響應和高效協做。同時,由於對業務形成的影響致使業務團隊會承受不少外部壓力,這時也須要有統一的口徑對外反饋,好比大體緣由(對外不用詳細),影響面以及預估恢復時長等等,從而確保信息的透明,避免各類不着邊際的猜想對公司信譽形成的影響。團隊協作
這時,咱們前面介紹到的技術支持這個角色就起到了很是關鍵的做用。對內,要有效組織技術團隊的集中和協做;對外,負責對接業務部門同步信息,同時屏蔽各方對技術團隊和故障處理人員的干擾。監控
出現一個嚴重故障後,技術支持一般要作以下幾個關鍵事項。配置
因此,總體總結下來,故障應急過程就是:功夫要下在平時,注意建設各類工具和平臺,同時要儘量地考慮和模擬各類故障場景。這就像一支軍隊在平時必定要作各類軍事演習同樣,而後就是臨場發揮。當故障真正出現時,要有完善的應急機制,立刻可以有效運轉起來,而不是慌亂無措。
上面介紹了故障應急,那接下來咱們再看故障管理的下一個階段,也就是故障發生以後的覆盤。
首先,咱們必定要先搞清楚覆盤的目的。覆盤的目的是爲了從故障中學習,找到咱們技術和管理上的不足,而後不斷改進。雖然咱們不肯意故障發生,可是從故障中學習,反而是提高團隊和員工能力的最佳手段,因此咱們必定要辯證地看待故障這件事情。
同時,切忌將覆盤過程和目的搞成追究責任或實施懲罰,這對於團隊氛圍和員工積極性的打擊是很是大的。這一點在前面的內容中已經詳細介紹過,這裏就再也不重複了。
在覆盤過程當中,技術支持仍然要起到關鍵做用。
覆盤會議中,一般會有哪些關鍵環節呢?
除了例行的故障應急和故障覆盤,咱們還會按期對一個時期內的故障案例進行總結。好比按照一個季度、半年和整年的週期,這樣能夠更容易地發現一些共性問題,以便於研發團隊在穩定性建設方面的規劃。
舉個例子,2017年年末,咱們總體總結了整年的故障案例,對P0~P2嚴重級別的故障進行分類彙總,就發現整年第三方緣由的故障,以及數據類的故障佔了很大比例。
咱們再往細節分析,發現第三方緣由的故障,多數是機房IDC的電力、網絡切換,單臺服務器硬件故障致使的。這些在單次故障覆盤時,很容易歸因於第三方,可是從整年來看,咱們認爲根因上,仍是咱們的系統健壯性不夠,在限流降級以及平常的故障模擬演練上,還有很大的提高空間。因此,咱們就拉上研發團隊的主管和骨幹員工,從新看這些故障,從新制定出穩定性提高的改進措施。
同時,在故障定級定責方面,由第三方緣由致使的故障,後續再也不做爲故障根因,而只做爲觸發因素。因此,在故障覆盤時必定要制定出咱們自身須要改進的措施。
針對數據類故障,咱們總結後發現大多集中在「有狀態業務」發佈過程當中。代碼和配置發佈能夠走發佈系統,有完善的流程支持,但數據的變動卻更多地依賴人工操做,且流程和周邊部件的配合上也不成熟。因此,咱們就明確下來,要加大對有狀態業務的發佈和數據變動工具的支持,將經驗固化下來,而不是靠人。
上述這些經驗,同時又能夠推廣到整個研發團隊,在不斷總結的過程當中,整個系統的穩定性不斷提高,技術架構也不斷完善。
到這裏,咱們整個故障管理的內容就介紹完了。
總結一下,咱們首先要對故障有一個正確和理性的認識,既不能聽任無論,也不要談之色變;同時咱們也須要科學的管理方式,跟業務結合,制定出對應的故障等級和定級定責制度。
其次,結合咱們前面介紹的穩定性保障體系,在平常要作好各種預案和模擬演練,當故障真實發生時,可以作到冷靜處理和高效地組織協調。
最後,在故障覆盤中總結出咱們的不足,而後不斷地改進。
關於故障管理的內容,你還有哪些問題想和我交流,歡迎你留言討論。