在系統裏放一隻“猴子”,阿里瘋了嗎?

在雲時代,隨着大規模分佈式系統和微服務架構技術的演進,你對你的系統健壯性還有多少信心?

沒人能全盤掌握這種分佈式系統的複雜結構,也沒人能獲知系統所有的弱點。還有一個現實我們必須清楚地認識到——網絡狀態是複雜的,用戶行爲是不可預測的,許多事件也是不可預見的。當你的組件崩潰、降級或者失常,系統遇到惡意或者小白用戶,而你卻在睡夢中,那可真是災難。

系統故障無法避免,可災難恢復又貴又嬌弱,還只在必要的地方部署,如果我們能在問題發生之前,或者在沒有對用戶造成傷害之前,主動發現它並解決它,這可能嗎?

當然可能,爲什麼不試試混沌工程呢?

一隻討嫌的猴子

想象一下,你的系統裏有一隻猴子在四處亂竄,你無法抓住它,更無法控制它的行爲,你不知道它什麼時候會搞掛你的系統。焦慮,無比焦慮。

如果這隻猴子,就是你自己放進去的呢?你知道,它的目的就是搞掛你的系統,感覺是不是又不一樣了?刺激,真的刺激。

這隻猴子名叫Chaos Monkey。

image

作爲業界微服務和DevOps組織的楷模,Netflix有大規模生產級微服務的成功實踐。他們大膽提出反脆弱架構的理念,以攻爲守,組建混世猴子軍團,在工作日期間隨機虐殺生產實例,逼迫相關研發人員做好高可用。而隨着系統日益完善,Chaos Monkey的實力和攻擊範圍也在不斷提升。酸爽,過於酸爽。

但是,在猴子軍團的蹂躪之下,整個Netflix的服務穩定性不斷前進。所以說,爲什麼Netflix這麼牛?人家對自己夠狠。

言歸正傳,隨着Chaos Monkey的出現,一門新學科誕生了:混沌工程。

說說混沌工程

混沌工程,被描述爲“在分佈式系統上進行實驗的學科,目的是建立對系統承受生產環境中湍流條件能力的信心。”今天,包括谷歌、亞馬遜、IBM、阿里巴巴在內的許多公司都採用某種形式的混沌工程來提高現代架構的可靠性。

或許我們可以把混沌工程比作打疫苗,用以毒攻毒的辦法來提高系統的免疫力,比如有目的性地向系統注入故障,找出潛在的弱點。

有一些朋友覺得,這不就是故障注入和故障測試嗎?確實,三者在關注點和工具中都有很大的重疊。

混沌工程和其他方法之間的主要區別在於,混沌工程是一種生成新信息的實踐,而故障注入是測試一種情況的一種特定方法。對於分佈式系統來說,單元測試、集成測試或性能測試是遠遠不夠的,我們無法保證系統能夠應對生產環境所的各種不可預測事件。我們遇到的問題,可能只是系統隱患的冰山一角。而混沌工程給予了一種方法,來模擬不可預知的故障,這就是我們需要的。所以,爲了具體地解決分佈式系統在規模上的不確定性,可以把混沌工程看作是爲了揭示系統弱點而進行的實驗。

image

混沌工程屬於一門新興的技術學科,行業認知和實踐積累比較少,大多數IT團隊對它的理解還沒有上升到一個領域概念。阿里電商域在2010年左右開始嘗試故障注入測試的工作,開始的目標是想解決微服務架構帶來的強弱依賴問題。後來經過多個階段的改進,最終演進到 MonkeyKing(線上故障演練平臺)。從發展軌跡來看,阿里的技術演進和Netflix的技術演進基本是同時間線的,每個階段方案的誕生都有其獨特的時代背景和業務難點,也可以看到當時技術的侷限性和突破。

參考 | 《阿里巴巴在混沌工程領域的實踐和思考》/阿里巴巴高級技術專家周洋(中亭)

混沌工程是一種憂患意識

網絡環境如此複雜,故障的隨機性也相應增加,這些故障或將給企業造成巨大損失,給用戶帶來糟糕的體驗,甚至讓他們陷入麻煩之中。混沌工程通過有意識地“糟蹋”系統,將故障扼殺在襁褓裏,以達到提升系統健壯性的目的。

所以,混沌工程不僅是一種新興的技術學科,更是一種服務態度,一種憂患意識。

爲幫助開發團隊加深對混沌工程的理解,汲取業內先驅實踐經驗,QCon北京2019精心策劃了“混沌工程”專題,特邀阿里巴巴高級技術專家周洋(中亭)作爲出品人,爲各位開發人員策劃了一場饕餮盛宴。

image

本專題將聚焦在以下幾個方向:

  • 實施混沌工程的意義、文化建設和技術演進
  • 微服務架構的混沌工程實踐
  • 容器環境下的混沌工程實踐
  • 如何在 DevOps 團隊落地混沌工程

2019年5月6-8日,更有超100位國內外資深技術專家與您相約北京國際會議中心,聚集26+熱門專題,助你提升技術視野,打破職業瓶頸,邁上新臺階!訪問QCon官網瞭解QCon十週年精心策劃,現在購票即享8折優惠,立減1760元,團購還能更省更多!有任何問題歡迎聯繫票務小姐姐 Ring:電話 010-53935761,微信 qcon-0410。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章