我們如果說要在 Production 上面測試, 應該會被眾人罵, 因為傳統測試概念, 就是要測試環境或模擬的環境中, 盡量找到問題, 他希望離 production 越遠越好. 如果是在 production 上測試, 其實就是代表你沒有做測試, 要直接讓用戶來當白老鼠.
但是在混沌工程卻是相反過來, 他希望離 production 越近越好.
在傳統測試中, 我們驗證的是代碼邏輯的正確性, 利用測試看看代碼是否照我們預期運作.
在混沌工程中, 我們在意的是系統整理的行為. 代碼只是其中一部分, 其他還包含環境, 第三方系統, 網路等等.
像是硬碟是否正常, 所處的 AWS 是否運作正常, 客戶網路是否正常, 客戶的輸入可能超乎你的想像. 這些往往在非 production 環境中是不容易被測試到的
很多人一開始很反對混沌工程, 通常最主要的原因是對受測系統缺乏信心. 因為他們知道受測系統沒有能力應付一些狀況.
其實混沌工程的一個目的, 是要找出系統中薄弱的環節. 如果你已經知道那個環節是什麼, 自然是先將系統在這個地方做加強, 等到有一定的強固性, 再來進行混沌工程.
當然啦, 誰都不希望在 production 中造成很大傷害, 因此, 在執行 混沌工程 時你需要有以下兩種規劃
(1) 快速終止實驗
要有一個自動化機制, 當監控到狀態在不穩定時, 可以立刻自動終止實驗
(2) 將實驗造成的爆炸半徑最小化
資料來源
文章標籤
全站熱搜
留言列表