概念
混沌工程是通過實驗探究系統穩定性的實踐過程,其作戰武器是風險因子,即在系統中引入風險變量來驗證系統對風險的抵抗能力,它的作用是推動系統容錯能力建設、驗證監控告警及時性、提升研發問題排查能力。
混沌工程的工作內容
- 推動基礎設施建設:DevOps系統建設、監控告警系統建設、日志系統建設。
- 推動系統容錯能力建設:業務系統需要針對特定故障做好必要的保障措施,比如數據庫連不上時如何保障業務操作能夠繼續而不被終止。
- 提升研發的事故處理能力:系統預案建設、系統事故快速響應建設。
- 實施混沌實驗:實驗中引入風險變量驗證以上建設是否有效,比如kill實例進程后實例是否能夠自動重啟以保障繼續提供服務。
混沌實驗與測試的區別
它與測試方法不同的是專注點不同,其它測試方法關注的是功能正確性,混沌實驗關注的是系統穩定性。
混沌實驗實施條件
混沌實驗以破壞系統運行環境來探究系統穩定性,因此,如果系統本身沒有應對異常的基本能力,就沒有必要實施混沌實驗。團隊中要實施混沌實驗,則必須具備一下連個條件:
- 完善的監控體系:接口監控、實例監控、服務器監控等
- 系統具備對異常的處理能力
如何降低實驗帶來的風險?
團隊為系統穩定性安全性做了很多保障性措施,那如何驗證這些措施的有效性呢,如果直接實施混沌工程,可能會引發系統宕機、業務數據不一致等生產事故,而如果不進行混沌實驗,就沒法驗證這些保障性措施是否可靠,這就像埋了一顆定時炸彈在身邊,混沌實驗就好比拆解炸彈,在拆解炸彈的過程中隨時都可能發生爆炸。
既然存在炸彈,就必須得進行拆除,那如何降低拆除時炸彈爆炸帶來的風險?這里就要引入混沌實驗的實施原則——把影響范圍控制在最小爆炸半徑內,即
- 最短時間: 故障發生能夠短時間內恢復。
- 最小流量: 受影響的請求盡量最少,比如流量低峰期在集群中某個實例上實施混沌實驗。
- 最小上下游系統: 盡量使事故只影響上游或下游系統。
- 最小實驗環境: 可以先在測試環境實施混沌實驗,最后才在生產環境實施實驗。