原文出处
https://stelligent.com/2018/12/21/measuring-devops-success-with-four-key-metrics/
译文
在 Forsgren 著作的 Accelerate 书中,包括其他人,他们描述了四项关键的软件交付指标:
- Lead time for changes - 交货时间
- Deployment frequency - 部署频率
- Time to restore service - 服务恢复时间
- Change failure rate - 变更失败率
Stelligent 这么多年以来,我们一直使用很多指标并辩论哪些对我们客户是最好的。因此,最后终于有一个非常有益的和具有权威的标准进行统一这些相关的指标并让数据与分析来解决各组织机构所关心的问题 - 如果没有其它理由,就不要花太多时间在争论哪些指标更好. 幸运的是,比草草结束争论更有价值的事物产生了。只关注这些指标也可以使用目标测量来决定他们所做的变更是否对企业有实际的影响并用来加强公司的工作效率。
当我们谈论 DevOps 对公司的收益时,我们关注用户需求与工程师之间进行保证问题解决的速度与用户对问题保持反馈的信心。示例如下:
DevOps 加快生产的交付与信心 |
这个加速的结果表明了一些形式:更快的生产交货时间,增加了生产发布的频率,更快的恢复时间,与减少了生产发布错误的比率。
最后,DevOps 是任何组织的流程,文化,或工具的变更来加快交付效率与反馈信心,不停的从用户与工程师之间进行这种循环。
在此篇中,我会更详细的来描述这四项指标,同时会提供一些你可能使用 AWS 本地服务来获取的这些指标,比如: AWS CodePipeline. 记住,你甚至也可以调查你的团队来获取这些数据. 从我们的经验看,人们会对这些存在一些误解(他们实际部署的频率如何或他们交货时间如何)。因此,你需要增大这些数据才能有帮助,你可以使用持续交付或其它工具来获取更精确的结果进行分析当使用这四项指标时,团队的表现是怎样的。甚至更重要的是有一个持续一致的方式来查看这些指标的趋势而不是实际的数字。就像我们一直说的,我们需要看到这些趋势在不断的提高。
部署频率(Deployment frequency)
在 Accelerate
中,作者们表明 “因此,我们把部署频率定义为批次大小的代理,因为可以简单的来测量典型的低变化情况. 所谓的”部署”我们指的是一个软件发布到生产或者到 App Store.” 生产部署频率的重要理由是因为我们告诉你交付到终端用户的某种价值或获取到的用户反馈又多频繁。
这些指标的要素均是基于生产(Production),而不是预生产(Staging)等环境. 生产是唯一我们需要关心的因为只有在生产中价值才能体现出来. 价值的体现通常来源于收益的形式,反馈,或两者的结合。
根据 AWS
原生的方式,我们可以根据时间来获取这个数字,如:哪一个 CodePipeline
在最后一步成功完成并跟踪每段时间有多少次部署在生产发生。
根据 DORA 2018
的报告,Elite
级别的实践者的部署频率每天有多次,而 Low
级别的实践者的部署频率在 1周
与 1月
之间。
交货时间(Lead time for changes)
在书中,他们描述到交货时间是 “从代码提交到成功生产运行所花的时间”
你可以按抓取时间的方式来获取这个指标 - 当每个版本被 CodePipeline 初始化然后每步的更新直到同一版本部署最后一步成功运行,根据比较这些数字,你可以获取交货时间. 根据一段时间对这些数字进行平均化,你可以得到生产平均的交货时间。
根据 DORA 2018
的报告,Elite
级别的实践者的交货时间在小于 1小时
,而Low
级别的实践者的交货时间在 1个月 ~ 6个月
恢复时间(Time to restore service)
恢复服务的时间或者恢复的平均时间(MTTR)指标计算的是恢复服务所花的平均时间.
变更失败率(Change failure rate)
变更失败率是测量生产环境部署失败发生的频率并立刻采取补救措施(特殊性,回滚)。
为了从 AWS 原生方式中获取这些信息,你可以跟踪每次部署并监听它是否成功。然后,你再计算生产环境过去成功的部署与不成功之间的比值。
根据 DORA 2018
的报告,Elite
级别实践者的变更失败率保持在 0-15%
之间,而 Low
级别实践者保持在 46-60%
之间。
持续改进(Continuous Improvement)
总结
性能指标 | Elite | High | Medium | Low |
---|---|---|---|---|
部署频率 | 每天多次部署 | 每小时一次与每天一次之间 | 每周一次与每月一次之间 | 每周一次与每月一次之间 |
交货时间 | 低于一小时 | 一天与一周之间 | 一周与一个月之间 | 一个月与六个月之间 |
平均恢复时间 | 低于一小时 | 低于一天 | 低于一天 | 一周与一个月之间 |
变更失败率 | 0-15% | 0-15% | 0-15% | 46-60% |