持续交付与持续部署相关概念(CD)

目录

一、概述

二、持续交付基本概念

2.1 持续交付的含义

2.1.1 项目管理的视角

2.1.2 产品研发的视角

2.1.3 总结

2.2 持续交付涉及的运作环境

2.2.1 开发环境

2.2.2 测试环境

2.2.3 UAT环境

2.2.4 准生产环境

2.2.5 生产环境

2.3 总结

三、持续部署基本概念

3.1 持续部署的含义

3.2 持续部署包含的内容

3.2.1 部署升级

3.2.2 部署验证

3.2.3 部署监控

3.3 持续部署过程中不同角色的操作内容

3.3.1 持续部署不同角色操作示意图

3.3.2 持续部署不同角色操作内容说明

四、其他相关概念

4.1 概述

4.2 配置管理

4.3 镜像管理


一、概述

前面的文章为大家介绍了持续集成流水线的技术实现,本文将继续带领大家了解持续交付与持续部署的相关知识,打通产品版本发布到线上持续运营的流程,逐步完成从产品规划到产品线上运营的全流程覆盖。

本文以持续交付、持续部署为主线,继续讲述DevSecOps平台里黄金管道子系统中持续交付与持续部署两个流程涉及的相关概念、系统及平台,帮助大家完善DevSecOps平台里黄金管道子系统相关领域知识。

二、持续交付基本概念

2.1 持续交付的含义

持续交付的含义在业界有多种不同的理解,根据岗位角色的不同,大体可分为两种。

2.1.1 项目管理的视角

站在项目管理的视角看,从项目的生命周期去理解持续交付,这种视角下持续交付的含义更多地偏向于产品研发到项目目标的达成,满足客户需求,达到项目验收完成项目回款的过程

2.1.2 产品研发的视角

站在产品研发的视角看,表示产品通过测试验证,达到可交付给客户状态下的持续可交付性

2.1.3 总结

本文中主要是指产品研发的视角下的持续交付,它早于持续部署流程,从需求规划到持续集成后,完成测试环境部署、验证,通过内部评审验收,达到用户可交付状态的这一段流程。其含义如下图所示:

如果用一句话来总结持续交付流程的含义,则是重点保障产品需求的持续实现,把最新版本的应用程序部署到UAT环境的持续性流程

2.2 持续交付涉及的运作环境

为了帮助大家更好地理解持续交付及后续章节持续部署的流程,大家先要了解这一段流程中与运作环境相关的内容。

在软件产品研发的过程中,通常会涉及多套运行环境,这些环境在不同的场景下通常有不同的特定称谓,这是需要读者理解和掌握的。这些环境主要有:

2.2.1 开发环境

开发环境比较好理解,顾名思义是指软件开发人员在编码开发过程中所用的运行环境。这套环境对服务器配置要求不高,只要能方便开发人员进行代码调试,分析错误日志即可,不会与用户直接交互。通常来说,只有开发人员才会使用这套环境,因为需要不停地修改或上传代码、调整配置等,这套环境上的应用程序很不稳定。

2.2.2 测试环境

测试环境主要是用来进行软件产品测试验证的运行环境,通常是由测试人员和开发人员共同维护。大多数情况下,以测试人员维护为主。为了保障测试工作的持续开展,对环境的启停和修改不如开发环境那样频繁,且这套环境上部署的软件产品相对开发环境来说版本要更稳定,以便于测试人员开展功能测试和集成测试。

2.2.3 UAT环境

名词UAT是英文User Acceptance Test的缩写,意思是用于进行用户接受度测试的运行环境,是来提高客户使用体验的。和我们通常说的客户演示环境或用户验收环境类似,这套环境对系统的稳定性、版本的稳定性、需求满足程度均有一定的要求,主要使用对象为客户。

2.2.4 准生产环境

又称仿真环境,是指已完成部署但未正式开始生产使用的运行环境,一般来说系统架构、关键参数基本与生产环境一致,仅仅是没有真实的业务流量

2.2.5 生产环境

直接面向最终用户提供的正式、对外服务的真实业务环境,这套环境的管理有严格的要求,同时系统稳定性也有很高的要求,如果对这套环境进行修改或调整,需要严格审批发布流程。

2.3 总结

在DevSecOps平台的黄金管道中,大多数场景下主要与开发环境、测试环境、准生产环境、生产环境相关。软件产品的研发过程中,很多情况下UAT环境与准生产环境使用的是同一套环境,没有严格的区分,小的企业或项目甚至都没有UAT环境和准生产环境。而一个软件产品的开发通常经历开发、测试、上线三个阶段后,才开始进入线上运维与运营,所以,开发环境、测试环境、生产环境通常都会具备。理解了这些运行环境之间的差异,持续交付流程在整个产品研发过程中的意义也就容易理解了。

从持续集成到持续交付的流程推进,背后是自动化集成测试、自动化配置管理、自动化基础设施管理三方面能力的极大提升。安全作为集成测试、配置管理、基础设施管理其中的一个部分,也贯穿着持续交付流程的始终。

三、持续部署基本概念

3.1 持续部署的含义

持续部署的含义是在持续交付的基础上,将已通过客户验收确认产品版本发布到生产环境的过程,如下图所示:

从上图来看,持续部署的流程比较简单,仅仅是从UAT环境向生产环境推进了一步。

3.2 持续部署包含的内容

因为生产环境的稳定性要求,持续部署的过程至少应该包含以下三个部分:

3.2.1 部署升级

制品仓库中通过用户验收确认的产品版本,通过技术评审、流程审批、自动更新等一系列操作部署到生产环境中,完成制品的替换升级。在真实的升级过程中,部署升级并非替换一个制品文件那样简单。常常是同一个制品文件同时部署在多台服务器上,升级时每个文件都需要更新。除了制品文件外,诸多与应用配置相关的参数项,如网络端口、系统文件目录权限、跨区域网络访问的链路路由等都需要在升级时同时操作。为保证部署升级的可靠性,多数企业采用蓝绿部署、灰度部署、滚动更新等方式来避免部署升级操作带来的业务中断风险。

3.2.2 部署验证

为了保障部署结果的一致性和生产环境的可用性,通常在部署完成后做阶段性验证,同时也是为了尽早地发现问题,尽早解决,减少部署升级对业务产生的影响。

3.2.3 部署监控

验证完成后,为了持续跟踪线上系统的运行状态,还需要在升级后的一段时间内对生产环境进行监控,以防止遗漏、未发现的问题对业务生产过程产生影响

3.3 持续部署过程中不同角色的操作内容

完成了生产环境的自动化发布后,DevSecOps平台的黄金管道则完成Dev研发段全流程贯穿。在这个流程中,除了上文中提及的自动化集成测试、自动化配置管理、自动化基础设施管理等能力的自动化之外,还有很多细节性的流程与配置管理上的运营,才会产生持续部署的结果。

下图所示为持续部署流程中各个不同角色视角下的全流程操作示意图,通过这张图,更利于读者理解其背后涉及的知识点和技术方向。

3.3.1 持续部署不同角色操作示意图

3.3.2 持续部署不同角色操作内容说明

从上图中大家可以看到,在黄金管道的两端分布着平台管理员、开发人员和用户。平台管理员维护DevSecOps平台,开发人员研发产品,用户使用产品。从产品规划到产品可使用的自动化生产过程是DevSecOps平台运维管理和持续运营之上的持续化生产能力。

四、其他相关概念

4.1 概述

在持续交付与持续部署阶段,除了上述的持续交付、持续部署、运行环境的基本概念外,还有以下概念需要了解,以便于大家从技术层面理解后续DevSecOps平台能力的实现。

4.2 配置管理

相比传统的软件开发模型,在现代化的DevSecOps开发中,配置管理尤为重要,甚至可以说,没有配置管理就没有DevSecOps的安全自动化的实现。这里讨论的配置管理主要是指围绕软件开发生命周期的配置管理,除了传统意义上的代码仓库、版本控制、缺陷管理等基础的配置基线外,还包括需求管理、软件设计、测试、部署、运维等过程的流程化和线上化管理动作的配置管理,期望以配置文件管理的方式统一集中管控同一软件在不同环境下(开发、测试、生产)的自动化配置,达到开发或部署过程可控且可重复的目的,其典型的技术表现为DevOps工具和流程管理的线上化、基础设施即代码的技术实现,如下图所示:

基础设施资源(如云主机、云数据库、云存储等)、应用程序文件(如应用安装包、数据库脚本、配置文件)、模板库(如主机镜像、Docker镜像、配置文件模板)以配置管理的方式,通过代码操作为持续交付、持续部署过程的自动化提供基础。这些内容均属于配置管理的内容。

4.3 镜像管理

镜像管理是随着IT技术的发展而逐渐提出来的概念,最初的镜像是操作系统镜像;后来出现虚拟化之后,将安装好的虚拟机克隆出来形成主机镜像;现在,随着云原生和容器化技术的发展,出现了容器镜像。基于这些镜像,在持续交付、持续部署过程中生成可运行的实例,达到类似“一次构建,多次部署”的目的。

为了保证这些镜像的可用性,需要持续性地对镜像进行管理和维护。同时,在持续交付、持续部署过程中,同一个镜像无法满足不同场景下的使用,于是出现了镜像配置文件分离。通过外置配置文件的方式,来满足同一个镜像无法满足不同场景下的使用。在不断变化的过程中,逐渐出现了镜像注册表的概念,利用镜像注册表充当镜像仓库,在持续交付、持续部署过程中进行编排和调度。如下图所示为镜像管理在持续交付和持续部署过程的使用关系。

好了,本次内容就分享到这,欢迎大家关注《DevSecOps》专栏,后续会继续输出相关内容文章。如果有帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis对象list

Redis List是一组连接起来的字符串集合。 写操作: LPUSH 语法:LPUSH key value [value …] 功能:从头部增加元素,返回值为List中元素的总数。 RPUSH 语法:RPUSH key value [value …] 功能:从尾部增加元素,返回值为List中元素的总数。 LPOP 语法:LPOP key 功能…

用Python实现办公自动化(自动化处理Excel工作簿)

自动化处理Excel工作簿 (一)批量生产产品出货清单 以“出货统计表”为例, 需求:将出货记录按照出货日期分类整理成多张出货清单 “出货统计表数据案例” “产品出货清单模板” 1.提取出货统计表的数据 “Python程序代码” # 使用…

安全SCDN的威胁情报库对DDOS防护有什么好处

目前网络攻击事件频频发生,DDoS(分布式拒绝服务)攻击已成为各种企业(小到区域性小公司大到各种跨国公司)的主要威胁,DDoS 攻击可能会对企业造成重大损害和破坏,比如对目标公司的业务造成产生不利…

C#使用SQLite(含加密)保姆级教程

C#使用SQLite 文章目录 C#使用SQLite涉及框架及库复制runtimes创建加密SQLite文件生成连接字串执行SQL生成表SQLiteConnectionFactory.cs 代码结构最后 涉及框架及库 自己在NuGet管理器里面安装即可 Chloe.SQLite:ORM框架Microsoft.Data.Sqlite.Core:驱…

大数据学习-2024/3/29-PL/SQL中使用SQL语句对数据进行增删改查

1、创建用户 语法规范:create user 用户名 identifind by 密码; 命名规范:1、不能是纯数字 2、不能有特殊字符()例如:yangyin create user yangyin identified by 123456;2、建表 create table 表名( 列名 数据类型…

React Native框架开发APP,安装免费的图标库(react-native-vector-icons)并使用详解

一、安装图标库 要使用免费的图标库,你可以使用 React Native Vector Icons 库。 首先,确保你已经安装了 react-native-vector-icons: npm install --save react-native-vector-iconsnpm install --save-dev types/react-native-vector-ic…

实现一个简单的排序算法(如冒泡排序或快速排序)

实现一个简单的排序算法(如冒泡排序或快速排序) 实现简单的排序算法:冒泡排序与快速排序 一、冒泡排序算法的实现与分析 冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如…

并发编程之CountDownLatch和CyclicBarrier的详细解析(带小案例)

CountDownLatch 倒计时锁存器 用来解决线程执行次序的问题 CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞。 其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞), 当计数器的值变为…

Android 使用SQLite保存数据

Android 使用SQLite保存数据 简介定义架构和协定使用 SQL 创建数据库将信息添加到数据库insert()函数介绍 从数据库中读取信息query()函数介绍 从数据库中删除信息delete()函数介绍 更新数据库update()函数介绍 保留数据库连接调试数据库 简介 对于重复数据或结构化数据&#…

云服务器8核32G配置租用优惠价格94元/月、1362元一年

8核32G云服务器京东云轻量云主机价格94元1个月、282元3个月、673元6个月、1362元一年,配置8C32G-100G SSD系统盘-10M带宽-2000G月流量 华北-北京,京东云优惠活动 yunfuwuqiba.com/go/jd 活动链接打开如下图: 8核32G云服务器京东云轻量云主机价…

数据挖掘篇【 alias方法 和 隐式转换 】

目录 介绍 隐式转换 alias方法 介绍 在 Apache Spark 中,.alias 是一个方法,用于给 DataFrame 的列或表达式指定一个新的别名。当你需要对列进行重命名或者在 SQL 表达式中使用更易读的名称时,这个方法非常有用。 .alias 方法通常与 Dat…

CSS(三)---【盒子模型、边框、外边距合并】

零.前言 本篇主要介绍CSS中最重要的一种概念模型:“盒子模型”。 关于CSS的更多内容,可以查看作者之前的文章: CSS(一)---【CSS简介、导入方式、八种选择器、优先级】-CSDN博客 CSS(二)---【常见属性、复合属性使用】-CSDN博客 一.盒子模…

WebCopilot:一款功能强大的子域名枚举和安全漏洞扫描工具

关于WebCopilot WebCopilot是一款功能强大的子域名枚举和安全漏洞扫描工具,该工具能够枚举目标域名下的子域名,并使用不同的开源工具检测目标存在的安全漏洞。 工具运行机制 WebCopilot首先会使用assetsfinder、submaster、subfinder、accumt、finddom…

Springboot 后端文件下载:记一次根据地址连接下载文件并且返回给前端(避免跨域问题)

目的:为了解决前端直接根据文件连接地址下载导致的跨域问题;后端提供一个接口,根据前端传入的文件地址链接下载文件到本地再返回文件流给前端,从而避免跨域问题(代码已上线) controller层代码:…

Jamba:AI21 实验室发布首个应用级的 Mamba 架构 AI 模型

AI21 实验室发布了 Jamba,这是全球首个基于 Mamba 架构的、可用于实际应用的 AI 模型。目前大多数模型(例如 GPT、Gemini 和 Llama)都基于 Transformer 架构。Jamba 结合了 Mamba 结构化状态空间模型 (SSM) 和传统 Transformer 架构的优点&am…

属性选择器

1.[title]{background:yellow;}:所有带title标签设置成黄色 2.div[class]{background:yellow;}:所有div中带class标签设置成黄色 3.div[classbox1]{border:1px solid blue; }:div中包含class并且classbox1的设置成蓝边框 4. class…

Postman Tests设置Global读取不是最新值,跟Tests执行顺序有关(踩坑笔记)

前言 在执行Run Collection的时候,发现设置的全局变量每次读取都是旧值,没有读取到最新的值。 背景 有2个地方需要动态参数,一个URL,一个Body,因此需要设置Tests脚本。 url动态参数 url:动态参数projec…

【Java】打包:JAR、EAR、WAR

打包:JAR、EAR、WAR war 是一个 Web 模块,其中需要包括 WEB-INF,是可以直接运行的 WEB 模块。而 jar 一般只是包括一些 class 文件,在声明了 main_class 之后是可以用 java 命令运行的。 它们都是压缩的包,拿 Tomcat …

《Linux 源码趣读》的读书笔记-第1部分

事情起源 工作快7年了,由于我不断地完成各种奇怪的功能,我终于能看懂计算机组成和操作系统了。 当我终于看一个东西不再是天书了,那一刻,我是上头的。 于是我简单刷了几个视频:《王道-计算机组成原理》、《王道-操作系统》、《王道-计算机网络》。 刷完我总觉得哪里不…

【基于springboot分析Quartz(v2.3.2)的启动流程】

基于springboot分析Quartz(v2.3.2)的启动流程 最近公司的定时任务使用了Quartz框架,在开发中经常出现定任务不执行了的问题,但是我又找不到原因所在,可把我愁坏了。于是我决定看看Quartz框架是怎么调度任务的。&#x…