日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

聊聊混沌工程

發(fā)布時(shí)間:2023/12/31 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聊聊混沌工程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這是鼎叔的第五十四篇原創(chuàng)文章。行業(yè)大牛和剛畢業(yè)的小白,都可以進(jìn)來(lái)聊聊。

歡迎關(guān)注本專(zhuān)欄和微信公眾號(hào)《敏捷測(cè)試轉(zhuǎn)型》,大量原創(chuàng)思考文章陸續(xù)推出。

混沌工程是一門(mén)新興學(xué)科,它不僅僅只是個(gè)技術(shù)活動(dòng),還包含如何設(shè)計(jì)能夠持續(xù)協(xié)作的混沌實(shí)驗(yàn)。它由Neflix首先在實(shí)踐中發(fā)現(xiàn)了混沌工程的商業(yè)價(jià)值,通過(guò)構(gòu)建更有韌性的系統(tǒng)來(lái)抵御海量組件系統(tǒng)的意外失效。本文還會(huì)聊聊混沌工程的概念澄清,原則,投資回報(bào)和成熟度模型。

本文的內(nèi)容參考了《混沌工程-復(fù)雜系統(tǒng)韌性實(shí)現(xiàn)之道》,作者是Casey Rosenthal,Nora Jones。

Neflix的混沌猴

Neflix的高績(jī)效文化體現(xiàn)在管理層和技術(shù)人員的有趣協(xié)作,管理者不會(huì)告訴技術(shù)人員要做什么,而是確保他們了解要解決什么問(wèn)題,并信任技術(shù)工程師,讓他們決定工作的完成方式。

為了解決大型數(shù)據(jù)中心的實(shí)例無(wú)故消失問(wèn)題,工程師嘗試了各種方法,最終只有混沌猴這種方法保留下來(lái)。原理非常簡(jiǎn)單,遍歷集群列表,從每個(gè)集群中隨機(jī)選一個(gè)實(shí)例,在每個(gè)工作日的某個(gè)時(shí)間點(diǎn)將其關(guān)閉且不會(huì)發(fā)出警告。工程師只有解決了問(wèn)題才能進(jìn)行其他工作,不管是增加冗余,還是增加自動(dòng)化容量伸縮,或是架構(gòu)層面設(shè)計(jì)優(yōu)化,都帶來(lái)了可觀的成效。

不幸的是,隨機(jī)性混沌注入方法,在分布式系統(tǒng)上的效果都不好,故障的組合空間巨大,且并不孤立。隨機(jī)方法也無(wú)法告訴我們實(shí)驗(yàn)的覆蓋情況,應(yīng)該進(jìn)行多長(zhǎng)時(shí)間才能得出結(jié)論。

替代隨機(jī)搜索的方法,就是利用系統(tǒng)專(zhuān)家的領(lǐng)域知識(shí)來(lái)推動(dòng)實(shí)驗(yàn)探索,利用之前實(shí)驗(yàn)觀察形成新的假設(shè)并逐步完善。專(zhuān)家對(duì)故障注入進(jìn)行篩選,決定哪些實(shí)驗(yàn)不需要進(jìn)行,避免重復(fù)。專(zhuān)家還會(huì)決定實(shí)驗(yàn)的運(yùn)行順序,盡可能提高知識(shí)增加的速度。專(zhuān)家也需要可觀測(cè)的基礎(chǔ)設(shè)施,越豐富越好。

混沌猴后來(lái)升級(jí)為混沌金剛,使某個(gè)AWS區(qū)域關(guān)閉,驗(yàn)證AWS區(qū)域性故障的解決方案,大幅提升了組織內(nèi)部對(duì)于故障的處理速度。后面即使發(fā)生多起停機(jī)事故,混沌金剛使用的區(qū)域故障轉(zhuǎn)移機(jī)制都發(fā)揮了作用。

混沌工程由此被定義:它是分布式系統(tǒng)上進(jìn)行實(shí)驗(yàn)的學(xué)科,目的是建立該系統(tǒng)能夠承受生產(chǎn)環(huán)境的動(dòng)蕩條件的信心。不需要建立對(duì)系統(tǒng)的信心,就不需要混沌工程。

混沌工程通過(guò)提供可能超出“快樂(lè)路徑”(即系統(tǒng)構(gòu)建的默認(rèn)路徑,沒(méi)有異?;蝈e(cuò)誤情況)的各種條件和變化參數(shù),來(lái)做到這一點(diǎn)。

如今混沌工程已經(jīng)形成了強(qiáng)大的專(zhuān)業(yè)社區(qū)。

復(fù)雜系統(tǒng)

混沌工程這門(mén)科學(xué)要尋找系統(tǒng)存在弱點(diǎn)的證據(jù),它們會(huì)隱藏在系統(tǒng)的本質(zhì)復(fù)雜性中。復(fù)雜系統(tǒng)因?yàn)榉蔷€性導(dǎo)致不可預(yù)測(cè),必然會(huì)導(dǎo)致不良結(jié)果。系統(tǒng)內(nèi)的部件所發(fā)生的變化會(huì)導(dǎo)致系統(tǒng)輸出發(fā)生指數(shù)級(jí)變化。輸出難以模擬或建模,導(dǎo)致傳統(tǒng)的探索系統(tǒng)安全性的方法不夠充分。

復(fù)雜系統(tǒng)中,不同服務(wù)模塊各自都有合理的設(shè)計(jì)決策和監(jiān)控處理機(jī)制,但仍然會(huì)出現(xiàn)難以意料的崩潰。

比如場(chǎng)景一,少量用戶的消息異常不斷重試,可能導(dǎo)致服務(wù)降級(jí),進(jìn)而觸發(fā)更大范圍的重試風(fēng)暴,導(dǎo)致服務(wù)不可用。

場(chǎng)景二,導(dǎo)入的程序庫(kù)出現(xiàn)的內(nèi)存泄漏,可能會(huì)隨著服務(wù)請(qǐng)求數(shù)量的增加而緩慢增長(zhǎng),直到影響大量實(shí)例的錯(cuò)誤率,導(dǎo)致局部停機(jī)。

面對(duì)復(fù)雜性,人月神話(聊聊沒(méi)有35歲焦慮的《人月神話》)將其分類(lèi)為偶然復(fù)雜性和本質(zhì)復(fù)雜性,前者是在資源有限的項(xiàng)目中編寫(xiě)代碼,必然產(chǎn)生各種債務(wù)-代碼劣化、含糊的契約、廢棄的代碼路徑、不清晰的變量名等。編寫(xiě)軟件和理解軟件如何失效,完全是兩件不同的事情。

沒(méi)有可持續(xù)的方法來(lái)解決偶然復(fù)雜性,甚至新系統(tǒng)會(huì)做得更加復(fù)雜。對(duì)于本質(zhì)復(fù)雜性,只要添加新功能就會(huì)增加。

既然無(wú)法避免復(fù)雜性,那就接納它,學(xué)會(huì)如何應(yīng)對(duì),而混沌工程就是最有效可行的利器。推薦兩個(gè)應(yīng)對(duì)復(fù)雜系統(tǒng)的模型。

一 動(dòng)態(tài)安全模型

這模型有三個(gè)屬性:經(jīng)濟(jì)性(投入的成本),工作量和安全性。工程師對(duì)成本和工作量有邊界直覺(jué),但是對(duì)安全性缺乏直覺(jué)。安全事故通常都是意料之外的,而工程師只會(huì)對(duì)能看到的地方進(jìn)行優(yōu)化。混沌工程就是培養(yǎng)工程師安全性直覺(jué)的,進(jìn)而默默地改進(jìn)行為,讓系統(tǒng)更有韌性。

二 經(jīng)濟(jì)支柱模型

復(fù)雜性有四個(gè)經(jīng)濟(jì)支柱:狀態(tài),關(guān)系,環(huán)境,可逆性。

一個(gè)研發(fā)組織控制某個(gè)支柱的程度,能反映出組織應(yīng)對(duì)競(jìng)爭(zhēng)性生產(chǎn)過(guò)程的復(fù)雜性的成熟度。一個(gè)汽車(chē)大廠可以控制產(chǎn)品狀態(tài)(有限的款式),關(guān)系(上下游產(chǎn)業(yè)鏈的供貨關(guān)系),環(huán)境(對(duì)外部法規(guī)的影響),但沒(méi)法控制可逆性,汽車(chē)制造容易回退難。

一個(gè)應(yīng)用程序的功能(狀態(tài))大多不斷在增加,而無(wú)法簡(jiǎn)化。組件關(guān)系和人際關(guān)系都在復(fù)雜化。大多軟件公司都沒(méi)有影響環(huán)境的規(guī)?;芰?。只有可逆性是軟件團(tuán)隊(duì)可以大放異彩的支柱(即不斷修改完善軟件)。

而混沌工程實(shí)驗(yàn)?zāi)軌蚪沂鞠到y(tǒng)哪些方面違背了“可逆性”。

混沌工程的原則

混沌工程的通用解釋,是“促進(jìn)發(fā)現(xiàn)系統(tǒng)弱點(diǎn)的實(shí)驗(yàn)”,分為四個(gè)步驟

1 先定義“穩(wěn)態(tài)”(steady state),系統(tǒng)行為正常時(shí)有哪些可以度量的輸出。

例如,在XXXX情況下,用戶依然擁有良好的體驗(yàn),表現(xiàn)在XXX數(shù)據(jù)上。

在XXX事件發(fā)生時(shí),技術(shù)人員會(huì)得到XXX提醒。

2 建立假說(shuō),對(duì)照組和實(shí)驗(yàn)組都會(huì)持續(xù)這種穩(wěn)態(tài)。

3 引入體現(xiàn)真實(shí)事件的變量。選擇變量常見(jiàn)的誤區(qū)是,工程師的選擇標(biāo)準(zhǔn)經(jīng)常是容易執(zhí)行的,基于自身體驗(yàn)而不是用戶體驗(yàn)的。有些“異常事件”在現(xiàn)實(shí)世界不太可能發(fā)生,這就不是好的引入變量。

4 通過(guò)在對(duì)照組和實(shí)驗(yàn)組之間尋找穩(wěn)態(tài)差異來(lái)推翻假說(shuō)

混沌工程原則提供了五項(xiàng)高級(jí)實(shí)踐及黃金標(biāo)準(zhǔn):建立穩(wěn)態(tài)行為假說(shuō),多樣化引入現(xiàn)實(shí)世界的事件,在生產(chǎn)環(huán)境實(shí)踐,持續(xù)運(yùn)行自動(dòng)化實(shí)驗(yàn),最小化爆炸半徑。

為了給真正關(guān)心的生產(chǎn)環(huán)境建立信息,高級(jí)的混沌工程都在生產(chǎn)環(huán)境發(fā)生,但是初始階段先在準(zhǔn)生產(chǎn)系統(tǒng)上實(shí)驗(yàn)也是有意義的。

自動(dòng)化提供了規(guī)?;阉鞯姆椒?#xff0c;比人手動(dòng)操作,能覆蓋更多的實(shí)驗(yàn)集;隨著時(shí)間的推移能低成本地持續(xù)驗(yàn)證經(jīng)驗(yàn)假設(shè),及時(shí)發(fā)現(xiàn)系統(tǒng)的變化。

設(shè)計(jì)更安全的實(shí)驗(yàn)方法,將對(duì)生產(chǎn)環(huán)境中用戶流量的負(fù)面影響降到最低,還帶來(lái)加強(qiáng)信號(hào)檢測(cè)效果的好處。

聚焦用戶體驗(yàn)是所有高級(jí)原則的基礎(chǔ)。

對(duì)混沌工程的常見(jiàn)誤解

一 實(shí)驗(yàn)和測(cè)試是不同的

實(shí)驗(yàn)并不知道如何斷言,而是通過(guò)假說(shuō)的驗(yàn)證或推翻來(lái)得到新知識(shí)。源于應(yīng)對(duì)復(fù)雜系統(tǒng)問(wèn)題,所以混沌工程更多體現(xiàn)“未知的實(shí)驗(yàn)性”而非“已知的測(cè)試性”,主張驗(yàn)證有效性,而不是檢查如何工作。

二 混沌工程并非人們誤解的“搞破壞”

單純搞破壞,很難做到減小爆炸半徑,和漏洞的批判性思考。混沌工程最終的價(jià)值是修復(fù)生產(chǎn)環(huán)境的漏洞。

三 很多人認(rèn)為塔勒布的《反脆弱》理論和混沌工程在本質(zhì)上是一樣的。

實(shí)際上兩個(gè)流派分歧很多,反脆弱缺乏軟件工程學(xué)的同行評(píng)審和理論基礎(chǔ),給出的解決手段(如增加冗余)可能會(huì)帶來(lái)更多風(fēng)險(xiǎn)。反脆弱希望給系統(tǒng)引入混沌,而混沌工程希望發(fā)現(xiàn)復(fù)雜系統(tǒng)的固有混沌。

四 軟件接口設(shè)計(jì)不規(guī)范等問(wèn)題能否通過(guò)混沌工程來(lái)發(fā)現(xiàn)

接口契約不匹配的協(xié)商解決,是開(kāi)發(fā)過(guò)程的一部分,無(wú)需納入混沌工程來(lái)解決,這些已知屬性問(wèn)題最好通過(guò)軟件測(cè)試解決?;煦鐚?shí)驗(yàn)主要為不確定的自動(dòng)化行為提供信心,它發(fā)現(xiàn)的BUG往往是多個(gè)細(xì)微邏輯錯(cuò)誤的組合,以及時(shí)間相關(guān)性故障。

注意,被選定實(shí)驗(yàn)的特定服務(wù)及其依賴(lài)服務(wù),如果存在已知的關(guān)鍵缺陷,要先修復(fù)后再進(jìn)行實(shí)驗(yàn),否則我們不能從實(shí)驗(yàn)中學(xué)到確定的新東西。

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

只有事故真的發(fā)生了,才能有故事可講。”-- John Allspaw

混沌工程是一門(mén)務(wù)實(shí)的學(xué)科,旨在為企業(yè)提供價(jià)值。但是如何證明混沌工程的回報(bào)是令人困惑的。

系統(tǒng)可用性指標(biāo)的上升,是否應(yīng)該歸功于混沌工程實(shí)踐呢?混沌工程觸發(fā)的改進(jìn),傾向于給其他業(yè)務(wù)增加壓力,比如犧牲了發(fā)布速度,那如何確定收益率呢?

Kirkpatrick模型提供了一種評(píng)估投資回報(bào)率的方法,原本用于教學(xué)培訓(xùn)領(lǐng)域,它把評(píng)估分解為四個(gè)遞進(jìn)的級(jí)別:反應(yīng)(混沌工程示范對(duì)受訓(xùn)者有幫助,是否支持維持或加大該實(shí)驗(yàn)),學(xué)習(xí)(證明并列舉團(tuán)隊(duì)學(xué)到了什么),轉(zhuǎn)移(把知識(shí)轉(zhuǎn)化為實(shí)踐,發(fā)生了行為變化,提高了協(xié)作效率,提高了應(yīng)急成熟度),結(jié)果(混沌工程的總成本,與商業(yè)結(jié)果價(jià)值進(jìn)行比較)。每一級(jí)是否評(píng)價(jià)為積極,就展示了對(duì)應(yīng)的投資回報(bào)。

混沌成熟度模型

成熟度模型橫軸是采用度,縱軸是復(fù)雜性

“采用度”考慮這幾個(gè)因素:接受者,參與者,采用門(mén)檻(是否有觀測(cè)工具,積極討論的共識(shí),經(jīng)得起考驗(yàn)的假說(shuō),一致的響應(yīng)行動(dòng)),采用障礙(業(yè)務(wù)的擔(dān)心,合規(guī)性,從未發(fā)生過(guò)事故,難以衡量回報(bào)率)

“復(fù)雜性”,會(huì)隨著實(shí)驗(yàn)的發(fā)展而提升,如下所示:

  • 1 Game Day,實(shí)踐試水,復(fù)雜性低,但是消耗大量人力,無(wú)法在大量服務(wù)上規(guī)模化執(zhí)行。

  • 2故障注入框架。工具可以讓多個(gè)團(tuán)隊(duì)進(jìn)行實(shí)驗(yàn),進(jìn)行更多跨功能性的學(xué)習(xí)。

  • 3 實(shí)驗(yàn)平臺(tái)。滿足更好實(shí)驗(yàn)的需求,在對(duì)照組和變量組進(jìn)行安全對(duì)比,控制最小爆炸半徑。每個(gè)實(shí)驗(yàn)都要被平臺(tái)監(jiān)控。

  • 4 平臺(tái)自動(dòng)化。完全自動(dòng)化進(jìn)行的混沌工程,包括實(shí)驗(yàn)的創(chuàng)建、優(yōu)先級(jí)排序、執(zhí)行和推翻/終止。平臺(tái)能夠“自我反省”,只自動(dòng)運(yùn)行哪些對(duì)實(shí)驗(yàn)假說(shuō)有可量化期望的實(shí)驗(yàn)。

平臺(tái)還可以進(jìn)一步進(jìn)行能力升級(jí),如控制“混沌預(yù)算”,使用組合實(shí)驗(yàn)變量構(gòu)建實(shí)驗(yàn),自動(dòng)修復(fù)漏洞。

被引入的實(shí)驗(yàn)變量也可以不限于基礎(chǔ)設(shè)施層級(jí),還可以是應(yīng)用程序邏輯層的變量-比如給服務(wù)返回出乎意料的響應(yīng)。

??????基于混沌成熟度繪制的表格,就可以看到本組織所處的位置,確定如何技術(shù)投資的路徑,達(dá)到高復(fù)雜性與高參與度,讓混沌工程創(chuàng)造最大的價(jià)值。

下一篇,我們?cè)敿?xì)介紹各大企業(yè)實(shí)踐混沌工程的優(yōu)秀流程,經(jīng)驗(yàn)教訓(xùn),人和組織的能力提升,從中學(xué)習(xí)到了哪些洞見(jiàn)。

總結(jié)

以上是生活随笔為你收集整理的聊聊混沌工程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。