【故障处理】最佳实践流程


总结陈皓老师的故障处理的文章,侵删。

应对故障

准备工作

为了能够在面临故障时做得有条不紊,我们需要做一些前期的准备工作。这些准备工作做得越细,那么故障处理起来也就越有条理。

  • (地图)以用户功能为索引的服务和资源的全视图
  • (导航仪)为地图中的各个服务制订关键指标,以及一套运维流程和工具,包括应急方案
  • 设定故障的等级
  • 故障演练
  • 灰度发布系统

故障发生时

在故障发生时,最重要的是快速恢复故障。而快速恢复故障的前提是快速定位故障源。

尽可能地减少故障的影响范围

  • 重启和限流。
    重启和限流主要解决的是可用性的问题,不是功能性的问题。重启还好说,但是限流这个事就需要相关的流控中间件了。
  • 回滚操作。
    回滚操作一般来说是解决新代码的 bug,把代码回滚到之前的版本是快速的方式。
  • 降级操作。
    并不是所有的代码变更都是能够被回滚的,如果无法回滚,就需要降级功能了。也就是说,需要挂一个停止服务的故障公告,主要是不要把事态扩大。
  • 紧急更新
    紧急更新是常用的手段,这个需要强大的自动化系统,尤其是自动化测试和自动化发布系统。假如你要紧急更新 1000 多台服务器,没有一个强大的自动化发布系统是很难做到的。

尽可能快地修复问题

故障改进

故障复盘过程

  • 故障处理的整个过程。
    就像一个 log 一样,需要详细地记录几点几分干了什么事,把故障从发生到解决的所有细节过程都记录下来。
  • 故障原因分析。
    需要说明故障的原因和分析报告。
  • Ask 5 Whys。
    需要反思并反问至少 5 个为什么,并为这些“为什么”找到答案。
  • 故障后续整改计划。
    需要针对上述的“Ask 5 Whys”说明后续如何举一反三地从根本上解决所有的问题。

故障整改方法

  • 第一,优化故障获知和故障定位的时间。
    从故障发生到我们知道的时间是否可以优化得更短?
    定位故障的时间是否可以更短?
    有哪些地方可以做到自动化?
  • 第二,优化故障的处理方式。
    故障处理时的判断和章法是否科学,是否正确?
    故障处理时的信息是否全透明?
    故障处理时人员是否安排得当?
  • 第三,优化开发过程中的问题。
    Code Review 和测试中的问题和优化点。
    软件架构和设计是否可以更好?
    对于技术欠债或是相关的隐患问题是否被记录下来,是否有风险计划?
  • 第四,优化团队能力。
    如何提高团队的技术能力?
    如何让团队有严谨的工程意识?

根除问题的本质

  • 举一反三解决当下的故障。为自己赢得更多的时间。
  • 简化复杂、不合理的技术架构、流程和组织。你不可能在一个复杂的环境下根本地解决问题。
  • 全面改善和优化整个系统,包括组织。解决问题的根本方法是改善和调整整体结构。而只有简单优雅的东西才有被改善和优化的可能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值