https://amazonaws-china.com/cn/devops/what-is-devops/
背景
从最初的瀑布模型,到后来的敏捷开发,再到今的DevOps, 这是现代开发人员构建出色产品的技术路线。 随着 DevOps的兴起,出现了持续集成,持续交付(CI/CD)和持续部署的新方法, 而传统的软件开发和交付方式在迅速变得过时。过去的敏捷时代里, 大多数公司的软件发布周期是每月、每季度甚至每年(还记得那些日子吗?),而在现在 DevOps 时代,每周、每天甚至每天多次都是常态。 当 SaaS 成为业界主流后尤其如此,您可以轻松地动态更新应用程序, 而无需强迫用户下载更新组件。很多时候,用户甚至都不会注意到正在发生变化。
开发团队通过软件交付流水线(Pipeline)实现自动化,以缩短交付周期,大多数团队都有自动化流程来检查代码并部署到新环境。
简介
持续集成
注重将各个开发者的工作集合到一个代码仓库中,通常每天会进行几次, 主要目的是尽早发现集成错误,使团队更加紧密结合,更好地协作。
持续交付
最小化部署或发布过程中团队固有的摩擦, 它的实现通常能够将构建部署的每个步骤自动化,以便任何时刻能够安全地完成代码发布(理想情况下)。
持续部署
一种更高程度的自动化,无论何时代码有较大改动, 都会自动进行构建/部署。
持续集成( CI )
说明
持续集成是一种 DevOps 软件开发实践。采用持续集成时,开发人员会定期将代码变更合并到一个中央存储库中,之后系统会自动运行构建和测试操作。持续集成通常是指软件发布流程的构建或集成阶段,需要用到自动化组件(例如 CI 或构建服务)和文化组件(例如学习频繁地集成)。持续集成的主要目标是更快发现并解决缺陷,提高软件质量,并减少验证和发布新软件更新所需的时间。
为什么需要持续集成?
过去,一个团队的开发人员可能会孤立地工作很长一段时间,只有在他们的工作完成后,才会将他们的更改合并到主分支中。这使得合并代码更改变得困难而耗时,而且还会导致错误积累很长时间而得不到纠正。这些因素导致更加难以迅速向客户交付更新。
持续集成的工作原理是什么?
采用持续集成时,开发人员可以使用诸如 Git 之类的版本控制系统,将更新频繁提交到共享存储库中。在每次提交前,开发人员可以选择在集成前对其代码执行本地单元测试,作为额外的验证层。持续集成服务在新代码更改上自动构建和运行单元测试,以立即发现任何错误。
持续集成的优势
提高开发人员的工作效率
持续集成可将开发人员从手动任务中解放出来,并且鼓励有助于减少发布到客户环境中的错误和缺陷数量的行为,从而提高团队的工作效率。
更快发现并解决缺陷
通过更频繁的测试,您的团队可以在缺陷稍后变成大问题前发现并解决这些缺陷。
更快交付更新
持续集成有助于您的团队更快、更频繁地向客户交付更新。
持续交付( CD )
说明
持续交付是一种软件开发实践,通过持续交付,系统可以自动为将代码更改发布到生产环境做好准备。?现代应用程序开发的支柱,持续交付通过在构建阶段后将所有代码变更部署到测试环境和/或生产环境中,实现对持续集成的扩展。在正确实施时,开发人员将始终拥有已通过标准化测试流程的部署就绪构建构件?。
为什么需要持续交付?
采用持续交付时,开发人员可以自动执行单元测试以外的测试,这样他们就可以在部署到客户环境前跨多个维度对应用程序更新进行验证。这些测试可能包括 UI 测试、负载测试、集成测试、API 可靠性测试等。这有助于开发人员更全面地验证更新并抢先发现其中的问题。借助云,开发人员可轻松高效地自动创建和复制多个用于测试的环境,而这一点以前在本地很难实现。
持续交付与持续部署
采用持续交付时,系统会构建并测试每一个代码变更,然后将其推送到非生产测试环境或临时环境中。生产部署前可能存在多个并行测试阶段。持续交付与持续部署之间的区别在于,需要手动批准才能更新到生产环境。对于持续部署,生产会在没有明确批准的情况下自动发生。
持续交付的优势
自动化软件发布流程
持续交付让您的团队能够自动构建、测试并准备代码变更,以便发布到生产环境中,从而使您的软件交付更加高效、快速。
提高开发人员的工作效率
这些实践可将开发人员从手动任务中解放出来,并且鼓励有助于减少部署到客户环境中的错误和缺陷数量的行为,从而提高团队的工作效率。
更快发现并解决缺陷
通过更频繁、更全面的测试,您的团队可以在缺陷稍后变成大问题前发现并解决这些缺陷。持续交付让您能够更轻松地对代码执行其他类型的测试,因为整个过程已实现自动化。
更快交付更新
持续交付有助于您的团队更快、更频繁地向客户交付更新。当持续交付得以正确实施时,您将始终能够获得一个已通过标准化测试流程的部署就绪型构建工件。