![]()
我記得在分布式系統(tǒng)的早期,故障似乎是不可避免的、突發(fā)的、混亂的,幾乎不可能推理出原因。看著服務(wù)在生產(chǎn)環(huán)境中失效,有一件事變得很清楚:如果我們想要可靠的系統(tǒng),就必須練習(xí)有意的故障并從中學(xué)習(xí)。
這個(gè)想法并非一夜之間出現(xiàn)的。15年前,我在亞馬遜擔(dān)任工程師和呼叫主管,我的團(tuán)隊(duì)負(fù)責(zé)亞馬遜零售網(wǎng)站的正常運(yùn)行時(shí)間和性能。網(wǎng)站每宕機(jī)一分鐘,我們就會(huì)損失數(shù)萬美元的收入。我的團(tuán)隊(duì)構(gòu)建了一套故障注入工具來幫助準(zhǔn)備黑色星期五等重要時(shí)刻,這些工具后來在整個(gè)組織中得到采用。
與此同時(shí),Netflix推出了他們的開源工具混沌猴,這真正推動(dòng)了混沌工程的理念。雖然在當(dāng)時(shí)仍然是一種前沿實(shí)踐,但有目的地在生產(chǎn)環(huán)境中終止服務(wù)器揭露了脆弱的假設(shè),使Netflix的工程組織不僅更加有彈性,而且成為世界上最優(yōu)秀的組織之一。
當(dāng)我加入Netflix時(shí),我參與了他們第二代故障注入工具的工作,這些工具不再是隨機(jī)關(guān)閉服務(wù)器,而是運(yùn)行特定的、假設(shè)驅(qū)動(dòng)的實(shí)驗(yàn),控制影響范圍并最大化學(xué)習(xí)效果。這就是我們開始談?wù)摿鞲幸呙珙惐鹊牡胤健J澜绺鞯氐念I(lǐng)先工程組織開始接受這樣的想法:有思想地向他們的系統(tǒng)注入損害,以便有條不紊地、系統(tǒng)地建立對(duì)它的抵抗力,這是一項(xiàng)值得的努力。
在亞馬遜和Netflix工作多年讓我近距離了解這些可靠性工作對(duì)兩家數(shù)字企業(yè)成功的重要性。我強(qiáng)烈感覺到未來每家公司都會(huì)需要它們,所以我決定在2016年創(chuàng)立Gremlin。我的目標(biāo)很直接:為每個(gè)工程團(tuán)隊(duì)提供安全、可靠、簡單的混沌工程。早期實(shí)踐者看到了故障注入的價(jià)值,但它是分散的、臨時(shí)的,通常局限于少數(shù)精英組織。Gremlin著手改變這種狀況。
安全的工具很重要,因?yàn)槟銦o法擴(kuò)展一個(gè)有風(fēng)險(xiǎn)客戶體驗(yàn)的實(shí)踐,而現(xiàn)實(shí)地說,大多數(shù)工程組織沒有自信地運(yùn)行這些實(shí)驗(yàn)的經(jīng)驗(yàn)。作為回應(yīng),我們構(gòu)建了控制措施,如爆炸半徑限制、安全保護(hù)和直接回滾,以便團(tuán)隊(duì)能夠自信地運(yùn)行實(shí)驗(yàn)。Gremlin代理可以自動(dòng)停止和回滾測試,健康檢查可以監(jiān)控系統(tǒng)的意外行為,任何團(tuán)隊(duì)成員都可以按下停止按鈕立即停止正在運(yùn)行的測試。這降低了準(zhǔn)入門檻,讓更多團(tuán)隊(duì)在生產(chǎn)環(huán)境中驗(yàn)證假設(shè)并強(qiáng)化他們的系統(tǒng),而不會(huì)有不必要的風(fēng)險(xiǎn)。
方法論同樣重要。混沌工程是經(jīng)驗(yàn)性的:形成關(guān)于穩(wěn)定狀態(tài)的假設(shè),設(shè)計(jì)受控實(shí)驗(yàn)來挑戰(zhàn)該假設(shè),觀察影響并迭代。Gremlin致力于將該流程編碼為手冊(cè)和教程,以便團(tuán)隊(duì)能夠從隨機(jī)故障注入轉(zhuǎn)向假設(shè)驅(qū)動(dòng)的實(shí)驗(yàn)。教授團(tuán)隊(duì)如何定義穩(wěn)定狀態(tài)指標(biāo)、設(shè)計(jì)有意義的攻擊和解釋結(jié)果,有助于使混沌工程成為可重現(xiàn)的工程實(shí)踐,而不是偶爾的好奇心。
集成是第三個(gè)支柱。為了讓混沌工程發(fā)揮作用,它必須存在于團(tuán)隊(duì)已經(jīng)使用的相同工作流程中,例如CI/CD流水線、可觀察性堆棧和事件審查流程。我們構(gòu)建了集成和示例,展示如何將攻擊與監(jiān)控關(guān)聯(lián)、安排實(shí)驗(yàn),并利用Gremlin作為事后驗(yàn)證的一部分。今天,團(tuán)隊(duì)可以一鍵設(shè)置智能健康檢查,通過我們的API自動(dòng)化實(shí)驗(yàn),甚至將Gremlin連接到他們喜歡的AI模型。這使混沌工程不再是一個(gè)單獨(dú)的活動(dòng),而更像是正常可靠性工作的一部分。
所以我們成功地找到了如何使混沌工程成為一種有效、安全和可復(fù)制實(shí)踐的方法。但這就是我們遇到障礙的地方。從本質(zhì)上說,混沌工程是關(guān)于探索和發(fā)現(xiàn)的,這使它非常適合回答個(gè)別問題,比如"如果在我們的依賴鏈中添加100毫秒的延遲會(huì)發(fā)生什么?"對(duì)個(gè)別工程師來說回答這個(gè)問題非常重要,但企業(yè)擔(dān)心的是其他問題,比如"我們的系統(tǒng)是否足夠可靠,能夠?yàn)槲覀兊目蛻籼峁┓?wù)?"
這就是我們需要超越混沌工程,以可測量、可跟蹤和可報(bào)告的方式管理整個(gè)組織的可靠性的地方。我們從混沌工程已經(jīng)證明有效的相同故障注入技術(shù)開始,然后分層一個(gè)更系統(tǒng)化、可擴(kuò)展的方法。手動(dòng)實(shí)驗(yàn)被設(shè)計(jì)為定期安全運(yùn)行的自動(dòng)化測試集合或測試套件所取代。結(jié)果被組合以產(chǎn)生可靠性評(píng)分,可以隨時(shí)間跟蹤,以查看公司系統(tǒng)的可靠性并證明可靠性工作的影響。
現(xiàn)在我們有了一個(gè)不僅顯示你的系統(tǒng)何時(shí)宕機(jī),而且可以預(yù)測未來可靠性并用于防止故障的指標(biāo)。這是混沌工程夢想的最終實(shí)現(xiàn)。特定專家仍然可以使用針對(duì)性實(shí)驗(yàn)來發(fā)現(xiàn)新的故障模式,而已知的故障模式可以在整個(gè)系統(tǒng)中進(jìn)行測試,以驗(yàn)證彈性、發(fā)現(xiàn)風(fēng)險(xiǎn),并為團(tuán)隊(duì)提供具有預(yù)測性指標(biāo)的真正可靠性可見性。
這很好,因?yàn)槲覀儸F(xiàn)在發(fā)現(xiàn)自己處于軟件歷史上最戲劇性的轉(zhuǎn)變之一。AI正以前所未有的水平加速代碼生成和部署,雖然AI生成的代碼對(duì)速度很有好處,但并非沒有風(fēng)險(xiǎn)。AI代碼已被證明會(huì)導(dǎo)致錯(cuò)誤、配置漂移和其他導(dǎo)致事故的問題增加。這并不意味著我們都應(yīng)該停止使用AI,但確實(shí)需要更好的保護(hù)措施和測試。
現(xiàn)在比以往任何時(shí)候都更重要的是,從混沌工程開始的主動(dòng)可靠性測試和管理變得至關(guān)重要。工程組織根本承受不起希望獲得彈性并且只有在故障導(dǎo)致代價(jià)高昂、痛苦的停機(jī)時(shí)才發(fā)現(xiàn)故障的做法。他們需要預(yù)測性可靠性測試和指標(biāo),以便他們能夠系統(tǒng)地測量、管理和改善可靠性。
Q&A
Q1:混沌工程是什么?它有什么作用?
A:混沌工程是一種主動(dòng)測試系統(tǒng)可靠性的方法,通過有意在生產(chǎn)環(huán)境中注入故障來發(fā)現(xiàn)系統(tǒng)的脆弱點(diǎn)。它能幫助工程團(tuán)隊(duì)在真正的故障發(fā)生之前發(fā)現(xiàn)并修復(fù)潛在問題,提高系統(tǒng)的整體彈性和可靠性。
Q2:Gremlin是什么?它如何改進(jìn)了混沌工程?
A:Gremlin是一個(gè)混沌工程平臺(tái),讓混沌工程變得更安全、簡單和可重復(fù)。它提供了爆炸半徑控制、自動(dòng)回滾、健康檢查等安全保護(hù)措施,并且可以與現(xiàn)有的CI/CD流水線和監(jiān)控系統(tǒng)集成,讓更多團(tuán)隊(duì)能夠安全地進(jìn)行混沌工程實(shí)踐。
Q3:AI時(shí)代為什么需要更好的可靠性管理?
A:AI正在加速代碼生成和部署,但AI生成的代碼可能包含更多錯(cuò)誤、配置漂移等問題,增加了系統(tǒng)故障的風(fēng)險(xiǎn)。因此需要更系統(tǒng)化的可靠性測試和預(yù)測性指標(biāo),幫助組織在AI驅(qū)動(dòng)的快速開發(fā)環(huán)境中保持系統(tǒng)穩(wěn)定性。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.