DevOps与 CI /CD

一、CI/CD

缩略词 CI / CD 具有几个不同的含义。CI/CD 中的“CI”始终指持续集成,它属于开发人员的自动化流程。成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。

CI/CD 中的“CD”指的是持续交付和/或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。

持续交付通常是指开发人员对应用的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器注册表),然后由运维团队将其部署到实时生产环境中。这旨在解决开发和运维团队之间可见性及沟通较差的问题。因此,持续交付的目的就是确保尽可能减少部署新代码时所需的工作量。

持续部署(另一种“CD”)指的是自动将开发人员的更改从存储库发布到生产环境,以供客户使用。它主要为了解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题。持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化。

CI/CD 既可能仅指持续集成和持续交付构成的关联环节,也可以指持续集成、持续交付和持续部署这三项构成的关联环节。更为复杂的是,有时“持续交付”也包含了持续部署流程。

归根结底,我们没必要纠结于这些语义,您只需记得 CI/CD 其实就是一个流程(通常形象地表述为管道),用于实现应用开发中的高度持续自动化和持续监控。因案例而异,该术语的具体含义取决于 CI/CD 管道的自动化程度。许多企业最开始先添加 CI,然后逐步实现交付和部署的自动化。

二、DevOps

大多时候,基本上概念从国外传进来,我们也跟着炒,概念满天飞。曾经也是不懂装懂,自以为懂,不过还好逐渐学会了独立思考的能力。特别换了立场,做了甲方,成为客户,在普遍技术系统相对落后的情况下想了很多。在容器云、微服务、DevOps等快速发展变化的时候,希望借助新技术、新思想提升我们的技术能力和业务能力。

DevOps是什么?从概念上说,DevOps 是一种方法论,是一组过程、方法与系统的统称,用于促进应用开发、应用运维和质量保障(QA)部门之间的沟通、协作与整合。概念有了,怎么落地?很多公司在实施容器云时实现CI(Continuous Integration, 持续集成),或者CI/CD(Continuous Integration/Continuous Delivery or Deployment, 持续集成/持续交付 or 持续部署)就叫DevOps。我们觉得这只是实现DevOps的一部分,但不等于DevOps。

2.1、CI 不等于DevOps

CI持续集成是编码、构建的过程。容器云DevOps从CI起步,也是一个很好的切入点。但这仅仅是一个开发构建过程,都在开发端,是实现敏捷开发的一种方式,研发过程自动化,这也是我们考虑采用容器云和DevOps的一个因素。但仅有开发端的敏捷还不等于DevOps。

2.2、CI /CD也不等于DevOps

现在我们也总是听到一天要上线多少次多少次的。是一个应用吗?频繁上线是需求不明确还是代码质量不高?厂商在这里可能有点偷换概念。一天上线几十次几百次,肯定不是一个应用。象阿里等,那么多系统那么多应用,每天那么多的更新次数很正常。持续交付、持续部署的好处是基于自动化的过程支持。也就是开发、测试、交付部署过程工具链集成实现自动化。

但CI/CD依然没有解决开发、运维、质量保证部门之间的协作和整合。职责依然没有划分清楚。而且目前的容器云CI/CD流水线设计,不足以支撑企业生产环境部署要求。更多象是PoC概念验证阶段。这也是为什么很多公司即便采用容器云也只是在开发测试环境使用的原因。

2.3、我们理解的DevOps是什么?

DevOps是什么?从概念上说,DevOps 是一种方法论,是一组过程、方法与系统的统称,用于促进应用开发、应用运维和质量保障(QA)部门之间的沟通、协作与整合。概念有了,怎么落地?很多公司在实施容器云时实现CI(Continuous Integration, 持续集成),或者CI/CD(Continuous Integration/Continuous Delivery or Deployment, 持续集成/持续交付 or 持续部署)就叫DevOps。我们觉得这只是实现DevOps的一部分,但不等于DevOps。

我们采用容器云的需求是:

1.提升敏捷开发能力。这是DevOps能力

2.建立开发测试甚至生产环境一致性。 这是容器云和DevOps能力。

3.实现应用全生命周期自动化管理。这是DevOps能力。

4.弹性伸缩、灰度发布等。 这是容器云和微服务的能力。

这也是我们为了适应公司互联网业务发展和应用快速迭代开发的要求,让生产端也更加敏捷起来;逐步建立标准化、一致性的开发、测试、运维环境,专注于业务应用研发而不操心资源管理;满足公司内私有云环境内的应用托管、应用开发、自动化运维等应用服务全生命周期管理需求;实现应用服务的弹性伸缩、灰度发布等能力,满足促销、秒杀等业务需求;从而逐步提升自主研发能力,促进业务创新和快速迭代。

从我们采用容器云的需求上看,前三项都是涉及DevOps能力的。DevOps要求开发、测试、运维一体化,谁开发谁运维,实现敏捷开发、敏捷部署和敏捷生产。

参考:
CI/CD是什么?如何理解持续集成、持续交付和持续部署
DevOps 不等于 CI,也不等于 CI /CD

猜你喜欢

转载自blog.csdn.net/xihuanyuye/article/details/109562121
今日推荐