什么是 DevOps?
DevOps 这个词由 development(开发)和 operations(运维)两个词组合而成,它出现的初衷是将此前负责软件开发和部署的两个独立团队整合到一起。
通常情况下,开发团队通常会先编写代码,然后将其交给运维团队来进行部署和集成。但随着行业逐渐转向敏捷开发和云原生计算模式,许多组织为了实现更快、更优质的发布,开始围绕现代的云原生实践进行调整。
这就需要采用一种全新的方式来执行这些关键任务,使其以更简洁、更高效、更协调的方式进行,从而消除过去开发与运维部门之间脱节所导致的种种困扰。通过两个团队的协作,开发人员能够通过持续集成和交付迅速推出小规模的代码改进,而无需花费数年时间进行一次性产品发布。
DevOps 这一概念最初由像Facebook, Netflix, Spotify, 及 Amazon 这样的云原生公司提出;但过去十年里,它已成为科技行业最具代表性的趋势之一,主要原因在于它能够整合并协调诸多推动现代软件开发变革的因素。
随着敏捷开发和云原生计算变得普及,DevOps 已使整个行业加快了软件开发周期。因此,DevOps 现已全面渗透到企业中,尤其是在那些依靠软件来运营业务的组织中,比如银行、航空公司和零售商。
DevOps 实践
DevOps 要求开发与运维双方都需转变思维模式。开发团队应致力于学习并采用敏捷流程,标准化平台,并助力提升运营效率。而运维团队则需现在着重提高稳定性和速度,并通过与开发团队紧密合作来降低成本。
总的来说,这些团队都需要使用一种统一的语言进行交流,并且需要有一个共同的目标以及对彼此关键技能的充分了解,这样"开发运维"模式才能得以良好发展。
更具体地说,工程师达蒙·爱德华兹和约翰·威利斯创建了 CALMS 模型,旨在将通常被认为是 DevOps 基本原则的要素整合在一起:
- 文化:这种文化接纳敏捷方法,并乐于接受变革、持续改进以及对软件端到端质量负责。
- 自动化:对于任何开发运维团队来说,消除繁琐工作是关键目标。
- 精益:确保软件在关键步骤中能够尽可能快速地顺畅运行。
- 衡量:你无法改进什么你没有衡量的东西。开发运维团队倡导一种持续衡量和反馈的文化,这种文化可用于根据需要即时进行改进和调整。
- 分享:在整个组织内进行知识共享是开发运维的关键原则。
什么是 DevOps 工程师?
自然而然地,DevOps 的出现催生了一系列全新的职位名称,其中最为常见的就是"全能 DevOps 工程师"。
一般来说,这个职位是系统管理员这一角色的自然演变,但在一个开发人员和运维人员紧密协作以交付更优质软件的环境中,这个角色需要具备编程和系统管理员的双重技能,以便能够有效地连接团队的这两方面工作。
要实现这两方面的融合,更需要的是强大的社交能力而非专业技术能力。这个人或者这个团队还得是天生的优化者,他们需要不断改进团队软件交付的速度和质量,可以通过采用更有效的方法、消除瓶颈或者应用自动化技术来实现这一目标,以使软件交付过程更加顺畅。
好消息是,这些技能对企业来说非常有价值。这类职位的薪资近年来一直在稳步增长,2020 年在美国,95% 的 DevOps 从业者年薪超过 75,000 美元。在欧洲和英国,整体薪资水平较低,但 2020 年有 71% 的从业者年薪超过 50,000 美元,而 2019 年这一比例为 67%。
关键的 DevOps 工具
尽管 DevOps 的核心在于文化上的转变,但已经出现了一系列工具,以帮助组织采用 DevOps 的实践方法。
这个堆栈通常包含基础设施代码(IaC)、配置管理、协作、版本控制、持续集成与交付(CI/CD)、部署自动化、测试以及监控工具。
以下是 2025 年将愈发重要的部分工具/类别及其相关变化情况:
- 持续集成/持续部署及交付自动化:像 Jenkins 这样的传统工具在许多架构中仍占主导地位,但新的编排工具以及基于命令行接口驱动或以 GitOps 为中心的平台正变得越来越重要(例如 ArgoCD、Flux、Tekton)。此外,那些与监控、密钥管理、偏差检测和策略执行更紧密集成的平台也正逐渐受到青睐。
- 安全、合规和开发安全运维工具:安全工具正越来越多地融入到开发运维流程中。预计会看到更多使用静态分析(SAST)、动态测试(DAST)、依赖项和供应链扫描(SCA)、密钥管理以及策略代码。趋势是将安全工作更早地嵌入其中,并弥合开发、安全和机器学习团队之间的差距。
- 人工智能和自动化增强:人工智能辅助工具正越来越多地成为工具集的一部分:持续集成/持续部署中的自动建议、异常检测、预测性扩展、智能测试套件选择等等。人们希望这些工具能够减少人工干预并提高可靠性。那些"已做好与人工智能集成准备"的工具------即它们能很好地与人工智能集成或具有成熟内置自动化或辅助功能的工具------越来越能脱颖而出。
DevOps 面临的挑战
尽管 DevOps 被越来越多地采用,但仍存在一些实际的障碍,可能会阻碍其发展或限制其影响力。其中一个主要的挑战就是持续存在的技能差距。现代的 DevOps 工程师(或团队)不仅需要精通版本控制、持续集成/持续部署(CI/CD) 以及脚本编写,还需要掌握云架构、基础设施即代码(IaC)、安全最佳实践、可观测性以及强大的跨团队沟通能力。在许多组织中,这些能力分布不均:有些团队表现出色,而其他团队则落后。2024 年的一项调查显示,尽管 83% 的开发人员表示参与了 DevOps 活动,但使用多种持续集成/持续部署工具与表现不佳相关,这表明缺乏深厚的专业知识所带来的复杂性可能会适得其反。
工具链的碎片化和复杂性也是一个相关的问题。DevOps 工具链已经发展成了一个有时令人眼花缭乱的庞大体系,其中包括各种各样的软件包和技术:版本控制、持续集成/构建/测试、安全扫描、成果管理、监控、可观测性、部署、密钥管理等等。
你拥有的工具越多,就越难以将它们妥善整合、管理其版本、确保兼容性以及避免重复劳动。许多组织往往会陷入工具泛滥的困境,即由不同团队选择的工具、遗留系统或重叠的功能特性等,这会带来摩擦、维护负担,有时还会引发安全漏洞。
最后,尽管 DevOps 已经广泛普及,但仍存在文化上的抵触和不一致之处。DevOps 并非仅仅关乎工具和流程;它还涉及协作、共同承担责任以及持续的反馈。那些根植于传统部门隔离(开发与运维的区分,或者安全工作独立进行)的团队可能会抵制对角色和工作流程的改变。领导层的支持、对共同目标的沟通、信任以及对持续学习的包容都是必不可少的。
许多 CIO 过于注重工具或实施过程,而忽视了组织文化及行为因素;但若不解决文化问题,即便拥有最出色的工具或流程,也可能无法达到预期的速度、质量和可靠性。在这方面取得成功的组织往往有着积极主动的策略:专门的培训项目、导师制度、内部行会、将初级和高级工程师进行配对安排,以及确保领导层支持持续学习而非一次性培训课程。
为何要推行 DevOps?
无论向谁询问,都会得到这样的回答:DevOps 对于企业而言是一次重大的文化变革。那么为何还要承受这一切的痛苦呢?
DevOps 的目标是将开发团队和运维团队原本相互冲突的目标统一起来。根据其原则,所有的软件开发都旨在满足业务需求、增加功能、提高应用程序的可用性,同时还要确保这些应用程序稳定、安全且可靠。如果处理得当,这会提高产出的速度和质量,同时也能改善参与这些成果的人员的工作体验。
DevOps 能节省成本吗?
DevOps 团队意识到,速度和灵活性只是成功的一部分---不受控制的云费用和浪费会破坏长期的可持续性。DevOps 中的浪费通常表现为DevOps 债务---闲置的云资源、无效的代码或错误的安全警报---在最近的 Java 环境研究中,这被称为"创新的隐性税"。
采用 FinOps 实践方法有助于降低这些成本。团队应当从成本控制的源头着手:在创建新环境、调整实例大小以及在资源未被充分利用前就缩减未使用的资源时,就先估算成本。这样可以有效避免成本失控的情况发生。
小结
DevOps是开发与运维团队协作的软件交付方法,通过文化变革和工具整合实现高效交付。其核心在于敏捷协作、自动化和持续改进,催生了DevOps工程师这一复合型角色。关键工具包括CI/CD、安全合规和AI增强类平台。尽管面临技能缺口、工具碎片化和文化阻力等挑战,DevOps仍能显著提升交付速度和质量。通过引入FinOps实践可优化云成本,使组织在保证创新的同时控制支出。这一模式已成为现代软件驱动型企业的关键转型方向。