为什么很多公司推行DevOps最后变成了天天加班写YAML和脚本?

2026-07-08 10:21:00
DevOps
原创
10
摘要:深夜,你又一次在显示器前修改着一段冗长的 YAML。它可能是一个 CI/CD pipeline,也可能是一段 Kubernetes 的部署配置。你依稀记得,当初公司推行 DevOps 时,承诺的是打破壁垒、提升效率、快速交付价值。而现在,你的日常却似乎变成了与各种工具的配置文件和脚本无休止的搏斗。

如果这样的场景让你感到无比熟悉,那么你需要知道,问题可能并不出在你身上,也不是 DevOps 理念本身错了。你所经历的,很可能是一种普遍存在于许多组织的“假 DevOps”——一种将 DevOps 错误地简化为工具和流程,最终导致工程师陷入无尽加班的困境。

为什么我们首先会掉进 YAML 和脚本的陷阱?

在讨论问题的根源之前,我们有必要先理解一件事:为什么总是 YAML 和脚本首当其冲,成为痛苦的焦点?

因为自动化是 DevOps 实践中第一个也最容易被量化的环节。基础设施即代码(IaC)、流水线即代码(Pipeline as Code)是实现这一目标的核心手段。而 YAML,作为一种声明式、对人类相对友好的数据序列化语言,自然而然地成为了 Kubernetes、CI/CD 工具等现代云原生技术栈的事实标准。

从管理的视角来看,引入一套工具,让工程师们开始编写自动化脚本和 YAML 文件,是一个非常具体、看得见的“成果”。它比推动“文化变革”或“组织协作”这类抽象概念要容易得多。因此,很多公司的 DevOps 转型,便从“全员学写 YAML”开始了。

这个起点本身没有问题,问题在于,许多组织就停在了这里。他们将“编写和维护 YAML 的能力”等同于“实践 DevOps 的能力”,把手段当成了目的。当衡量 DevOps 成效的指标变成了“我们构建了多少条流水线”,而不是“我们多快、多可靠地向用户交付了价值”时,陷阱就已经形成了。

问题的根源:被误解的 DevOps 战略

天天加班写 YAML 只是一个表层症状,其背后是更深层次的战略、组织和认知问题。这些问题共同导致了 DevOps 理念在落地时被扭曲。

战略错位:将 DevOps 视为一个“项目”,而非一种“能力”

很多公司在推行 DevOps 时,采用的是“项目制”思维。他们会成立一个“DevOps 转型项目组”,申请一笔预算,采购一套工具链,设定一个明确的交付日期。在这个模型里,DevOps 是一个有始有终的任务。

一旦工具部署完毕,流水线能够运行,这个“项目”便宣告成功。接下来,维护这些工具和流水线的责任就落到了某个团队或某些工程师头上。他们的工作变成了响应来自开发团队的各种需求:“帮我调一下这个 pipeline”、“这个部署文件好像有问题”、“我需要一个新的测试环境”。

而真正以“能力”为核心的 DevOps 战略则完全不同。它认为 DevOps 不是一个需要完成的项目,而是组织需要持续构建和优化的一种核心能力——即快速、可靠、安全地交付软件的能力。这种能力应该像水和电一样,赋能给每一位开发者,让他们可以专注在业务逻辑的创造上。

一句话总结:当 DevOps 成为一个需要交付的“工具链项目”时,写 YAML 自然就成了计量的“工作量”。

组织倒退:用新的“DevOps 团队”制造了新的“谷仓”

DevOps 的核心理念之一是打破开发(Dev)和运维(Ops)之间的“谷仓”(Silo),促进协作。然而,在许多实践中,公司只是简单地将原来的运维团队,或者新招聘的一批工程师,重新命名为“DevOps 团队”。

这个新团队夹在开发和传统运维之间,形成了一个新的谷仓。开发团队将代码“扔过墙”,要求 DevOps 团队为其打包、测试、部署;基础设施团队则要求 DevOps 团队必须遵循特定的安全和网络策略。

这个“DevOps 团队”成了所有自动化工具的唯一管理者和最终解释者。他们需要精通从 CI/CD 到监控、再到 IaC 的所有工具,并为全公司的项目提供支持。这不仅制造了新的沟通瓶颈,也让这个团队的成员疲于奔命,深陷在处理不完的工单和配置文件中。

一句话总结:理想的 DevOps 是赋能开发者的“乘法”,现实却变成了增加沟通环节的“加法”。

认知过载:将工具的复杂性直接暴露给所有开发者

另一种常见的误区是走向另一个极端。一些组织要求“You build it, you run it”,让每一位开发工程师都直接负责自己应用从编码到生产运行的全过程。

这个理念听起来很美好,但它忽略了一个关键因素:认知负荷(Cognitive Load)。

现代云原生技术栈的复杂度是惊人的。一个开发者在编写业务代码之余,还需要深入理解 Kubernetes 的工作原理、Helm charts 的打包技巧、Prometheus 的查询语法、Terraform 的状态管理等等。这种要求会让开发者本应用于创造业务价值的精力,大量消耗在学习和应对底层工具的复杂性上。

结果往往是,开发者为了快速完成任务,从网上复制粘贴质量参差不齐的 YAML 配置,导致安全隐患和不稳定的部署。最终,当问题出现时,他们仍然需要求助于少数的“工具专家”,这又回到了变相的谷仓模式。

一句话总结:DevOps 的目标是降低交付的复杂度,而不是让每个人都成为复杂性专家。

出路何在?从 DevOps 走向平台工程

既然问题如此普遍且根深蒂固,那么真正的出路在哪里?答案正在逐渐清晰:平台工程(Platform Engineering)。

平台工程可以被看作是 DevOps 理念在当前复杂技术环境下的成熟演进。它并非要推翻 DevOps,而是为如何正确地实践 DevOps 提供了一套更具体、更有效的方法论。

其核心思想是,由一个专门的“平台团队”(Platform Team)来构建和维护一个“内部开发者平台”(Internal Developer Platform, IDP)。这个平台将所有复杂的工具链、基础设施和流程封装起来,通过一组简单、清晰、标准化的接口(比如 API、Web UI,甚至是简化的配置文件)提供给开发者。

开发者不再需要直接和底层的 Kubernetes YAML 或 Jenkinsfile 打交道。他们只需要通过平台提供的自助服务,就能完成应用的构建、部署、监控和资源申请。平台为他们铺好了一条通往生产环境的“黄金路径”(Golden Path),让他们可以安心地在自己的车道上专注“驾驶”(编写业务代码)。

这样一来:

  • 开发者的认知负荷被大大降低,他们可以专注于创造价值。
  • 平台团队可以专注于提升平台的稳定性、安全性和效率,他们的工作成果能够惠及整个研发组织。
  • “YAML 地狱”的问题自然消失,因为复杂性被平台有效地抽象和隐藏了。

正是基于这样的思考,业界领先的平台工程实践者们致力于打造真正的内部开发者平台,其目标就是将开发者从底层工具的复杂性中解放出来,让他们重拾创造的乐趣和效率。

如何判断你的公司处于哪个阶段?

了解了问题的根源和未来的方向后,你可以通过以下特征,快速判断你所在的组织正处于 DevOps 实施的哪个阶段。

阶段一:工具驱动的“假 DevOps”

  • 典型特征:公司最关心的是引入了哪些新工具,以及有多少项目在使用 CI/CD。
  • 工程师体感:存在一个专门的“DevOps 团队”,他们像一个工单处理中心,日常工作就是帮其他团队写 YAML、修流水线,加班是常态。
  • 核心矛盾:DevOps 被视为 IT 运维的一个分支,而不是服务于研发效率的核心能力。

阶段二:赋能意识觉醒的“过渡期 DevOps”

  • 典型特征:“开发者体验”(DevEx)和“赋能”(Enablement)开始被频繁提及。
  • 工程师体感:DevOps 团队开始尝试提供一些流水线模板、共享脚本库来减少重复工作。但开发者仍需了解大量工具细节才能解决稍复杂的问题。痛苦有所缓解,但未根除。
  • 核心矛盾:已经意识到问题所在,但解决方案仍停留在“优化工具”的层面,缺乏平台化的顶层设计。

阶段三:平台驱动的“真 DevOps”(平台工程)

  • 典型特征:公司拥有一支明确的“平台团队”,他们的 OKR/KPI 与开发者生产力、部署频率、变更失败率等指标直接挂钩。
  • 工程师体感:开发者通过一个统一的内部平台进行自助式操作,很少需要关心底层是 K8s还是虚拟机,也不需要手写复杂的 YAML。平台团队是他们的合作伙伴,而非服务台。
  • 核心矛盾:基本没有核心矛盾,组织进入了良性循环。主要的挑战变为如何持续迭代平台,以满足不断变化的业务需求。

如果你发现自己和公司正深陷“YAML 地狱”,不必过于沮丧。认清这只是 DevOps 演进过程中的一个必经阶段,是战略错位导致的普遍症状,这是迈向改变的第一步。真正的 DevOps,其终点不应是让每个人都成为脚本专家,而是通过构建强大的平台能力,让价值交付的过程变得简单而纯粹。

DevOps文章
联系我们
联系人: 阿道
电话: 17762006160
地址: 青岛市黄岛区长江西路118号青铁广场18楼