如何在 15 分钟内度量 DORA 指标?

news2025/1/14 2:23:02

在这篇文章中,我们将介绍 DevOps 四个关键指标——DORA 指标是什么,其度量难点,以及如何基于开源工具快速实现 DORA 指标的持续追踪。如果你熟悉 DORA 指标,可以直接跳到本文第二部分。

什么是 DORA 指标?

DORA 的全称是 DevOps Research and Assessment,是一个致力于 DevOps 调研与研究的组织,2018 年加入 Google Cloud。自 2014 年起,DORA 每年会发布一份行业报告,基于对数千名从业者的调研,分析高效能团队与低效能团队在 DevOps 实践上的差异。

高效能团队如何定义?可能每个人、每个组织都有不同见解。DORA 的做法是将研发团队表现分为三个方面:软件交付表现、运行稳定性表现和组织业绩表现。在软件交付表现方面,提炼出四个关键的结果性指标进行概括,这就是著名的 DORA 指标。DORA 指标包括

  • 部署频率(Deployment Frequency):一段时间内应用程序部署到生产中的次数,代表研发团队交付价值的频率
  • 变更交付周期(Lead Time for Changes):从代码提交到将代码部署到生产中的时长,代表团队进行代码评审、测试和部署的速度,也部分反映了团队响应用户需求的速度
  • 变更失败率(Change Failure Rate):变更部署到生产后发生故障、导致服务降级的比例,代表团队交付稳定服务的能力
  • 服务恢复时间(Time to Restore Service):生产环境中发生故障到服务恢复的时间,代表团队快速监测、定位、诊断故障,并从故障中快速恢复的能力

在以上四个指标中,部署频率和变更交付周期指标主要度量的是 DevOps 交付表现中的产能维度(Throughput),而变更失败率和服务恢复时间指标主要度量的是稳定性维度(Stablity)。

同时度量产能与稳定性,一方面能使二者相互制衡,避免大量低质量变更损害用户体验,或避免严守质量拖累交付效率;另一方面,验证优秀的实践能够同时改善产能与稳定性,而不需要研发团队做出取舍,例如小批次的发布策略不仅直接提高部署频率,一旦故障发生也能快速定位,有利于缩短服务恢复时间。

DORA 指标如何指导具体的实践改进?DORA 调研报告贴心地提供了一系列基准值,分为精英团队(Elite)、高效能团队(High)、中等效能团队(Medium)和低效能团队(Low)。研发团队可以参考业界水平对号入座,从而找到最关键的改进项。在改进的同时,团队可以持续度量 DORA 指标,验证改进措施的有效性。

2021年DORA报告中的各级别团队表现

度量 DORA 指标,难在哪?

DORA 指标并不是什么新鲜事物,指标只有四个,公式也非常简单明了。但对于许多研发团队来说,要在日常工作中持续自动化地度量 DORA 指标,依然难度不小。

困难在于,DORA 指标度量依赖于变更、部署、故障等研发数据,而许多研发团队并没有获取研发数据的可靠基础设施。原因在于:

首先,研发过程本身是复杂的,通常涉及多个流程、活动和工具,研发过程数据也常常散落在复杂的工具链中(包括代码托管、事务管理、CI/CD 工具等),导致数据难以提取,耗时费力。如果研发团队同时使用同类型的多个研发工具,可能还需要处理不一致的数据概念,比如同时使用 GitHub 和 GitLab 的团队,就需要统一 Pull Request 和 Merge Request 两个概念。

其次,不同的组织和项目的研发和交付过程不同,可能会采用不同的数据定义和计算方法。比如,有的团队使用 Git Tag 或某特定分支的合并来识别一次部署,有的团队使用 CI/CD 工具中的事件来识别一次部署。这样非标准化的定义与计算方法,也使得研发数据难以治理,进而给数据的可靠性打了一个问号。

市面上 DORA 指标工具之多,也从侧面印证了这仅仅四个指标的度量并非易事。如果某个团队考虑度量 DORA ,他们可能需要对比市面上的数十个工具,眼花缭乱中找到恰好能接入当前研发工具链,恰好变更、部署、故障的定义均符合团队实践的那一个。

数据源和指标计算方式各有差异,导致市面上的DORA度量工具多而分散

这也正是我们建设并开源了研发数据平台 Apache DevLake 的原因。我们认为,无论是研发工具链的接入以及研发数据的定义,都应当保留一定程度的开放和灵活性。团队根据实际需求收集并治理研发数据,保障数据可靠,在此基础上度量 DORA 指标,并获得有价值的改进洞见。

开源的模式降低了研发数据的治理成本,同时也吸引更多团队参与建设,不断丰富可接入的数据源和数据计算方法,让平台越用越好用。

基于 Apache DevLake 快速度量 DORA 指标

正如上文所说,度量 DORA 指标前,你需要先拿到三个研发数据:

  • 变更:大多数团队是通过 Pull Requet 来识别一次变更,因此变更的数据将来自代码托管工具,DevLake目前已支持 GitHub、GitLab 和 BitBucket
  • 部署:部署的数据来自 CI/CD工具。DevLake 目前已支持 Jenkins、GitHub Actions 和 GitLab CI,CircleCI 正在开发中
  • 故障:故障的数据可以来自事务管理工具中的某类型事务,例如 Crash或 Incident;也可以直接来自监控工具,DevLake 将很快支持 PagerDuty 和 Sentry

除了手动触发数据收集,DevLake 也支持自动定时拉取研发数据,方便研发团队低门槛地使用 DORA 指标,持续追踪效能表现。

如果 DevLake 尚未支持你的研发工具,你依然可以使用 webhook 将事件数据推送到 DevLake。

接下来,只需四步,就可以在 DevLake 中看到 DORA 指标和数据看板:

  1. 配置 DevLake:使用 Docker Compose、Kubernetes、Helm 或 Temporal
  2. 收集数据:借助 DevLake 插件接入研发工具链,不需要复杂的集成与适配,就可以把需求、开发、测试、交付各个环节研发数据归于一处
  3. 数据看板开箱即用:DevLake 预置了许多指标数据看板并通过 Grafana 来呈现,其中包括 DORA 指标和相应看板
  4. 自定义:如果你还需要进一步分析,例如探查某个 DORA 指标异常的原因,只需要几行 SQL 查询就可以创建新的指标或数据看板

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117669.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设备树的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、设备树的概念?二、设备树的作用三、如何使用设备树1.设备树的位置2.设备树的语法认识DTC、DTS、DTSI、DTB设备节点信息3.添加自己的设备树节点4.…

STM32MP157驱动开发——SPI驱动

STM32MP157驱动开发——SPI驱动一、简介1.SPI介绍2.STM32MP1 SPI介绍3. ICM-20608 简介4.Linux下的SPI框架二、驱动开发1)IO 的 pinctrl 子节点创建与修改2)SPI 设备节点的创建与修改3)ICM20608驱动4)测试App5)运行测试…

【分享】订阅用友U8集简云连接器同步费用审批数据至用友U8系统

方案简介 集简云通过与钉钉连接平台深度融合,实现OA审批通过后,将采购、报销、收款、售后等费用审批单数据自动同步至用友U8系统,大大提高了企业日常采购、报销、付款等的工作效率,实现企业业务流程的自动化,为企业降…

Docker的数据管理

目录 一、数据卷 二、数据卷容器 三、容器互联 容器中管理数据主要有两种方式: 数据卷(Data Volumes)数据卷容器(Data Volume Dontainers) 一、数据卷 数据卷是一个供容器使用的特殊目录,位于容器中。可…

5点电容式触摸屏控制芯片GT811介绍

5点电容式触摸屏控制芯片GT811简介 5点电容式触摸屏控制芯片GT811,采用投射式电容检测原理,由16个驱动通道与10个感应通道组成触摸检测网络,通过内置模拟放大电路、数字运算模块,及高性能MPU得到实时准确的触摸信息,并…

rocketmq安装

链接:https://pan.baidu.com/s/14ziQH62MeYmM8N6JsH5RcA 提取码:yyds 下载rocketmq-all-4.9.3-bin-release.zip 下载、修改配置 mkdir -p /app/rocketmq cd /app/rocketmqunzip rocketmq-all-4.9.3-bin-release.zip cd rocketmq-4.9.3/修改 配置文件&…

F28335第十六篇——Flash操作

文章目录前言配置方法擦除函数编写和校验函数前言 本文主要介绍如何对DSP28335进行Flash操作。 本文主要参考资料: TI.Flash2833x_API_Readme DSP的Flash操作需要借助官方提供API。官方提供的API主要完成Flash的擦除,编写,校验三种功能。…

八、Java 15 新特性

八、Java 15 新特性 JDK 15 在 2020 年 9 月 15 号正式发布了!根据发布的规划,这次发布的 JDK 15 将是一个短期的过度版,只会被 Oracle 支持(维护)6 个月,直到明年 3 月的 JDK 16 发布此版本将停止维护。而…

VUE3-生命周期钩子《六》

目录 1.onMounted() 2.onUpdated() 生命周期的作用,页面加载的时候,主动执行某些程序。生命周期钩子有很多种,每一种都是有顺序的,如果不按照顺序执行的话,那么就不会触发某种效果,所以先要了解生命周期钩…

Java Web高级面试题(一)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java面试题…

常用的工具网站(网址 + 效果图)

一,阿里图标库 https://www.iconfont.cn/?spma313x.7781069.1998910419.d4d0a486a 二,AI人工智能图片放大 https://bigjpg.com/zh 三,一个有情怀的免费PPT模板下载网站! https://www.ypppt.com/ 四,照片抠图…

AOP技术

目录 一、简介 1.1、OCP原则 1.2、AOP介绍及使用场景 二、AOP在项目中的使用 2.1、集成使用 2.2、定义全局异常通知 2.3、AOP注解的含义 2.4、多个切面的执行顺序 三、通知的执行顺序(基于spring-aop5版本) 四、常用的四种切入点表达式 4.1、…

【技术分享】手机端代理网络共享至win电脑端

【技术分享】手机端代理网络共享至win电脑端使用前提工具准备具体步骤1. 打开并实现安卓模拟器内的vP|n2. 打开并配置安卓模拟器内的Proxy Server3. 配置win的代理4. 完成使用前提 手机端具备代理功能,而电脑端不具备;希望电脑端使用手机端的代理功能上…

嵌入式技术之IAP,自从有了它老板再也不担心我的代码了!(中)

上篇文章我们一起学习了IAP的工作原理和IAP包含的3个重要功能:数据交互、数据存储和程序跳转。 这3个重要功能称为“IAP的三板斧”,接下来我们看这三板斧具体完成哪些细节工作,如何实现这三板斧。 1.数据交互 数据交互的功能是IAP核心功能…

Gson解析JSON

1.介绍 Gson是Google提供的处理JSON数据的Java类库&#xff0c;主要用于转换Java对象和JSON对象。 2.依赖 <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> <dependency><groupId>com.google.code.gson</groupId><artifac…

python协程--yield和yield from

字典为动词“to yield”给出了两个释义&#xff1a;产出和让步。对于 Python 生成器中的 yield 来说&#xff0c;这两个含义都成立。yield item 这行代码会产出一个值&#xff0c;提供给 next(...) 的调用方&#xff1b;此外&#xff0c;还会作出让步&#xff0c;暂停执行生成器…

Web应用怎样获取Access Token?

1.在联盟创建服务器应用 参考文档&#xff1a;开发准备 2.获取用户级Access Token 2.1 获取code 参考文档&#xff1a;接入华为帐号获取凭证 2.1.1 先按照跳转链接进行配置url https://oauth-login.cloud.huawei.com/oauth2/v3/authorize? response_typecode& acces…

docker(七)容器监控(CAdvisor+InfluxDB+Granfana)

docker可能会运行多个容器&#xff0c;一个宿主机上有多个容器时&#xff0c;需要监控容器的&#xff1a;CPU使用率&#xff0c;内存使用率&#xff0c;网络状态&#xff0c;磁盘空间等数据。 一、docker stats docker stats命令可以监控以下数据&#xff1a; 数据是实时的&…

FFmpeg简单使用:过滤器 ---- 视频过滤2

1. 简介 FFmpeg filter提供了很多⾳视频特效处理的功能&#xff0c;⽐如视频缩放、截取、翻转、叠加等。 其中定义了很多的filter&#xff0c;例如以下常⽤的⼀些filter。 scale&#xff1a;视频/图像的缩放 overlay&#xff1a;视频/图像的叠加 crop&#xff1a;视频/图像的裁…

新建unity项目

在此处点击新项目按钮&#xff0c;建立新的项目。 选择对应的项目模板和项目名称&#xff0c;位置。 项目新建会花费几分钟到十几分钟的时间。 新建完项目打开后就可以进入到unity引擎中。 新建项目会默认创建一个场景&#xff0c;场景保存在Assets--> Scenes中&#xff0c;…