- 文档/教程
【免费下载链接】90DaysOfDevOps
This repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.
导读:本文是 90DaysOfDevOps 学习路线图「了解 DevOps 是什么、为什么要用 DevOps」系列的第 4 天内容(对应 2022/Days/day04.md)。Agile 与 DevOps 最初是两个独立的概念,如今却经常被混为一谈。本篇将逐维度拆解两者的关注点、参与者、框架、反馈来源、风险与工具差异,说明为什么它们可以而且应当融合,并给出同时落地 Agile 与 DevOps 的 7 个步骤,帮助你在理解方法论的同时,为后续 Git、CI/CD 等实操章节打下认知基础。
先看定义:Agile 与 DevOps 各是什么
Agile Development(敏捷开发)
Agile 是一种以"更快交付小结果"为核心取向的开发方法:与其一次性发布一个大版本,不如把软件拆成迭代来开发。团队通常以周或月为单位持续发布带增量更新的新版本,最终目标是把最优体验交付给终端用户。它的关键词是迭代(iterations)与增量(incremental updates)。
DevOps
前几天的内容(见 DevOps Lifecycle - Application Focused)已经从多个角度描述过 DevOps 的终极目标。DevOps 通常指建立在软件开发者与运维专家协作基础上的软件开发与交付实践,其核心收益是简化开发流程与最大限度减少沟通误解。
核心差异:两者关注点不同,却在互相成就
Agile 与 DevOps 的差异主要体现在**关注点(preoccupations)**上,而它们恰好是互补的:
- Agile 追求短周期迭代,而短周期迭代只有靠 DevOps 带来的自动化才可能实现;
- Agile 希望客户尽快试用某个特定版本并快速反馈,而这只有在 DevOps 能轻松创建新环境的前提下才做得到。
换句话说,Agile 定义了"多快交付"的目标,DevOps 提供了"如何持续交付"的引擎。下面从七个维度逐一对比。
参与者(Different participants)
- Agile:聚焦于优化终端用户与开发者之间的沟通,对外导向(outward-oriented),面向客户;
- DevOps:面向开发者与运维团队成员,是一组内部实践(internal practices)。
团队(Team)
- Agile通常适用于软件开发者与项目经理;
- DevOps 工程师的能力位于开发、QA(质量保证)与运维三者的交叉地带,他们参与产品生命周期的所有阶段,并且本身就是 Agile 团队的一部分。
应用框架(Applied Frameworks)
- Agile拥有大量管理框架来实现灵活性与透明性,常见演进路径为:Scrum > Kanban > Lean > Extreme > Crystal > Dynamic > Feature-Driven;
- DevOps关注协作式的开发方法,但不提供具体方法论。它推广的是实践(practices)而非框架,例如:基础设施即代码(Infrastructure as Code)、架构即代码(Architecture as Code)、监控(Monitoring)、自愈(Self Healing)、端到端测试自动化(end to end test automation)等。
反馈来源(Feedback)
- Agile的主要反馈来源是终端用户(end-user);
- DevOps中,利益相关者(stakeholders)与团队自身的反馈优先级更高。
目标领域(Target areas)
- Agile更关注软件开发本身,对部署与维护的关注较少;
- DevOps同样关注软件开发,但其价值观与工具还覆盖部署及发布后阶段,包括监控、高可用、安全与数据保护。
文档(Documentation)
- Agile优先保障灵活性与手头任务,文档与监控的优先级相对靠后;
- DevOps则把项目文档视为项目的重要组成部分之一。
风险(Risks)
- Agile 的风险源于方法论本身的灵活性:优先级与需求持续变化,导致项目难以预测和评估;
- DevOps 的风险源于对术语的误解与缺乏合适的工具:有些人把 DevOps 仅仅看成一套用于部署和持续集成的软件集合,而没有改变底层开发流程的结构。
工具(The Tools Used)
- Agile 工具聚焦管理、沟通、协作、度量与反馈处理,常见有JIRA、Trello、Slack、Zoom、SurveyMonkey等;
- DevOps 工具服务于团队沟通、软件开发、部署与集成,常见有Jenkins、GitHub Actions、BitBucket等。
尽管 Agile 与 DevOps 在关注点与范围上略有不同,但核心价值几乎一致,因此完全可以组合使用。这一点在 90DaysOfDevOps 的路线图上也有印证:第一周先是介绍 Agile 方法论与 DevOps 的搭配(day01.md),随后用 Plan > Code > Build > Testing > Release > Deploy > Operate > Monitor 把整个持续循环拆成可执行的阶段,并在后半程用整整一周(Day 70~76)实战 CI/CD 流水线。
工具差异在仓库中的落地印证:从方法论到流水线
如果你觉得上面的工具对比仍偏概念,不妨直接看 90DaysOfDevOps 仓库里的落地样例:在 2022/Days/CICD/Jenkins/Pipeline/Jenkinsfile 中,可以看到一条把"自动化一切"落到实处的声明式流水线:
- 通过
podTemplate定义构建 Pod,内含maven(构建测试)与kaniko(容器镜像构建)两个容器; stage('Clone Repository')拉取代码,stage('Build Image')与stage('Test Image')完成构建、测试与镜像推送(/kaniko/executor --context \pwd` --destination michaelcade1/helloworld:1.0`)。
这条流水线正是 day04 所讲 DevOps 实践的典型形态:不提供 Scrum 之类的管理框架,而是用端到端自动化(clone → build → test → image)支撑 Agile 的"短迭代、快速部署、快速反馈"。这也呼应了 day05 中 CI/CD 的划分——Continuous Delivery 覆盖 Plan > Code > Build > Test,Continuous Integration 在此基础上加上 Release,而 CI 成功后再进入 Continuous Deployment 的 Deploy > Operate > Monitor 阶段。
合二为一:值得吗?
把 Agile 与 DevOps 结合起来,你会获得以下收益:
- 灵活的管理 + 强大的技术;
- Agile 实践帮助 DevOps 团队更高效地沟通优先级;
- 你为 DevOps 实践付出的自动化成本,会因 Agile 的"快速且频繁部署"需求而物有所值;
- 采用 Agile 实践的团队会改善协作、提升团队动机、降低员工流失率;
- 最终结果是更好的产品质量。
此外,Agile 允许回到产品开发的前序阶段修复错误,从而防止技术债务(technical debt)不断累积。
同时落地 Agile 与 DevOps 的 7 个步骤
若想同时采纳两者,按以下 7 步推进:
- 联合开发与运维团队(Unite the development and operation teams);
- 组建 build 与 run 团队,所有开发与运维问题都由整个 DevOps 团队共同讨论;
- 改变对 sprint 的处理方式:为 DevOps 任务分配与开发任务同等价值的优先级评级,并鼓励开发与运维团队就对方的工作流和潜在问题交换意见;
- 让 QA 参与到所有开发阶段;
- 选择正确的工具;
- 尽可能自动化一切(Automate everything you can);
- 用有形的数字交付物进行度量与控制(Measure and control by using tangible numeric deliverables)。
其中第 5~7 步在后半程课程中有大量可对照的实践:Day 70~76 的 Jenkins、GitHub Actions、ArgoCD 章节(入口见 2022/Days/day70.md),以及 Monitoring 章节 中的监控、日志管理与可视化,都是"选工具、做自动化、用量化指标控制"的直接落地。
小结与下一步
一句话总结本日核心:Agile 回答"该以多快的节奏交付什么",DevOps 回答"如何把这种快节奏稳定地交付到生产环境"。两者关注点不同但互相成就——Agile 的短迭代依赖 DevOps 的自动化与环境供给能力,DevOps 的自动化投入又因 Agile 的频繁部署需求而变得划算。它们不是二选一的竞争关系,而是可以(也应该)组合使用的互补方法论。
如果你能坚持读到这里,就已经掌握了 DevOps 与 Agile 关系的整体图景。接下来进入第 5 天,把视角从方法论切换到应用的全生命周期:Plan > Code > Build > Testing > Release > Deploy > Operate > Monitor,继续阅读 day05.md。
- 文档/教程
【免费下载链接】90DaysOfDevOps
This repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.
相关推荐
Anarlog 的 macOS 原生通知系统:Collapsed/Expanded 双形态交互与自动关闭计时器实现解析
Anarlog 的 macOS 原生通知系统:Collapsed/Expanded 双形态交互与自动关闭计时器实现解析 Anarlog 是一个开源 Granol
文档/教程90DaysOfDevOps 第 2 天:DevOps 工程师的职责全景——连接开发与运维的桥梁
90DaysOfDevOps 第 2 天:DevOps 工程师的职责全景——连接开发与运维的桥梁 本篇是 90DaysOfDevOps https://link
文档/教程【亲测免费】 探索DevOps的90天旅程:90DaysOfDevOps
探索DevOps的90天旅程:90DaysOfDevOps 在软件开发的领域中,DevOps已经成为不可或缺的一部分,它融合了开发和运维的最佳实践,以实现高效、
文档/教程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考