混沌工程

定義

混沌工程是一種可試驗(yàn)的掘托、基于系統(tǒng)的方法來處理大規(guī)模分布式系統(tǒng)中的混亂問題娜扇。通過不斷試驗(yàn)邑闺,了解系統(tǒng)的實(shí)際能承受的韌性邊界并建立信心,通過不同的試驗(yàn)方法和目的剂跟,觀察分布式系統(tǒng)的行為和反應(yīng)减途。一句話:以實(shí)驗(yàn)的方法盡早揭露系統(tǒng)弱點(diǎn)

混沌工程與傳統(tǒng)測(cè)試的區(qū)別

  • 在測(cè)試中,進(jìn)行斷言:給定特定條件曹洽,系統(tǒng)將發(fā)出特定輸出鳍置。測(cè)試通常是二進(jìn)制態(tài)的,并確定屬性是真還是假送淆。嚴(yán)格地說税产,這不會(huì)產(chǎn)生關(guān)于系統(tǒng)的新知識(shí),它只是將效價(jià)分配給它的已知屬性偷崩。
  • 實(shí)驗(yàn)產(chǎn)生新知識(shí)辟拷,并經(jīng)常提出新的探索途徑。我們認(rèn)為混沌工程是一種實(shí)驗(yàn)形式阐斜,可以產(chǎn)生關(guān)于系統(tǒng)的新知識(shí)衫冻。它不僅僅是一種測(cè)試已知屬性的方法,可以通過集成測(cè)試更輕松地進(jìn)行驗(yàn)證谒出。

故事

在給大家正式介紹之前隅俘,先給大家說個(gè)小故事,阿波羅13號(hào)在發(fā)射前進(jìn)行的一次測(cè)試中笤喳,2號(hào)氧氣罐的氧氣始終無法徹底排空为居。控制人員決定啟動(dòng)罐內(nèi)的加熱器杀狡,排出剩余氧氣蒙畴。這個(gè)操作需要接通65伏的電源,但氧氣罐內(nèi)的電路一開始的設(shè)計(jì)電壓是28伏呜象。在8小時(shí)的加熱后膳凝,靠近加熱器的導(dǎo)線溫度一度達(dá)到了538度,導(dǎo)線的絕緣層被破壞恭陡。在太空中鸠项,這段導(dǎo)線短路,點(diǎn)燃了絕緣層子姜,引發(fā)了爆炸。

image.png

軟件開發(fā)中的問題

在日常開發(fā)運(yùn)維工作中,如果你不能提早發(fā)現(xiàn)和解決問題哥捕,最后問題會(huì)在周末/半夜來“解決你”.


image.png

系統(tǒng)架構(gòu)的演進(jìn)

從系統(tǒng)架構(gòu)的本質(zhì)演進(jìn)中是由脆弱的系統(tǒng)牧抽,慢慢演進(jìn),逐步增強(qiáng)遥赚,最終變的越加智能化扬舒,成為一個(gè)反脆弱系統(tǒng)。

  • 脆弱系統(tǒng):難以修改凫佛,許多阻止擁有無法更改的應(yīng)用程序讲坎,維護(hù)成本非常高,但是由于他們對(duì)業(yè)務(wù)至關(guān)重要愧薛,因此仍然運(yùn)行晨炕。
  • 健壯系統(tǒng):可承受一定程度的壓力而不會(huì)失去其給您,但是如果壓力和變化繼續(xù)毫炉,則該系統(tǒng)可能會(huì)帶來損失瓮栗。
  • 韌性系統(tǒng):在設(shè)計(jì)和實(shí)現(xiàn)時(shí)考慮到壓力和適應(yīng)性特征,從而應(yīng)對(duì)更大的壓力和變化瞄勾,并最大程度的提供價(jià)值费奸。
  • 反脆弱系統(tǒng):是一個(gè)智能系統(tǒng),架構(gòu)復(fù)雜有難度进陡,但是一旦建立起來愿阐,降機(jī)遇變更來驅(qū)動(dòng)業(yè)務(wù),甚至能提供創(chuàng)新變更趾疚。


    image.png

混沌過程的演進(jìn)

image.png

2010年 Netflix 內(nèi)部開發(fā)了 AWS 云上隨機(jī)終止 EC2 實(shí)例的混沌實(shí)驗(yàn)工具: Chaos Monkey
2011年 Netflix 釋出了其猴子軍團(tuán)工具集: Simian Army
2012年 Netflix 向社區(qū)開源由 Java 構(gòu)建 Simian Army缨历,其中包括 Chaos Monkey V1 版本
2014年 Netflix 開始正式公開招聘 Chaos Engineer
2014年 Netflix 提出了故障注入測(cè)試(FIT),利用微服務(wù)架構(gòu)的特性盗蟆,控制混沌實(shí)驗(yàn)的爆炸半徑
2015年 Netflix 釋出 Chaos Kong 戈二,模擬AWS區(qū)域(Region)中斷的場(chǎng)景
2015年 Netflix 和社區(qū)正式提出混沌工程的指導(dǎo)思想 – Principles of Chaos Engineering
2016年 Kolton Andrus(前 Netflix 和 Amazon Chaos Engineer )創(chuàng)立了 Gremlin ,正式將混沌實(shí)驗(yàn)工具商用化
2017年 Netflix 開源 Chaos Monkey 由 Golang 重構(gòu)的 V2 版本喳资,必須集成 CD 工具 Spinnaker 來使用
2017年 Netflix 釋出 ChAP (混沌實(shí)驗(yàn)自動(dòng)平臺(tái))觉吭,可視為應(yīng)用故障注入測(cè)試(FIT)的加強(qiáng)版
2017年 由Netflix 前混沌工程師撰寫的新書“混沌工程”在網(wǎng)上出版
2017年 Russell Miles 創(chuàng)立了 ChaosIQ 公司,并開源了 chaostoolkit 混沌實(shí)驗(yàn)框架

混沌工程的原則

建立穩(wěn)定狀態(tài)的假設(shè)

  • 確定監(jiān)控指標(biāo)
  • 假設(shè)注入事件仆邓,系統(tǒng)依然穩(wěn)定

在一個(gè)復(fù)雜系統(tǒng)里面鲜滩,我們有特別多的組件,有很多不同的輸入輸出节值,我們需要有一個(gè)通用的方式來區(qū)別系統(tǒng)哪些行為是可以接受的徙硅,而哪一些則是不合適的。我們可以認(rèn)為當(dāng)系統(tǒng)處于正常操作時(shí)候的狀態(tài)就是穩(wěn)定狀態(tài)搞疗。

多樣化現(xiàn)實(shí)世界事件

  • 根據(jù)現(xiàn)實(shí)世界設(shè)定事件
  • 注入事件是被認(rèn)為系統(tǒng)可以處理的事件
  • 優(yōu)先注入那些頻繁發(fā)生且影響重大的事件
image.png

在生產(chǎn)環(huán)境運(yùn)行

  • 混沌工程實(shí)驗(yàn)離生產(chǎn)越近越好

從功能性的故障測(cè)試角度來看嗓蘑,非生產(chǎn)環(huán)境去實(shí)施故障注入是可以滿足預(yù)期的,不過因?yàn)橄到y(tǒng)行為會(huì)根據(jù)環(huán)境和流量模式有所不同,為了保證系統(tǒng)執(zhí)行方式的真實(shí)性與當(dāng)前部署系統(tǒng)的相關(guān)性桩皿,推薦的實(shí)施方式還是在生產(chǎn)環(huán)境(仿真環(huán)境豌汇、沙箱環(huán)境都不是最好的選擇)

很多同學(xué)恐懼在生產(chǎn)環(huán)境執(zhí)行實(shí)驗(yàn),原因還是擔(dān)心故障影響不可控泄隔。實(shí)施實(shí)驗(yàn)只是手段拒贱,通過實(shí)驗(yàn)對(duì)系統(tǒng)建立信心是我們的目標(biāo)。關(guān)于如何減少實(shí)驗(yàn)帶來的影響佛嬉,這點(diǎn)在“最小化爆炸半徑”部分會(huì)有闡述逻澳。
并且混沌工程不是一開始就建議你在生產(chǎn)環(huán)境運(yùn)行,也是循序漸進(jìn)暖呕,從測(cè)試環(huán)境開始斜做,慢慢過渡的到sandbox,最后在生產(chǎn)環(huán)境運(yùn)行試驗(yàn)缰揪。

持續(xù)自動(dòng)化運(yùn)行實(shí)驗(yàn)

  • 自動(dòng)執(zhí)行實(shí)驗(yàn)
  • 自動(dòng)分析實(shí)驗(yàn)結(jié)果
  • 自動(dòng)創(chuàng)建新的實(shí)驗(yàn)

實(shí)驗(yàn)的手動(dòng)運(yùn)行工作屬于勞動(dòng)力密集型任務(wù)陨享,因此難以長(zhǎng)久持續(xù)。建議采取自動(dòng)化實(shí)驗(yàn)及持續(xù)運(yùn)行方式钝腺∨坠茫混沌工程能夠?qū)⒆詣?dòng)化系統(tǒng)引入系統(tǒng)之內(nèi),從而促進(jìn)協(xié)調(diào)與分析工作的順利進(jìn)行艳狐。

最小化影響范圍

  • 對(duì)線上業(yè)務(wù)影響最小范圍
  • 先小范圍定硝,在不斷擴(kuò)大
  • 避免在高風(fēng)險(xiǎn)時(shí)間段運(yùn)行

最小化爆炸半徑,盡量減少對(duì)用戶的影響毫目,最好能控制到用戶基本蔬啡,或者請(qǐng)求基本,這樣對(duì)線上基本就沒有什么損失镀虐,高層的接受度也會(huì)很高箱蟆,減少故障對(duì)產(chǎn)線業(yè)務(wù)的影響。

image.png

混沌工程實(shí)驗(yàn)步驟

image.png

混沌工程的成熟度模型

image.png

混沌工程的接納指數(shù)

image.png

混沌工程的價(jià)值

1.架構(gòu)師對(duì)當(dāng)前設(shè)計(jì)的架構(gòu)刮便,可以通過混沌工程進(jìn)行驗(yàn)證
2.開發(fā)和運(yùn)維的可以用混沌工程來提高自己對(duì)線上Case處理的演練空猜,提升經(jīng)驗(yàn)
3.測(cè)試可以在利用混沌工程提早暴露一些線上的問題,降低故障復(fù)發(fā)率恨旱,轉(zhuǎn)化被動(dòng)為主動(dòng)
4.UI可以在出現(xiàn)這些問題時(shí)辈毯,界面的反饋,產(chǎn)品不顯示搜贤,產(chǎn)品對(duì)用戶的體驗(yàn)度是怎么樣的谆沃,可以接受與否等

混沌工程的回報(bào)率

引用自Netflix
過去一年中,混沌工程提前發(fā)現(xiàn)了2次大故障和8次小故障仪芒,避免了整個(gè)組織大約70萬美金的損失唁影「荩混沌工程團(tuán)隊(duì),總共3個(gè)成員据沈,薪水支出15萬美金/人啃炸。開展混沌工程實(shí)驗(yàn),本身需要1萬美金的成本卓舵。請(qǐng)問,投資回報(bào)率是多少膀钠?

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掏湾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子肿嘲,更是在濱河造成了極大的恐慌融击,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雳窟,死亡現(xiàn)場(chǎng)離奇詭異尊浪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)封救,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門拇涤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人誉结,你說我怎么就攤上這事鹅士。” “怎么了惩坑?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵掉盅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我以舒,道長(zhǎng)趾痘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任蔓钟,我火速辦了婚禮永票,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奋刽。我一直安慰自己瓦侮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布佣谐。 她就那樣靜靜地躺著肚吏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪狭魂。 梳的紋絲不亂的頭發(fā)上罚攀,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天党觅,我揣著相機(jī)與錄音,去河邊找鬼斋泄。 笑死杯瞻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的炫掐。 我是一名探鬼主播魁莉,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼募胃!你這毒婦竟也來了旗唁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤痹束,失蹤者是張志新(化名)和其女友劉穎检疫,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祷嘶,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屎媳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了论巍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烛谊。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖环壤,靈堂內(nèi)的尸體忽然破棺而出晒来,到底是詐尸還是另有隱情,我是刑警寧澤郑现,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布湃崩,位于F島的核電站,受9級(jí)特大地震影響接箫,放射性物質(zhì)發(fā)生泄漏攒读。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一辛友、第九天 我趴在偏房一處隱蔽的房頂上張望薄扁。 院中可真熱鬧,春花似錦废累、人聲如沸邓梅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽日缨。三九已至,卻和暖如春掖看,著一層夾襖步出監(jiān)牢的瞬間匣距,已是汗流浹背面哥。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留毅待,地道東北人尚卫。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像尸红,于是被迫代替她去往敵國和親吱涉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容