DevOps 方法论漫谈(一):文化先行——为什么先谈文化

做 DevOps 这么多年,我发现一个很有意思的现象:很多团队引入 DevOps,上来就是搭 Jenkins、搞容器化、上 K8s。工具链搞了一堆,流程也配得漂漂亮亮,但效果总是不尽如人意。流水线跑得再快,该出的问题还是出,该甩的锅还是甩。为什么?因为 DevOps 从来不是一个纯技术问题,它首先是一个文化问题。

一、工具永远不是最先要解决的问题

回想一下,你是不是也听过这样的话:

“我们搞个 Jenkins 就行了。”

“把 Docker 用起来,DevOps 就算是落地了。”

“K8s 一上,我们就 DevOps 了。”

这些话听起来很有道理,但仔细想想,它们有一个共同的问题:把 DevOps 等同于工具链的搭建

工具当然重要。没有工具,持续集成、持续交付都是空谈。但如果你把 DevOps 仅仅理解为“会用 Jenkins”“会写 Dockerfile”“会配 K8s YAML”,那你可能走上了另一条路——运维自动化,而不是 DevOps。

运维自动化和 DevOps 的区别在哪里? 运维自动化是“用脚本把运维工作自动化”,它的视角是运维的。而 DevOps 的视角是端到端的软件交付全流程,它需要研发、测试、运维的协作。这就决定了:如果没有协作的文化作为基础,工具搭得再好,大家还是各干各的,出了事还是互相甩锅。

所以我的观点是:文化先行,工具随后。 先让团队形成正确的文化和观念,再把这种文化固化到工具和流程中去。

二、追责文化是 DevOps 的最大敌人

“昨晚线上出了个事故,谁干的?”

这句话大概是 DevOps 从业者最不想听到的一句话。

在很多团队里,出了问题的第一反应是找人。找到是谁提交的代码、是谁改的配置、是谁点的发布按钮。找到了,责任人背锅,事情就算“处理”了。然后开个复盘会,写个改进计划,该干嘛干嘛。

但问题是:找人的过程本身就在消耗信任。

当你习惯性地去追责,团队成员的潜意识就会变成:“少做少错,不做不错。” 大家开始变得保守,能不改的代码就不改,能不碰的配置就不碰。更可怕的是,出了问题之后,大家的第一反应不是怎么快速恢复,而是怎么撇清关系——“不是我干的”,“我没改过这个”,“我早就说过这个问题”。

这种氛围下,DevOps 是不可能做好的。因为 DevOps 的核心精神之一就是频繁交付。频繁交付意味着变化多,变化多意味着出错的可能性大。如果每次出错都是一场对个人的审判,那谁还敢频繁交付?

三、向前看,不追责

那出了事故怎么办?不追责是不是就没人负责了?

当然不是。不追责不等于不负责。 我们要做的是:把对人的追责,转变为对流程的改进。

这件事说穿了很简单:一个事故的发生,大概率不是某个人“故意搞破坏”,而是一系列因素叠加的结果:

  • 代码审查没覆盖到
  • 测试用例没写全
  • 发布流程缺少卡点
  • 监控告警不够及时
  • 操作文档不够清晰

这些才是真正需要去解决的问题。所以出事故之后,正确的做法是:

  1. 先止血:快速恢复服务,降低影响范围。
  2. 复盘:不是找谁干的,而是找“为什么这个流程允许了这件事发生”。
  3. 改进:针对流程的薄弱环节,加上自动化卡点、补充测试、完善监控。

这就是“向前看”——着眼点永远是“下一次怎么避免”,而不是“上一次是谁干的”。

有意思的是,当你真的做到了“不追责”,反而大家会更愿意主动承担责任。因为大家知道:坦承问题不会带来惩罚,只会带来改进。这种信任一旦建立起来,团队的自驱力会远超你的想象。

四、敏捷文化:小提交、独立提交

DevOps 文化还有一个重要根基,就是敏捷开发文化

很多团队说自己做敏捷,但代码提交的方式却完全不是敏捷的。一个功能开发了三五天,然后一股脑提交一大坨代码,几千行改动,谁看谁头疼。这种提交方式对 DevOps 来说是灾难性的——代码审查做不深、冲突解决起来痛苦、出了问题定位极难。

DevOps 需要的是小提交、独立提交

  • 小提交:每次提交只做一件事,改动量控制在合理范围内。这样审查的人能看进去,出问题了也好回溯。
  • 独立提交:每个提交是自包含的,不依赖“后面还有一坨代码”。提交完了,至少编译能过。

你可能会问:功能没做完怎么提交?很简单,把大功能拆成小步骤。这不是技术问题,是习惯问题。用 feature flag、分支策略、接口先行等手段,完全可以做到小步提交、持续集成。

这种习惯一旦养成,DevOps 流程就会变得顺滑很多。CI 流水线频繁触发,每次的变更量都在可控范围内,出问题的概率和修复的难度都会大大降低。

五、精益思想:频繁交付,接受反馈

和敏捷文化相辅相成的,是精益思想

精益的核心之一是小批量、快速交付。对应到软件开发中就是:不要憋一个月做一个大版本,而是尽可能频繁地交付小版本。只有这样,你才能快速获得反馈。

流水线(Pipeline)是 DevOps 的核心机制之一。代码提交上去,自动构建、测试、部署,跑完了告诉你结果——通过了还是失败了。精益思想的核心就是:你要主动接受这个反馈,并且快速响应。

有些团队的做法是:流水线红了就红了,反正不是我的事。或者说,流水线红了,看看,是自己业务代码的问题就不管了,反正是测试环境。这种心态就是典型的“只建了工具,没建文化”。

真正的精益做法是:流水线红了,就是当前最重要的事。 要么修代码、要么修流水线、要么确认是误报然后关掉——总之不能让红色一直挂着。因为红色挂久了,大家就会对流水线“脱敏”——红灯变成了常态,那它还能起到反馈作用吗?

六、总结

DevOps 落地的真正难点,往往不是工具链,而是人的观念和团队的文化

  • 向前看、不追责:把事故看作流程改进的契机,而不是追究个人的审判。
  • 敏捷文化:小提交、独立提交,让 CI 流程高频且安全。
  • 精益思想:频繁交付,认真对待每一次流水线反馈。

这三条,不是挂在墙上的标语,而是要融入日常开发习惯中的实践。

工具是文化的承载。好的文化先建立起来,再配上合适的工具,DevOps 才能真正发挥价值。反过来,如果文化没到位,工具再多也只是摆设。

下一篇,我们来聊聊 DevOps 最核心的概念之一:DevOps 回环——理解端到端的软件交付全流程。

每天前进一小步,就是一个新的高度!