持续交付与持续部署相关概念(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:驱…

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方法的线程不会阻塞), 当计数器的值变为…

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

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

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

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

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

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

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 …

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

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

C# wpf 实现底部嵌入HwndHost

WPF Hwnd窗口互操作系列 第一章 嵌入Hwnd窗口 第二章 嵌入WinForm控件 第三章 嵌入WPF控件 第四章 底部嵌入HwndHost(本章) 文章目录 WPF Hwnd窗口互操作系列前言一、如何实现?1、底部创建窗口(1)、创建透明窗口&…

FebHost:什么是哈萨克斯坦.KZ域名?

哈萨克斯坦,作为中亚地区重要的一员,其国家域名”.kz”正成为这个独立国家在网络世界中的代表。作为一个经济快速发展的国家,哈萨克斯坦的互联网基础设施和网络应用也在蓬勃发展。而.kz域名正是哈萨克斯坦网络身份的重要体现。 作为注册和管理.kz域名的主要机构,哈…

2020年30米二级分类北京市土地利用数据

引言 北京市省土地利用数据产品是指基于Landsat TM/ETM/OLI遥感影像,采用遥感信息提取方法,并结合野外实测,以及参照国内外现有的土地利用/土地覆盖分类体系,经过波段选择及融合,图像几何校正及配准并对图像进行增强处…

Elasticsearch 开放 inference API 增加了对 Cohere Embeddings 的支持

作者:来自 Elastic Serena Chou, Jonathan Buttner, Dave Kyle 我们很高兴地宣布 Elasticsearch 现在支持 Cohere 嵌入! 发布此功能是与 Cohere 团队合作的一次伟大旅程,未来还会有更多合作。 Cohere 是生成式 AI 领域令人兴奋的创新者&…

SpringBoot+Prometheus+Grafana实现应用监控和报警

一、背景 SpringBoot的应用监控方案比较多&#xff0c;SpringBootPrometheusGrafana是目前比较常用的方案之一。它们三者之间的关系大概如下图&#xff1a; 关系图 二、开发SpringBoot应用 首先&#xff0c;创建一个SpringBoot项目&#xff0c;pom文件如下&#xff1a; <…

蓝桥杯嵌入式老竞赛板在MDK5上使用CooCox下载出现unknown device的问题

本文是在参考网上博客并经过实操解决自己遇到的问题总结而成&#xff0c;只是为了让后来者少走弯路。 本文是在在LED闪烁实验时遇到这个问题 蓝桥杯嵌入式老竞赛板在MDK5上使用CooCox下载出现unknown device的问题 环境&#xff1a;win11系统&#xff0c;keil MDK 518 老竞赛…