# 故障处理
## 事前准备
- **以用户功能为索引的服务和资源的全视图。**以用户端的功能来做索引的。然后,把后端的服务、服务的调用关系,以及服务使用到的资源都关联起来做成一个视图。如:zipkin
- **为地图中的各个服务制订关键指标,以及一套运维流程和工具,包括应急方案**。以用户功能为索引,为每个用户功能的服务都制订一个服务故障的检测、处理和恢复手册,以及相关的检测、查错或是恢复的运维工具。对于基础层和一些通用的中间件,也需要有相应的最佳实践的方法。
- **设定故障的等级。**
- **故障演练。**
- 线上使用**灰度发布系统或A/B测试**。
## 事中处理
出现故障时,最重要的不是 debug 故障,而是尽可能地**减少故障的影响范围**,并尽可能快地修复问题。
应对措施:
- 重启和限流。
- 回滚操作。
- 降级操作。
- 紧急更新。
## 事后复盘
- Ask 5 Whys(问5个跟故障相关的问题,并查明解决)
- 所有相关人员到齐复盘(透明化,更易搞懂问题)
## 根除问题本质
一个技术问题,后面隐藏的是工程能力问题,工程能力问题后面隐藏的是管理问题,管理问题后面隐藏的是一个公司文化的问题,公司文化的问题则隐藏着创始人的问题
1. **举一反三解决当下的故障**。为自己赢得更多的时间。
2. **简化复杂、不合理的技术架构、流程和组织**。你不可能在一个复杂的环境下根本地解决问题。
3. **全面改善和优化整个系统,包括组织**。解决问题的根本方法是改善和调整整体结构。而只有简单优雅的东西才有被改善和优化的可能。
## 事前准备
- **以用户功能为索引的服务和资源的全视图。**以用户端的功能来做索引的。然后,把后端的服务、服务的调用关系,以及服务使用到的资源都关联起来做成一个视图。如:zipkin
- **为地图中的各个服务制订关键指标,以及一套运维流程和工具,包括应急方案**。以用户功能为索引,为每个用户功能的服务都制订一个服务故障的检测、处理和恢复手册,以及相关的检测、查错或是恢复的运维工具。对于基础层和一些通用的中间件,也需要有相应的最佳实践的方法。
- **设定故障的等级。**
- **故障演练。**
- 线上使用**灰度发布系统或A/B测试**。
## 事中处理
出现故障时,最重要的不是 debug 故障,而是尽可能地**减少故障的影响范围**,并尽可能快地修复问题。
应对措施:
- 重启和限流。
- 回滚操作。
- 降级操作。
- 紧急更新。
## 事后复盘
- Ask 5 Whys(问5个跟故障相关的问题,并查明解决)
- 所有相关人员到齐复盘(透明化,更易搞懂问题)
## 根除问题本质
一个技术问题,后面隐藏的是工程能力问题,工程能力问题后面隐藏的是管理问题,管理问题后面隐藏的是一个公司文化的问题,公司文化的问题则隐藏着创始人的问题
1. **举一反三解决当下的故障**。为自己赢得更多的时间。
2. **简化复杂、不合理的技术架构、流程和组织**。你不可能在一个复杂的环境下根本地解决问题。
3. **全面改善和优化整个系统,包括组织**。解决问题的根本方法是改善和调整整体结构。而只有简单优雅的东西才有被改善和优化的可能。
展开
评论
1