DORA报告2019:如何提高DevOps性能



几年前,许多组织将DevOps视为有前途的实验,而不是软件开发的基本方法。 现在,DevOps是一套经过验证且功能强大的开发和部署实践以及工具,可加快新产品的发布并提高生产率。 更重要的是,DevOps效应旨在实现业务的整体增长并提高其盈利能力。

Mail.ru云解决方案团队翻译了由DevOps研究与评估(DORA)专家编写的2019年DevOps加速状态报告中最有趣的部分。 该研究涉及来自全球的31,000名专业人员。 让我们看看2019年行业发生了什么变化以及企业如何提高软件交付效率。

行业和公司规模如何影响DevOps


这项研究并未发现DevOps绩效与组织行业之间的联系,零售业除外,后者的绩效稍好一些。 特别是由于零售商需要快速响应需求和客户需求的波动这一事实。 根据这项研究,任何公司,包括金融部门和公共部门,都可以在DevOps中达到很高的水平。

拥有5,000名以上员工的公司的DevOps绩效指标低于拥有5,000名以下员工的公司的绩效指标。 这很可能是由于以下事实:在大型组织中,更大的流程,更严格的控制,更复杂的IT系统体系结构会导致开发和推出代码的过程出现延迟。 同时,专家认为,公司的规模并不妨碍成功开发DevOps,只是在某些情况下可能需要更多的努力。

如何评估公司的DevOps水平


专家将DevOps流程与基准进行了比较,将调查参与者分为具有最佳,良好,中度和低度指标的四组。

该报告采用了四个评估DevOps有效性的关键指标:软件开发过程中完成更改所需的时间,部署的频率,故障的频率以及恢复时间。

DevOps的四个级别-评估公司的位置:

公司主要服务和应用程序的软件交付性能评估指标
得分最高的球队
好的团队
中队
低分团队
部署频率
公司多久将代码部署到生产中或将其发布给最终用户。
根据要求,每天多次部署
每天一次至每周一次
从每周一次到每月一次
每月一次/几个月
更改提前期
从测试切换到可以在生产环境中成功运行的软件需要多长时间。
不到一天
从一天到一周
从一个星期到一个月
一到六个月
服务恢复时间
事件或错误影响用户后,恢复服务需要多长时间。
不到一个小时
在白天
一周内
从一周到一个月
变更失败率
有多少百分比的更新或新版本会导致服务质量差,需要修复。
0-15%
0-15%
0-15%
46-60%

该研究揭示了以下趋势:指标高水平的团队数量几乎增加了两倍,从2018年所有受访者的7%增加到2019年的20%。


按绩效水平分配开发团队。

与低绩效团队相比,高性能DevOps团队:

  1. 完成了208倍的代码部署。
  2. 花在部署代码上的时间减少了106倍。
  3. 遇到故障的可能性降低7倍。
  4. 故障后恢复软件的速度提高了2.604倍。

此外,高得分的DevOps团队达到或超过其组织绩效指标的可能性是低得分的团队的两倍。

许多专家认为,不可能同时实现所有指标的增长,必须妥协。 因此,有些人认为提高发布速度会严重影响软件交付过程和服务提供的可靠性。 但是,研究表明,结果的速度和稳定性不是相互排斥的。

在DevOps团队数量的增长中,我并不感到意外,这是合乎逻辑的:DevOps哲学现在很流行,并且初创公司的数量也在增长。

但是,我认为,专家们选择的评估DevOps有效性的参数不太正确。

通过推出代码的速度对其进行评估至少是奇怪的。 这仅适用于初创企业,其关键参数将是产品投放市场的速度,并且通常以原始形式展示产品。 在这种情况下,加快生产发展和交付的机制至关重要。 但是对于完善的软件(例如金融或医疗软件),失败频率的参数可能不存在-失败可能是不可接受的。

同样,对于服务的恢复时间:对于任何已开发的服务,都应该以秒为单位进行计算,对于许多服务来说,简单的服务是不可接受的,为此,他们发明了无缝滚动技术(例如,绿色/蓝色)。

另外,不要专注于代码部署的数量-它取决于开发团队的需求和能力。 如果部署涉及添加新功能,那是一回事,而更正先前部署期间犯下的错误则完全不同。

Denis Romanenko,自由专家Mail.ru云解决方案

如何改善DevOps流程


该报告提出了将有助于改善DevOps的两个领域:提高软件开发和交付的效率以及提高生产率。


每个方向都包括其自己的组件,可以改进这些组件以实现期望的目标。

根据该报告,数字化转型的关键是企业文化。 高效的DevOps团队需要一种信任和心理安全的文化,对工作结果的了解和明确的目标。 这种环境使团队成员可以做出明智的决定,表达意见并更具创造力。

云技术,持续交付,灾难恢复测试和变更管理也将有助于提高软件开发和交付的效率。 通过投资于易于使用的工具,减少技术债务(即减少效率低下的代码和过时的技术的百分比),组织企业知识库和访问外部解决方案,可以提高劳动生产率。

我认为DevOps的方法论和意识形态正是这些过程不依赖于外部条件,例如云或您自己的硬件。 云本身只不过是一种工具,它会在某个地方提供帮助,在某个地方它会阻碍或不需要。

Denis Romanenko,自由专家Mail.ru云解决方案

下面,我们将介绍一些提高DevOps命令效率的组件。

云技术为DevOps的成功做出了贡献


在2019年,越来越多的组织正在选择可显着提高DevOps团队生产力的云解决方案。


哪些基础架构使用DevOps命令。

DORA发现,80%的受访者在云平台上托管核心应用程序或服务 。 尽管如此,只有29%的受访者在美国国家标准技术研究院实现了云计算的所有五个主要特征-这是在DevOps框架内评估云价值的最重要标准。

特色
使用百分比
按需自助
消费者可以自动提供计算资源
必要时,无需提供者的参与。
57%
(自2018年以来增加11%)
广泛的网络访问
云功能可跨多个平台使用,
例如手机,平板电脑,笔记本电脑和工作站。
60%
(自2018年以来增加14%)
资源池
提供者资源被组合成一个多租户模型,其中物理和虚拟资源根据需要动态分配。
58%
(自2018年以来增加15%)
可伸缩性和弹性
资源可以按需水平或垂直缩放,实际上是无限的,可以随时发行。
58%
(自2018年以来增加135)
透明性
云系统会根据服务类型自动控制,优化和报告资源使用情况:数据存储和处理,流量,
活动用户帐户
62%
(自2018年以来增加14%)

平台即服务(PaaS)越来越趋向于以容器为中心的部署模型。 云平台简化了软件部署,因此团队只需要担心运行应用程序代码本身。 扩展,资源计划,基础结构的管理和维护也由提供商承担。

对于云提供商,通用标准是提供各种服务:虚拟机网络,身份和访问控制(IAM),存储和数据库,机器学习,物联网(IoT),容器解决方案,安全解决方案等。

与传统的数据中心相比,云提供商的客户只为他们使用的资源付费,这确保了成本透明性,而传统的数据中心则很难或不可能获得有关开发成本的信息。 满足上述云特征的公司的受访者在估算软件工作成本方面的准确性要高2.6倍,了解哪些应用程序消耗更多资源的频率要高2倍,而分配给IT的预算中的频率则要高1.65倍。

有时,事实证明,雇用一位称职的专家并在数据中心中分配已分配的容量比购买云服务更有利可图。 哪种选择更好,取决于公司的概况和规模,IT专家本身的员工可用性和专业知识。 例如,在企业开始或公司没有自己的IT部门时,可以方便地使用云。 进行扩展时,包含全部或部分内部部署基础结构可能更具成本效益。

Denis Romanenko,自由专家Mail.ru云解决方案

技术实践DevOps


许多希望实施DevOps的组织正在寻找一套说明或最佳实践。 但是,没有完全相同的公司,因此,选择哪种做法取决于业务的当前状态及其目标。

同时,存在一些有助于提高DevOps效率的通用指导:其中一些是在团队级别开发的,其他一些则需要在组织级别上的努力。

2019年DevOps团队的增长方向是什么:

组织层面
  • 松耦合架构
  • 实施变更
  • 代码支持
团队级别
  • 持续整合
  • 测试自动化
  • 部署自动化
  • 监控
  • 开发管道
在团队和组织层面
  • 使用云服务
  • 灾难恢复测试

该研究证实了松散耦合架构对DevOps性能的积极影响。

松散耦合的架构是指团队可以独立于其他团队独立地按需独立测试,部署和修改系统,而无需额外的支持,资源,批准以及较少的反馈。 这使您可以更有效地工作,但是需要较高的组织和管理水平。

这种方法仅适用于初创公司,并且有一定保留。 其他公司的情况可能有所不同。 一个很好的例子:银行/金融科技。 在那里只能使用专有的解决方案,但是将采用DevOps的做法。

Denis Romanenko,自由专家Mail.ru云解决方案

成功的DevOps团队将一切自动化


持续集成和交付(CI / CD)使您能够以较低的成本和风险将服务和应用程序带到产品中,并根据组织的目标维护发布。

成功的CI / CD也意味着团队可以按需实施生产变更,他们可以立即看到有关部署质量的反馈,可以快速制定出解决方案,并可以改善下一个部署周期。

该报告显示,成功的DevOps团队将在各种支持流程,实践和工具上进行投资:

  • 92%使用自动组装工具;
  • 87%使用自动单元测试;
  • 57%将自动化扩展到验收测试;
  • 72%的人可以在测试环境中实现自动部署,69%的人可以在生产环境中实现相同的部署;
  • 69%的人将聊天机器人集成到部署过程中;
  • 57%的人与监视工具集成。

选择正确的工具和技术很重要。


在构建复杂系统和管理关键业务基础架构时,选择以下技术很重要:

  • 在首次连接和持续运行中都易于使用;
  • 这有助于实现您的目标。

该报告检查了用于通过CI / CD部署软件的工具和测试自动化工具-这些是DevOps的基础技术。

什么技术使用DevOps命令:

技术领域
低分团队
中队
好的团队
高分团队
专有,开源和商业盒产品的组合
30%
34%
32%
33%
主要是开源和高度定制的盒装解决方案
17%
8%
7%
10%
主要是开放源代码和基于盒子的解决方案,几乎无需进行任何调整
14%
21%
18%
20%
盒装商业解决方案
8%
12%
8%
4%
公司内部开发和专有解决方案
20%
6%
5%
6%
首先,具有强大定制功能的开源
6%
7%
5%
12%
稍作调整的第一个开源
5%
12%
24%
15%

工具的便利性极大地影响了团队最大化所选技术堆栈的价值的能力:拥有易于使用技术的工程师加入高效率团队的可能性要高1.5倍。

我认为,这张表给人的感觉是,要成为一支成功的DevOps团队,您需要遵循mod而不是技术任务。

胜任的专家会为任务选择工具,反之亦然。 为了解决任何问题,总有几种工具和方法。 具体工具取决于:任务的具体情况; 员工对该工具的熟悉程度(如果是新工具,进入门槛有多少); 财务部分(如果有)。

Denis Romanenko,自由专家Mail.ru云解决方案

灾难复原


每个工作取决于软件操作的组织都必须制定灾难恢复计划 。 该报告显示了各种公司使用了哪些类型的容灾测试。

公司用于灾难恢复的试验类型

测试类型
低分团队
中队
好的团队
高分团队
平均值
不影响实际系统的测试
35%
26%
27%
30%
28%
基础架构故障转移(包括数据中心)
27%
43%
34%
38%
38%
应用程序故障测试
25%
46%
41%
49%
43%
测试系统故障模拟事件
18%
22%
23%
29%
23%
使用工作系统故障对事件进行建模
18%
11%
12%
13%
12%
创建破坏性的自动化和系统
定期,持续的生产系统
9%
8%
7%
9%
8%

每年只有40%的受访者使用其中一种或多种方法进行灾难恢复测试。 同时,进行灾难恢复测试的公司具有更高级别的服务可用性。 该报告显示,在软件开发和部署过程中,将高性能的DevOps团队考虑到灾难恢复测试数据的可能性提高了1.4倍。

DevOps团队有权访问信息很重要


轻松搜索信息以解决问题将有助于将DevOps命令的性能保持在较高水平。 在由复杂系统组成的现代技术环境中尤其如此。

此类信息的来源可以分为两类:

  1. 内部来源 :用于创建和维护代码的公司文档,公司知识库,存储库等。 那些使用内部知识源的DevOps团队的生产力提高了1.73倍。
  2. 外部来源 :搜索引擎和堆栈补充。 外部DevOps团队的生产力提高了1.67倍。 外部技术为学习和成长提供了巨大的优势,尤其是使用公共云和开源工具。

对于公司而言,减少技术债务很重要


技术债务包括具有已知但未修复的错误的代码或系统; 测试范围不足; 低质量的代码或设计; 未使用但未被删除的工件; 团队无法有效支持的实施; 过时的技术; 文档不完整或过时。

专家发现,技术债务会严重影响DevOps的性能。 具有高技术债务的团队的生产力要低1.6倍。 高利率的团队拥有低技术债务的可能性是后者的1.4倍。

DevOps研究的主要发现


  1. 高绩效DevOps团队的比例几乎翻了三倍,达到20%。 这意味着企业了解改进软件开发和交付的实践前景,公司正在IT部门积极引入DevOps。
  2. 快速的应用程序和服务交付是技术和组织转型的核心。 推出版本的速度和稳定性提高了利润和客户满意度。
  3. 云技术仍然是实现高性能DevOps团队的关键。 使用云可以使您以适当的速度组织软件的交付,提供基础结构的可用性,可伸缩性和生产力。
  4. 如果您关注团队成员的工作效率,提供舒适的心理氛围和使用便捷的工具,则可以提高DevOps团队的效率。
  5. 使用正确的方法提高发布速度不会影响公司服务和应用程序的稳定性。

Source: https://habr.com/ru/post/zh-CN483444/


All Articles