當前位置:
首頁 > 科技 > 在系統里放一隻「猴子」,阿里瘋了嗎?

在系統里放一隻「猴子」,阿里瘋了嗎?

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

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

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

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

一隻討嫌的猴子

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

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

這隻猴子名叫 Chaos Monkey。

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

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

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

說說混沌工程

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

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

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

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

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

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

混沌工程是一種憂患意識

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

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

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

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

實施混沌工程的意義、文化建設和技術演進

微服務架構的混沌工程實踐

容器環境下的混沌工程實踐

如何在 DevOps 團隊落地混沌工程


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

70000名開發者都在學什麼語言、框架?
大數據領域的六年巨變

TAG:InfoQ |