当前位置: 首页 > 科技观察

十分钟看懂DevOps和CI,CD

时间:2023-03-15 08:33:42 科技观察

DevOpsDevOps是Development和Operations的结合,是一种方法论,是一组流程、方法和系统的统称,用于促进应用开发、应用运维和质量保证(QA)部门之间的沟通、协作和整合。以期打破传统开发与运营之间的壁垒与隔阂。DevOps是一种文化、运动或实践,它重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间的沟通和协作。通过自动化“软件交付”和“架构变更”流程,可以更快、更频繁、更可靠地构建、测试和发布软件。具体来说,就是提高软件交付和部署过程中的沟通协作效率,旨在更快、更可靠地发布更高质量的产品。也就是说,DevOps是一组流程和方法的统称,并不是指具体的软件工具或软件工具的组合。各种工具软件或软件组合可以实现DevOps的概念方法。它的本质是一套方法论,而不是某一套工具,类似于软件开发中设计的OOP、AOP、IOC(或DI)等,是一种理论或过程或方法的抽象或同义词。CICI英文名称为ContinuousIntegration,中文翻译为:持续集成。在CI中,开发者会频繁地向主干提交代码,而这些新提交的代码需要经过编译和自动化测试流程的验证,才能最终合并到主干中。持续集成(CI)是在源代码更改后自动检测、拉取、构建和(在大多数情况下)单元测试的过程。持续集成的目标是快速确保开发人员新提交的更改是好的并且适合在代码库中进一步使用。CI的流程执行和理论实践让我们判断新代码和原代码能否正确融合。CDCD可以对应多个英文名称,持续交付ContinuousDelivery和持续部署ContinuousDeployment,将分别介绍。查了一些资料,持续交互和持续部署的概念比较混乱。以下概念总结是基于大部分信息。持续交付在完成CI和单元及集成测试的自动化构建过程后,自动将经过验证的代码发布到存储库。对于高效的持续交付流程,确保将CI内置到开发管道中非常重要。持续交付的目标是让代码库准备好部署到生产环境中。在持续交付中,从合并代码更改到交付生产就绪构建的每个阶段都涉及测试自动化和代码发布自动化。在流程结束时,运营团队可以快速轻松地将应用程序部署到生产环境中或将其发布给最终用户。持续部署对于一个成熟的CI/CD流水线(Pipeline)来说,最后的阶段就是持续部署。作为持续交付的扩展——自动将生产就绪构建发布到代码存储库——持续部署自动将应用程序发布到生产环境。持续部署意味着所有的变更都会自动部署到生产环境中。持续交付意味着所有的变更都可以部署到生产环境,但是出于业务的考虑,你可以选择不部署。要想实现持续部署,首先要实现持续交付。持续交付并不意味着对软件的每一次更改都必须尽快部署到生产环境中,它意味着任何代码修改都可以随时部署。持续交付代表一种能力,而持续部署代表一种方法。持续部署是持续交付的最高阶段。AgileDevelopment的另一个概念,所谓的敏捷开发,好像没有所谓的简称,这个名词在国内好像被滥用了。敏捷开发专注于一个开发思路,拥抱变化,快速迭代。如何实现敏捷开发,目前似乎还没有完整的工具链,更多的是一种概念化的、嘲讽的说法“既要马跑得快,又要马不吃草”。上图揭示了敏捷开发的一些内涵和目标,看起来有点扯淡。CI、CD和DevOps之间关系的概念内容因人而异。就像CGI这个词一样,可以理解为CGI之类的协议,也可以理解为实现CGI协议的软件工具。留个图: