本文深入探讨了现代 DevOps 的四大核心支柱:流(Flow)、标准化、可观测性与安全交付。文章引用利特尔法则解释了减少在制品对提升交付速度的重要性,强调了通过平台工程抽象复杂性以实现标准化,并详细介绍了 OpenTelemetry 在可观测性中的应用,以及如何通过密钥管理和制品签名实现安全左移,旨在构建快速、可靠且安全的反馈闭环。
在软件历史的大部分时间里,开发和运维一直是两个独立的角色。开发者编写代码并将其交接出去,运维负责让系统持续运行。二者之间逐渐形成了不断扩大的反馈鸿沟。代码通过 ticket 向前流动,再通过 incident 返回。

真正的痛点不在于某个单一工具,而在于延迟。生产反馈传递给编写代码的人所需的时间越长,每一个错误的代价就越高。分布式系统让这一问题更加严重。一次发布可能会影响几十个具有不同依赖关系和故障模式的服务。在这种规模下,缓慢的反馈和不一致的交接方式已不可持续。
这个问题推动了 DevOps 运动。它的核心承诺很简单:在不增加风险的前提下,缩短变更到产生影响之间的时间。当 DevOps 团队同时构建和运维同一套系统时,责任与洞察就能对齐。工作重心也从单纯地部署代码,转变为设计快速、可靠的反馈闭环。
这与 DORA 对交付绩效的评估方式一致。2024 DORA 报告 强调了与高绩效相关的四项交付绩效指标:
这些指标共同衡量了速度(前置时间、部署频率)和可靠性(变更失败率、恢复时间)。换句话说,DevOps 在保持风险可衡量的同时提升了吞吐量,而这种可衡量性来自一致的交付和快速恢复。
那么在实践中,这是什么样子?DevOps 的工作就是让从 commit 到生产的路径可重复且低风险。在本文中,我们聚焦于四个 DevOps 原则支柱:flow、标准化、可观测性和安全交付。
要改进,就要关注那些可以跨 stack 应用的原则。DevOps tooling 会变化,但底层问题不会变:保持交付一致、让系统可观测,以及安全地交付。
我们将介绍 flow 如何塑造交付速度,标准化如何让可靠性具备可重复性,以及可观测性和安全交付如何在规模化场景下保障变更安全。
软件交付的行为像一个排队系统:当工作堆积时,反馈就会变慢。几个简单的概念就能解释,为什么小批量、快速的测试和部署检查,以及可预测的 pipeline,会优于大而集中的发布。
运筹学中最简单、最普适的公式之一是 Little’s Law:
Lead time = Work in Progress ÷ Throughput
翻译成工程术语就是:半成品越多,任何东西交付出去所需的时间就越长。
在软件世界里,这表现为长期存在的分支和只审查到一半的 pull request。即使每个单独任务看起来都可控,系统仍会因为 merge conflict 和上下文切换而变慢。
DevOps 工程师会学习识别这些队列。缩短它们可能意味着自动化 pre-merge 检查,或者将 pull request aging 作为摩擦的信号来跟踪。
当 pipeline 接近容量上限运行时,队列会迅速膨胀,尤其是在运行时间不可预测的情况下。实际目标是留出余量并保持一致性:让 build 保持快速、降低方差,并避免大规模 merge 高峰。
当 utilization 接近 100% 时,即使工作负载有轻微波动,也会造成巨大的延迟。在 CI/CD pipeline 中,这会表现为积压的测试队列和不稳定的 job,从而使运行时间激增。设计时要留出余量:在关键处并行化,保持反馈快速,并减少“大家都在下午 5 点 merge”的峰值。
上面的规律看起来像抽象概念,但它们正是 DevOps 实践奏效的原因。看似是 DevOps culture 的东西(频繁 merge、小改动、快速反馈),本质上只是大规模的队列管理。
这就是第一个 DevOps 原则在实践中的体现:把交付视为一个受 flow 约束的系统。不要再把交付看成一系列任务,而要把它看成一个流动系统。下一个挑战是在团队之间扩展这种能力。这时标准化就变得重要:一条铺好的交付路径、共享默认值,以及在不拖慢团队的前提下保障变更安全的 guardrail。
标准化让交付变得可重复:一条铺好的路径、共享默认值,以及更少的一次性 pipeline。我们如何让团队、项目和环境之间的可靠性都具备可重复性?这就是 platform 思维开始的地方。
一个好的 platform 不会消除复杂性,而是将其抽象化。Feature team 不应该从零开始配置 observability、管理 rollout 或定义权限。Platform 应该通过有明确立场的默认设置来处理这些事情,让每个团队都能安全地交付,而不必重复构建同样的系统。
有几个原则可以实现这一点。
Platform 有用户,而且这些用户是工程师。Platform 功能应该易于发现并且文档完善,这样工程师才能轻松采用。这里的目标是可用性。我们希望降低认知负担,让开发者能够专注于产品工作。当工程师无需额外步骤就能构建、部署和观察一个 service 时,Platform 就完成了它的工作。
和任何产品一样,Platform 也应该有反馈闭环。如果开发者在回避这个 platform,那就是设计问题。
标准化交付流程
可靠性来自一致性。每个团队都应该遵循同一条交付路径。这正是大规模 continuous delivery 得以实现的基础。

当每个团队都自己编写脚本和 pipeline 时,差异会增加。共享流程有助于消除这些差异,从而让改进能够被验证。
为了同一项工作使用多个 CI/CD 工具,可能会增加维护开销和运维不一致性,从而让可靠性更难管理。原因之一是,需要额外投入维护成本,以保持多个系统的一致性、文档化和安全性。整合有助于提升清晰度。
在每类环境中尽量选择一个 CI engine、一个 deployment controller 和一个 infrastructure-as-code framework,可以让系统保持简洁。每一个例外都会增加隐性成本。而当所有人都建立在同一基础之上时,更快的 build 或更好的 roll back 逻辑这类改进,就能惠及整个组织。
在大多数情况下,人工 review 仍然是必要的,但我们可以减少需要 review 的内容。Policy as Code 和 GitOps 有助于将检查作为持续流程纳入 pipeline。
像 OPA 或 Conftest 这样的 policy 工具可以自动执行这些标准。资源不能不打标签,image 不能未签名。GitOps 让运行时环境与版本控制中的定义保持一致,因此我们可以在需要时回滚变更。
除了静态 policy 检查之外,许多团队还会用自动化、AI 辅助的 code review 来增强 pipeline。这些系统会持续分析 pull request 中的安全风险、依赖问题、配置错误和 policy 违规,在人工 review 开始之前就标记问题并提出修复建议。当它们集成到 CI 中时,自动化 review 会作为一致的第一道 enforcement 防线,减少 review 瓶颈,并确保基础的安全与合规问题被尽早发现,从而让工程师能专注于更高层次的设计和可靠性工作。
一旦交付变得一致,下一个重点就是可见性。Observability 将每一次变更与其真实影响连接起来。这就是让 DevOps 系统持续改进的反馈闭环。
良好的 observability 始于能够解释系统行为的数据。三类核心信号是:
每种信号都捕获了系统行为的一个不同维度。Logs 有助于调试,metrics 体现趋势,而 traces 展示这些行为如何跨服务运作。DevOps 工程师必须确保每个新 service 默认发出这三类信号。
标准解决方案是 OpenTelemetry(OTel),这是一个开源 framework,用于跨语言和 backend 生成一致的 logs、metrics 和 traces。到 2025 年为止,OTel 的 tracing 和 metrics 规范已经稳定,主流供应商也原生支持接入。
借助 OpenTelemetry,你通常可以在只进行少量 instrumentation 调整的情况下切换 telemetry backend,主要是更新 exporter 和配置。它还会在各个 service 之间标准化 telemetry 格式,从而简化信号之间的关联。
Metrics 应该直接映射到 Service Level Objectives(SLOs)。它们是对用户而言“健康”意味着什么的明确定义。例如,一个 SLO 可能要求 99.9% 的 API 请求在 300 ms 以内完成,或者某个关键 endpoint 的 error rate 低于 0.1%。当某个 service 超出其 SLO 时,这就是应优先修复的信号。
DevOps 工程师的目标是让 observability 成为交付生命周期的一部分。它应该在 build 时完成 instrumentation,在 CI 中验证,并在部署后校验。每次发布都应自动证明其自身的健康状况。
一旦系统能够自我解释,下一步就是通过适当的协议来保护它们。
Secure delivery 遵循与 observability 相同的原则:它必须内建。目标是让安全路径成为默认路径,并通过 pipeline 强制执行。这就是 shift left security 的核心。让 security 成为开发流程本身的一部分,是 DevOps 工程师的责任。
第一层是 secrets management。凭证绝不应硬编码在代码中,也不应提交到配置文件里。在 CI 中,应该把 secrets 存储在加密的 secrets store 中(或从 secrets manager 中获取),而不是使用 plaintext env vars。
每个 secret 都应存储在一个中心化 manager 中(例如 Infisical),并在运行时动态获取。若检测到 plaintext 凭证,pipeline 应该失败,而且访问权限应按 service 进行范围限定,而不是按用户。这能消除相当大一部分意外泄露风险。
下一层是 artifact 完整性。每次 build 都应生成一个可验证的 artifact(即 container image、binary),并附带数字签名。像 Cosign 或 Sigstore 这样的工具可以让这一点更容易实现。已签名的 artifact 能证明来源,并防止在部署过程中被篡改。验证应在 rollout 前自动在 CI/CD pipeline 中完成。
Security 还依赖于一致的 policy enforcement。规则应以 code 的形式存在于一个集中位置。像 OPA 加 Conftest 这样的 policy 工具可以在 merge 前检查 Terraform plan、Kubernetes manifest 和 container config。另一方面,authorization framework 有助于在应用内部强制执行访问规则。
最后,应持续监控 environment drift。Infrastructure 和 configuration 应始终与版本控制中声明的内容一致。当某个变更在该流程之外发生时,系统应自动将其标记出来。
DevOps 最好被理解为一种思考方式:思考变更如何在系统中流动,以及如何让这种流动既安全又可持续。虽然这些原则在 2026 年依然是基础,但随着 software system 的规模扩大以及 AI tooling 自动化了开发生命周期的大部分流程,应用这些原则的角色也在演变。
关注点已经从个人开发者生产力转向集中管理的 platform。通过 internal developer platform,platform engineer 将 DevOps 原则编码进共享基础设施,并在整个组织中一致地应用,而不是按 service 逐个应用。
这些原则共同发挥作用。Flow 是基础。Standardization 让它可重复。Observability 让它可衡量。Secure delivery 让它安全。
这一切始于小而可回滚的变更。更小的 merge、自动化检查和清晰的回滚路径,能让系统持续前进,而不会被 incident ticket 拖住。目标是缩短变更与反馈之间的距离,直到 continuous improvement 成为默认状态。
Sustainability 将同样的逻辑延伸到成本和运维。开支应该跟随有意义的工作,系统应在有需求时扩展,在不需要时收缩。
当这些原则运作良好时,交付会以最好的方式变得“无聊”:更少的意外、更快的恢复,以及更稳定的产出。

技术文作者,Infisical
- 原文链接: infisical.com/blog/devop...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
作者暂未设置收款二维码