Chaos Engineering (混沌工程)


整理一些關於 Chaos Engineering 的資料。


經典好文

底下整理一些我個人讀過的文章、演講,並摘錄一些重點。


Intro to Chaos Engineering

By Tammy, she is

  • Principal Site Reliability Engineer at #remlin
  • former Senior SRE Manager at Dropbox
  • and co-founder of GirlGeekAcademy

Published: 2018/02/06


Chaos Engineering: Compaines, People, Tools & Practices

一張很大的 mindmap (如下圖) 呈現 Chaos Engineering 相關的公司、推廣的人、工具、實踐原則 … 等資訊


Awesome Chaos Engineering

如標題,我只能用 Awesome 來形容!這個 github 上整理了大部分 Chaos Engineering 的經典資料,包含文化面、書本、教育、工具、論文、Blog、新聞、研討會 … 等,幾乎想得到的,都可以在這裡找到。如果想要深入了解 Chaos Engineering 到底是什麼,把這裡的文章爬過就得到了!


混沌工程实践经验:如何让系统在生产环境中稳定可靠

這篇文章整理提到在正式環境中面對的挑戰以及問題,特別像是 Netflix 這種公司。底下是自 Netflix 2013 QCon 很經典的圖:

我很喜歡文章中的這兩句話,常常拿來提醒自己:

  • 不是你選擇那一刻,是那一刻選擇你,而你唯一能選擇的就是作好準備。 (You don’t choose the moment, the moment chooses you.)
  • 混屯工程不是製造問題,是揭露問題。 (You only choose how prepared you are when it does.)

Chaos 談的很多是 連鎖性 問題,這點在 SRE CH22 有類似的介紹,也可以說是我在談系統測試 的概念。


Chaos Engineering的历史、原则以及实践

這篇整理了很多 Chaos Engineering 相關的資料,入門必讀。底下摘錄一些重點:

  • 混沌工程最先出现在互联网巨头公司中,这些公司拥有大规模的分布式系统,因为这些系统太过复杂,他们需要一些新的手段来测试它们。
  • 为什么要有目的地搞破坏?就像打疫苗可以预防疾病一样,我们可以通过混沌工程来提升系统的免疫能力。我们向系统注入故障(比如延迟、CPU故障、网络黑洞),找出系统潜在的弱点。
  • 这些试验增强了我们应对故障的能力,就像防火演习一样。通过有目的地搞破坏,可以识别出未知的问题。
  • Peter Deutsch提出的分布式系统八大谬论概括了程序员新手可能对分布式系统做出的错误假设:
    • 网络是可靠的、延迟是零、带宽是无限的、网络是安全的
    • 拓扑结构不会变、存在管理员这样的角色、传输成本是零、网络是同质的
  • 混沌工程執行次序:已知、未知的排列組合

Published: 2018/04/08


Chaos Engineering for the Business

這篇整理曾商業角度來看道 Chaos Engineering 這個很技術性、很工程性的任務,他整理六個點,其中第四點是工程師一定要知道的。

底下摘錄重點:

  • Tip №1: Don’t be afraid to drop the term
  • Tip №2: It’s about Confidence, not Breaking Things
  • Tip №3: Put Blast Radius and Learning Front and Centre
  • Tip №4: Not just about Infrastructure, or even just the Technical
  • Tip №5: It doesn’t have to be a big, up-front investment
  • Tip №6: Know the benefits, know the limitations; don’t over-promise!

相關詞彙

Chaos Engineering 的詞彙很多,底下是我在文章中常看到的,僅供參考:

  • 理論
    • Chaos theory, 混沌理論
    • 三體問題
    • 量子力學
    • 蝴蝶效應
    • Antifragile (反脆弱): Chaos 的目的是什麼?反脆弱應該是其一。
    • 黑天鵝效應 (black swan):在一群白天鵝中出現一隻黑天鵝(black swan),被解讀為「最不可能發生但總是發生的事」。
      • 所謂黑天鵝,是指看似極不可能發生的事件,它具三大特性:不可預測性衝擊力強大、以及,一旦發生之後,我們會編造出某種解釋,使它看起來不如實際上那麼隨機,而且更易於預測
      • Google的驚人成就就是一個黑天鵝事件;九一一也是。
      • 為什麼要等到事情發生之後,我們才認得出黑天鵝現象呢?部分的答案是,在應該注意普遍現象時,人們長久以來卻習慣注意特定事件。我們習慣注意已經知道的事情,卻一而再再而三忽略我們所不知道的事情。
  • 工程方法
    • Chaos Monkey: Netflix 發明的搗亂方法
    • SRE: Chaos Engineering 跟 SRE 有密不可分的關係
    • Distributed Systems (分散式系統): 之所以會有這樣的需求,肇因於分散式系統這麼複雜的東西被大量實踐。
    • Microservices: 微服務是分散式系統的實踐方法之一。也是現代最流行的架構,想當然耳,他一定要面對 Chaos Engineering.
    • Disaster Recovery (災難還原)
    • GameDay: 大家來找碴的一天
    • resilience (韌性): 不倒翁
    • elasticity (彈性): 我進來啦 我又出去啦

其他資訊

相關資訊很多,底下是我看過的。如果你不知道從哪開始,那就從 Awesome Chaos Engineering 開始,這裡整理的算是最完整的。


Comments