【漫话DevOps】Agile,CI/CD,DevOps
随着DevOps理念的普及与扩散,可能会被一大堆名字概念搞的莫名其妙,理清它们之间的关系可以帮助团队知道DevOps如何落地,改善工作流程。
Here’s a quick and easy way to differentiate agile, DevOps, and CI/CD:
- Agile focuses on processes highlighting change while accelerating delivery.
- CI/CD focuses on software-defined life cycles highlighting tools that emphasize automation.
- DevOps focuses on culture highlighting roles that emphasize responsiveness.

Agile Development
- 拥抱变化
- 快速迭代

CI /CD
CI/CD 都体现了如今快节奏市场中的文化和发展原则,旨在缩短开发周期、提高软件交付效率以及实现全流程的自动化。同时,两者都有着共同的目标:让软件开发更少地依赖于手动执行的任务,在此基础上使得软件的发布更加频繁、更加安全可靠。由于有着相同的目标,因此持续集成和持续交付并非相互排斥的, 只是它们的应用范围有所不同。
- CI:持续集成(CONTINUOUS INTEGRATION)
- CD:持续部署(CONTINUOUS DEPLOYMENT)
- CD:持续交付(CONTINUOUS DELIVERY)
持续集成CI(Continuous Integration)
参考大师的定义: http://www.martinfowler.com/articles/continuousIntegration.html
持续集成(CI)是在源代码变更后自动检测、拉取、构建和(在大多数情况下)进行单元测试的过程
对项目而言,持续集成(CI)的目标是确保开发人员新提交的变更是好的, 不会发生break build; 并且最终的主干分支一直处于可发布的状态,
对于开发人员而言,要求他们必须频繁地向主干提交代码,相应也可以即时得到问题的反馈。实时获取到相关错误的信息,以便快速地定位与解决问题

显然这个过程可以大大地提高开发人员以及整个IT团队的工作效率,避免陷入好几天得不到好的“部署产出”,影响后续的测试和交付。
持续交付 (Continuous Delivery)
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「预发布环境」(production-like environments)中。交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段 持续交付并不是指软件每一个改动都要尽快部署到产品环境中,它指的是任何的代码修改都可以在任何时候实时部署。

强调:
1、手动部署
2、有部署的能力,但不一定部署
持续部署(Continuous Deployment)
代码通过评审之后,自动部署到生产环境中。持续部署是持续交付的最高阶段。
强调
1、持续部署是自动的
2、持续部署是持续交付的最高阶段
3、持续交付表示的是一种能力,持续部署则是一种方式

- DEV Development environment -开发环境,用于开发者调试使用
- FAT Feature Acceptance Test environment -功能验收测试环境,用于软件测试者测试使用
- UAT User Acceptance Test environment -用户验收测试环境,用于生产环境下的软件测试者测试使用
- PRO Production environment -生产环境
通过CD可以加快软件交付速度,目标用户可以在几天或几周内就收到修复后的功能与新增的功能,而无需等待数月后才更新。CD的部署频率也加快了整个流程中的反馈循环。最新版本真的解决了预期的问题吗?是否满足了用户的需求?用户就可以快速地验收并作出判断,而IT团队也可以在问题影响到开发周期之前就解决反馈的问题。持续的反馈循环使得用户与IT团队更紧密地合作,以确保能准确的理解与满足他们的需求。整个交付过程进度可视化,方便团队人员与客户了解项目的进度。
持续集成可确保代码库中始终保持最新的代码,同时可以快速集成来自多个开发人员的代码,并确保这些代码可在多个环境中协同工作。它通常有助于减少错误并通过自动化流程来减少手动任务。CI可以实现代码的自动构建与测试,减少开发中的Bug。因此,CI适用于那些过度依赖手动任务和复杂构建过程的企业。
持续交付适用于需要缩短开发周期,更快地为目标用户提供软件的企业。CD降低了部署新软件或升级已有软件的难度,且实现了全流程的自动化,因此您的团队无需手动执行复杂繁琐的任务,从而加快反馈速度,来确保您增加的功能真正地满足用户的需求。
此外,也有不少人认为CI是CD的前提与基础,没有CI就不能实现CD。这种说法也是比较流行的,其思路如下图。因此,不管是哪种说法,CI与CD都是DevOps工具中不可或缺的理念与方法。

“持续交付与持续部署,到底谁应该包含谁?”
持续部署是自动化的将一切变更放到生产环境,而持续交付则有判断决策过程,并直接说“In order to do Continuous Deployment you must be doing Continuous Delivery.”
“Continuous Delivery is sometimes confused with Continuous Deployment.Continuous Deploymentmeans that every change goes through the pipeline and automatically gets put into production, resulting in many production deployments every day. Continuous Delivery just means that you are able to do frequent deployments but may choose not to do it, usually due to businesses preferring a slower rate of deployment. In order to do Continuous Deployment you must be doing Continuous Delivery.”
对持续交付与持续部署的关系,Martin也承认两个概念容易造成困惑,持续部署代表将所有变更自动通过流水线推到生产环境,持续交付则意味着你有能力这样做,但可以基于业务选择不这样做。
所以我不觉得两者有谁包含谁,两者在这个层面讲,一个是技术领域,一个是业务领域。
参考
Continuous integration vs. continuous delivery vs. continuous deployment
https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deploymentContinuous Integration vs. Continuous Delivery
https://dzone.com/articles/continuous-integration-vs-continuous-deliveryThe Product Managers’ Guide to Continuous Delivery and DevOps
https://www.mindtheproduct.com/what-the-hell-are-ci-cd-and-devops-a-cheatsheet-for-the-rest-of-us/What Is DevOps? https://theagileadmin.com/what-is-devops/
What is CI/CD? https://www.mabl.com/blog/what-is-cicd
What’s the difference between agile, CI/CD, and DevOps?
https://www.synopsys.com/blogs/software-security/agile-cicd-devops-difference/
【漫话DevOps】Agile,CI/CD,DevOps的更多相关文章
- CI/CD DevOps
CI/CD DevOps 通过技术工具链完成持续集成CI.持续交付CD.用户反馈和系统优化的整合,实现跨团队的无缝协作(DevOps). 什么是持续集成? 他是开发每天代码更新的副本,所有的开发工作都 ...
- Azure Data Factory(三)集成 Azure Devops 实现CI/CD
一,引言 由于上一节文章内容过长,无法分享Azure Data Factory 的持续集成,持续发布.今天将着重介绍一下在使用 Azure DevOps Pipeline 发布,自动进行持续集成,并且 ...
- Devops、CI\CD、Jenkins
Devops DevOps对应用程序发布的影响 在很多企业中,应用程序发布是一项涉及多个团队.压力很大.风险很高的活动.然而在具备DevOps能力的组织中,应用程序发布的风险很低,原因如下 [2] : ...
- 企业DevOps研发模式下CI/CD实践详解指南
阅读全文大概需要 10分钟. 1. 前言 借着公司今年新组建的中台研发部东风,我作为其中的主要负责人,在研发中心主导推行DevOps研发管理模式转变及质量管理创新建设,本篇文章摘取自今年9月底,笔者在 ...
- Docker和CI/CD实战
一.CICD和DevOps 前面已经了解了CI/CD,其实CI/CD已经存在多年了,只是最近软件工程方面又提出了敏捷开发.DevOps,又把CI/CD炒火了. 那么什么是DevOps?DevOps和C ...
- 持续集成、持续交付(CI/CD)开篇,先来唠唠嗑
前言 现在稍微有点规模的系统,很多都是采用分布式/微服务架构,将一个大系统拆分为很多个功能模块进行开发.测试.发布.管理等,如果全部流程都采用人工的形式进行的话,效率肯定是超级不高效滴.而且现在很多项 ...
- “如何实现集中管理、灵活高效的CI/CD”在线研讨会精彩内容分享
"如何实现集中管理.灵活高效的CI/CD"在线研讨会精彩片段分享 片段主讲人:李培(西瓜刀) 大家好,我是李培.前面听文老师讲DevOps,包括CI/CD 的一些理论,也是挺有 ...
- DevOps、CI、CD都是什么鬼?
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ DevOps DevOps是Development和Operations的组合,是一种方法论, ...
- CI Weekly #1 | 这份周刊,带你了解 CI/CD 、DevOps、自动化测试
原文首次发布与 flow.ci Blog >> 链接,转载请联系:) 准备了很久,CI Weekly 第一期终于来了. CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分 ...
随机推荐
- C#算法设计排序篇之08-计数排序(附带动画演示程序)
计数排序(Counting Sort) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/689 访问. 计数排序是一个非基 ...
- JavaScript 防抖(debounce)和节流(throttle)
防抖函数 触发高频事件后,n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间 /** * * @param {*} fn :callback function * @param {* ...
- Android Studio Gradle build 报错:Received status code 400 from server: Bad Request
错误提示如下 Could not GET 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.2/ ...
- Solon Ioc 的注解对比Spring及JSR330
注解对比 Solon 1.0.10 Spring JSR 330 @XInject * @Autowired @Inject 字段或参数注入 @XBean * @Component @Named Be ...
- DB2数据库错误代码大全
SQLCode SQLState 状态说明 000 00000 SQL语句成功完成 01xxx XXX SQL语句成功完成,但是有警告 +012 01545 未限定的列名被解释为一个有相互关系的引用 ...
- 简单快速导出word文档
最近,我写公司项目word导出功能,应该只有2小时的工作量,却被硬生生的拉长2天,项目上线到业务正常运行也被拉长到2个星期. 为什么如此浪费时间呢? 1)公司的项目比较老,采用硬编码模式,意味着wor ...
- selenium定位方法(二)
selenium定位方法(二) 1.xpath定位:xpath是在XML中查找节点所在的路径的表达式 1)绝对路径的Xpath表达式 例:/html/body/div/div[1]/ul//li[3 ...
- Reliable Federated Learning for Mobile Networks
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 以下是对本文关键部分的摘抄翻译,详情请参见原文. arXiv: 1910.06837v1 [cs.CR] 14 Oct 2019 Abst ...
- asp.net Core3.1自定义权限体系-菜单和操作按钮权限
我们在做项目项目,经常会碰到权限体系,权限体系属于系统架构的一个最底层的功能,也是非常重要的功能,几乎在每个项目都会用到.那么我们该如何设计一个比较合理的且扩展性较强的权限体系呢? 经过多天的摸索,参 ...
- oracle之回顾二
TCL 1. 事务(Transaction) 事务(Transaction)是一个操作序列.这些操作要么都做, 要么都不做, 是一个不可分割的工作单元, 是数据库环境中的最小工作单元. 1.1 事务 ...