突破傳統(tǒng)可靠性測(cè)試:混沌工程優(yōu)秀實(shí)踐
在數(shù)字經(jīng)濟(jì)快速穩(wěn)定發(fā)展背景下,云計(jì)算已經(jīng)成為企業(yè)數(shù)字化轉(zhuǎn)型的基石。
應(yīng)用層追求更全面、更便利、更快捷的服務(wù),逆向推動(dòng)技術(shù)層面系統(tǒng)越來越龐大,持續(xù)維護(hù)系統(tǒng)的難度與日俱增,故障的發(fā)生不可避免,如何保障業(yè)務(wù)持續(xù)的高可用性和穩(wěn)定性成為了大家面臨的挑戰(zhàn)!
在穩(wěn)定性保障能力建設(shè)方面,互聯(lián)網(wǎng)公司的思考及實(shí)踐已較為深入,從混沌工程到可觀測(cè)性、從全鏈路壓測(cè)到應(yīng)用多活。相對(duì)而言大部分國內(nèi)傳統(tǒng)企業(yè)還處于大型機(jī)到分布式、云原生化改造的階段,對(duì)穩(wěn)定性保障能力建設(shè)的路徑、障礙并不清晰,對(duì)穩(wěn)定性保障技術(shù)價(jià)值仍不明。
針對(duì)可靠性測(cè)試的挑戰(zhàn),混沌工程在一定程度上給出了解法,但如何運(yùn)用平臺(tái)的工具進(jìn)行可靠性測(cè)試實(shí)踐? 為此PerfMa混沌工程產(chǎn)品負(fù)責(zé)人葉青山先生,將從可靠性問題分析、可靠性測(cè)試方案、尋找可靠性分母、構(gòu)建可靠性用例、可靠性用例執(zhí)行等維度,全方位給大家演示如何推進(jìn)企業(yè)系統(tǒng)穩(wěn)定性能力建設(shè)。
可靠性問題分析
隨著IT和互聯(lián)網(wǎng)行業(yè)的快速發(fā)展,軟件系統(tǒng)的復(fù)雜度逐步增加,分布式技術(shù)架構(gòu)成為主流。微服務(wù),數(shù)據(jù)庫,緩存,對(duì)象存儲(chǔ),消息等各種分布式組件構(gòu)建成復(fù)雜的分布式系統(tǒng)。大型的分布式系統(tǒng)會(huì)有成千上萬的節(jié)點(diǎn),這些節(jié)點(diǎn)在長期運(yùn)行的時(shí)候,會(huì)不可避免的出現(xiàn)匿機(jī)、斷網(wǎng)、磁盤損壞等各種故障。
分布式組件一般都面向故障進(jìn)行相關(guān)的可靠性設(shè)計(jì),通過主備、集群、鏡像、哨兵等多種方式保障系組件的分布式可靠性,那么在實(shí)際部署運(yùn)行環(huán)境,如何確保這些設(shè)計(jì)依然是有效的就會(huì)是一個(gè)具備一定挑戰(zhàn)性的測(cè)試工作。
故障根因分類
目前主流的分布式系統(tǒng)的可靠性分析一般從設(shè)施層,數(shù)據(jù)層,操作系統(tǒng)&語言層,中間件層,服務(wù)層進(jìn)行分層分析。
可靠性測(cè)試方案
可靠性測(cè)試方案三大步驟:
- 對(duì)業(yè)務(wù)系統(tǒng)進(jìn)行可靠性風(fēng)險(xiǎn)分析,構(gòu)建風(fēng)險(xiǎn)場(chǎng)景庫
- 根據(jù)風(fēng)險(xiǎn)場(chǎng)景,構(gòu)造可靠性用例
- 基于混沌工程進(jìn)行可靠性用例執(zhí)行
可靠性測(cè)試目標(biāo):提升SLA
可靠性測(cè)試分母
下圖是一種風(fēng)險(xiǎn)場(chǎng)景分類,一般來說,每個(gè)中間件都會(huì)有對(duì)應(yīng)的一類風(fēng)險(xiǎn)場(chǎng)景。
而且我們中間件在做風(fēng)險(xiǎn)分析的時(shí)候,會(huì)取決于它的一些部署架構(gòu),你的一些主從部署跟集群部署,或者你采用哨兵模式,他解析出來整個(gè)風(fēng)險(xiǎn)場(chǎng)景是都會(huì)有他自己的一些具體的風(fēng)險(xiǎn)項(xiàng)。所以我們這邊也是大致做了一些分類,就是不同的中間件有自己的一些風(fēng)險(xiǎn)庫
風(fēng)險(xiǎn)項(xiàng)模型
- 定義狀態(tài)指標(biāo),狀態(tài)指標(biāo)是可以定衡量的一個(gè)系統(tǒng)都可以衡量的一個(gè)東西,最好是一個(gè)量化的。
- 正常運(yùn)行狀態(tài),作為穩(wěn)態(tài)的描述,我們定義了一個(gè)資源,指標(biāo)是什么,范圍區(qū)間是什么?那包括這個(gè)穩(wěn)態(tài)如果被破壞以后,它可能產(chǎn)生什么樣的風(fēng)險(xiǎn)和故障。
- 我們?nèi)绾稳ケU戏€(wěn)態(tài),它應(yīng)該在什么范圍內(nèi),用什么技術(shù)手段去保障它的運(yùn)行
- 就是,我定義的一些穩(wěn)態(tài),一些技術(shù)上我的驗(yàn)證手段是什么 ,我怎么去這驗(yàn)證的更多是一些破壞性能,就是我如何破壞這個(gè)穩(wěn)態(tài),那混沌工程是一種手段,剛才我們說的一些壓測(cè)或者人為破壞也好,手段不限,只要你把它能破壞掉就可以。
- 發(fā)現(xiàn)能力,風(fēng)險(xiǎn)巡檢包括這個(gè)度量能力息息相關(guān)的。
- 應(yīng)急能力,應(yīng)急里面可能是定義了一些你的自愈能力的要求。
風(fēng)險(xiǎn)項(xiàng)巡檢流程
一個(gè)風(fēng)險(xiǎn)項(xiàng)巡檢的例子
假設(shè)支付結(jié)果頁對(duì)廣告投放是個(gè)弱依賴,那么在對(duì)下游廣告投放服務(wù)進(jìn)行故障注入后,整體的業(yè)務(wù)成功率沒有變化,耗時(shí)增長。整個(gè)演練流程如下:
仿真環(huán)境需要具備:
- 和線上環(huán)境部署架構(gòu)一致的業(yè)務(wù)系統(tǒng)
- 規(guī)則完善的監(jiān)控系統(tǒng)
- 具備應(yīng)急能力的運(yùn)維平臺(tái)
- 具備故障注入能力的混沌工程平臺(tái)
具體執(zhí)行步驟:
混沌工程介紹
混沌工程平臺(tái)能力
- 混沌工程平臺(tái)底層故障注入能力豐富
- 平臺(tái)具備專家場(chǎng)景,便于測(cè)試團(tuán)隊(duì)人員快速落地。
- 可應(yīng)用在可靠性測(cè)試,應(yīng)急驗(yàn)證,攻防演練等多種場(chǎng)景。
可靠性測(cè)試未來展望
隨著混沌工程理念在國內(nèi)的發(fā)展,逐漸有測(cè)試團(tuán)隊(duì)進(jìn)行引入和應(yīng)用,但是整體還是偏工具使用,缺乏體系化和完善的方法論。目前來看,未來可以從以下一些方面進(jìn)行發(fā)展。
相關(guān)可靠性測(cè)試體系的建立
基于混沌工程的可靠性測(cè)試,從用例設(shè)計(jì),用例執(zhí)行,故障注入,測(cè)試分析等方面看,目前還沒有一個(gè)行業(yè)通用的標(biāo)準(zhǔn)和規(guī)范。隨著行業(yè)的發(fā)展,相信相關(guān)的標(biāo)準(zhǔn)和規(guī)范也會(huì)產(chǎn)出。
可靠性測(cè)試平臺(tái)的建設(shè)
對(duì)比功能測(cè)試,性能測(cè)試,行業(yè)內(nèi)已經(jīng)有很多成熟的工具平臺(tái)提供。目前混沌工程的工具平臺(tái)也比較多了,但是基于混沌工程的可靠性測(cè)試工具平臺(tái)市場(chǎng)上還沒有,相信在不久的將來,隨著基于混沌工程的可靠性測(cè)試越來越多的落地實(shí)踐,相關(guān)的工具平臺(tái)必然會(huì)產(chǎn)出。
前端可靠性測(cè)試
移動(dòng)互聯(lián)網(wǎng)時(shí)代早已到來,但是目前主流的混沌工程還是偏服務(wù)端應(yīng)用,從完整的技術(shù)鏈路來看,在前端進(jìn)行可靠性測(cè)試也是一個(gè)發(fā)展方向。