混沌工程:Netflix系統穩定性之道

管理員賬號

2019-07-18

軟件服務于人類的歷史,歷經了從單機軟件在本地運行,到復雜系統通過網絡提供服務的發展歷程。軟件的功能和質量每向前發展一步,都伴隨著更多新的組成部分的加入。為了更好地服務于更多用戶,進行規模更大、更復雜的運算,軟件系統的能力需要不斷進化升級,小型軟件開始一步一步演化發展為大型分布式復雜系統。在軟件系統變強的同時,越來越多的組成部分被加入系統,復雜性也在隨之逐步增加。

每個軟件從業者從寫下第一行代碼開始,就一刻不停地在和軟件中的錯誤做斗爭。開發和維護(修復缺陷、確保資源充足等保障軟件運行的活動)是一對伴隨軟件運行而產生的雙生子。熱愛從零到一開發軟件是開發者的天性,看著自己編寫的軟件完美運行,為其他人提供服務,一直是驅動開發者前進的動力。為了更快更好地開發軟件,我們不斷改進開發方法和軟件架構,但是開發者在使用新的方法和更復雜的架構時,往往會低估潛在的風險。

近年來,隨著系統架構逐漸向微服務架構演化,開發效率以及系統擴展性大幅提高。但同時,系統的復雜性也隨之逐漸增長到了一個拐點,傳統的測試方法已經不能全面理解和覆蓋系統所有可能的行為,測試的有效性被大打折扣。我們通過各種測試、SRE、DevOps、金絲雀發布、藍綠部署、預案、故障演練等方法,希望能夠防患于未然。但服務規模不斷增長,服務之間的依賴性所帶來的不確定性也呈指數級增長。在這樣的服務調用網中,任何一環出現的正常或異常的變化,都有可能對其他服務造成類似蝴蝶效應一般的影響。

軟件系統自身復雜度的激增、開發者在引入復雜性的同時對風險的低估和忽視,是系統可用性面臨的兩大挑戰。

為了應對這兩大挑戰,Netflix 選擇了一條不同尋常的路。從混亂猴子開始,Netflix 為應對不確定性的領域帶來了一種全新的思維方式——主動出擊。這種主動出擊的思維方式衍生出的一套實踐方法,被稱為混沌工程(Chaos Engineering),它旨在從根本上改變開發者應對軟件缺陷和故障的思維方式。在此之前,我們期望通過一系列的測試驗證手段,盡最大的可能確保在線上運行的系統沒有缺陷和故障。而混沌工程的理念認為這既不現實,也不符合系統自然發展的規律。混沌工程提倡我們首先要正面接受系統一定會存在缺陷,并且一定會時不時地發生故障的事實;然后,要求我們通過一系列實驗找出可能發生問題的風險點,進而在不斷加固系統的同時,促使開發者在開發軟件時必須選擇將防御性內建在系統中。

混沌工程的理論,建構于塔勒布在《反脆弱》一書中所闡述的思想之上,即系統如何在不確定性中獲益。在接受“系統越復雜,越脆弱”的事實之后,讓系統在每一次失敗中獲益,然后不斷進化,這是混沌工程的核心思想。在實踐中,混沌工程提倡用一系列實驗來真實地驗證系統在各類故障場景下的表現,通過頻繁地進行大量實驗,既使得系統本身的反脆弱性持續增強,也讓開發者對系統越來越有信心。這個信心同時也是系統高速迭代,占盡市場先機的一個前提因素。

各個行業都涌現出了很多基于混沌工程應對上述兩大挑戰的實踐案例。譯者所從事的汽車金融行業是一個長鏈條,重流程,涉及獲客、風控、審批、資金流轉、貸后管理等多個環節的復雜業務體系。任何差錯都有可能造成故障及問題數據的蔓延,輕則導致各種程度的業務不可用,重則可能會造成重大資損(資產損失)。傳統的各類方法已經無法保障這樣一個大規模系統的可用性和正確性,因此我們在2018 年下半年開始采用混沌工程的思想,實踐了若干方法,目前看來已經初見一些成效。在混沌工程原則的指導下,我們為實施線上實驗開發了實驗組的控制功能,從而可以將線上實驗的影響控制在最小的范圍,即最小化爆炸半徑。這為我們在線上放心進行實驗提供了基礎保障。舉一個線上實驗的例子:我們通過切斷對第三方存儲服務的依賴,驗證了備用存儲服務是否能夠無縫接管。第一次執行實驗的時候,我們發現雖然在移動端上傳的圖片可以成功存儲在備用存儲空間里,但是在業務鏈條的末端有個別讀取服務卻沒有能夠正確地從備用存儲空間中獲取到該圖片。實驗只影響了一小部分流量,快速修復后,實驗可以進一步在滿流量的情況下運行。接下來,通過每天自動運行這樣的實驗,我們可以確保任何后續對系統的變更都不會引入新的系統行為盲點。因為我們會每天自動運行大量實驗,開發者不得不在編碼時思考“我的代碼如何在這些混沌實驗場景下存活下來”,并逐步提高質量,形成正向循環。

混沌工程目前還是一個新興的學科,它為軟件工程行業帶來了全新的思維方式。相信越來越多的實踐和工具,會一步步釋放這個學科的能量,吸引更多的實踐者。團隊或組織可以在任何時間點引入混沌工程的理念,這是一門實踐性的學科,所以現在就和我們一起,開啟你的混沌之旅吧!

本文選自全球唯一一部Chaos Engineering著作《混沌工程:Netflix系統穩定性之道》,出自運維界第一標桿Netflix公司混沌工程團隊創始人之手。Netflix致力于通過混沌自動化平臺(ChAP)、混沌猴子和FIT等一系列彈性計劃確保高可用性。混沌大潮同樣在國內席卷而來,在下行左轉駛入閱讀原文前,讓我們再細細品味一下阿里巴巴高可用架構團隊高級技術專家、開源項目ChaosBlade 發起人周洋(花名中亭)在為本書所作序文中的精彩論述吧——

減少問題的最好方法就是讓問題經常性地發生,通過不斷重復失敗過程并找出解決方案,來持續提升系統的容錯能力和彈性。混沌工程作為一門新興學科,還處于一個定義和被定義的過程。如果你對混沌工程感興趣,愿意去了解和實踐混沌工程,非常推薦你從閱讀本書開始行動。

讀者評論

相關博文

  • 社區使用反饋專區

    陳曉猛 2016-10-04

    尊敬的博文視點用戶您好: 歡迎您訪問本站,您在本站點訪問過程中遇到任何問題,均可以在本頁留言,我們會根據您的意見和建議,對網站進行不斷的優化和改進,給您帶來更好的訪問體驗! 同時,您被采納的意見和建議,管理員也會贈送您相應的積分...

    陳曉猛 2016-10-04
    3314 552 3 6
  • 迎戰“雙12”!《Unity3D實戰核心技術詳解》獨家預售開啟!

    陳曉猛 2016-12-05

    時隔一周,讓大家時刻掛念的《Unity3D實戰核心技術詳解》終于開放預售啦! 這本書不僅滿足了很多年輕人的學習欲望,并且與實際開發相結合,能夠解決工作中真實遇到的問題。預售期間優惠多多,實在不容錯過! Unity 3D實戰核心技術詳解 ...

    陳曉猛 2016-12-05
    2216 34 0 1
  • czk 2017-07-29
    2425 20 0 0
黑龙江p62开奖号码今天晚上