系統(tǒng)和混沌測(cè)試:實(shí)現(xiàn)云彈性的一種方法
譯文【51CTO.com快譯】在當(dāng)今數(shù)字技術(shù)時(shí)代,停機(jī)意味著企業(yè)的業(yè)務(wù)中斷和收入損失,因此構(gòu)建彈性云計(jì)算架構(gòu)勢(shì)在必行。例如在新冠疫情期間,由于發(fā)布出行禁令,IT維護(hù)團(tuán)隊(duì)難以本地重新啟動(dòng)和維護(hù)數(shù)據(jù)中心中的服務(wù)器。這可能會(huì)導(dǎo)致用戶(hù)訪(fǎng)問(wèn)數(shù)據(jù)或軟件的巨大障礙,導(dǎo)致生產(chǎn)率下降,并在內(nèi)部部署設(shè)施停機(jī)時(shí)造成業(yè)務(wù)中斷。
此時(shí)行之有效的解決方案是將企業(yè)的業(yè)務(wù)遷移到云計(jì)算基礎(chǔ)設(shè)施,IT員工可以通過(guò)遠(yuǎn)程工作來(lái)提供全天候的技術(shù)支持以確保安全運(yùn)營(yíng)。云計(jì)算在這里扮演了救世主的角色。很多企業(yè)希望充分利用云計(jì)算的潛力,因此,云計(jì)算操作的可觀(guān)察性和彈性變得勢(shì)在必行。
在技術(shù)驅(qū)動(dòng)的商業(yè)經(jīng)濟(jì)中,云計(jì)算服務(wù)中斷面臨的后果將是災(zāi)難性的。任何故障和中斷都會(huì)導(dǎo)致多米諾骨牌效應(yīng),阻礙系統(tǒng)性能。因此,企業(yè)必須通過(guò)系統(tǒng)和混沌測(cè)試在其云計(jì)算架構(gòu)中構(gòu)建彈性。
混沌測(cè)試是一種可以處理大規(guī)模分布式系統(tǒng)中的混亂問(wèn)題的可試驗(yàn)的、基于系統(tǒng)的方法。人們需要了解彈性和可觀(guān)察性的含義,以及系統(tǒng)和混沌測(cè)試對(duì)于避免停機(jī)和業(yè)務(wù)中斷來(lái)說(shuō)至關(guān)重要的原因。
為避免云計(jì)算服務(wù)中斷,企業(yè)必須通過(guò)以連續(xù)和混亂的方式對(duì)其進(jìn)行測(cè)試,在其云架構(gòu)中構(gòu)建彈性。
1.可觀(guān)察性
可觀(guān)察性可以通過(guò)兩個(gè)方面來(lái)理解:一方面是通過(guò)控制理論將可觀(guān)察性解釋為通過(guò)對(duì)其外部輸出的推斷來(lái)理解系統(tǒng)狀態(tài)的過(guò)程。另一方面將可觀(guān)察性的學(xué)科和方法解釋為旨在衡量不確定性和未知數(shù)。
它有助于了解系統(tǒng)或應(yīng)用程序的屬性。云計(jì)算的可觀(guān)察性是利用不同的域、規(guī)模和服務(wù)的端到端監(jiān)控的先決條件??捎^(guān)察性不應(yīng)與監(jiān)控混淆,因?yàn)楸O(jiān)控用于了解應(yīng)用程序中問(wèn)題和異常的根本原因。監(jiān)控會(huì)告訴IT人員什么時(shí)候出現(xiàn)了問(wèn)題,而可觀(guān)察性可以幫助他們了解為什么會(huì)出錯(cuò)。它們的目的不同,但卻是相互補(bǔ)充的。
云計(jì)算系統(tǒng)需要可觀(guān)察性和彈性,以確保更少的停機(jī)時(shí)間、更快的應(yīng)用程序速度等。
2.彈性
而遷移到云平臺(tái)的企業(yè)都應(yīng)確保并測(cè)試其系統(tǒng)的穩(wěn)定性、可靠性、可用性和彈性,其中彈性位于層次結(jié)構(gòu)的最高層。穩(wěn)定性是保證系統(tǒng)和服務(wù)器不會(huì)經(jīng)常崩潰;可用性通過(guò)將應(yīng)用程序分布在不同位置以減輕工作負(fù)載來(lái)確保系統(tǒng)正常運(yùn)行;可靠性確保云計(jì)算系統(tǒng)有效運(yùn)行和可用。但是,如果企業(yè)想要解決不可預(yù)見(jiàn)的問(wèn)題,那么不斷測(cè)試彈性就變得必不可少。
彈性是指預(yù)期會(huì)出現(xiàn)問(wèn)題,并且系統(tǒng)經(jīng)過(guò)測(cè)試以解決和調(diào)整自身以解決該問(wèn)題。系統(tǒng)的彈性并不是自動(dòng)實(shí)現(xiàn)的。彈性系統(tǒng)承認(rèn)復(fù)雜的系統(tǒng)和問(wèn)題,并努力逐步采取措施應(yīng)對(duì)錯(cuò)誤。它需要不斷測(cè)試以減少問(wèn)題或故障的影響。而持續(xù)測(cè)試可以避免云計(jì)算服務(wù)故障,以確保更高的性能和效率。
可以通過(guò)現(xiàn)場(chǎng)彈性設(shè)計(jì)和利用混沌測(cè)試等系統(tǒng)測(cè)試方法實(shí)現(xiàn)彈性。
傳統(tǒng)測(cè)試及其不足的原因
傳統(tǒng)測(cè)試可以確保應(yīng)用程序的無(wú)縫設(shè)置和遷移到云計(jì)算系統(tǒng),并額外監(jiān)控它們的執(zhí)行和工作效率。這足以確保云計(jì)算系統(tǒng)不會(huì)根據(jù)設(shè)計(jì)考慮改變應(yīng)用程序的性能和功能。
采用傳統(tǒng)測(cè)試是不夠的,因?yàn)樗诎l(fā)現(xiàn)潛在的隱藏架構(gòu)問(wèn)題和異常方面效率低下。一些故障似乎處于休眠狀態(tài),因?yàn)樗鼈儍H在觸發(fā)特定條件時(shí)才變得可見(jiàn)。
云計(jì)算的高可用性承諾
微軟公司云計(jì)算業(yè)務(wù)主管Scott Guthrie在談到云計(jì)算的未來(lái)和發(fā)展前景時(shí)說(shuō),“我們看到數(shù)字空間的發(fā)展速度加快。云計(jì)算讓我們能夠按照摩爾定律的速度進(jìn)行擴(kuò)展,而且還能快速擴(kuò)展并使用更少的基礎(chǔ)設(shè)施。”由于新冠疫情導(dǎo)致企業(yè)員工被迫在家遠(yuǎn)程工作,云計(jì)算投資并沒(méi)有激增。但是,由于這種前所未有的需求,所有超大規(guī)模廠(chǎng)商都不得不采取節(jié)流和優(yōu)先級(jí)控制措施,這違背了公共云的按需彈性原則。
在中斷和停機(jī)方面,公共云也會(huì)出錯(cuò)。例如,谷歌公司最近發(fā)生的宕機(jī)事件使Gmail和Youtube等多個(gè)谷歌服務(wù)停止,這表明公共云也會(huì)出現(xiàn)系統(tǒng)宕機(jī)。因此,這場(chǎng)疫情為彈性云計(jì)算系統(tǒng)增加了幾個(gè)視角:
1.系統(tǒng)必須平穩(wěn)運(yùn)行,即使在線(xiàn)流量的意外激增也不會(huì)改變。
2.系統(tǒng)必須尋找替代方法來(lái)管理功能和資源池,以防額外的資源分配請(qǐng)求被云計(jì)算提供商拒絕或限制。
3.系統(tǒng)應(yīng)該是可訪(fǎng)問(wèn)和安全的,以處理未知位置并轉(zhuǎn)移到混合工作環(huán)境(可能是網(wǎng)絡(luò)防火墻之外的多個(gè)端點(diǎn))。
新冠疫情凸顯了對(duì)彈性云系統(tǒng)進(jìn)行連續(xù)和混沌測(cè)試的價(jià)值。一個(gè)具有彈性且經(jīng)過(guò)全面測(cè)試的系統(tǒng)將能夠以安全、無(wú)縫、穩(wěn)定的方式管理額外的擁塞流量。為了檢測(cè)未知流量,需要混沌測(cè)試和混沌工程。
僅靠云原生應(yīng)用程序設(shè)計(jì)不足以實(shí)現(xiàn)彈性
在公共云中,由于云計(jì)算提供商提供的基本功能、多層/多技術(shù)基礎(chǔ)設(shè)施以及云計(jì)算系統(tǒng)的分布式特性存在差距,應(yīng)用程序彈性架構(gòu)變得更加重要。即使底層基礎(chǔ)設(shè)施的可用性和彈性由云計(jì)算提供商提供,這也可能導(dǎo)致云計(jì)算應(yīng)用程序以不可預(yù)測(cè)的方式失敗。
為建立良好的應(yīng)用程序彈性基礎(chǔ),在設(shè)計(jì)過(guò)程中,云計(jì)算工程師應(yīng)采用以下策略來(lái)測(cè)試、評(píng)估和表征應(yīng)用程序?qū)訌椥裕?/p>
1.利用架構(gòu)良好的整體解決方案架構(gòu)框架,并采用云原生能力實(shí)現(xiàn)可用性和災(zāi)難恢復(fù)。
2.與云計(jì)算架構(gòu)師和技術(shù)架構(gòu)師合作,定義可用性目標(biāo),并推導(dǎo)出應(yīng)用程序和數(shù)據(jù)庫(kù)層彈性屬性。
在建模的同時(shí),根據(jù)預(yù)期或觀(guān)察到的使用模式定義假設(shè)的故障模型,并根據(jù)業(yè)務(wù)影響為這些故障模式制定測(cè)試計(jì)劃。
通過(guò)采用架構(gòu)驅(qū)動(dòng)的測(cè)試方法,企業(yè)可以在上線(xiàn)之前深入了解云計(jì)算應(yīng)用程序彈性的基本級(jí)別,并且可以為性能修復(fù)活動(dòng)分配足夠的時(shí)間,但仍然需要在云原生應(yīng)用程序設(shè)計(jì)中測(cè)試應(yīng)用程序的未知故障和多個(gè)方面的故障點(diǎn)。
混沌測(cè)試與站點(diǎn)可靠性工程
混沌測(cè)試是一種有意將壓力和異常引入云計(jì)算架構(gòu)中的方法,以系統(tǒng)地測(cè)試系統(tǒng)的彈性。
首先明確指出的是,混沌測(cè)試并不能替代實(shí)際的測(cè)試系統(tǒng),這只是衡量錯(cuò)誤的另一種方法。通過(guò)混沌測(cè)試,IT團(tuán)隊(duì)可以看到發(fā)生了什么情況以及如何反應(yīng)。但是,最重要的是,它可以幫助他們衡量系統(tǒng)在可觀(guān)察性和彈性方面的差距,而這是最初被忽視的事情。
Netflix公司在2011年遷移到云計(jì)算系統(tǒng)時(shí)率先采用了這種強(qiáng)大的測(cè)試方法,混沌測(cè)試揭示低效率,并引導(dǎo)開(kāi)發(fā)團(tuán)隊(duì)進(jìn)行更改、測(cè)量和提高彈性,幫助云計(jì)算架構(gòu)師更好地理解和更改他們的設(shè)計(jì)。
持續(xù)、系統(tǒng)和混沌的測(cè)試增加了云計(jì)算基礎(chǔ)設(shè)施的彈性,有效地增強(qiáng)了系統(tǒng)的彈性,并最終增強(qiáng)了管理和運(yùn)營(yíng)團(tuán)隊(duì)對(duì)其正在構(gòu)建的系統(tǒng)的信心。
而企業(yè)必須部分或完全在云計(jì)算基礎(chǔ)設(shè)施上創(chuàng)建彈性IT系統(tǒng)。
使用混沌測(cè)試和站點(diǎn)可靠性工程可以幫助企業(yè)在以下方面保持彈性:
- 云計(jì)算和基礎(chǔ)設(shè)施彈性。
- 通過(guò)持續(xù)監(jiān)控實(shí)現(xiàn)數(shù)據(jù)彈性。
- 通過(guò)確保用戶(hù)界面在高壓力條件下保持穩(wěn)定,用戶(hù)和客戶(hù)體驗(yàn)彈性。
- 通過(guò)將安全與治理和控制機(jī)制相結(jié)合來(lái)實(shí)現(xiàn)彈性網(wǎng)絡(luò)安全。
- 對(duì)基礎(chǔ)設(shè)施、應(yīng)用程序和數(shù)據(jù)的彈性支持。
為了建立完整的應(yīng)用程序彈性,除了前面提到的云計(jì)算應(yīng)用程序設(shè)計(jì)方面,解決方案架構(gòu)師還需要采用架構(gòu)模式,允許注入特定故障以觸發(fā)內(nèi)部錯(cuò)誤,從而在開(kāi)發(fā)和測(cè)試階段模擬故障。
故障觸發(fā)器的一些常見(jiàn)示例是響應(yīng)延遲、資源占用、網(wǎng)絡(luò)中斷、瞬態(tài)條件、用戶(hù)的極端操作等等。
- 為常見(jiàn)的已識(shí)別場(chǎng)景制定持續(xù)監(jiān)控、管理和自動(dòng)化事件響應(yīng)的計(jì)劃。
- 建立混沌測(cè)試框架和環(huán)境。
- 注入不同嚴(yán)重程度和組合的故障并監(jiān)控應(yīng)用層行為。
- 識(shí)別異常行為并重復(fù)上述步驟以確認(rèn)關(guān)鍵性。
如何進(jìn)行混沌測(cè)試
混沌測(cè)試可以通過(guò)在云計(jì)算結(jié)構(gòu)的任何七層中引入異常來(lái)完成,幫助評(píng)估對(duì)彈性的影響。
當(dāng)Netflix公司在2011年成功發(fā)布其彈性工具Chaos Monkey時(shí),許多開(kāi)發(fā)團(tuán)隊(duì)將其用于混沌工程測(cè)試系統(tǒng)。還有另一個(gè)由軟件工程師開(kāi)發(fā)的工具測(cè)試系統(tǒng)Gremlin,它也在做同樣的事情。但是,如果想在當(dāng)前新冠疫情背景下執(zhí)行混沌測(cè)試,則可以使用GameDay來(lái)實(shí)現(xiàn)。這會(huì)刺激流量突然增加而出現(xiàn)的異?,F(xiàn)象;例如,客戶(hù)同時(shí)訪(fǎng)問(wèn)一個(gè)移動(dòng)應(yīng)用程序。GameDay的目標(biāo)不僅是測(cè)試彈性,還要增強(qiáng)系統(tǒng)的可靠性。
為確?;煦鐪y(cè)試成功,需要采取以下步驟:
1.識(shí)別:識(shí)別系統(tǒng)中的關(guān)鍵弱點(diǎn),并創(chuàng)建一個(gè)假設(shè)以及預(yù)期結(jié)果。工程師需要識(shí)別和評(píng)估在假設(shè)框架內(nèi)注入什么樣的故障。
2.模擬:根據(jù)真實(shí)事件在生產(chǎn)過(guò)程中注入異常。這可確保將系統(tǒng)中可能發(fā)生的情況包括在內(nèi)。這可能會(huì)導(dǎo)致應(yīng)用程序或網(wǎng)絡(luò)中斷或節(jié)點(diǎn)故障。
3.自動(dòng)化:需要這些實(shí)驗(yàn)實(shí)現(xiàn)自動(dòng)化,可能是每小時(shí)或每周等。這確保了連續(xù)性,這是混沌工程中的一個(gè)不利因素。
4.持續(xù)反饋和完善:這些實(shí)驗(yàn)有兩個(gè)結(jié)果,可以確保彈性或檢測(cè)需要解決的問(wèn)題,可以從中獲得反饋以改進(jìn)系統(tǒng)。
在系統(tǒng)上引發(fā)錯(cuò)誤攻擊和序列的其他具體方法可能是:
- 增加網(wǎng)絡(luò)延遲。
- 切斷預(yù)定任務(wù)。
- 切斷微服務(wù)。
- 斷開(kāi)系統(tǒng)與數(shù)據(jù)中心的連接。
結(jié)語(yǔ)
在當(dāng)今云遷移和云計(jì)算使用量激增的數(shù)字時(shí)代,增強(qiáng)云計(jì)算彈性以提高應(yīng)用程序的有效性能變得勢(shì)在必行。而在項(xiàng)目的生命周期中,持續(xù)和系統(tǒng)的測(cè)試是必不可少的,而且在公共云負(fù)擔(dān)過(guò)重的情況下,也要確保云計(jì)算架構(gòu)的彈性。通過(guò)防止長(zhǎng)時(shí)間的中斷,企業(yè)可以節(jié)省大量成本并避免損失,此外,還可以確保為客戶(hù)提供服務(wù)的持久性。因此,混沌測(cè)試成為采用大規(guī)模分布式系統(tǒng)的必要條件。
原文標(biāo)題:Systematic and Chaotic Testing: A Way to Achieve Cloud Resilience,作者:Gaurav Aggarwal
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】