被你質疑價值的混沌工程,阿里巴巴已落地實踐了9年

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲什麼阿里巴巴、"},{"type":"link","attrs":{"href":"https:\/\/mp.weixin.qq.com\/s?__biz=MjM5MDE0Mjc4MA==&mid=2651076881&idx=3&sn=6f57e8c5ce82ad3e60db2a8ce2d395c1&chksm=bdb9c1428ace4854a8ee7acb196f16cea97dc241cb42c7b98542eb521179078e8fbf905ef64b&scene=27#wechat_redirect","title":"xxx","type":null},"content":[{"type":"text","text":"工商銀行"}]},{"type":"text","text":"、中國移動、華泰證券……都在關注混沌工程?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"自從 Netflix 開源 Chaos Monkey,越來越多的國內公司看到了混沌工程在建立系統在生產環境中信心的能力,開始嘗試通過混沌工程提高可靠性。阿里巴巴作爲國內較早對外輸出混沌工程能力的企業,早在 2012 年就開始在電商業務上,嘗試通過故障注入技術去解決微服務的依賴問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"應用層追求更全面、更便利、更快捷的服務,倒逼技術層面系統越來越複雜,可供觀測和持續維護的難度不斷加大,錯綜相連的軟件服務節點越發依賴技術手段和能力。隨着分佈式和雲原生技術成爲主流技術趨勢,混沌工程也隨之備受關注。由於混沌工程自身特性,"},{"type":"text","marks":[{"type":"strong"}],"text":"難以"},{"type":"link","attrs":{"href":"https:\/\/mp.weixin.qq.com\/s\/6ZM7akP0TUixMozyUwfyOw","title":"xxx","type":null},"content":[{"type":"text","text":"量化度量"}]},{"type":"text","marks":[{"type":"strong"}],"text":"幾乎成爲業內共識,但對於企業混沌工程建設的成熟度,也需要探討衡量標準。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如今,隨着中國信通院成立了國內首個混沌工程實驗室,"},{"type":"link","attrs":{"href":"https:\/\/mp.weixin.qq.com\/s\/cO-Jh1uY3Opmi1zIYVwdJA","title":"xxx","type":null},"content":[{"type":"text","text":"混沌工程"}]},{"type":"text","text":"在國內的發展走到了新階段。爲此,InfoQ 和阿里雲資深技術專家中亭,聊了聊混沌工程在阿里巴巴的技術實踐。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"9 年,混沌工程在阿里巴巴從探索到開源"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不同企業關注和引入混沌工程的時間不同,但開局類似。阿里巴巴最開始引入混沌工程,也是爲了解決實際問題。據中亭介紹,阿里巴巴探索混沌工程的時間線和 Netflix 差不多,只不過 Netflix 從基礎資源開始實踐,阿里巴巴則是從應用層開始。阿里巴巴最開始是爲了解決技術架構變化和組織變化的問題,纔去演進一些新的實踐。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/c2\/2e\/c2469ec3c7c94de9d95e615903bd542e.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"混沌工程一步步走進阿里巴巴,可以分爲五個階段:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第一個階段在 2012 年,阿里巴巴電商業務遇到了微服務依賴不合理的問題,導致整個系統架構出問題,花了很長的時間做依賴的自動識別及治理,最後通過打破業務和穩定性之間的邊界、引入故障注入的技術,解決了微服務的問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第二個階段,阿里巴巴開始嘗試做線上容災、異地多活等容災技術。通過比較大的斷網等機房切換演練等方式,解決問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第三個階段在中亭眼裏是里程碑的階段。在 2015 年備戰雙十一之後,阿里巴巴技術團隊發現整個備戰的方法可以非常體系化:當系統複雜到一定階段,紙面梳理已經難以解決問題,是否可以通過一種逆向的方式暴露問題?2015-2016 年,阿里巴巴開始去做線上故障演練,也是今天提到的混沌工程的前期階段。中亭提到,在這個階段的核心是希望藉助混沌工程解決分佈式技術,不只是微服務,對整個線上穩定性的問題做全方位的度量,包括工具系統和監控預案等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第四個階段開始於 2018年,阿里巴巴開始做兩件事情:"},{"type":"link","attrs":{"href":"https:\/\/mp.weixin.qq.com\/s?__biz=MzI5ODQ2MzI3NQ==&mid=2247491700&idx=1&sn=e478e252e4da39592f0404ba456547f9&chksm=eca7d930dbd050260e2bb31f55cfa6af85086aff80a07bb310a3bef5a0a599cd0ffb92b4b5c4&scene=27#wechat_redirect","title":"xxx","type":null},"content":[{"type":"text","text":"阿里雲"}]},{"type":"text","text":"技術團隊開始對雲底座進行混沌工程探索,提升基礎設施的韌性;伴隨着阿里巴巴技術上雲,開始把內部的高可用保障技術,通過雲的方式對外輸出,解決客戶應用高可用的問題。可以看到,隨着雲服務雲能力的對外輸出,混沌工程能力開始服務外部客戶。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"等到第五個階段,也就是在 2019 年 -2021 年,阿里巴巴在混沌工程上的探索開始分爲兩條線,一條是商業服務和開源一體化,清晰化技術演進路線、加速技術演進速度,體現在現在就是面向開發者的一站式混沌工程平臺;另一條是阿里巴巴集團內部把混沌工程重視程度提到一個空前的規模。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據中亭介紹,2020 年阿里巴巴做了生產突襲項目,把所有可能影響高可用的重大故障因子,全部都聚合在一個平臺,公司的管理層會在一個不定時的時刻隨機的去發起這種突襲。這次生產突襲的核心要求是,被突襲業務具備在1分鐘發現,5分鐘定位,10 分鐘恢復。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"他談到,在這個階段,已經把混沌工程和阿里巴巴集團的上雲,包括人員組織的應急,已經完全串聯起來,在內部的階段沉澱到今天,其實已經是一個比較好的階段。據悉,在阿里巴巴內部,將“高可用架構”和“韌性架構組織”升級成爲“安全生產”,目前混沌工程已經成爲安全生產的一個基礎能力,現在內部的各個團隊藉助混沌工程去自發性地做垂直演練。基本上覆蓋了阿里巴巴內部的幾千個應用,所有的核心業務都有覆蓋,包括生態公司如考拉和高德。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“過去大家對混沌工程的理解會比較淺,主要可能就直接把它等同於故障注入了,出現混沌工程原則後,有了一個相對嚴謹的邏輯定義,如果用一句話概括的話,混沌工程分兩層:一層是混沌工程平臺,一層是混沌工程實踐,兩層配套才能幫助企業完整進行混沌工程落地。”中亭談道。“整體來看,對混沌工程的理解應該是分層的,整條脈絡串聯起來的話,你會發現其實混沌工程在企業的整個技術週期或者研發週期很多地方有所影響。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"相較於測試關注的是固定的輸入和輸出是什麼,混沌工程更加強調實驗和探索。“一個非常明顯的區別是,我在生產區執行各種實驗,然後我是不希望去打破我在線上的一個穩態。”中亭談道。InfoQ 在系列訪談中也發現,直接在生產環境做混沌工程測試,需要持謹慎態度,這是絕大部分業內專家的共識。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"“我”可以引入混沌工程嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"阿里巴巴的混沌工程實踐經驗是否可以套用到其他企業呢?從行業角度看,混沌工程技術沒有明顯的行業限制。在對混沌工程的擁抱程度上,中亭認爲,從引入目的和策略上主要是兩類企業:一類是與阿里巴巴類似的互聯網企業,關注線上故障的應急;另一類是有自己的雲或者階段性上雲的企業,面向 C 端或政策法規有要求的企業(如:證券、銀行)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於混沌工程的屬性和行業特殊性,在金融行業的嘗試較早。一方面,金融行業是對高可用嚴謹性有着高要求的行業,另一方面,金融行業正在面臨轉型。“所以目前混沌工程、分佈式數據庫或者其他方面的架構升級,背後都需要這樣一個抓手來配合,所以混沌工程是比較合適。”中亭告訴 InfoQ:“對互聯網業務而言,線上可以分階段來說,從爆炸半徑來講,階段性的建設,配合環境技術單元化。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不敢引入混沌工程,大多數企業的顧慮在於,不同部門對混沌工程的認知不清晰,擔憂落地的結果。中亭建議想要引入混沌工程的企業,可以先圍繞企業特點做針對性實驗,內部要有明確的組織,知道如何配合戰略落地某項的時間,不再走“老路”,對混沌工程持有發現故障、發現 bug 的態度,而是從系統管理角度想要度量全局穩定性能力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從技術基礎、組織架構、流程制度和技術、人才儲備上來說,混沌工程對企業引入沒有太多前置要求。中亭談道:“對企業的技術架構沒有特別的要求。混沌工程的前提要求是需要對企業穩態的觀察指標有一個準確的描述,所以需要企業在可觀測性上有一定的積累,有一些基礎監控就可以了。”混沌工程主要解決兩個層面的問題:單機的系統設計和周邊環境的問題,比如磁盤、單機網絡等;集羣之間的問題,所以只要企業本身支持一定的分佈式化,就可以落地。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據他介紹,在阿里巴巴內部有一個制度:第一,被演練過的所有發生的故障,都要具備線上可演練的機制,真正驗證是否可以恢復;第二,所有微服務的架構或分佈式系統的架構,一級或核心級應用與非核心級別的應用的關係不能是強依賴,需要有自己的預案;第三,從組織的角度有一定的驗收,比如說監控發現率、問題處理率等,需要在一個量化的數字之間。中亭談到,只這三條制度,企業從引入到落地就需要進行很長一段時間了。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"相輔相成的混沌工程和雲原生"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"經過多年的發展,目前從技術的角度,行業內已經有了一些通用的混沌工程實驗解決方案供企業選擇。可以看到的是,混沌工程的實驗和雲密切相關。隨着雲服務滲透到各行各業,逐漸發展成爲新的行業基礎設施,對雲服務的韌性提出了更高要求,而混沌工程被驗證可以有效檢驗雲原生系統的韌性架構。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“韌性架構的前提是先要對架構有一個理解,不管是 Java 語言體系,還是 GO 語言體系,阿里雲幫助客戶做的第一件事是搭建整個架構,第二件事是嘗試把內部發生過的故障、在行業看到的故障,以專家經驗的方式固化在平臺中,結合架構做針對性演練方案的推薦。當企業把這些場景都驗收,企業系統的韌性就達到了一定的水平。”中亭談道。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在企業上雲早期,可以在上雲前後的平行環境下,針對性地做混沌工程場景實驗,觀測整個架構的反應是否一致,進而爲企業使用雲服務、考量架構的容災能力提供可判斷的依據。在企業上雲後,混沌工程實驗可以幫助運維工程師檢驗雲服務。中亭解釋道:“大家會關注用雲姿勢是否正確,比如說容器中間件,來去看企業是不是按照雲的最佳實踐。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"無可諱言,對於混沌工程的價值,目前在業內還沒有一個明確的度量標準,但是可以通過簡單的例子來有效佐證。據中亭介紹,一方面可以先選定一個場景,從結果上看,混沌工程可以保證場景不劣化;另一方面,如果度量組織進行突襲,不管系統架構和人員架構怎麼變,監控結果都在合理的範圍內。總體而言,混沌工程的核心就是增強信心,保證系統在某個場景下的能力不退化。只要這個組織有度量“特定場景下能力是否退化”的指標,混沌工程的價值就顯而易見了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"嘉賓介紹:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"中亭,2011 年加入阿里高可用架構團隊,主導阿里混沌工程領域規模化實踐落地。目前任全局高可用 & 混沌工程團隊技術負責人,負責異地多活和混沌工程領域的技術。QCon 大會出品人,混沌工程佈道師。"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章