写点什么

提升运维稳定性的利器——故障复盘

  • 2017-03-28
  • 本文字数:2601 字

    阅读完需:约 9 分钟

为什么要进行故障复盘

稳定性是运维工作的基石。故障,也就是稳定性问题是悬在各位运维从业者头上的一把达摩利斯克之剑。稳定性一旦出现问题,运维的其它工作基本也就算前功尽弃了。那么如何提升稳定性是所有运维从业者都绕不开的话题。

那么出现了稳定性问题怎么办?没关系,有老中医坐诊,药到病除。给您「望闻问切」后,开出了一味药方,药方很简单,但是一剂猛药,按时按量服用,但可药到病除。药方上书只有两字:「复盘」。这剂药该怎么用呢?先别急,做为一个坐台多年的老中医,先从为什么开这剂方子说起。

什么是故障复盘

先来介绍一下这个方子,即什么是复盘?

复盘源于围棋术语。复盘也称「复局」,指对局完毕后,复演该盘棋的记录,以检查对局中招法的优劣与得失关键。这样可以有效地加深对这盘对弈的印象,也可以找出双方攻守的漏洞,是提高自己水平的好方法。

回到「故障复盘」本身也是一致,就是对故障发生及处理过程重新「过」一遍。对这个过程的进行和思考进行回顾,反思和探究,实现稳定性及能力的提升。

怎么进行故障复盘

为什么开出的是「复盘」这剂方子?大致来讲,这剂方子可以有以下疗效:

  • 避免出现同样或同类的故障。让出现过的故障处于「可控」又或「收敛」的状态;
  • 从出现的故障中可以提炼、固化一些流程,提升效率的同时,同样或同类也可以避免出现同样的故障;
  • 从「蒙着打」变成「瞄着打」,让我们所有的动作更有目的性,清楚自己的目的是什么。
  • 看清故障背后的问题,找出故障背后真正的原因。
  • 发现解决问题的新思路或者新方法;
  • 更加客观的认清业务当前稳定性的现状,以便寻求最佳的解决办法。

「复盘」这剂药要该怎么服用呢?这剂药服用方法很简单,药品的使用说明上都有写,其实也就四个字母:RASA。

我们再翻看药盒的背面,上面写着有这剂药的禁忌:

  • 该药品需要在病状发作时 2 日内复用,如不及服用,可出现药力减弱甚至出现负作用;
  • 该药品处方药。不可单独 1 人服用。需要在专业医生的指导下使用;
  • 请严格按照「RASA 法」吞服。如使用此药品单个疗程不见效果,请在专业医生指导下反复使用;

那么什么是「RASA」呢?简单点说服用「复盘」这剂药的整个过程。即 Review(回顾),Analyze(分析),Summary(总结),Action(行动) 。来来来,我们来逐一来讲解一下这四步要该怎么走。

Step 1:Review

即回顾故障发生的整个过程。这一步是最简单,但同时也是最重要的。这一步只需要完整的记录下故障的发生、发现、原因定位、决策、处理、预案执行、回滚、故障解决等的关键人与关键时间点。这一点记录一定要尽可能的准确,这一步会直接关系到本次复盘的效果。为了保证信息尽可能的客观、准确,所以需要按照这剂药的禁忌上所写:

  • 故障发生并解决后尽快着手开始复盘,以避免因时间较长出现的偏差。按老军医的建议,最好是在故障出现后两日内完成;
  • 同样为了避免出现信息偏差,建议参与故障处理的相关人员、角色共同参与复盘;

Step 2:Analyze

即分析故障的根本原因及故障处理过程中可以优化点。这一步需要本着抽丝剥茧、根因分析(RootCause)原则来进行开展。这个过程大概可以分成

  • 故障的原因是什么?
  • 再往下想一层,这个故障发生是因为其它原因导致的吗?
  • 再往下想一层,这是故障发生的根本原因吗?如果不是,请继续往下想一层
  • 其次我们还需要分析在处理故障过程中是否有需要优化的点。比如处理时间是否可以缩短?如何缩短?

Step 3:Summary

即总结本次故障及处理故障的过程。简单点说就是,故障进行定性、故障定责及总结本次故障带来的经验教训。

  • 为什么要对故障进行定性?简单点说有以下几个方面:
  • A. 通过故障定性,评估对业务带来的影响、损失及范围;
  • B. 通过故障定性,我们可以更加有序、科学的投入不同程度的资源来解决不同级别的问题;
  • C. 跳出本次故障本身,更抽象性的看待同级别、不同级别故障的共性或差异,以期更加系统化的解决有普实性的共性问题;
  • 故障定责这个就比较清晰了。即谁或哪个团队对本次故障负主要责任及次要责任。做到边界清晰、权责对等;
  • 由本次故障带来了哪些经验教训。包括得失的体会,以及是否有规律性的东西值得思考。
  • 除了上述之外,在总结这一步,还需要完善以下信息:
  • A. 故障的故障发生到最终解决的时长;
  • B. 监控是否发现?
  • C. 是否业务可用性是否受到影响

Step 4:Action

即对上面的分析、总结确定进行后续相关的改进、优化的落地措施。所以制定的动作及措施都需要符合 SMART 原则,即:

  • Specific:即改进项。我们需要改进、优化的单项、指标是什么?
  • Measurable:即验收标准。指定改验收标准是什么?
  • Attainable:即改进项是否可以达到。避免出现一些假大空、无法落地的改进;
  • Relevant:即要与其他改进具有一定的相关性。即尽可能避免出现孤立的改进;
  • Time-bound:即预期解决时间。这个时间建议最长不要超过三个月,避免改进流于形式;

除了 SMART 之外,还需要用 5W1H 原则进行补充:

  • 明确相关改进项的负责人。负责人可以有多个,但主要负责人有且只能有一个。即这个人需要对这个改进项的落地全权负责。当然,这个负责人的指定也需要在权责对等的基础之上。
  • 后续改进项的状态如何?是在准备?进行中?还是完成?

同时,在所有的改进项未关闭前,需要周期性的对后续改进进行跟进、确认。最终改进的结果与验收标准的贴合度,是评价复盘效果最好指标。

实战

某业务在业务高峰期出现异常,导致业务关键指标下跌超过 30%。从表面上来看是业务在高峰期触发了程序的 BUG 导致,修正掉这个 BUG 即可解决问题。

但我们通过复盘发现了该业务基础技术结构耦合过重导致业务自愈能力弱、部分应急响应机制流程缺失、多个业务关键节点存在单点或弱备份等多种较为严重的问题。

后续我们通过多次针对此故障的复盘,并持续更有针对性的进行改进。使得同类型故障从原来的发生到恢复需要 15~30 分钟提升到目前的 1~3 分钟内由程序自愈解决。

总结

我们通过使用故障复盘这把利器,更加系统化的解决业务问题的同时,也提升了整个团队的战争力。当然,故障复盘这剂药虽说是剂猛药,但还是需要坚持服用才能看到明显效果的。

作者简介

胡杨,目前就职于阿里巴巴移动事业群网络运维部。高级运维专家。多年工作于大型互联网领域。对大型互联网运维体系中的容灾体系设计、自动化、性能优化、troubleshoot 等方面有着丰富的经验及独道的见解。


感谢木环对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-03-28 17:255249

评论

发布
暂无评论
发现更多内容

测试开发基础 mvn test | 利用 Maven Surefire Plugin 做测试用例基础执行管理

霍格沃兹测试开发学社

外包程序员的开源 Java 低代码开发平台光 2.3.0 Beta4 版发布,显著提升生成物质量

Java-fenn

Java

接口自动化你不懂?听HttpRunner的作者怎么说

霍格沃兹测试开发学社

测试面试题集锦(三)| 计算机网络和数据库篇(附答案)

霍格沃兹测试开发学社

版本控制神器GitHub的基本使用与踩坑,教你一铲子填平!

霍格沃兹测试开发学社

电商性能测试实战 | JMeter 插件 Ultimate Thread Group 完成梯度递增场景的压测

霍格沃兹测试开发学社

数据持久化技术(Python)的使用

霍格沃兹测试开发学社

BAT 名企大厂做接口自动化如何高效使用 Requests ?

霍格沃兹测试开发学社

Java基础 | 如何用Javadoc Tool写规范正确的java注释

Java-fenn

Java

测试必会 | 通过容器化 Python Web 应用掌握 Docker 容器核心技能

霍格沃兹测试开发学社

测试面试题集锦(二)| 测试工具篇(附答案)

霍格沃兹测试开发学社

Java 函数式编程

Java-fenn

Java

Java毕设项目——超市POS收银管理系统(java+SSM+Maven+Mysql+Jsp)

Java-fenn

Java

构建测试平台与对应的组织架构需要哪些能力? 21/100

霍格沃兹测试开发学社

业务场景抽离,助力测试提效

转转技术团队

飞书项目负责人洪涛:从抖音研发到飞书项目背后的管理经验

B Impact

飞书 飞书项目

跨平台API对接(Python)的使用

霍格沃兹测试开发学社

公排自动滑落模式智能合约dapp系统开发逻辑详情

开发微hkkf5566

测试面试真题 | 从屡次碰壁到成长蜕变,半年拿下某大厂 60W 年薪测试开发 Offer!

霍格沃兹测试开发学社

聊聊后端Web开发框架(Python)的简单使用

霍格沃兹测试开发学社

最流行的接口测试体系,从入门到项目实战

霍格沃兹测试开发学社

测试工程师如何突破职场瓶颈?

霍格沃兹测试开发学社

测试面试真题|工作2年,从小厂到大厂,薪资翻倍是怎样的体验?

霍格沃兹测试开发学社

Github点击破百万!这部《从零开始学架构》神书就此霸榜

Java-fenn

Java 程序员 java面试 Java面试题 Java面试Java面试题

测试面试题集锦(五)| 自动化测试与性能测试篇(附答案)

霍格沃兹测试开发学社

该如何测客户端专项测试?

霍格沃兹测试开发学社

智能遍历测试在回归测试与健壮性测试的应用

霍格沃兹测试开发学社

测试开发基础|一文搞定计算机网络(一)

霍格沃兹测试开发学社

用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告

霍格沃兹测试开发学社

测试开发基础 | 计算机网络篇(二):物理层与数据链路层

霍格沃兹测试开发学社

测试面试题集锦(六)| 软素质篇与反问面试官篇(附答案)

霍格沃兹测试开发学社

提升运维稳定性的利器——故障复盘_语言 & 开发_胡杨_InfoQ精选文章