敏捷开发与DevOps的区别

敏捷与 DevOps 之间的主要区别在于:敏捷是关于如何开发和交付软件的哲学,而 DevOps 则描述了如何通过使用现代工具和自动化流程来持续部署代码。

敏捷宣言

如果软件开发人员是敏捷的,他们的行为方式与敏捷宣言中定义的价值观和原则相一致。

敏捷宣言于 2001 年由软件开发领导者撰写并签署,它定义了敏捷从业者必须遵循的十二项原则和四项基本价值观,包括:

  • 个体和互动高于流程和工具
  • 工作的软件高于全面的文档
  • 客户合作高于合同谈判
  • 响应变化高于遵循计划

虽然敏捷宣言对软件开发社区的重要性不言而喻,但它的篇幅却非常短。 总共不到500字。

除了坚持将软件持续将会给客户是敏捷的最高优先级之外,宣言并没有提供任何简明的指导,也没有推荐任何可以遵循的具体流程。 这纯粹是一种哲学练习。

如何定义 DevOps?

与敏捷相比,DevOps 有定义文档。 DevOps 没有普遍接受的定义。

我们甚至不清楚 DevOps 是什么时候进入公共词典的,尽管许多人指出 John Allspaw 和 Paul Hammond 在 2009 年 Velocity 大会上的演讲《每天10+个部署:Flickr上的开发和运维合作》是它的开端。许多人也认为 Gene Kim 的《凤凰计划》一书也是 DevOps 普及的一个推动因素。

比较 敏捷开发 DevOps
启始时间 2001 2007
创始人 J约翰·克恩、马丁·福勒等人 Flickr 的 John Allspaw 和 Paul Hammond 以及 Gene Kim 的凤凰计划
最高优先级 软件持续交付 软件持续部署
创始神器 敏捷宣言 《每天10+个部署:Flickr上的开发与运维合作》
实施框架 Scrum、看板、ScrumBan、精益、XP CAMS, CALMS, DORA
备选方案 瀑布开发模型 竖井模式的开发与部署
团队规模 由 10 人以下的小团队使用 作为公司范围内的战略实施
范围 专注于单个应用程序的开发 公司范围内的软件部署方法

在 2009 年的 Velocity 演示中,Allspaw 和 Hammond 描述了他们对的软件测试例程的信心怎样使得在开发和运营之间建立了诸多信任,该公司甚至已经实施了一个流程,可以每天将代码自动部署到生产环境中 10 次以上。自动化这样的事情在当时被认为是石破惊天的。

自 2009 年以来,软件开发行业发生了许多变化,但 DevOps 的基石仍然是:

  • 开发和运维团队之间的信任和协作
  • 严重依赖全面的软件测试例程
  • 集成现代工具以简化开发和运营任务
  • 无需任何人工干预或检查点即可自动部署到生产中

敏捷和 DevOps 文化

尽管许多人争论 DevOps 到底是什么,但大多数定义都包含“文化”一词。这就引出了一个问题:什么是文化?

一般来说,文化可以定义为任何一群志同道合的人,他们使用一套通用的工具并遵循一套可重复的流程。

从本质上讲,文化可以归结为以下三点:

  • 流程
  • 及他们所用的工具

敏捷和 DevOps 的目标和成果是紧密相连的

DevOps 工具和流程

在 DevOps 的世界中,从业者使用的流行工具包括:

  • Git 和 GitHub
  • Docker 和容器
  • Jenkins 其他 CI 工具
  • 用于编排的 Kubernetes
  • Chef 和 Puppet
  • 静态代码分析
  • Terraform
  • 公有云

使用这些产生的过程是代码的持续集成和部署(CI/CD)。

敏捷和 DevOps 有何相似之处?

从事 DevOps 的人有什么独特之处?

数字化转型成功的先决条件是什么?

这正是敏捷和 DevOps 的交汇点。

为了使 DevOps 发挥作用,所有 DevOps 从业者都必须接受敏捷思维。

所有 DevOps 从业者都相信:

  • 手动任务的自动化和未完成工作的重要性
  • 与积极的个人组成的自组织团队合作的重要性
  • 将软件持续交付给客户作为最高优先级

这些要点中的每一个都直接映射到敏捷宣言中列出的十二条原则之一。

DevOps 无限循环显示了敏捷团队所采用的迭代开发过程

如何将敏捷和 DevOps 结合起来?

DevOps 人员必须是敏捷的。

要正确执行 DevOps,DevOps 从业者必须接受敏捷思维。

敏捷和 DevOps 从业者不仅有共同的思维模式,而且他们的目标也很一致。

DevOps 过渡的最终目标是将工作代码完全自动化部署到生产中。这代表了 DevOps 的完整启示。

敏捷宣言毫不含糊地指出,其最高优先级是持续向客户交付软件。

敏捷和 DevOps 都相信构建软件、确保透明度和促进可持续发展的最佳方式是将可工作的软件交到客户手中。

敏捷和 DevOps 有着完全相同的目标,就是让开发和运营团队使用现代工具并遵照流程,将软件尽快交到客户手中。

敏捷与 DevOps 的异同

总结一下,下面是 DevOps 和敏捷之间最常见的区别和相似之处:

  1. 敏捷由敏捷宣言定义,而 DevOps 没有普遍接受的定义

  2. DevOps 定义了一种工作文化,而敏捷是一种软件开发理念

  3. 敏捷的最高优先级是持续交付,而 DevOps 则是持续部署

  4. DevOps 坚持所有手动任务的自动化,而敏捷则重视“未完成的工作量”

  5. DevOps 从业者拥护敏捷思维,而敏捷则要求参与者自组织和激励

敏捷和 DevOps 相结合

敏捷和 DevOps 并不是相互冲突的概念。事实上,情况恰恰相反。

拥有敏捷思维并接受 DevOps 文化的人都有一个共同的目标,那就是向客户持续交付和部署有价值的软件。

要正确执行 DevOps,所有参与者都必须接受敏捷思维。只有这样,基于 DevOps 的数字化转型才会成功。


【注】本文译自:Agile vs DevOps: What's the difference?