写点什么

如何衡量持续交付

  • 2017-09-25
  • 本文字数:1930 字

    阅读完需:约 6 分钟

在实施持续交付时,稳定性和吞吐量是两个可衡量的度量指标。这些度量指标有助于降低不确定性,帮助你做出更好的决策,让整个持续交付过程不偏离正确的方向。

持续交付独立咨询师 Steve Smith 将在精益敏捷苏格兰2017 大会上呈现一个关于如何衡量持续交付的演讲。大会将于10 月4 号至6 号在爱丁堡召开。

InfoQ 采访了 Smith,并从他那里了解到了一些信息,比如实施持续交付为什么会如此困难、为什么说度量指标有助于实施持续交付以及该用到哪些度量指标、他从英国政府部门使用度量指标这一实践当中学到了什么、Google 的 SRE 概念“错误预算(error budget)”与他的持续交付度量指标有什么联系。

InfoQ:实施持续交付为什么会如此困难?

Steve Smith:有两部分人在实施持续交付——一部分人知道它很难,另一部分人则否认这一点。持续交付的难点在于,你试图在组织中引入大量的技术和组织变革。

实现变更的自动化并不难,比如自动化数据库迁移或事后故障检测。工具的选择也不难——很多工具都很强大,只要你不去选择最糟糕的那个就好。难就难在如何在组织的约束当中应用这些变更。每个组织的持续交付都不一样,在一开始就要意识到这一点。

InfoQ:度量指标对实施持续交付有什么帮助?

Smith:度量指标有助于降低不确定性,帮助你做出更好的决策。你因此可以了解到你的实施过程是否偏离了正确的方向。

我一般会建议我的客户先从 Improvement Kata 开始,创建可迭代的周期,逐步改进当前的工作方式。但在你畅想愿景时,你怎么知道愿景离现实有多远?当你想要建立下一个改进里程碑的时候,你怎么知道该怎样设定目标?当你完成自动化数据库迁移的时候,你怎么知道它是否给当前的状态带来了改进?

度量指标无法回答这些问题,不过它们可以作为指引,告诉你应该去哪里去寻求答案。我在英国政府的一个重要部门工作了两年半,我们有 60 个团队在实施持续交付。如果没有度量指标,我们就不知道哪些团队表现出色,不知道哪些团队需要我们的帮助,不知道该发扬光大哪些实践或避免哪些不好的实践。有了这些度量指标,我们就知道需要与哪些团队展开沟通以及该沟通些什么。

InfoQ:你建议应该衡量哪些度量指标?

Smith:持续交付就是要改进稳定性,加快发布速度,所以毫无疑问,你需要衡量稳定性和速度。这两项指标虽然不是很直观,但要衡量它们并不难。在“ How To Measure Anything ”这本书中,Douglas Hubbard 描述了如何使用澄清链(clarification chain)来衡量无形的东西——创建有形的资产并将其与相应的度量指标联系在一起。

对于我们来说,我们已经知道该衡量哪些指标了。 DevOps 年度报告中,Nicole Forsgren、Jez Humble 等人陈述了组织在实施持续交付过程中是如何改进稳定性和吞吐量这两项指标的。他们通过失败率(Failure Rate)和失败恢复时间(Failure Recovery Time)来衡量稳定性,通过交付时间(Lead Time)和频率(Frequency)来衡量吞吐量。从 2013 年开始,我就很看好 Nicole 喝 Jez 在这方面所做的工作,而且我也深入研究过这些指标与持续交付之间的关系。所以我建议衡量这两项指标。

InfoQ:在英国政府部门实施持续交付的过程中,你学到了什么?

Smith:我从中总结了一个经验,不借助度量指标实施持续交付就好比在生产环境中没有监控措施。没有度量指标的指引就好像无头苍蝇到处乱撞。你无法知道哪些变更被成功实施,需要将其发扬光大,哪些是失败的,需要尽快回退。

在这个政府部门里,我们创建了一个内部网站用于展示每个团队和服务的稳定性和吞吐量度量指标。借助这些,我们就知道该与哪些团队展开沟通,也了解到了一些不寻常的问题。例如,有一个团队在短时间内大幅改进了部署的稳定性,但他们却不知道自己做了哪些事情让稳定性获得提升的。而实际上是因为他们构建了自己的日志和监控仪表盘。我们后来把他们仪表盘的 JSON 文件抽取出来,并开发了一个 DSL 用于生成相同的 JSON,把它推广到所有的团队。几周之后,很多团队向我们反应生产环境的服务运维变得更加容易了。

InfoQ:你是如何理解 Google SRE 概念“错误预算”的?它与你的持续交付度量指标有什么关系吗?

Smith:“ Site Reliability Engineering ”这本书写的非常好。Betsy Beyer 等人将可靠性定义成 MTBF 和 MTTR 的功能之一,这个与将持续交付定义成失败率和失败恢复时间的功能之一有着异曲同工之妙。

错误预算是一个很好的概念。我总是建议产品经理定义好自己的运营需求,包括产品的可靠性。如果他们衡量严格的发布稳定性和吞吐量,并在稳定性低于某个阈值的时候阻止自动部署到生产环境,那一定会很有意思。我见过一些公司对构建过程中的静态分析、OWASP 测试进行打分。不过我没有见过对部署稳定性进行打分,但我希望能够看到这样的事情发生。

查看英文原文: How to Measure Continuous Delivery

2017-09-25 19:002886
用户头像

发布了 322 篇内容, 共 146.4 次阅读, 收获喜欢 148 次。

关注

评论

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

铸就安全可信的数字化「信息枢纽」—华为云ROMA Connect荣膺软件产品可信【卓越级】认证

华为云PaaS服务小智

云计算 华为云

诚邀报名|探索汽车智能化的开源未来

开放原子开源基金会

开源

大数据,领导者阵营!

腾讯云大数据

大数据

倒计时2天|2023开放原子开发者大会15个技术平行专场议程速览

开放原子开源基金会

开源

测试开发 | 智能系统在航空航天领域的应用与创新

测吧(北京)科技有限公司

测试

长三角安防行业盛会“2024杭州国际安防产品展览会”

AIOTE智博会

安防展 杭州安防展 安防产品展

【第七在线】季节性商品计划:如何应对时尚行业的快速变化

第七在线

科普:多领域分布式协同仿真

DevOps和数字孪生

协同仿真

测试开发 | 人工智能引领交通运输革命

测吧(北京)科技有限公司

测试

测试开发 | 语音助手技术:Siri、Alexa、Google Assistant的背后

测吧(北京)科技有限公司

测试

全方位的账号安全管理

尚思卓越

黑客 网络安全

软件测试/测试开发丨Python元组

测试人

Python 软件测试

先进制造身份治理现状洞察:从手动运维迈向自动化身份治理时代

Authing

制造业 先进制造 国产化替代 身份自动化

2023开放原子开发者大会全日程

开放原子开源基金会

开源

测试开发 | 语言助手技术的发展历程

测吧(北京)科技有限公司

测试

AGI时代的奠基石:Agent+算力+大模型是构建AI未来的三驾马车吗?

GPU算力

openEuler汇聚开源力量,共建全球开源生态

彭飞

Cloudeye对接Prometheus实现华为云全方位监控

华为云开发者联盟

云计算 华为云 华为云开发者联盟 华为云弹性云服务器

低代码:万事俱备,就差一个程序员

互联网工科生

软件开发 低代码 JNPF

测试开发 | AI在交通运输中的引领作用:智能交通系统与城市流动

测吧(北京)科技有限公司

测试

字节跳动 Spark Shuffle 大规模云原生化演进实践

字节跳动云原生计算

大数据 spark 云原生

逻辑多租场景下,故障爆炸半径的控制实践

华为云开发者联盟

开发 华为云 华为云开发者联盟

分享一些很优秀的URL设计

伤感汤姆布利柏

【第七在线】供应链协作与商品计划:建立强大的合作关系

第七在线

数据库系列:业内主流MySQL数据中间件梳理

不在线第一只蜗牛

MySQL 数据库 数据

Lazada商品评论列表API:电商行业的实时反馈宝库

Noah

云技术分享 | 使用快照和 AMI 镜像进行 Amazon EC2 的备份和恢复

亚马逊云科技 (Amazon Web Services)

Amazon EC2 Amazon S3 amazon-ebs backup

「大模型摇摇乐」狂欢落幕!盘点那些让你意想不到的应用集锦

飞桨PaddlePaddle

开发者 大模型 AI应用 文心一言

如何衡量持续交付_DevOps & 平台工程_Ben Linders_InfoQ精选文章