今天继续给大家介绍Linux运维相关知识,本文主要内容是CICD的概念和原理。

一、技术背景

随着计算机技术的迅猛发展,软件工程行业蓬勃兴起。起初,一个应用软件由单个程序员独立完成。但是,随着软件需求量、代码量的增大,开发周期的缩短,原先有单个程序员完成的任务需要多个程序员合并才能完成。并且,还细分除了用于编写软件的开发工程师、用于测试软件质量的测试工程师和用于维护代码运行的运维工程师。
多人协作、任务细分能够解决一定的问题,但是不可避免的带来了协作上的混乱。例如,多人合作开发一个软件,每个人负责一个模块,但是最终将多人工作集合时发现不同人的代码之前存在冲突,不能很好的结合在一起。或者是虽然能够集合在一起正常工作,但是性能出现了很明显的下降。此外,还带来了工作效率降低的问题。现代软件开发上线后,不可避免的会出现一系列的bug,或者是随着业务的提升,原有的系统不能满足新业务的需求,也需要紧跟着提升,又或者随着依赖库、依赖环境的升级,原有的系统也不可避免的要紧跟着升级。因此,软件的生产周期就出现了一个环形的流程,即开发——测试——运维——开发新的版本……。在此过程中,随着业务规模的庞大,一个周期所需花费的时间越来越长。
传统模式下软件开发流程如下所示:

为了解决以上种种问题,CICD技术营运而生。所谓CICD,即Continuous Integrity,Continuous Delivery,Consistent Deployment,持续集成、持续交付、持续部署。
CICD的DevOps过程如下所示:

二、持续集成

持续集成是指在代码开发过程中,可以频繁的将代码部署到主干,并进行自动化测试。
前面我们讲到,在代码的协同开发过程中,多个开发者的代码组合起来可能会存在各种冲突和BUG。为了解决这个问题,我们就必须使得每个开发者不断的提交代码,由一个总负责人将各个开发者提交的代码进行整合,发现冲突及时处理。这样,可以避免到开发的最后进行整体的代码集成时出现灾难性的BUG而无法处理。一般而言,由项目负责人确定的代码版本我们称之为“主干”,每个小模块的程序员编写的代码我们称之为“分支”。在程序员提交自己编写的分支后并测试后,由项目负责人将各个分支合并为一起,称为新的主干。每个程序员接下来的开发就是以新的主干为基础,以此来减少代码冲突。持续集成完成了构建、单元测试和集成测试这些自动化流程。

三、持续交付

持续交付是指在持续集成的基础上,将代码部署到预生产环境。
持续交付比持续集成进步的点在于,持续交付考虑到了开发环境与生产环境之间的区别,将包括依赖库和依赖环境在内的开发环境进行打包,实现了自动部署到预生产环境中。简单的来看,持续交付可以使得开发团队在完成代码开发工作后,运维团队可以快速的进行生产环境的部署。如果说持续集成解决的是开发团队之前不同程序开发的兼容性问题,那么持续交付=是旨在解决开发和运维团队之间可见性及沟通较差的问题

四、持续部署

持续部署是指在持续交付的基础上,把部署到生产环境的过程自动化,持续交付和持续部署最大的区别就是最终部署到生产环境中是自动化的。
持续部署比持续交付更大的提升了自动化水平,使得开发团队编写的代码,可以在短时间内自动的部署在生产环境中。持续部署解决因手动流程降低应用交付速度。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

CICD详解(一)——概念和原理相关推荐

  1. Kubernetes Service详解(概念、原理、流量分析、代码)

    Kubernetes Service详解(概念.原理.流量分析.代码) 作者: liukuan73 原文:https://blog.csdn.net/liukuan73/article/details ...

  2. BERT详解:概念、原理与应用

    目录 [1] 什么是BERT? [2] BERT的结构 [3] BERT的预训练 [4] BERT的使用 [1] 什么是BERT? BERT是一种预训练语言模型(pre-trained languag ...

  3. Java线程详解(1)-概念与原理

    一.进程与线程 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,即进程空间或(虚空间).进程不依赖于线程而独立存在,一个进程中可以启动多个线程.比如在Windows系统中,一个运 ...

  4. 详解Oracle架构、原理、进程,学会世间再无复杂架构

    详解Oracle架构.原理.进程,学会世间再无复杂架构 学习是一个循序渐进的过程,从面到点.从宏观到微观,逐步渗透,各个击破,对于Oracle, 怎么样从宏观上来理解呢?先来看一个图,这个图取自于教材 ...

  5. 详解Promise使用与原理

    详解Promise使用与原理 一:Promise的概念 二:Promise的生命周期 三:如何让创建一个Promise 四:编写Promise结果处理程序 浅的讲差不多了,深的来了 --> .t ...

  6. 详解鲸鱼优化算法原理、数学模型和实例代码

    鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提出的一种新的群体智能优化算法,其优点在于操作简单,调整 ...

  7. 算法:详解布隆过滤器的原理、使用场景和注意事项@知乎.Young Chen

    算法:详解布隆过滤器的原理.使用场景和注意事项@知乎.Young Chen 什么是布隆过滤器 本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data struc ...

  8. otg usb 定位_详解USB OTG工作原理及其应用

    原标题:详解USB OTG工作原理及其应用 1994年,Intel,Compaq等七家软硬件全球知名企业为了突破当时PC使用串口和并口传输速度的限制,成立了通用串行 开发者论坛( Implemente ...

  9. Java简单类、变量详解(概念和分类、声明、命名、初始化)

    1初识JAVA简单类 (1)创建第一个Java程序的具体步骤: 第一步:创建一个工程,在Package Explorer空白区域中右击New->点击Java Project->填写Proj ...

  10. fdct算法 java_ImageSharp源码详解之JPEG压缩原理(3)DCT变换

    DCT变换可谓是JPEG编码原理里面数学难度最高的一环,我也是因为DCT变换的算法才对JPEG编码感兴趣(真是不自量力).这一章我就把我对DCT的研究心得体会分享出来,希望各位大神也不吝赐教. 1.离 ...

最新文章

  1. LeetCode 121 Best Time to Buy and Sell Stock
  2. RIPv1与RIPv2互通
  3. CCNA认证(1)--CCNA简介
  4. ElasticSearch学习29_基于Elasticsearch实现搜索推荐
  5. [转]Velocity脚本摘要
  6. jbehave_使用JBehave,Gradle和Jenkins的行为驱动开发(BDD)
  7. 防止ACCESS数据库被下载的9种方法
  8. deploy owned private docker registry based on docker HUB registry image
  9. mysql 1118_mysql innodb 引擎 ,建表时报错:ERROR 1118 (42000)
  10. 数据清洗Chap6——数据统计
  11. 中国知网 博硕士论文 PDF下载 及书签自动生成
  12. 汽车电子技术——传感器感知技术
  13. 计算机快速换界面,老板来了?这些好用的Windows快捷键让你一秒切换操作界面!-页面设置快捷键...
  14. Python数据分析-绘图-2-Seaborn进阶绘图-4-分类图
  15. 集合添加元素python_集 - 百度文库
  16. python模拟手机屏幕滑动_Python 封装Swipe实现手机屏幕滑动操作
  17. 使用SQL查询物料最新采购价格的示例
  18. 梆梆加固的Android P版本预兼容之路
  19. C语言入门:华氏温度转换为摄氏温度
  20. K8s——kubernetes集群中ceph集群使用【下】

热门文章

  1. 一道快手面试题,击败了100%用户
  2. pandas—显示行索引与列索引(数组或者列表)
  3. Spark常用API(五)
  4. LeetCode刷题——62. 不同路径
  5. 超轻量级PHP框架BroPHP
  6. IT职业生涯中的必修课
  7. 16.6 假新闻识别 Fake News Detection on Social Media A Data Mining Perspective
  8. Ubuntu和Windows设备共享
  9. Docker教程:dokcer machine的概念和安装
  10. 海量数据挖掘MMDS week6: MapReduce算法(进阶)