【DevOps】什么是混沌工程?
測試您可以預(yù)測的事故是必不可少的。但是隨著數(shù)字化轉(zhuǎn)型和云原生架構(gòu)帶來的復(fù)雜性,團(tuán)隊需要一種方法來確保應(yīng)用程序能夠承受生產(chǎn)的“混亂”。混沌工程滿足了這一需求,因此組織可以提供在任何條件下都可以正常運(yùn)行的強(qiáng)大、有彈性的云原生應(yīng)用程序。
什么是混沌工程?
混沌工程是一種測試分布式軟件的方法,它故意引入故障和錯誤場景,以驗證其在面對隨機(jī)中斷時的彈性。這些中斷可能導(dǎo)致應(yīng)用程序以不可預(yù)測的方式做出響應(yīng),并可能在壓力下崩潰。混沌工程師問為什么。
從業(yè)者將軟件置于受控的模擬危機(jī)中,以測試不穩(wěn)定的行為。危機(jī)可能是技術(shù)、自然或惡意事件,例如影響數(shù)據(jù)中心可用性的地震或感染應(yīng)用程序和網(wǎng)站的網(wǎng)絡(luò)攻擊。隨著軟件性能下降或失敗,混沌工程師的發(fā)現(xiàn)使開發(fā)人員能夠在代碼中添加彈性,因此應(yīng)用程序在緊急情況下保持完好。
隨著混沌工程師對他們的測試越來越有信心,他們改變了更多的變量并擴(kuò)大了災(zāi)難的范圍。許多災(zāi)難場景和結(jié)果使混沌工程師能夠更好地模擬應(yīng)用程序和微服務(wù)發(fā)生的情況,這使他們能夠與開發(fā)人員共享越來越多的智能,以完善軟件和云原生基礎(chǔ)設(shè)施。
混沌工程的歷史
Netflix 出于需要開創(chuàng)了混沌工程。2009 年,在線視頻供應(yīng)商遷移到 AWS 云基礎(chǔ)設(shè)施,為越來越多的觀眾提供娛樂。但是云帶來了新的復(fù)雜性,例如不斷增加的連接和依賴關(guān)系。與娛樂公司在其數(shù)據(jù)中心看到的負(fù)載平衡問題相比,它產(chǎn)生了更多的不確定性。如果云中的任何接觸點(diǎn)出現(xiàn)故障,觀眾體驗的質(zhì)量可能會下降。因此,該組織尋求降低復(fù)雜性并提高生產(chǎn)質(zhì)量。
2010 年,Netflix 推出了一項技術(shù),可以隨機(jī)關(guān)閉生產(chǎn)軟件實例——比如在服務(wù)器機(jī)房里放一只猴子——以測試云如何處理其服務(wù)。于是,工具混沌猴誕生了。
混沌工程在 Netflix 等組織中變得成熟,并催生了?Gremlin?(2016) 等技術(shù),變得更有針對性和知識化。這門科學(xué)催生了專業(yè)的混沌工程師,他們致力于破壞云軟件和與之交互的本地系統(tǒng),以使其具有彈性。現(xiàn)在,混沌工程是一個成熟的職業(yè),它會挑起托管的麻煩來穩(wěn)定云軟件。
混沌工程是如何工作的?
混沌工程從了解軟件的預(yù)期行為開始。
假設(shè)。工程師問自己,如果他們改變一個變量會發(fā)生什么。如果他們隨機(jī)終止服務(wù),他們假設(shè)服務(wù)將繼續(xù)不間斷。問題和假設(shè)形成假設(shè)(The question and the assumption form a hypothesis)。
測試。為了檢驗這個假設(shè),混沌工程師將模擬的不確定性與負(fù)載測試相結(jié)合,并觀察交付應(yīng)用程序的服務(wù)、基礎(chǔ)設(shè)施、網(wǎng)絡(luò)和設(shè)備的動蕩跡象。堆棧中的任何故障都會破壞假設(shè)。
爆炸半徑。通過隔離和研究故障,工程師可以了解在不穩(wěn)定的云條件下會發(fā)生什么。測試造成的任何損壞或影響都稱為“爆炸半徑”。混沌工程師可以通過控制測試來管理爆炸半徑。
見解。這些發(fā)現(xiàn)形成了對軟件開發(fā)和交付過程的輸入,因此新軟件和微服務(wù)將更好地應(yīng)對不可預(yù)見的事件。
為了減輕對生產(chǎn)環(huán)境的破壞,混沌工程師從非生產(chǎn)環(huán)境開始,然后以可控的方式慢慢擴(kuò)展到生產(chǎn)環(huán)境。一旦建立,混沌工程就成為微調(diào)服務(wù)水平指標(biāo)和目標(biāo)、改進(jìn)警報和構(gòu)建更高效儀表板的有效方法,因此您知道您正在收集準(zhǔn)確觀察和分析環(huán)境所需的所有數(shù)據(jù)。
誰使用混沌工程?
混沌工程通常起源于 DevOps 中的小團(tuán)隊,通常涉及在預(yù)生產(chǎn)和生產(chǎn)環(huán)境中運(yùn)行的應(yīng)用程序。因為它可以觸及許多系統(tǒng),混沌工程可以產(chǎn)生廣泛的影響,影響整個組織的群體和利益相關(guān)者。
跨越硬件、網(wǎng)絡(luò)和云基礎(chǔ)設(shè)施的中斷可能需要網(wǎng)絡(luò)和基礎(chǔ)設(shè)施架構(gòu)師、風(fēng)險專家、安全團(tuán)隊甚至采購官員的投入和參與。這是好事。測試的范圍越大,混沌工程就越有用。
盡管一個小團(tuán)隊通常擁有和管理混沌工程工作,但這是一種通常需要來自村莊的投入并為村莊提供利益的做法。
混沌測試的好處
您可以通過測試應(yīng)用程序的限制獲得的洞察力為您的開發(fā)團(tuán)隊和您的整體業(yè)務(wù)帶來很多好處。這只是健康、管理良好的混沌工程實踐的一些好處。
提高彈性和可靠性。混沌測試豐富了組織關(guān)于軟件在壓力下如何執(zhí)行以及如何使其更具彈性的情報。
加速創(chuàng)新。來自混沌測試的情報返回給開發(fā)人員,他們可以實施設(shè)計更改,使軟件更耐用并提高生產(chǎn)質(zhì)量。
推進(jìn)協(xié)作。開發(fā)人員并不是唯一看到優(yōu)勢的群體。混沌工程師從他們的實驗中收集到的見解提升了技術(shù)團(tuán)隊的專業(yè)知識,從而縮短了響應(yīng)時間和更好的協(xié)作。
加快事件響應(yīng)速度。通過了解可能出現(xiàn)的故障情況,這些團(tuán)隊可以加快故障排除、維修和事件響應(yīng)速度。
提高客戶滿意度。更高的彈性和更快的響應(yīng)時間意味著更少的停機(jī)時間。來自開發(fā)和 SRE 團(tuán)隊的更大創(chuàng)新和協(xié)作意味著更好的軟件能夠以高效和高性能快速滿足新客戶的需求。
提升業(yè)務(wù)成果。混沌測試還可以通過更快的價值實現(xiàn)時間、節(jié)省時間、金錢和資源以及產(chǎn)生更好的底線來擴(kuò)展組織的競爭優(yōu)勢。
組織的軟件越有彈性,消費(fèi)者和企業(yè)客戶就越能享受其服務(wù)而不會分心或失望。
混沌工程的挑戰(zhàn)和陷阱
盡管混沌測試的好處是顯而易見的,但它是一種應(yīng)該慎重進(jìn)行的實踐。以下是最關(guān)心的問題和挑戰(zhàn)。
不必要的損壞。混沌測試的主要問題是可能造成不必要的損壞。混沌工程可能導(dǎo)致超出合理測試允許的實際損失。為了限制發(fā)現(xiàn)應(yīng)用程序漏洞的成本,組織應(yīng)避免超出指定爆炸范圍的測試。目標(biāo)是控制爆炸半徑,以便您可以查明故障原因,而無需引入新的故障點(diǎn)。
缺乏可觀察性。建立這種控制說起來容易做起來難。缺乏對爆炸半徑可能影響的所有系統(tǒng)的端到端可觀察性和監(jiān)控是一個常見問題。如果沒有全面的可觀察性,可能很難理解關(guān)鍵依賴關(guān)系與非關(guān)鍵依賴關(guān)系,或者很難有足夠的上下文來理解故障或降級的真正業(yè)務(wù)影響,以便確定修復(fù)的優(yōu)先級。缺乏可見性還可能使團(tuán)隊難以確定問題的確切根本原因,這會使補(bǔ)救計劃復(fù)雜化。
不清楚啟動系統(tǒng)狀態(tài)。另一個問題是在測試運(yùn)行之前清楚地了解系統(tǒng)的啟動狀態(tài)。如果沒有這種清晰度,團(tuán)隊可能難以理解測試的真實效果。這會降低混沌測試的有效性,并使下游系統(tǒng)面臨更大的風(fēng)險,并使控制爆炸半徑變得更加困難。
如何開始混沌工程
與任何科學(xué)實驗一樣,開始使用混沌工程需要一些準(zhǔn)備、組織以及監(jiān)控和測量結(jié)果的能力。
了解您的環(huán)境的起始狀態(tài)。要計劃一個控制良好的混沌測試,您應(yīng)該了解您的環(huán)境的應(yīng)用程序、微服務(wù)和架構(gòu)設(shè)計,以便您能夠識別測試的效果。擁有一個可以與最終狀態(tài)進(jìn)行比較的基線可以創(chuàng)建一個藍(lán)圖,用于在測試期間進(jìn)行監(jiān)控并在之后分析結(jié)果。
詢問可能出現(xiàn)的問題并建立假設(shè)。清楚了解系統(tǒng)的啟動狀態(tài)后,詢問可能出現(xiàn)的問題。清楚了解系統(tǒng)的啟動狀態(tài)后,詢問可能出現(xiàn)的問題。了解服務(wù)水平指標(biāo)和服務(wù)水平目標(biāo),并將它們用作建立系統(tǒng)應(yīng)如何在壓力下工作的假設(shè)的基礎(chǔ)。
一次引入一個變量。為了控制爆炸半徑,一次只引入一點(diǎn)混亂,這樣你就可以欣賞結(jié)果。準(zhǔn)備好在特定條件下中止實驗,以免對生產(chǎn)軟件造成傷害,并且如果出現(xiàn)問題,也要有回滾計劃。在測試期間,嘗試反駁假設(shè)以發(fā)現(xiàn)需要關(guān)注的領(lǐng)域以提高系統(tǒng)彈性。
監(jiān)測并記錄結(jié)果。監(jiān)控實驗以記錄應(yīng)用程序行為中的任何細(xì)微差別。分析結(jié)果以查看應(yīng)用程序如何響應(yīng)以及測試是否達(dá)到了團(tuán)隊的期望。使用調(diào)查工具來了解減速和故障的確切根本原因。
控制混亂
像 Gremlin 這樣的解決方案提供了關(guān)鍵的管理工具來計劃和執(zhí)行混沌工程實驗。它使實驗具有可重復(fù)性和可擴(kuò)展性,因此團(tuán)隊可以將它們應(yīng)用于相同或更大堆棧的未來實驗。
Dynatrace 的自動和智能可觀察性提供了對混沌測試效果的洞察,因此工程師可以謹(jǐn)慎地進(jìn)行混沌實驗。為了監(jiān)控爆炸半徑,Dynatrace 觀察了正在進(jìn)行混沌實驗的系統(tǒng)。通過對整個軟件堆棧的可見性,Dynatrace 提供了關(guān)鍵的上下文分析,以隔離混沌測試暴露的故障的根本原因。
Dynatrace 的有效監(jiān)控為進(jìn)行混沌測試的工程師提供了必不可少的全景鏡頭,幫助他們了解依賴關(guān)系并預(yù)測中斷將如何影響整個系統(tǒng)。如果混亂超出預(yù)期,Dynatrace 的洞察力可幫助團(tuán)隊快速修復(fù)對應(yīng)用程序功能的任何實際損害。
組織可以在數(shù)字化轉(zhuǎn)型的任何階段實現(xiàn)應(yīng)用程序彈性,而混沌工程是一個很好的工具。然而,在玩火之前,至關(guān)重要的是要采取正確的措施來預(yù)測和應(yīng)對這種方法可能帶來的大量故障情況。
| 本文 | https://www.jiagoushi.pro/what-chaos-engineering | |
| 討論:知識星球【首席架構(gòu)師圈】或者加微信小號【ca_cto】或者加QQ群【792862318】 | ||
| 公眾號 | 【jiagoushipro】 【超級架構(gòu)師】 精彩圖文詳解架構(gòu)方法論,架構(gòu)實踐,技術(shù)原理,技術(shù)趨勢。 我們在等你,趕快掃描關(guān)注吧。 | |
| 微信小號 | 【ca_cea】 50000人社區(qū),討論:企業(yè)架構(gòu),云計算,大數(shù)據(jù),數(shù)據(jù)科學(xué),物聯(lián)網(wǎng),人工智能,安全,全棧開發(fā),DevOps,數(shù)字化. | |
| QQ群 | 【792862318】深度交流企業(yè)架構(gòu),業(yè)務(wù)架構(gòu),應(yīng)用架構(gòu),數(shù)據(jù)架構(gòu),技術(shù)架構(gòu),集成架構(gòu),安全架構(gòu)。以及大數(shù)據(jù),云計算,物聯(lián)網(wǎng),人工智能等各種新興技術(shù)。 加QQ群,有珍貴的報告和干貨資料分享。 | |
| 視頻號 | 【超級架構(gòu)師】 1分鐘快速了解架構(gòu)相關(guān)的基本概念,模型,方法,經(jīng)驗。 每天1分鐘,架構(gòu)心中熟。 | |
| 知識星球 | 【首席架構(gòu)師圈】向大咖提問,近距離接觸,或者獲得私密資料分享。 | |
| 喜馬拉雅 | 【超級架構(gòu)師】路上或者車上了解最新黑科技資訊,架構(gòu)心得。 | 【智能時刻,架構(gòu)君和你聊黑科技】 |
| 知識星球 | 認(rèn)識更多朋友,職場和技術(shù)閑聊。 | 知識星球【職場和技術(shù)】 |
| 微博 | 【超級架構(gòu)師】 | 智能時刻 |
| 嗶哩嗶哩 | 【超級架構(gòu)師】 | |
| 抖音 | 【cea_cio】超級架構(gòu)師 | |
| 快手 | 【cea_cio_cto】超級架構(gòu)師 | |
| 小紅書 | 【cea_csa_cto】超級架構(gòu)師 | |
| 網(wǎng)站 | CIO(首席信息官) | https://cio.ceo |
| CIO,CTO和CDO | https://cioctocdo.com | |
| 應(yīng)用開發(fā)和開發(fā)平臺 | https://apaas.dev | |
| 開發(fā)信息網(wǎng) | https://xinxi.dev | |
| 首席架構(gòu)師社區(qū) | https://jiagoushi.pro | |
| 超級架構(gòu)師 | https://jiagou.dev | |
| 企業(yè)技術(shù)培訓(xùn) | https://peixun.dev | |
謝謝大家關(guān)注,轉(zhuǎn)發(fā),點(diǎn)贊和點(diǎn)在看。
總結(jié)
以上是生活随笔為你收集整理的【DevOps】什么是混沌工程?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SOLO环境的安装配置
- 下一篇: 图像二维离散小波变换