DevOps 这个术语已经存在了十多年,相关的实践已经被包括 Google 和亚马逊在内的公司广泛采用,作为加快软件开发和部署速度的一种方式。不过,DevOps 仍在不断发展,并在企业中找到新的应用。如今,DevOps 方法被视为成功进行数字化转型、云计算、安全、网站可靠性工程等的关键。
在本文中,我们将探讨定义 DevOps 的基本理念,并指出一些资源,以帮助您理解和实施适合您组织的理念、实践和工具。
什么是 DevOps?
让我们从快速定义和概述开始。 Google 将 DevOps 定义为:"旨在提高软件交付速度、提高服务可靠性,并在软件利益相关者之间建立共享所有权的组织和文化运动"。
更重要的是,采用 DevOps 意味着开发(Dev)和运营(Ops)团队不是孤立的或分离的。相反,根据亚马逊的说法,一个工程师团队从开发、测试到部署和运营的整个应用生命周期中工作,将会开发出一系列技能,而不仅限于单个功能。质量保证和安全团队也可能被整合到这个过程中,这种对安全问题的整合被称为 DevSecOps。
Patrick Debois 表示,集成协作方法的优势涉及从系统内工作中获得的见解。"我们必须针对整个系统进行优化,而不仅仅是针对孤岛。通过对整体的优化,我们是在为业务改进,而不仅仅是为 IT 改进。"
系统优化和改进的目标植根于 W.Edwards Deming 所提出的影响深远的统计过程控制和全面质量管理原则,这些原则已在全球各行业中得到实施,以提高生产和性能。
DevOps 还与 Grady Booch 开发的持续集成(CI)方法,以及敏捷和精益软件开发的宗旨密切相关,后者强调持续交付(CD)和测试。然而,DevOps 所包含的不仅仅是一套软件开发的最佳实践,它是一种思维方式。
实施
Catherine Paganini 在 The New Stack 上写道:"DevOps 是一种结合了文化理念、组织变革,以及新工具和实践实施的方法"。她还概述了组织内该流程的六个基本组成部分。
- 小团队、全自主
- 持续反馈的自动化测试
- 松散耦合的体系结构
- 用于生产应用反馈的遥测
- 组织范围内的持续学习
- DevSecOps:在 DevOps 方法中建立安全机制
根据亚马逊的说法,该系统可以让企业高速交付应用和服务,比使用传统软件开发和基础设施管理流程的企业更快地发展和改进产品。
测试和指标
虽然这些构成中的每一个都很重要,但是测试持续反馈的价值怎么强调都不为过。自动测试提供了快速的反馈循环,以帮助发现问题,以便在完成更多工作之前就将问题解决,这种即时反馈也使开发人员不会重复相同的错误。
对于谷歌云平台倡导者 Jez Humble 来说,这种方法归根结底是三个团队——软件开发、软件部署和服务运营,以及他们所关心四个指标和一个不能直接衡量的指标,即可用性。尽管如此,在这个过程中它也是不能妥协的一个指标。
根据 Humble 的说法,四个关键的 DevOps 指标是:
- 变更的交付时间
- 部署频率
- 恢复服务的时间
- 变更失败率
他说,成功的 DevOps 团队理解这些目标的共同所有权,并培养学习的氛围,高度参与性的回顾,以及对信任、发言权和自主性的鼓励。
DevOps 工具
为了采用这些实践并实施这些指标,组织需要适当的工具和平台。VictorOps 整理了一份 20 种顶级DevOps工具的清单,这些工具可以带来改进的协作和透明度,以及更快的开发和更有弹性的体系结构。
此外,Paganini指出,"开发人员必须能够独立地创建类似生产的环境、运行测试,并部署代码——所有这些都应该自动化,并按需提供。DevOps 的一个关键指标是消除人为瓶颈。"
现在软件开发界已经有了几年的 DevOps 经验,这种方法显然已经被证明是有效的。当然,具体的实施实践会因组织的目标、价值观和环境的不同而有所差异和发展,但基本的原则是不会变的。