
几年前,许多组织将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的四个级别-评估公司的位置:
该研究揭示了以下趋势:指标高水平的团队数量几乎增加了两倍,从2018年所有受访者的7%增加到2019年的20%。
按绩效水平分配开发团队。与低绩效团队相比,高性能DevOps团队:
- 完成了208倍的代码部署。
- 花在部署代码上的时间减少了106倍。
- 遇到故障的可能性降低7倍。
- 故障后恢复软件的速度提高了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框架内评估云价值的最重要标准。
平台即服务(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命令:
工具的便利性极大地影响了团队最大化所选技术堆栈的价值的能力:拥有易于使用技术的工程师加入高效率团队的可能性要高1.5倍。
我认为,这张表给人的感觉是,要成为一支成功的DevOps团队,您需要遵循mod而不是技术任务。
胜任的专家会为任务选择工具,反之亦然。 为了解决任何问题,总有几种工具和方法。 具体工具取决于:任务的具体情况; 员工对该工具的熟悉程度(如果是新工具,进入门槛有多少); 财务部分(如果有)。
Denis Romanenko,自由专家Mail.ru云解决方案灾难复原
每个工作取决于软件操作的组织都必须
制定灾难恢复计划 。 该报告显示了各种公司使用了哪些类型的容灾测试。
公司用于灾难恢复的试验类型
每年只有40%的受访者使用其中一种或多种方法进行灾难恢复测试。 同时,进行灾难恢复测试的公司具有更高级别的服务可用性。 该报告显示,在软件开发和部署过程中,将高性能的DevOps团队考虑到灾难恢复测试数据的可能性提高了1.4倍。
DevOps团队有权访问信息很重要
轻松搜索信息以解决问题将有助于将DevOps命令的性能保持在较高水平。 在由复杂系统组成的现代技术环境中尤其如此。
此类信息的来源可以分为两类:
- 内部来源 :用于创建和维护代码的公司文档,公司知识库,存储库等。 那些使用内部知识源的DevOps团队的生产力提高了1.73倍。
- 外部来源 :搜索引擎和堆栈补充。 外部DevOps团队的生产力提高了1.67倍。 外部技术为学习和成长提供了巨大的优势,尤其是使用公共云和开源工具。
对于公司而言,减少技术债务很重要
技术债务包括具有已知但未修复的错误的代码或系统; 测试范围不足; 低质量的代码或设计; 未使用但未被删除的工件; 团队无法有效支持的实施; 过时的技术; 文档不完整或过时。
专家发现,技术债务会严重影响DevOps的性能。 具有高技术债务的团队的生产力要低1.6倍。 高利率的团队拥有低技术债务的可能性是后者的1.4倍。
DevOps研究的主要发现
- 高绩效DevOps团队的比例几乎翻了三倍,达到20%。 这意味着企业了解改进软件开发和交付的实践前景,公司正在IT部门积极引入DevOps。
- 快速的应用程序和服务交付是技术和组织转型的核心。 推出版本的速度和稳定性提高了利润和客户满意度。
- 云技术仍然是实现高性能DevOps团队的关键。 使用云可以使您以适当的速度组织软件的交付,提供基础结构的可用性,可伸缩性和生产力。
- 如果您关注团队成员的工作效率,提供舒适的心理氛围和使用便捷的工具,则可以提高DevOps团队的效率。
- 使用正确的方法提高发布速度不会影响公司服务和应用程序的稳定性。