研发质量指标大 PK:MTTR vs MTBF,谁是靠谱王?

在研发质量管理中,「提高代码/测试质量」更重要,还是「提升故障响应能力」更重要?

LigaAI 最近和一些朋友探讨了这个问题。一种观点认为提升研发质量应该从代码质量抓起——擒贼先擒王,从源头减少故障发生才是根本之道;

另一种声音则指出,生产故障几乎不可能通过预防完全避免,因为「未知」是无法预测的,因此加强监测与反馈机制,快速识别、快速修复才是真正的有效之治。

从管理指标的角度来看,「提升代码质量」意味着研发团队要尽可能提高 MTBF(平均无故障时间),延长系统可持续运行时间,而「提升响应能力」要求尽可能减少 MTTR(平均恢复时间),将系统不可用时间降到最短以最小化故障影响。

温馨提示:研发团队应当先全面讨论系统「服务时间」「可用时间」和「不可用时间」的定义、事件覆盖范围以及故障等级,并在组织内部建立统一的理解,以确保资源和精力花在最重要的事件上。

尽管在实际工作中,「提高 MTBF」和「减少 MTTR」总是齐驱并进,但在不同发展阶段明确二者的优先级,将有助于研发团队高效专注、有的放矢地实现研发效能管理目标。

MTBF 和 MTTR 将如何影响研发效能?我们先从研发质量管理的三个维度说起。

01 研发质量管理的「RAM」

在管理实践中,我们常用「RAM」评估软件交付性能。这里的「RAM」当然不是 Random Access Memory,而是三个用于描述系统服务质量高低的关键维度——可靠性、可用性和可维护性。

1. 可靠性 Reliability

可靠性是指系统无故障运行的能力——哪怕出现软硬件故障、人为错误等问题,系统仍能正常提供正确服务而不发生服务中断的概率。

它与故障率、容错率、避错力、冗余度等紧密相关。常见的软件可靠性度量指标包括可靠度、失效率、MTBF 和 MTTF 等等。

2. 可用性 Availability

可用性是指在一定时间内,系统能够持续且正确提供符合期望水准的服务而不发生故障和中断的概率,通常用 SLA(Service Level Agreement,服务级别协议)来表示。

系统可用性(或称可用度)可以用系统可用时间占总服务时间的百分比计算得出,即

3. 可维护性 Maintainability

可维护性包含可修复性和可改进性两个方面。前者是指在系统发生故障后,不同人员高效修复故障,使之恢复正常运行状态的难易程度,而后者表示当需求或环境变化时,系统接受功能改进或增加新功能的可能性。

可靠性和可用性都可以展示系统的持续服务能力。区别在于,可用性更加关注系统服务的总体持续时间,而可靠性侧重于描述系统的抗故障能力。《分布式系统原理与范型》为区分可靠性和可用性提供了一个非常直观的例子:

如果系统在每小时崩溃 1 ms,那么它的可用性就超过 99.9999%,但是它还是高度不可靠。与之类似,如果一个系统从来不崩溃,但是每年要停机两星期,那么它是高度可靠的,但是可用性只有 96%。

02 如何确定 MTBF 和 MTTR 的优先级?

对于不同组织或者同一组织的不同发展阶段,提升研发质量的有效手段很可能截然不同。那么,是否存在某种范式,可以帮助研发团队科学精准地确定 MTBF 和 MTTR 的管理优先级?

前面提到,可用性的计算公式可表示为系统可用时间占总服务时间的比重,即 MTBF / (MTBF + MTTR)。简单变形后,便可以获得以下关系式:

① MTBF = 可用性 * MTTR / (1 - 可用性)

② MTTR = MTBF / 可用性 - MTBF

对于已知的 MTBF 或 MTTR 值,研发团队可以结合系统可用性增长目标,计算出团队故障恢复能力或系统平均无故障时间的所处水平,并了解量化指标的预期增量。

举个例子。已知研发团队恢复一个故障的平均耗时为一个小时,如果系统每 9 小时出现一次故障,其可用性就为 90%。如果想将系统的可用性提高至 99%,那么故障频率应降低至每 99 小时(即 4.13 天)一次。

同样的,对于故障频率为每周一次的系统而言,如果研发团队能在 1.7 个小时(等价于 102 分钟)内让系统恢复正常工作,则其可用性便能达到 99%。

根据系统的故障频率以及研发团队的故障恢复水平,管理者可以将可用性提升目标翻译成 MTBF 或 MTTR 的优化目标,将抽象指标具象化,并综合目标实现难度、资源可用情况等明确首要优化对象,精准提升效能。

03 MTTR vs MTBF,谁更胜一筹?

Chad Fowler 认为,对大多数组织或系统而言,优化 MTTR 比增加 MTBF 更加有效。DORA 指标同样将 MTTR 视为影响研发效能和软件交付性能的四大关键指标之一。

一部分原因是软件系统不同于物理设备,其故障偶发性强,因而 MTBF 管理的不可控性较高。而恢复故障的工作流程清晰,操作步骤明确,可干预程度高;研发团队可以对各环节展开精细化管理,轻松、高效地达成 MTTR 优化目标。

研发团队可以使用敏捷开发方法、自动化监测和预警工具、自动化部署工具、灰度发布、A/B 测试等,缩短 MTTD、MTTA、MTTI、MTTR(Mean Time To Repair)等时间,以快速识别、定位和修复故障,快速上线。

不仅如此,Sidu Ponnappa 还指出,MTTR 是弥合业务与技术理解鸿沟的关键。它可以帮助企业更好地理解技术团队与研发工作,还可以帮助技术领导者识别系统的薄弱环节以及需要关注的对象,是衡量组织弹性、团队结构和整体健康状况的有力指标。想要改进 MTTR,研发团队必须构建正确的知识,改进质量控制实践,并重视内外部的沟通。

# LigaAI 总结

可靠性、可用性和可维护性是评估研发质量的三大维度,其中可用性可以用 MTBF / (MTBF + MTTR) 计算得出。

在研发管理实践中,优化 MTTR,提高故障响应能力更具指导意义。研发团队可以结合敏捷开发方法、自动化工具等,建立高度自动化的监测、反馈、测试、部署流程,实现高速提效。


LigaAI@CSDN还将分享更多研发效能度量、研发管理实践等干货内容,欢迎关注我们。

LigaAI 助力开发者扬帆远航,点击体验新一代智能研发协作,一起变大变强!

相关推荐

研发团队的「技术债」如何进行量化管理?

技术债或许是所有研发团队都难以避开的课题。面对不可避免的技术债务,我们又该如何科学、恰当地管理和控制它?

LigaAI的博客 1593

技术分享 | SpringBoot 流式输出时,正常输出后为何突然报错?

最近在一个 SpringBoot 项目中遇到了一个很有意思的问题:正常通过过滤器和拦截器的线程变量,在正常输出后突然报错。这是咋回事?

LigaAI的博客 2280

用 MVP(最小可行性产品) 做低成本快速验证,为什么不灵了?| Liga译文

有数据称,九成的初创公司在成立五年内将走向失败。难道号称能快速验证市场的 MVP(最小可行性产品)失效了吗?

LigaAI的博客 1303

技术分享 | 弹窗开发中,如何使用 Hook 封装 el-dialog?

本文将分享如何使用 useDialog Hook 封装 el-dialog,实现更灵活、更易用的弹窗组件。

LigaAI的博客 1508

LigaAI x 极狐GitLab,共探 AI 时代研发提效新范式

LigaAI 和极狐GitLab 达成战略合作,联手打造 AI 赋能的一站式研发效能解决方案,共探 AI 时代研发效能新范式。

LigaAI的博客 1403

精彩回顾 | 「AI 驱动增长,研发数智化升级」分享沙龙成功举办

AI 应用元年,人工智能技术将如何助力企业发展新质生产力,构建增长动能?

LigaAI的博客 847

LigaAI 的 8 个年度关键词 | 2023 年度盘点

一起盘点回顾 2023 年的精彩文章!

LigaAI的博客 1241

我的效率自救之路:对低效的会议说“不!”

如果你也陷入了「会议 - 效率」悖论怪圈,一定不要错过这篇经验分享!

LigaAI的博客 1218

宁波银行:在「金融科技」引擎上,沉浸式提效减负

金融科技企业如何利用有限的研发资源,发挥更高的能效,创造更高的商业价值?

LigaAI的博客 1353

ChatGPT API 调用总超时?破题思路在这 | 技术分享

本文使用 monkey_patch 方式重写 API 参数,解决 ChatGPT API 调用超时问题。

LigaAI的博客 2088

技术分享 | 在 IDE 插件开发中接入 JCEF 框架

本文分享如何用 JCEF 框架解决 IDE 插件开发中“代码难复用”、“用户体验难统一”等问题,释放研发资源。

LigaAI的博客 3672

准「AI 时代」下,如何衡量程序员的工作效率和生产力?

都夸 AIGC 好,说 AI 工具可以提高工作效率,但是你真的知道如何判断和衡量 AI 工具对组织的影响吗?

LigaAI的博客 871

SaaS 出海,如何搭建国际化服务体系?(三)

SaaS 企业出海,跨国、跨时区的异步团队如何展开高效的协作与工作?

LigaAI的博客 516

SaaS 出海,如何搭建国际化服务体系?(二)

SaaS 出海潮下,不同规模的企业如何搭建并落地国际化服务团队?

LigaAI的博客 540

SaaS 出海,如何搭建国际化服务体系?(一)

SaaS出海潮下,一个主要由中国人构成的团队在推进海外产品落地的过程中,可能会遇到哪些困难?

LigaAI的博客 619

生成式 AI 如何释放开发者的生产力?

技术管理者有望通过 AIGC 应用,大幅缩短四类关键开发任务的完成时间,进而提升组织生产力。

LigaAI的博客 612

新晋技术管理者如何推动组织变革?

技术管理者通过系统流程、行为和奖励三个重要工具,能够积极推动组织变革,优化团队工作方式,并改善成员评估体系。

LigaAI的博客 419

向上管理:三个技巧,教会你如何与上级、老板高效协作

向上管理是什么?刻板印象中,它总与“职场政治”、“拍马屁”、“奸逆之臣”密不可分,但本文将向你展示向上管理的全新打开方式:领导资源化。

LigaAI的博客 667

如何提高技术领导力?与你分享 5 个心得

「如何培养和提高技术领导力」是开发者成长旅程中最重要的命题之一。无论你想成为技术专家,还是技术管理者,都能从本文获得可复制的实践经验。

LigaAI的博客 1064

产品路线图如何制定?斯坦福大学产品管理课程为你支招

一个合格的产品路线图依赖哪些输入?需要输出哪些信息? 本文将与你分享,笔者在斯坦福大学产品管理课程中习得的路线图管理方法。

LigaAI的博客 533

「程序员转型技术管理」必修的 10 个能力提升方向

本文将为有意走向技术管理的开发者们,提供 10 条具象的成长和转型建议,但别忘了,技术管理转型并不是开发者的唯一出路。

LigaAI的博客 583

产品管理经验分享:删掉 500 个产品待办事项后,我逃离了「假敏捷」

灵魂三问:你的产品待办列表中有多少项工作? 最早的一项在什么时候被创建?列表中有多少维护过但从没进入迭代的待办事项?

LigaAI的博客 336

如何用 NPS 确定研发优先级,打破技术与业务的次元壁?

VUCA 时代下,研发团队应当如何培养、平衡客户视角与商业视角,专注于价值交付,避免陷入「僵尸 Scrum」困境?

LigaAI的博客 402

这 4 个系统可靠性评估指标,可能比 MTTR 更靠谱!

VOID研究报告指出,对复杂的软件系统而言,MTTR 可能不是一个合适的可靠性管理指标。这是怎么回事?

LigaAI的博客 515

LigaAI:从效率、度量和价值维度,成为研发团队的智能医生

「拿不到团队数据」和「无法衡量研发价值」是困扰千万研发团队的难题,LigaAI 将以 AI 为矛,打破定式,以全新的方式赋能研发管理。

LigaAI的博客 442

高绩效团队的 5 个优秀习惯,看看你占了几个?

卓越的团队不一定在才能、技术或者机会上比别的团队更具优势,但是好的工作习惯和工作方式一定会让他们脱颖而出。

LigaAI的博客 351

介绍 9 个研发质量度量指标

研发质量度量指标中的 MTTR、MTBF、MTTF、MTTD、MTRS 都是什么?今天一次性讲清楚!

LigaAI的博客 1783

3 个技巧,让你像技术专家一样解决编码问题

于开发者而言,比学习语法更重要的,是用代码解决实际问题。本文从技术专家解决问题的技巧出发,提出了三个帮助开发者提升复杂问题解决能力的方法。

LigaAI的博客 904

ChatGPT 之后,B 端产品设计会迎来颠覆式革命吗?| Liga妙谈

ChatGPT 掀起了国内的大模型革命,当一部分先行者正在努力探索中国 LLM 的形态,LigaAI 关心起了 GPT 类人工智能在 B 端产品的落地与影响。

LigaAI的博客 1691

技术分享 | 如何编写同时兼容 Vue2 和 Vue3 的代码?

资深前端倾情分享:如何实现同时兼容 Vue2 与 Vue3 的代码?业务实践中有哪些代码精简和优化的小技巧?

LigaAI的博客 1636
上一篇: 介绍 9 个研发质量度量指标
下一篇: 高绩效团队的 5 个优秀习惯,看看你占了几个?
LigaAI
LigaAI 企业官方账号 企业官方账号
博客等级 码龄6年 258粉丝 85原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值