從失敗中吸取教訓的混沌工程

由於其複雜性和大規模的性質,微服務或分佈式系統通常傾向於具有更多的故障點。

而作為SRE,你有可能會看到什麼,你會如何想像它?

例如,我們把東西弄壞了之後的結果將是什麼?我們能從中學到什麼?

有別於以往的災難演練,混沌工程試圖發現這些故障點並確定在資源或對象不可用的情況下會發生什麼,不斷地執行廣泛、仔細和不可預測的實驗,通過各種學習形式非常密切地觀察系統。它可以使你

-了解系統的弱點。

-提高了系統的彈性。

-本質上是主動的,而不是傳統測試的被動性質。

-暴露隱藏的威脅並最大限度地降低風險機率。

讓您的系統變得更好的方法之一不僅僅是接受失敗。這也意味著您並不完全了解您的系統將如何運行。重審您自己的系統,可靠性領域就會超出了您自己的所知,所以必須開始考慮所有這些不可控的因素如何啟動尋得它的方法。

使用混沌工程的幾個階段

1.定義並測量系統的"穩定狀態":首先定義指標,保證系統按照應有的方式運行。

2.創建真實測試:與任何實驗一樣,需要一個業務功能假設來進行,包括真正跟涉及真正的未知數。

3.模擬現實世界中可能發生的情況:模擬可能導致的系統不可用或導致其性能的場景。然後首先考慮可能出現什麼問題,進行模擬。

4.不斷地證明或反駁你的假想:將你的目標與干擾注入系統後收集的指標進行測量結果比較差異。

系統的任何更改都存在隱性風險,而一個不能適應不斷變化的環境的系統,最終可能也會故障。所以通過故障的引入並查看現實世界中發生的情況,花時間了解它們在現實世界中的工作方式,而不是只是在架構圖上的外觀。

觀眾的預期收穫:

我們知道透過各項測試,經由不同組合輸入來預測出系統的行為,已去觀測整體架構的彈性跟改善作法。

我們也知道開發過程中通過Continuous Monitoring產出應用程序,搭配持續監控及全鏈監控的角度獲得性能視圖以利早期捕獲問題使團隊能夠快速解決問題。

我們更用了基礎設施即代碼(IaC)的一項重要實踐,安全性和合規性與基礎架構管理流程保持系統一致的重要支柱。

以上種種都是DevOps廣泛用在管理基礎架構的重要實踐,但範圍有限,因為它不會生成任何關於如果出現問題時系統將如何運行的全新知識。

渾沌工程;微服務架構等現代軟件開發方法中,這是一種非常合適的做法。挖掘Observability的四種維度中找出系統中"未知的未知數(Discoveries)"問題。試圖發現這些系統故障點並確定在資源或對象不可用的情況下會發生什麼,從而產生有關系統性能、屬性、行為的新知識並最大限度地降低風險。更好地理解事物是如何破裂的以及它是什麼樣子會讓你成為一個更好的工程師。

講者
  • 教室 ABC會議室
  • 形式 現場演講
  • 等級 通識
  • 語言 中文

共筆連結 簡報下載