---
# System prepended metadata

title: 業務連續性之阿里巴巴混沌工程實踐
tags: [SRE2022]

---

# 業務連續性之阿里巴巴混沌工程實踐



###### tags: `SRE2022`



---
**Brian**

> 故障不可避免

## agenda
1. 分散式架構下的挑戰
2. de



混沌工程定義 - （2020 netflix 提出）
犯錯的藝術，故意在系統注入錯誤，看系統的反應



---


- 故障不可避免
- 知道故障要如何處理

### 分散式架構下的挑戰
- 地端: 電力，網路線路
- Cloud: timeout, cache change, load balance cannot use
- OS: CPU, Memory
- AP: Config Change, hotfix, deploy policy

- 依賴關係複雜

- 如何有效保障業務連續性
    - 如何提前發現系統薄弱點，增進系統未來系統穩定性

混沌工程
- 透過有意的引入故障，了解系統可靠狀況
- 五大原則
    - 最小化
    - 實驗原則 -> 穩態假說
    - 自動化運行實驗
    - 真實事件

場景
- ChoasBlade
    - os
    - ap
    - container
    - cloud
        - aws
        - aliyun
- Use
    - Create
    - Start choas injection
    - stop
    - report
    - 修復 solution

- 微服務演練之強弱依賴演練, 解決服務間依賴關係
- 微服務演練之 Message Queue演練, 解決服務間 message 關係
- 容災演練之斷網演練，保障業務高可用性
    - 雙 11 三個月前開始實驗
- 預案演練 - 保證預案有效性

> What does not kill me, makes me stronger -- 尼采


---
## Chris

- 各種故障
    - AP面
    - OS面
    - 雲端面

- 管理好複雜的依賴關係
- 故障無法避免，但如何透過每次的故障檢視系統的弱點並改良

### 混沌工程
核心：主動引入故障參數，驗證系統的影響

#### 原則
- 最小化爆炸半徑
- 穩態假說
- 真實事件
- 生產環境
- 自動化實驗

### 阿里雲混沌工程經驗
- 工具：ChaosBlade
可以模擬各種故障場景
    - Disk I/O
    - 網路延遲/掉封包
    - K8S PoD異常
    - JVM異常

### 應用場景
- 依賴強弱演練
- MQ演練
- 斷網演練

透過演練，確保真實事件發生時能夠依訂定的SOP進行處理
