
文章插圖
導讀:與任何新概念一樣,混沌工程時常被誤解 。本文會探討混沌工程是什么以及不是什么 。作者:Casey Rosenthal, Nora Jones
來源:華章科技
在Netflix的混沌工程實踐之初,大家實際上并不明確這門學科究竟是什么 。關于如何讓服務更可靠存在著許多誤解 。比如那時經常聽到這樣一些口號——拔掉電纜、在生產環(huán)境搞破壞或在生產環(huán)境進行測試 。另外,也幾乎不存在混沌工程實際工具的例子 。
Netflix成立混沌工程團隊就是要創(chuàng)建一門有意義的學科 。該學科能夠借助工具主動提高可靠性 。我們花了幾個月的時間研究韌性工程和其他學科,并提出混沌工程的定義和藍圖以造福他人 。
混沌工程的定義已經以宣言的形式上線,稱為“混沌工程原則” 。
https://principlesofchaos.org
01 混沌工程是什么混沌工程原則定義了混沌工程學科,以便大家了解何時該進行、該如何進行以及該如何做好混沌工程 。如今,混沌工程的通用定義是“促進發(fā)現(xiàn)系統(tǒng)弱點的實驗” 。混沌工程原則的網(wǎng)站概述了如下實驗步驟:
- 首先定義“穩(wěn)態(tài)”(steady state,穩(wěn)定狀態(tài)),以表示系統(tǒng)正常行為的某些可測量的輸出 。
- 建立如下假說—對照組和實驗組都將持續(xù)這種穩(wěn)態(tài) 。
- 引入反映真實事件的變量,例如崩潰的服務器、發(fā)生故障的硬盤驅動器、斷開的網(wǎng)絡連接等 。
- 試圖通過在對照組和實驗組之間尋找穩(wěn)態(tài)差異來推翻這一假說 。
1. 實驗與測試
在Netflix,我們發(fā)現(xiàn)首先必須要做出的澄清是,混沌工程是一種實驗而非測試 。可以說,“質量保證”涵蓋了兩者,但該詞在軟件行業(yè)通常具有負面含義 。
最初,Netflix的某些團隊會問混沌工程團隊:“難道你們就不能編寫一堆集成測試來發(fā)現(xiàn)同樣的問題嗎?”從理論上講,這種觀點是務實的 。但實際上,不可能從集成測試中獲得理想的結果 。
嚴格來說,測試不會創(chuàng)造新知識 。測試要求編寫測試的工程師知道要驗證的系統(tǒng)的特定屬性 。復雜系統(tǒng)對于這種類型的分析是不透明的 。對于復雜系統(tǒng)中各個部件所有的潛在相互作用所帶來的所有潛在副作用,人類根本就無法理解 。這使我們得出了測試的下述關鍵特性 。
測試會根據(jù)現(xiàn)有知識做出一個斷言,然后執(zhí)行測試,并給出該斷言的結果(通常為真或假) 。測試是關于系統(tǒng)已知屬性的聲明 。
另一方面,實驗創(chuàng)造了新知識 。實驗提出了一個假說,只要假說不被推翻,對該假說的信心就會增強 。而如果假說被推翻了,那就會學到一些新東西 。這就能啟動一個調查,以弄清楚假說為什么是錯的 。
在復雜系統(tǒng)中所發(fā)生的事情的原因通常都不會是顯而易見的 。實驗可以建立信心,也可以讓我們學到系統(tǒng)的新屬性 。這是對未知的探索 。
因為測試需要有人提前提出斷言,所以僅憑測試是無法取得通過實驗而收獲的洞察的 。實驗引入了一種發(fā)現(xiàn)新屬性的正規(guī)方法 。而當發(fā)現(xiàn)了系統(tǒng)的新屬性后,完全可以將其轉換為測試 。
實驗還有助于將有關系統(tǒng)的新設想編碼為新的假說,從而創(chuàng)建類似“回歸實驗”的實踐,以便隨著時間的推移而對系統(tǒng)做進一步探索 。
由于混沌工程誕生于應對復雜系統(tǒng)問題,因此該學科必須體現(xiàn)實驗性而非測試性 。
2. 驗證與清查
在運維管理和物流規(guī)劃領域,驗證(verification)和清查(validation)的定義是不同的 。而混沌工程更偏重于驗證 。
- 驗證
- 清查
這兩種做法都是有用的,并且都可以建立對系統(tǒng)輸出的信心 。作為軟件工程師,我們經常會偏向于強迫自己去深入研究代碼,并驗證代碼是否反映了我們關于代碼應如何工作的思維模型 。與這種偏好相反,混沌工程極力主張進行驗證而不是清查 。混沌工程所關心的是某事是否有效,而不是如何工作 。
請注意,在上面有關管道的隱喻中,雖然可以清查用于提供清潔飲用水的所有組件,但由于某些未曾想到的原因,最終水龍頭里流出來的仍是被污染的水 。在復雜系統(tǒng)中總是存在不可預測的交互 。但是,如果驗證水龍頭流出的水是干凈的,那么就不必操心水是如何來的 。
在大多數(shù)業(yè)務案例中,比起考慮系統(tǒng)的實現(xiàn)是否符合我們的思維模型,系統(tǒng)的輸出要重要得多 ?;煦绻こ谈P心業(yè)務和輸出,而不是正在互動的各個部件的實現(xiàn)或思維模型 。
02 混沌工程不是什么有兩個概念經常和混沌工程混淆——在生產環(huán)境中搞破壞和反脆弱 。
1. 在生產環(huán)境中搞破壞
在博客文章或會議演講中,人們時常會將混沌工程描述為“在生產環(huán)境中搞破壞” 。對于能從混沌工程中獲益良多的大型企業(yè)以及其他復雜系統(tǒng)的運營者來說,盡管這句話聽起來很酷,但對他們并沒有吸引力 。
有關混沌工程的一個更好的說法是:修復生產環(huán)境中的漏洞 。“搞破壞”很容易,但完成下述事情很難:減小爆炸半徑,對安全性進行批判性思考,確定漏洞是否值得修復,決定是否應該進行實驗,等等 。
“搞破壞”可以用無數(shù)的方式來完成,且花費的時間也很少 。但更大的問題是,在不知道系統(tǒng)部件已被破壞的情況下,該如何推測出哪些部件已經被破壞?
“修復生產環(huán)境中的漏洞”能更好地體現(xiàn)混沌工程的價值,因為整個混沌工程實踐的重點是主動提高復雜系統(tǒng)的可用性和安全性 。現(xiàn)在已經有很多對事故做出應急反應的學科和工具,比如告警工具、事故響應管理、可觀測性工具、災難恢復計劃等 。其目的是當事故發(fā)生后能縮短檢測時間和修復時間 。
有人可能會說,SRE(Site Reliability Engineering,網(wǎng)站可靠性工程)是一門兼具被動性和主動性的學科,可以通過從過去的事故中獲得知識,并將知識進行社交化來防止將來發(fā)生類似的事故 。而混沌工程是軟件行業(yè)中唯一專注于主動提高復雜系統(tǒng)安全性的學科 。
2. 反脆弱
熟悉納西姆·塔勒布(Nassim Taleb)所提出的反脆弱性概念的人,經常會認為混沌工程本質上是反脆弱的軟件版 。塔勒布認為,諸如“低劑量毒物興奮效應”之類的詞,已不足以表達復雜系統(tǒng)的適應能力 。因此他發(fā)明了“反脆弱”一詞,指系統(tǒng)當受到隨機壓力時能變得更強的特性 。
混沌工程和反脆弱之間一個重要的關鍵區(qū)別是混沌工程能教育系統(tǒng)維護人員,讓他們認識到混沌為系統(tǒng)所固有,從而使他們成為一支更具韌性的團隊 。而相比之下,反脆弱卻給系統(tǒng)加入混沌,并希望系統(tǒng)在響應混沌時能變得更強大,而不是屈服于混沌 。
【Netflix正在搞的混沌工程到底是什么?終于有人講明白了】作為框架,反脆弱的觀點與學術界所研究的韌性工程、人因學和安全系統(tǒng)都不一致 。例如對于提高系統(tǒng)健壯性而言,反脆弱建議的第一步是尋找并消除弱點 。這項建議看似直觀,但韌性工程告訴我們,對于安全性而言,尋找做對的地方要比尋找做錯的地方提供的信息要多得多 。
反脆弱的下一步是添加冗余 。這似乎也很直觀,但是添加冗余既可以緩解故障,也可以導致故障 。在有關韌性工程的文獻中有眾多冗余所導致的安全性故障案例 。
這兩種思想流派之間還存在許多其他分歧 。韌性工程是一個有著數(shù)十年歷史,并正不斷發(fā)展的研究領域 。而反脆弱則游離于學術界之外,且缺乏同行評審 。因為兩者都是要應對混沌和復雜系統(tǒng),所以很容易就產生兩者可以融合在一起的感覺 。
但反脆弱實際上并不具備混沌工程所擁有的經驗主義和理論基礎 。由此,兩者在根本追求上就已分道揚鑣 。
關于作者:Casey Rosenthal,Verica公司的首席執(zhí)行官兼聯(lián)合創(chuàng)始人 。他曾是Netflix公司混沌工程團隊的工程經理,在使用分布式系統(tǒng)、人工智能以及將新穎的算法和學術界知識轉化為能落地的模型方面擁有豐富的經驗 。本文摘編自《混沌工程:復雜系統(tǒng)韌性實現(xiàn)之道》,經出版方授權發(fā)布 。
Nora Jones,Jeli公司的首席執(zhí)行官兼聯(lián)合創(chuàng)始人 。她是一位敬業(yè)且充滿自驅力的技術領導者和軟件工程師,對分布式系統(tǒng)中人與軟件的協(xié)同工作充滿熱情 。她在2017年AWS re:Invent大會的主題演講中為混沌工程運動的發(fā)起做出了貢獻 。
延伸閱讀《混沌工程:復雜系統(tǒng)韌性實現(xiàn)之道》
推薦語:混沌工程開創(chuàng)者撰寫,通過谷歌、微軟等行業(yè)專家的真實故事,系統(tǒng)闡釋混沌工程的核心實踐,提供實踐建議 。
以上關于本文的內容,僅作參考!溫馨提示:如遇健康、疾病相關的問題,請您及時就醫(yī)或請專業(yè)人士給予相關指導!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內容,希望對您有所幫助:- 解決VM虛擬機打開提示‘正在使用中’問題的方法
- 一篇搞定婚宴酒席預訂全攻略 婚宴酒席預訂
- 平臺正在改變玩家購買游戲的方式 steam官網(wǎng)
- 有人10分鐘被騙430萬 AI詐騙正在全國爆發(fā)
- 美圖秀秀:調整照片大小輕松搞定
- 美圖秀秀:輕松搞定照片背景更換
- 吃什么當天晚上就很猛 吃什么藥能多搞幾次
- 如何關閉QQ聊天中的對方正在輸入提示
- 新房裝修怎么搞 房地產裝修
- 如何在QQ上展示正在播放的QQ音樂
