混沌工程是什么?你知道嗎?
為什么大型科技互聯(lián)網(wǎng)公司會故意在生產(chǎn)環(huán)境中破壞其服務(wù)?有幾點原因:
- 驗證系統(tǒng)的韌性
驗證系統(tǒng)是否能應(yīng)對預(yù)期外的故障情況。這種方法幫助公司確認(rèn)系統(tǒng)的容錯能力、恢復(fù)能力和彈性。例如,可能會模擬數(shù)據(jù)庫故障、網(wǎng)絡(luò)延遲、服務(wù)器宕機(jī)等,以驗證系統(tǒng)能否及時恢復(fù),不會對用戶造成重大影響。
- 早發(fā)現(xiàn)早治療
幫助團(tuán)隊提前發(fā)現(xiàn)并解決潛在的問題,而不是等到問題在真實環(huán)境中發(fā)生時才去應(yīng)對。及早發(fā)現(xiàn)并修復(fù)瓶頸和薄弱環(huán)節(jié),避免出現(xiàn)系統(tǒng)崩潰等災(zāi)難性后果。
- 提升團(tuán)隊的響應(yīng)能力
團(tuán)隊在控制的環(huán)境中反復(fù)進(jìn)行故障恢復(fù)演練,可以有效提升對真實故障的響應(yīng)速度和處理能力,減少實際發(fā)生時的恐慌和混亂。
這種方法被稱為 “混沌工程”,大約在12年前由 Netflix 公司首次使用。
圖片
如何在系統(tǒng)中嘗試混沌工程?
顯然,在這樣做時必須小心謹(jǐn)慎。畢竟,我們不是為了好玩或嚇唬客戶而破壞我們的生產(chǎn)服務(wù)。我們做混沌工程是為了找到系統(tǒng)中的痛點;這是我們?yōu)榭蛻籼峁┑囊豁椃?wù)。要想成功完成這項工作,做好以下準(zhǔn)備是很有幫助的:
- 制定計劃。用統(tǒng)計學(xué)術(shù)語來說,我們需要對所選服務(wù)的行為提出假設(shè),我們要通過混沌工程將其擊垮。
- 計算爆炸半徑(Blast Area)。當(dāng)一項服務(wù)宕機(jī)時,故障可能會連鎖到其他服務(wù)。因此,我們需要了解影響的范圍,即 “爆炸半徑”。
- 良好的監(jiān)控。您需要仔細(xì)檢查爆炸半徑內(nèi)的服務(wù)是否有良好的監(jiān)控,這樣我們才能知道實驗進(jìn)行得如何,爆炸半徑是否擴(kuò)大。
- 制定運行手冊。在運行手冊中,我們將記錄下關(guān)閉服務(wù)的步驟、恢復(fù)服務(wù)的步驟,以及最重要的停止實驗的應(yīng)急計劃。
一切就緒。可以開始了。
思考一下:一些團(tuán)隊(如 QA 和 SRE)可能會反對混沌工程,有時原因是可以理解的。如何讓他們相信這是一項有價值的工作?