第 10 章

阿里云云原生 DevOps

·约 9 分钟

第 5 章结尾留了一个问题:技术栈都到位了,团队怎么保证每一次上线都又快又稳?这一章是因果链的最后一环——DevOps。

为什么需要 DevOps

传统开发流程里,需求、开发、测试、运维往往是四个割裂的环节,各管一段,中间靠人工交接。这种割裂会带来几个典型问题:

  • 环境不一致导致的"甩锅"——开发说"我这里没问题",测试说"测试环境跑得好好的",运维说"生产环境就是不行",谁都没说错,但问题没人真正负责
  • 发布流程手工、串行,一次上线要人工执行一长串步骤,容易出错,出了问题回滚也麻烦
  • 反馈链条太长:代码写完到真正在生产环境验证效果,中间隔着好几个环节、好几天甚至好几周,出问题很晚才能发现

从交接到共同负责

DevOps(Development + Operations)不是某一个工具,是一种打破"开发"和"运维"之间壁垒的文化和方法论:让写代码的人也对代码上线后跑得好不好负责,运行中的反馈也能及时回到下一轮开发。目标很直接:更快、更频繁、更可靠地交付软件。

DevOps 的工作和反馈闭环:需求进入代码、构建测试和发布部署,运行观察所得的反馈进入改进,再回到需求;开发、测试和运维共同对交付结果负责。

DevOps 如何落地

DevOps 要落地,需要三个层面一起到位:

层面含义
组织及文化开发和运维不再各管一段,团队共同对交付质量负责
自动化流水线CI/CD 流水线把构建、测试、发布串成自动化链路
DevOps 工具集代码管理、构建工具、测试框架、部署平台这些配套工具

三者缺一不可:只改文化不上工具,自动化落不了地;只上工具不改协作方式,工具只是摆设。

CI 与 CD 的边界

流水线(Pipeline)把验证和发布串起来。CI 是持续集成(Continuous Integration);CD 有持续交付(Continuous Delivery)和持续部署(Continuous Deployment)两种含义,区别在进入生产环境的这一步:

CI 通过频繁合入代码、自动构建和测试尽早发现问题;完成后续验证后,代码保持可发布。持续交付由人工决定何时发布到生产,持续部署则在验证通过后自动部署,不逐次等待人工批准。

课程中的触发方式是:开发者接到新需求后,在代码仓库里创建一条特性分支(Feature Branch)并与需求对应;代码提交后,CI Server(如 Jenkins、云效 Flow)自动触发构建和测试流水线。分支策略可以不同,但频繁集成、自动验证和可重复发布是要保留的工程实践。

云原生交付的新要求

前面几章讲的容器、Kubernetes、微服务,给 DevOps 提出了新的要求:

  • 应用从几个大单体拆成几百个微服务之后,每个服务都要有自己的 CI/CD 流水线,流水线数量和管理复杂度一下暴增
  • 容器化之后,流水线不再只是"构建代码",还要把"构建镜像、扫描镜像安全、推送到仓库"(呼应第 3 章的 ACR)也纳入进来
  • Kubernetes 的声明式 API 天然适合和 CD 结合——用 Git 仓库里的 YAML 作为集群状态的唯一事实来源,一旦 YAML 变化就自动同步到集群,这个理念通常被称为 GitOps

简单说:云原生时代的 DevOps,流水线要覆盖"代码 → 镜像 → Kubernetes 部署"这条更长的全链路,而不只是传统的"代码 → 服务器部署"。

云效如何串起研发流程

如果需求管理用一个工具、代码托管用另一个工具、CI/CD 又是第三个工具,团队协作的信息还是散落在各处,交接环节并没有真正消失,只是从"人工交接"变成了"在不同工具之间来回切换"。一站式平台把需求、代码、构建、测试、部署、度量这几个环节串在同一个系统里,才能真正形成一个完整、可追溯的闭环。

云效的产品分工

和第 4 章 EDAS 一样,云效也不是从零设计的产品,而是阿里巴巴内部数万研发人员每天在用的同一套系统,产品化之后对外开放。

云效覆盖研发全生命周期的产品矩阵,比较核心的几个:

  • Projex(项目协作):需求和任务管理,和钉钉组织打通
  • Codeup(代码管理):四项核心功能——代码托管、代码评审、代码扫描、质量检测(注意:代码扫描属于 Codeup 而不是 Flow)
  • Flow(流水线):自动化的 CI/CD 交付流水线,持续集成、持续验证、持续发布
  • Testhub(测试管理):测试用例和测试流程管理
  • Packages(制品仓库):构建产出的制品统一存放和分发
  • Insight(效能洞察):研发过程的度量数据,帮团队看清楚流水线卡在哪个环节

这些产品串起来,覆盖的正是前面说的"需求 → 代码 → 构建 → 测试 → 制品 → 部署 → 度量"这条完整链路,并且和阿里云其他产品(ACR 镜像仓库、ACK 容器集群、云监控)深度集成,不用自己再拼凑一套工具链。

费用:云效基础版免费、不限人数(代码托管、流水线、项目协作、测试管理等基础功能都包含);高级版 618 元/人/年(5人起售),增加代码安全加密、组织级效能报表、私有构建集群等企业级特性。

回看这条学习路径

写到这里,第 1 章推的那条因果链正好完整地走了一遍:环境不一致 → 容器 → 编排 → 微服务 → Mesh 化 → Serverless → 消息队列解耦 → 限流降级和混沌工程 → 可观测性 → 最后是 DevOps 把整条交付链路本身也变成自动化的工程实践。

配图概念参考:AWS DevOps 概述、持续集成与持续交付。

练习这一单元 →