【问题标题】:What is the difference between continuous integration, continuous delivery and DevOps?持续集成、持续交付和 DevOps 之间有什么区别?
【发布时间】:2016-01-22 07:49:19
【问题描述】:

我同时听到这些术语,想知道有什么区别?它们与持续构建和持续部署有何关系?

【问题讨论】:

标签: continuous-integration devops continuous-delivery


【解决方案1】:

Continuous integration / 持续构建就是让开发人员很少且经常地向源代码存储库提交代码(并从存储库获取最新版本,因此任何进一步的更改都基于其他开发人员最近的更改)。这减少了在合并解析上浪费的时间,因为在这种情况下合并更容易。

该过程最好使用构建服务器实现自动化,该服务器还可以运行任何单元测试。然后在构建/测试失败的情况下向开发人员提供反馈,以便可以快速修复任何问题。

持续部署涉及将构建工件从构建过程自动部署到测试和生产环境。为了降低与此相关的风险,人们经常使用feature toggles 将发布(以受控方式)与部署分开。

持续交付与技术无关,更多与组织的软件交付方法有关(尽管确实大量使用自动化)。

DevOps 是一个更大的领域,通常强调打破开发人员和运营团队之间的障碍,让他们以一种能够从综合技能中受益的方式进行协作。环境配置、构建部署、监控(以及自动对问题和可扩展性作出反应)以及在某些情况下软件定义网络的更多自动化将在公司中产生。在一些组织中,已经创建了专门的 DevOps 团队。

【讨论】:

    【解决方案2】:

    持续交付 (CD) 是在 2010 年由 ThoughtWorks 的 Jez Humble 和 David Farley 合着的书中首次描述的概念。

    持续集成和持续交付经常相互混淆,但有一些关键区别:

    • CI 可以由一名开发人员完成,其中 CD 需要团队协作
    • 没有 CI 就无法完成 CD
    • CD 是一个线性旅程,其中 CI 是一个持续反馈(构建)循环,推动 CD 向前发展
    • 有了 CD,您就可以随时投入生产
    • CI 允许您将代码多次检入 repo,以便您尽早发现问题

    这是来自Martin Fowler的引用:

    “持续集成是一种软件开发实践,其中 团队成员经常整合他们的工作,通常是每个人 至少每天集成 - 导致每天进行多次集成。 每个集成都通过自动构建(包括测试)进行验证,以 尽快检测集成错误。很多团队发现 这种方法可以显着减少集成问题,并且 允许团队更快地开发有凝聚力的软件。”

    持续交付和持续部署之间的主要区别在于自动化。您将事物的部署方面自动化。如果您每天多次推送生产或出于各种其他原因,这很有效。

    至于 DevOps,那完全是另一回事。人们通常认为 DevOps 是一种角色或一种工具,但它实际上是一种文化。你不“做” DevOps。这是我非常喜欢的 Mike Kavis 的话:

    “DevOps 是一种文化转变或一种鼓励伟大的运动 沟通和协作(又名团队合作)以促进建设 质量更好的软件,速度更快,可靠性更高。”

    【讨论】:

      【解决方案3】:

      不同的人如何使用连续的 xxx 短语可能有些含糊不清,但我认为这篇博文总结得很好。

      http://blog.assembla.com/assemblablog/tabid/12618/bid/92411/Continuous-Delivery-vs-Continuous-Deployment-vs-Continuous-Integration-Wait-huh.aspx

      DevOps 与其说是一种具体的实践,不如说是一个总体理念,有点像敏捷是理念,单元测试是一种实践。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-20
        • 2021-10-30
        • 1970-01-01
        • 2015-01-19
        • 2018-12-05
        • 2013-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多