在日常开发中,运维人员主要负责跟生产环境打交道,开发和测试,不去操作生产环境的内容,生产环境由运维人员操作,这里面包含了环境的搭建、系统监控、故障的转移,还有软件的维护等内容。
![](https://i-blog.csdnimg.cn/direct/70ff0cd749d2451790a9c2b5e59977c8.png)
当一个项目开发完毕,在开发环境正常运行,交给运维人员,可能就会出现一些莫名其妙的,意料之外的问题,这本质上是因为开发和运维在发布的产品上不一致,开发和运维对环境的理解也不一样,所以就会出现在开发环境可以运行的程序,到了生产环境就不一定好使了。
为了打破这道壁垒,使开发环境的程序可以不出差错的迁移到生产环境,不需要做任何的变化,这便是DevOps要做的事情。
![](https://i-blog.csdnimg.cn/direct/dc9218ec2b4f41c9bf8885a0e852ff81.png)
DevOps是一种方法论,是开发(DeveLopment)和运维(Operations)的一种组合,是一组过程、方法与系统的统称,用户存进应用开发、应用运维和质量保障(QA)部门之间沟通、协作与整合,打破传统开发和运维之间的壁垒和鸿沟。
DevOps的核心是CI/CD
CI/CD是一种通过将自动化引入应用程序开发阶段来频繁向客户交付应用程序的方法。CI/CD的主要概念是持续集成、持续交付和持续部署。
CI指持续集成,它是开发人员的自动化过程。成功的CI意味着对应用程序的新代码更改会定期构建、测试并合同到共享存储库。这是解决同时开发的应用程序有太多分支可能相互冲突的问题的解决方案。
CD指持续交付,在CI中构建和单元测试和集成测试自动化之后,持续交付会自动将经过验证的代码发布到存储库。持续交付的目标是拥有一个始终准备好部署到生产环境的代码库。在持续交付中,从代码合并更改到交付生产就绪版本的每个阶段都涉及测试自动化和代码发布自动化。在该过程结束时,运维团队能够快速轻松地将应用程序部署到生产环境。
CD还指持续部署,成熟的CI/CD管道的最后阶段是持续部署。它可以自动将生产就绪的构建发布到代码存储库,持续部署可以自动将应用程序发布到生产环境。
DevOps是整体设计,CI/CD是具体的步骤。
具体的技术落地,有Gitlab(代码仓库,自带CI/CD的流水线),Jenkins(自动化工具集,从应用的部署、编译、发布),HELM(应用包的管理工具,可以管理发布的脚本)
![](https://i-blog.csdnimg.cn/direct/56ae14531f154b11b18c28132ada87a1.png)
现有的这种自动化平台产品,比如:阿里云的云效产品等。