AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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

  • 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:255139

评论

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

2023淘宝天猫金婴奖公布,小度学习机获年度超级新品奖!

科技热闻

阿里内部教材:15W字的SpringCloud微服务实战,我一口气给你打包

做梦都在改BUG

Java 架构 微服务 Spring Cloud

GitHub发布即百万!字节内网超实用 java性能优化手册,star超十万

Java你猿哥

Java JVM ssm Java性能调优 java程序优化

Last Week in Milvus

Zilliz

Milvus Zilliz 向量数据库

软件测试丨Pytest学习笔记-Mark标记、Skip跳过、xFail预期失败

测试人

软件测试 自动化测试 测试开发 pytest

Go_Gin之初体验

神木鼎

golang 日更 gin框架

用scrum敏捷工具做敏捷需求管理

顿顿顿

Scrum 敏捷开发 敏捷项目管理 看板工具

哪些技术有可能坐上智慧城市发展的快车

Onegun

智慧城市 小程序容器 数字城市

跨平台的Markdown编辑器:Typora for Mac中文版

真大的脸盆

做客《创新之路》,Tapdata 创始人唐建法对话央视著名主持人李雨霏,畅聊创业故事

tapdata

Spring Boot如何优雅提高接口数据安全性

做梦都在改BUG

Java spring Spring Boot

如何解决注册并发问题并提高QPS

北桥苏

队列 并发 Redis 核心技术与实战

GPT:低代码的终局性机遇

小博

人工智能 低代码 PaaS GPT

小程序的安全架构解析

Onegun

小程序 安全 小程序容器 小程序架构

WebSocket与Socket、TCP、HTTP的区别

Apifox

程序员 TCP socket HTTP websocket

头部企业走入无人区,国产数智化厂商挑大梁

用友BIP

NFTScan 开发者平台发布 CU 付费方案,为 Web3 初创团队提供多链 NFT API 服务

NFT Research

NFT #Web3

【活动报名】PolarDB开源数据库&PG中文社区技术沙龙温州站

阿里云数据库开源

数据库 postgresql 阿里云 开源 polarDB

还在分不清各种IO模型?

Java你猿哥

Java Linux io I/O模型 Java IO

如何利用java实现一个布隆过滤器?

做梦都在改BUG

Java 布隆过滤器

大模型竞争白热化 这家广州的科技公司却开辟了新战场

科技热闻

intellij idea 粘贴字符串如何不带换行符?

源字节1号

微信小程序 开源 软件开发 前端开发 后端开发

MLCC龙头涨价;车厂砍单芯片;台积电28nm设备订单全部取消!

元器件秋姐

芯片 汽车 资讯 新能源 MLCC

兼顾可扩展、高并发与数据一致性:咸鱼优惠系统设计实践

Java你猿哥

Java 架构 ssm 架构设计 并发

大开眼界!Jenkins结合SpringCloud+K8S,打通微服一条龙技术讲解

做梦都在改BUG

Java Kubernetes k8s Spring Cloud jenkins

德邦快递:逆境之下,让数字化辅助业务的利润增长

Kyligence

数据分析 数字化管理 指标中台

从GitHub火到头条!共计1658页的Java岗面试核心MCA版,拿走不谢

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

今年互联网是“银二铜三铁四丐五”?程序员面试如何破局?

Java你猿哥

Java 架构 算法 多线程 java面试

全新问世!阿里内藏版的SpringBoot 2.5实战笔记,全面覆盖新特性

做梦都在改BUG

Java spring 微服务 Spring Boot 框架

如何在 Mac 上查看显示刷新率

互联网搬砖工作者

翻遍GitHub帮你总结了一份并发图册+高并发笔记,一次性搞懂并发编程

小小怪下士

Java 程序员 后端 高并发 并发

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