如何讓混沌工程實驗降本增效

“混沌工程實驗性價比太低了裂逐。測試、研發(fā)和運維三個部門都投入了大量人力物力泣栈,在準生產(chǎn)環(huán)境做了不少故障注入實驗卜高。但發(fā)現(xiàn)的問題還是比較少∧掀”在一次混沌工程實踐回顧會上掺涛,一位測試人員如是說。

這位測試人員疼进,來自一家國內(nèi)領先的股份制商業(yè)銀行薪缆。而我正在為這家銀行的運維團隊,輔導他們的混沌工程實踐伞广。

近十幾年來拣帽,隨著企業(yè)業(yè)務不斷微服務化,并遷移到復雜分布式的云生產(chǎn)環(huán)境嚼锄,云上各個微服務業(yè)務系統(tǒng)之間相互訪問的穩(wěn)定性减拭,以及與所依賴的第三方系統(tǒng)之間相互訪問的穩(wěn)定性,都會受到錯綜復雜的云生產(chǎn)環(huán)境的未知故障的影響区丑,而損害業(yè)務連續(xù)性拧粪。混沌工程就是業(yè)界在應對上述問題的過程中孕育而生的良好實踐刊苍。通過在測試環(huán)境和生產(chǎn)環(huán)境上既们,注入經(jīng)過精心設計并控制好爆炸半徑的故障,進行故障注入實驗正什,就可以觀察和學習復雜分布式系統(tǒng)的運行模式和失效模式啥纸,從而提升團隊的系統(tǒng)穩(wěn)定性設計,讓團隊能夠快速應對業(yè)務系統(tǒng)在云環(huán)境上的未知故障婴氮。

看到其他銀行已經(jīng)率先實踐了混沌工程斯棒,這家銀行的運維部門也按耐不住盾致,早在一年前就開始了混沌工程實踐之旅。

我們知道荣暮,要想保持業(yè)務系統(tǒng)在云環(huán)境上運行的穩(wěn)定性庭惜,離不開包括業(yè)務、研發(fā)穗酥、測試和運維部門的密切協(xié)作护赊。這家銀行的這4個部門的協(xié)作情況是怎樣的呢?

最先響應運維部門實踐混沌工程召喚的砾跃,是測試部門骏啰。測試部門認為混沌工程的故障注入實驗,能豐富他們的壓力測試和探索性測試的場景抽高,從而發(fā)現(xiàn)更多軟件缺陷判耕。

然而相比之下,研發(fā)和業(yè)務部門的一線人員對此的參與度卻不夠高翘骂。他們認為壁熄,混沌工程的故障注入實驗,其實就是另一種測試而已碳竟。

確實草丧,測試部門就是把混沌工程故障注入實驗,當作探索性測試來做的瞭亮》椒拢“混沌工程實驗固棚,類似于探索性測試统翩。實驗本身沒有明確的輸入和預期的結果,而是通過對系統(tǒng)和服務的干預此洲,來觀察系統(tǒng)的反應厂汗。”測試人員在測試總結中這樣寫道呜师。

缺乏明確的穩(wěn)態(tài)行為假說

由于測試人員使用探索性測試的方法娶桦,來實踐混沌工程故障注入實驗,所以在實驗結果報告中汁汗,找不到“系統(tǒng)穩(wěn)態(tài)行為假說”的字眼衷畦。只是在“風險問題”的以下描述中,隱約看到穩(wěn)態(tài)行為假說的影子:“預期主節(jié)點的docker服務關閉后知牌,kubelet/api/etcd/controllers等pod會失效祈争,之后這些核心服務的進程會重啟,能繼續(xù)提供服務”角寸。

隱含的穩(wěn)態(tài)行為假說沒有反映用戶價值

從上面的描述能看出菩混,這個混沌工程實驗的穩(wěn)態(tài)行為假說忿墅,并不是沒有,而是隱含存在的沮峡,即“能繼續(xù)提供服務”疚脐。那如何才算“能繼續(xù)提供服務”呢?這一點可以從測試方案的監(jiān)控方式中邢疙,看出一點線索棍弄。即對于所有實驗,無論注入的故障是什么疟游,測試人員只關注3類指標:

  1. 系統(tǒng)業(yè)務指標:如系統(tǒng)業(yè)務交易的錯誤率
  2. 系統(tǒng)性能指標:如系統(tǒng)業(yè)務交易的TPS(每秒事務處理量)和響應時長的變化趨勢
  3. 系統(tǒng)資源指標:如系統(tǒng)的CPU照卦、內(nèi)存、磁盤IO和網(wǎng)絡資源指標的變化趨勢

看到這3類指標乡摹,我產(chǎn)生了一個疑問:“用戶真的在乎業(yè)務交易錯誤率和TPS變化趨勢嗎役耕?”我相信,用戶會更在乎自己下的訂單聪廉,是否能在3秒內(nèi)成功處理瞬痘。這一點所有人都能很好理解。那未能反映用戶價值的穩(wěn)態(tài)行為假說板熊,會導致什么后果呢框全?或許這種充滿技術細節(jié)的穩(wěn)態(tài)行為假說,不便于業(yè)務人員和領導直觀感知其業(yè)務影響干签,吸引不了他們的注意津辩,從而喪失了獲得他們支持的機會,并弱化了實驗的價值容劳。

隱含的穩(wěn)態(tài)行為假說不夠量化

再看上面這個通過觀察TPS變化趨勢來判斷是否“能繼續(xù)提供服務”的例子喘沿。如果這個實驗是由測試人員手工執(zhí)行的,憑借豐富的經(jīng)驗竭贩,測試人員是能判斷系統(tǒng)是否“能繼續(xù)提供服務”的蚜印。但如果將這個實驗自動化,用工具在晚上自動執(zhí)行實驗留量,那么工具該如何界定系統(tǒng)是否“能繼續(xù)提供服務”呢窄赋?所以要想實現(xiàn)自動化,必須要把穩(wěn)態(tài)行為的假說進行量化楼熄,以便工具自動執(zhí)行實驗忆绰。

良好穩(wěn)態(tài)行為假說示例

這里試著給出一個能反映用戶價值,且有量化指標的穩(wěn)態(tài)行為假說的示例:

“即使在實例失效的條件下可岂,系統(tǒng)仍然能在3秒之內(nèi)错敢,完成已受理的用戶的交易,否則也能在5秒之內(nèi)提示用戶業(yè)務暫時不可用青柄》フ”

這個穩(wěn)態(tài)行為假說预侯,不僅體現(xiàn)了成功場景,也體現(xiàn)了失敗場景峰锁。

良好穩(wěn)態(tài)行為假說能節(jié)省實驗成本

如何設計一個能節(jié)省實驗成本的穩(wěn)態(tài)行為假說呢萎馅?讓我們看看發(fā)生在這家銀行測試人員身上的故事。

這些測試人員正在使用一款開源工具虹蒋,來進行混沌工程故障注入實驗糜芳。由于這款工具,提供了5種可供注入的原子故障魄衅,于是測試人員也就設計了5個實驗峭竣。如果用上述示例的寫法,來編寫穩(wěn)態(tài)行為假說的話晃虫,會是這個樣子:

  1. 實驗1的穩(wěn)態(tài)行為假說:即使在實例中止的條件下皆撩,系統(tǒng)仍然能在3秒之內(nèi),完成已受理的用戶的交易哲银,否則也能在5秒之內(nèi)提示用戶業(yè)務暫時不可用扛吞。
  2. 實驗2的穩(wěn)態(tài)行為假說:即使在實例CPU爆滿的條件下,系統(tǒng)仍然能在3秒之內(nèi)荆责,完成已受理的用戶的交易滥比,否則也能在5秒之內(nèi)提示用戶業(yè)務暫時不可用。
  3. 實驗3的穩(wěn)態(tài)行為假說:即使在實例內(nèi)存爆滿的條件下做院,系統(tǒng)仍然能在3秒之內(nèi)盲泛,完成已受理的用戶的交易,否則也能在5秒之內(nèi)提示用戶業(yè)務暫時不可用键耕。
  4. 實驗4的穩(wěn)態(tài)行為假說:即使在實例磁盤爆滿的條件下寺滚,系統(tǒng)仍然能在3秒之內(nèi),完成已受理的用戶的交易郁竟,否則也能在5秒之內(nèi)提示用戶業(yè)務暫時不可用玛迄。
  5. 實驗4的穩(wěn)態(tài)行為假說:即使在關閉實例網(wǎng)絡的條件下由境,系統(tǒng)仍然能在3秒之內(nèi)棚亩,完成已受理的用戶的交易,否則也能在5秒之內(nèi)提示用戶業(yè)務暫時不可用虏杰。

如果手工執(zhí)行每個實驗平均花30分鐘讥蟆,那么執(zhí)行這5個實驗,要花150分鐘纺阔。

等一下瘸彤!我們是銀行的測試人員,不是開源混沌工程工具的測試人員笛钝!這5個原子故障好比病毒质况,它們所導致的癥狀都是同一個——實例失效愕宋。而對于銀行的測試人員,只要從上述5個故障中任選一個注入结榄,就能達成讓實例失效的目的中贝。畢竟測試人員只須關注業(yè)務系統(tǒng)在實例失效后,是否能繼續(xù)提供服務臼朗。換句話說邻寿,這5個原子故障,同屬一個等價類视哑。對于等價類绣否,我們只要注入一個原子故障就夠了。如果一定要全面注入這5個原子故障挡毅,那么可以在以后的各輪回歸實驗中蒜撮,每輪實驗依次輪流選擇一種不同的原子故障注入即可。這樣對于“實例失效”的實驗跪呈,我們就能節(jié)省80%的實驗成本淀弹。這下你就知道上面的良好穩(wěn)態(tài)行為假說示例,為何要寫“癥狀”了——“即使在實例失效的條件下”庆械。這也在某種程度上薇溃,揭示了文章一開頭測試人員所抱怨的混沌工程實驗“性價比太低”的原因。

這個故事給我們的啟發(fā)是缭乘,如果針對“癥狀”而不是“病毒”來設計系統(tǒng)穩(wěn)態(tài)行為假說沐序,就能幫助我們識別等價類,從而只選擇少量的“病毒”注入堕绩,達成同樣“癥狀”的效果策幼,進而降低實驗成本。

總結

編寫反映用戶價值奴紧、便于量化且針對“癥狀”的系統(tǒng)穩(wěn)態(tài)行為假說特姐,能讓混沌工程實驗的價值更容易讓業(yè)務人員和領導理解,從而獲得他們的支持黍氮,也能更有利于自動化唐含,并能通過等價類劃分,來降低實驗成本沫浆,進而達成降本增效的目的捷枯。

作者簡介

最近10年,專注輔導國內(nèi)近20家大中型企業(yè)研發(fā)團隊的工程生產(chǎn)力賦能专执。曾在社區(qū)主持過幾十次編程道場淮捆,人稱“道長”。著《馴服爛代碼》,譯《發(fā)布!》第2版攀痊,合譯《混沌工程》桐腌。ThoughtWorks中國區(qū)Lead Consultant,工程生產(chǎn)力賦能教練苟径,伍斌哩掺。歡迎加我個人微信wubinben28并備注chaos,交流混沌工程賦能實踐涩笤。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嚼吞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蹬碧,更是在濱河造成了極大的恐慌舱禽,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恩沽,死亡現(xiàn)場離奇詭異誊稚,居然都是意外死亡,警方通過查閱死者的電腦和手機罗心,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門里伯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人渤闷,你說我怎么就攤上這事疾瓮。” “怎么了飒箭?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵狼电,是天一觀的道長。 經(jīng)常有香客問我弦蹂,道長肩碟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任凸椿,我火速辦了婚禮削祈,結果婚禮上,老公的妹妹穿的比我還像新娘脑漫。我一直安慰自己髓抑,他們只是感情好,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布窿撬。 她就那樣靜靜地躺著启昧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪劈伴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音跛璧,去河邊找鬼严里。 笑死,一個胖子當著我的面吹牛追城,可吹牛的內(nèi)容都是我干的刹碾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼座柱,長吁一口氣:“原來是場噩夢啊……” “哼迷帜!你這毒婦竟也來了?” 一聲冷哼從身側響起色洞,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤戏锹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后火诸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锦针,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年置蜀,在試婚紗的時候發(fā)現(xiàn)自己被綠了奈搜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡盯荤,死狀恐怖馋吗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情秋秤,我是刑警寧澤耗美,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站航缀,受9級特大地震影響商架,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芥玉,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一蛇摸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧灿巧,春花似錦赶袄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盾似,卻和暖如春敬辣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工溉跃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留村刨,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓撰茎,卻偏偏與公主長得像嵌牺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子龄糊,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

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