持续集成、持续交付和DevOps有什么区别?

16

我听到这些术语并想知道它们之间的区别是什么?它们与持续构建和持续部署有什么关系?

我听到这些术语并想知道它们之间的区别是什么?它们与持续构建和持续部署有什么关系?

就此问题而言,如果您有兴趣加入,请访问http://area51.stackexchange.com/proposals/85819/devops?referrer=Ourlo91--YgyR6VmaIeuwQ2。这似乎是一个适合“DevOps”(开发运营)SE提案的好问题候选人。 - Dan Cornilescu
请参见 https://dev59.com/Bl4b5IYBdhLWcg3w3k6Y#40502250。 - cn007b
3个回答

8

持续集成 / 持续构建的目的是让开发者频繁地向源代码库提交代码(并从代码库获取最新版本,以便进一步更改基于其他开发者的最近更改)。这减少了合并冲突所浪费的时间,因为在这种情况下合并更容易。

最好使用构建服务器自动化该过程,该服务器还可以运行任何单元测试。如果构建/测试失败,则向开发人员提供反馈,以便快速解决任何问题。

持续部署涉及将构建过程中生成的构建工件自动部署到测试和生产环境中。为了减轻其中的风险,人们经常使用功能切换将发布(以受控方式)与部署分离。

持续交付与技术关系较小,更多地涉及组织对软件交付的方法(尽管它确实大量使用自动化)。

DevOps是一个更广泛的领域,通常强调打破开发人员和运营团队之间的障碍,并让他们以一种方式合作,从中获得组合技能的好处。在公司中,将会出现更多环境配置、构建部署、监控(并自动响应问题和可扩展性)以及在某些情况下软件定义网络的自动化。在一些组织中,专门的DevOps团队已经被创建。

3

持续交付(CD)是由ThoughtWorks的Jez Humble和David Farley共同撰写的2010年书籍中首次描述的概念。

持续集成和持续交付经常被混淆,但它们之间有一些关键区别:

  • 一个开发人员可以完成CI,而CD需要团队协作
  • 没有CI就无法进行CD
  • CD是一个线性的过程,而CI是一个连续的反馈(构建)循环,推动CD向前
  • 使用CD时,您随时准备好推送到生产环境
  • CI允许您多次将代码检入存储库,以便您及早检测问题

以下是Martin Fowler的一句话:

"持续集成是一种软件开发实践,在这种实践中,团队成员频繁地集成他们的工作,通常每个人每天至少集成一次-导致每天多次集成。每个集成都由自动构建(包括测试)验证,以尽快检测到集成错误。许多团队发现,这种方法可以显著减少集成问题,并使团队更快地开发出具有凝聚力的软件。”

持续交付和持续部署之间的主要区别是自动化。您自动化了部署方面的事情。如果您每天多次推送到生产环境或出于其他原因,则此方法很有效。

至于DevOps,那是完全不同的东西。人们通常认为DevOps是一种角色或工具,但它实际上是一种文化。您不能“执行”DevOps。以下是Mike Kavis的一句话,我非常喜欢:

"DevOps是一种文化转变或运动,鼓励良好的沟通和协作(即团队合作),以促进更快、更可靠地构建更高质量的软件。"


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接