谷歌提出的衡量 DevOps 质量的 DORA 指标让 MTTR(平均恢复时间) 名声大振。在本文中,你将了解到 MTTR 的作用、为什么它对行业研究很有用、你可能被它误导的原因以及如何避免 MTTR 产生的弊端。

MTTR 究竟是在测量什么?

MTTR 指平均恢复时间,既是 Mean Time to Recovery,有时也是 Mean Time to Restore。它是指在发生故障后使系统恢复运行所需的时间,它是 DORA 指标的一部分,目前已经成为软件交付性能的标准。

当你的所有 DORA 指标都表现良好,那么就会拥有快速交付的高质量软件、更满意的员工,从而在所处的行业中取得竞争优势。

如何计算 MTTR

收集 MTTR 需要收集每个故障从开始到结束的持续时间,然后将这些时间相加,并用总数除以数量。一些团队会对所有事件进行排序,并选择中间值来计算恢复时间的中位数。

软件交付过程会影响恢复时间,尤其是:

  • 软件架构
  • 文档
  • 可观测性
  • 部署流水线性能

当你可以快速恢复,事件的影响就会降低,客户也会更满意。因此,企业应该检查和调整流程以快速恢复并降低风险。

为什么 MTTR 对行业研究很有用?

DevOps 研究和评估(DORA)将调查作为研究方法的一部分。需要各类数据和性能水平不同的企业对问题进行回答。DORA quick check 将 MTTR 问题表述为:

对于您开发的主要应用程序或服务,当发生影响用户的服务事件或故障(例如,计划外中断、服务受损)时,通常需要多长时间才能恢复服务?

  • 超过6个月
  • 1-6个月之间
  • 1周到1个月之间
  • 1天到1周之间
  • 小于1天
  • 小于1个小时

大多数从事软件交付工作的人对故障持续时间都有大概的感觉,因此在调查中使用宽泛的选项可以让人们很容易选择答案。研究人员利用这些信息来寻找数据中的性能组,他们还寻找各种实践之间的关系以及对业务成果的影响,并利用这些发现搭建 DevOps 结构方程模型。

为什么 MTTR 数据可能误导你的团队?

虽然 MTTR 在研究中对性能组有帮助,但这并不是你在团队中使用故障信息的方式。你应该利用这些信息从服务中断中学习,并改进今后的处理方式。最终目标并不是与其他团队或组织进行攀比。

如果要持续优化软件开发和交付流程,只关注平均数可能忽略了一些重要信号。因此需要更细化的信息来了解故障处理的情况,并找到其原因。

Verica 事件数据库(VOID)包含了由近600个组织共享的超过10000个事件,他们在 VOID 报告中分析了这些事件。在2022年的报告中对 MTTR 做出如下评论:

MTTR 不是衡量复杂软件系统可靠性的可行指标,原因有很多,其中突出的原因是其存在潜在的差异性。

当数据量很大时,平均数所带来的差异性会变得平缓,但一般而言企业的故障频率不太可能会达到每月数千起(即在这个数量级才使平均数有效)。如果事件数量较少,平均数则成为一个不稳定的指标。甚至尽管在事件管理方面有所改进,但平均数依旧在增加。

VOID 数据库还发现,大多数事件在2小时内得到解决,但存在一些长尾数据导致平均值被推高或推低,进而无法代表客户看待系统可靠性的方式。

组织可以通过排除异常值来消除这种差异性,但那样就会隐藏一些有价值的信息。因此需要一个更好的方法使用这些数据来改善整个流程。

恢复时长的用武之地

与其把事件恢复时间压缩成一个平均数,不如把每个持续时间绘制在图表上。使用散点图或箱线图(Box-and-whisker chart),在不失真实性的情况下将持续时间可视化。这可以显示趋势和异常值,这比平均数更有价值。

你现在可以清晰地了解修复时长的趋势,看看是否随着时间的推移而改善。还可以识别出异常值,并充分讨论如何更好地处理它们,进而利用它们来改善事件管理和系统稳定性。

如果事件需要代码修复,恢复时间取决于部署流水线的性能。能够快速、安全地部署软件新版本也有助于进行事件管理。另外,引入监控和告警工具有助于帮助企业在影响客户之前发现问题。

明确事件的定义

要获取大部分事件持续时间的数据,你需要对此有统一的定义:

  • 什么是事件
  • 什么是开始时间
  • 什么是结束时间

对于事件,企业内部需要有一个清晰、一致的定义。它应该包括当系统可以优雅地处理一个故障时,组织是否将其算作一个事件。例如,团队可以认为只有对客户产生影响的故障才是事件。

对于开始时间和结束时间也是一样的。是在导致事件发生的条件首次出现时开始计时,还是在问题对客户可见时开始计时?根据定义,甚至可能出现负的事件持续时间,即在故障影响到客户之前就解决了它。

就事件的定义和如何衡量其持续时间达成一致,使你的衡量标准更具可比性。当长期使用 DORA 指标时,它们可能不再能激发你进行下一步改进。你可以用 SPACE 框架设计一个新的衡量系统。

使用 SPACE 框架来衡量事件响应

你可以通过 SPACE 框架来全面了解事件响应和管理,其将测量结果分为5个类别:

  • 满意度和幸福感(Satisfaction and wellbeing)
  • 表现(Performance)
  • 活跃度(Activity)
  • 沟通与协作(Communication and collaboration)
  • 效率与流程(Efficiency and flow)

企业不必一次性采用所有指标。SPACE 框架建议至少在3个维度上进行测量,如果能涵盖个人、团队和系统层面则更好。最终目标是建议一套合理的测量方法来帮助企业改进流程。

满意度和幸福感

定性调查在这里最有效,可以调查事件管理者,看他们对事件发生后恢复的满意程度:

  • 事件管理流程
  • On-call 排期
  • 在事件发生期间升级或访问专家以提供帮助的难易程度

还可以去查看相关数据以确定 On-call 排期的合理性:

  • 当地时间几点电话响起

表现

使用以下指标可以衡量事件管理表现:

  • 系统是否按照其可靠性目标执行
  • 事故条件和察觉到事故发生之前的时长
  • 解决事故所需的时间

活跃度

事件活跃度并不仅仅是事件数量,其他指标也可以纳入参考。大部分数据其实已经在你的现有系统之中:

  • 监控工具发出的告警数量
  • 事件发生的数量
  • 同时发生事件的数量

沟通与协作

信息透明对事件管理至关重要。你应该把这个维度纳入事件测量策略中。拥有高质量的沟通将减少解决故障所需的时间,可以衡量以下指标:

  • 每个事件所牵涉的人员数量
  • 每个事件涉及多少个不同的团队
  • 为处理一个事件建群的数量
  • 查看事件报告的次数(或给予积极评价,或在其他事件中提到它)

效率及流程

当采用效率和流程的指标时,就会发现系统中的浪费。如果反复“踢皮球”,那么处理事件的进度就会停滞不前,解决时间更长。以下指标可以帮你发现瘟疫:

  • 重新分配事件的频率
  • 每个事件尝试缓解的次数

SPACE 框架总结

当需要获得各种洞察并改进系统时,团队应该自由构建并根据实际情况调整指标。企业可能会发现从满意度、沟通和效率这3类指标开始是有帮助的,因为通过测量这些指标并对相关情况进行优化会带来立竿见影的效果。

如果你已经对客户进行调查,不妨问问他们如何为你的系统可靠性评分。

SPACE 框架提供了一种构建衡量体系的方法,它可以直接对事件管理产生影响。

不囿于数字,解决问题才是硬道理

衡量相关指标可以通过明确的数据来帮助团队做出调整。如果没有数字,可能会把一个实际发生很频繁的事件当作一次性事件处理。

尽管数字发挥了作用,但它们只能告诉你问题所在,而无法解决它。因此,不要囿于数字,充分利用事件复盘和 review 来研究如何优化企业中的事件管理。

数字并不能推动持续改进,但它可以消除讨论中的偏见和逻辑谬误,以帮助团队处理好眼前的现实问题。

团队应该形成在事件发生后立刻对其进行复盘,以防止回归到日常工作之后缺少了上下文环境而无法正确分析出事件发生的原因。

对于根本原因的分析要谨慎,因为软件系统发生事故很少只有单一的原因,它通常是几个因素共同促成的。根本原因分析侧重于最接近事件的人,而不是更广泛的系统性问题。另外,需要进行事件后的 review,详细说明发生的一切以及您为减轻和解决它所做的工作。

事件复盘的成果可以提供给处理未来事件的人使用,有助于缩短解决时间。

安全是吸取事故教训的能力,而不是没有故障,事故复盘是最佳的学习机会。
—— Adrian Cockcroft

导致事故发生的原因从来不是单个员工,而是整个工作系统。如果有人登录服务器,不小心选择了“关闭”而不是“登出”导致服务器关闭,这本质上是系统的故障——为什么不隐藏“关闭”选项?为什么他们需要直接访问服务器?我们可以用 runbook 来做这个吗?

定期 review 来复盘最近的事件,可以在冷静理智的情况下找到模式并思考改进方式。从事件中学习比围绕恢复时间制定目标更重要。

参考链接:
https://octopus.com/blog/how-to-measure-mean-time-to-resolve

如何科学地利用MTTR优化软件交付流程?相关推荐

  1. 价值流映射法_通过价值流映射优化软件交付的6个步骤

    价值流映射法 由于混乱和过多的辩论,您在改善软件开发方面的努力是否会失败? 您的组织是否对可以实现的目标有清晰的了解,并且确定要朝正确的方向发展吗? 您能确定到目前为止已实现多少业务价值吗? 您知道过 ...

  2. DevOps笔记-01:软件交付面临的问题、软件工程的三个发展阶段、什么是DevOps?

    目录 1.软件交付面临的问题 2.软件工程的三个发展阶段 3.什么是DevOps? 4.总结 1.目前软件交付面临的问题 (1)跨部门沟通成本高:团队间沟通和协作的重要性一点也不亚于写代码.写文档.做 ...

  3. 浅析SaaS软件和传统软件交付模式的区别

    互联网圈的小伙伴们都知道,"SaaS"一词在云市场以及互联网媒体平台频繁的出现,我们只知道"SaaS"是Software-as-a-Service(软件即服务) ...

  4. 如何通过第三方工具维护计算机,无需第三方优化软件利用电脑自身维护功能优化系统...

    原标题:无需第三方优化软件利用电脑自身维护功能优化系统 电脑使用久了,开机缓慢.运行卡顿是常见的事,这时我们就会想着对电脑进行一些优化加速设置.很多用户会选择使用第三方的优化软件,如"XX管 ...

  5. 《企业软件交付:敏捷与高效管理精要》——1.5 对企业软件交付的需求是如何演变的呢...

    1.5 对企业软件交付的需求是如何演变的呢 对企业软件系统的交付来说,一个非常重要的转变是由几个相辅相成的因素推动的. 最终用户的期望.最终用户要求获得更及时的同步信息,要随处.随时.无需停机.这种访 ...

  6. 利用 k8s 建立软件商店_为企业建立应用商店

    利用 k8s 建立软件商店 It's June 2019. I'm sitting in a conference room in Research Triangle Park in North Ca ...

  7. 3G无线网络对规划优化软件技术分析(转)

    一个全面的.具有多种技术以及用户友好界面的网络规划和优化软件,在移动运营商的无线网络规划及设计过程中起着举足轻重的作用.该软件不仅要具有强大的工程建设能力,而且应是一个开放的.可升级的和灵活的技术信息 ...

  8. seo关键词互点软件报价_seo关键词优化软件如何收费

    seo关键xaa0c1词优化软件如何收费,随着现代化信息技术的发展,人们越来越多的从网络来获取信息.近年来,我们获取的信息绝大部分都是来源于网络,网络如今已成为信息的最大载体.为了让更多消费者了解并消 ...

  9. 奇奇seo优化软件_seo优化软件如何选择

    如何选择sxaa0c1eo优化软件,随着现代化信息技术的发展,人们越来越多的从网络来获取信息.近年来,我们获取的信息绝大部分都是来源于网络,网络如今已成为信息的最大载体.为了让更多消费者了解并消费企业 ...

最新文章

  1. java 计算两个日期之间的天数_Java日期时间API系列22-----Jdk8Month月份和DayOfWeek星期的计算。...
  2. 使用 Redis 实现分布式速率限制
  3. 用PC端Chrome浏览器进行模拟微信浏览器的开发
  4. java redis 多节点,Redis单机多节点集群部署,超简单
  5. MySQL下实现先排序后分组查询(问题记录)
  6. MySQL---主从复制
  7. python读取txt文件存储数组_python – 从文本文件中将数据读入numpy数组
  8. java bean 动作标签_jsp:javabean动作标签实例
  9. 机器学习入门:线性回归及梯度下降(附matlab代码)
  10. Java架构师成长之道之Java数据存储
  11. 应用SqlParameter防止注入式攻击,打开主窗体关闭登录窗体
  12. 修改本地的hosts文件配置域名
  13. S7-200SMART编程软件在符号绝对模式下变量符号名显示不全的解决办法
  14. oracle查询怎样更效率,Oracle提高查询效率的方法
  15. linux drupal 7安装教程,drupal7|drupal 7(建站开发工具)下载附安装教程 - 欧普软件下载...
  16. CUBA Platform系列:自定义可视化组件
  17. 原生JS实现弹幕效果
  18. qml创建无边框带阴影的模态窗口
  19. oracle数据库有哪些权限,ORACLE数据库中权限有哪些?
  20. 【100%通过率】华为OD机试真题 Java 实现【预订酒店】【2022.11 Q4 新题】

热门文章

  1. 路径规划之PRMRRT类算法分析
  2. 使用rEFInd来引导多个操作系统
  3. 什么样的代码最能代表程序员的暴力美学?
  4. 2023/7/20 day9
  5. 读书笔记-精准努力-丢掉幻想准备斗争面对现实解决问题
  6. 只知道SQL数据库?又一国产数据库语言诞生了
  7. 韩老师设计模式1:7原则。依赖关系3种方法。UML类图6关系。
  8. 译:Microsoft/ReactXP 简介
  9. Unity 锚点 Anchors
  10. B6充电器对6s锂电池充电