持续交付与持续部署相关概念(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.hqwc.cn/news/578033.html

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

相关文章

Halcon3D表面平面度检测-平面差值法

//倾斜平面矫正 https://blog.csdn.net/m0_51559565/article/details/137146179前言 通常我们对表面平面度进行检测时,通常使用2种方式。1:通过大卷积核的高斯滤波进行拟合平面,然后求取拟合平面与3D模型间的点间的距离。2:通过平…

Linux_应用篇(01) 应用编程基础

应用编程概念 对于大多数首次接触 Linux 应用编程的读者来说,可能对应用编程(也可称为系统编程)这个概念并不太了解,所以在正式学习 Linux 应用编程之前,笔者有必要向大家介绍这些简单基本的念,从整体上认…

1.ByteBuffer介绍

一、Buffer基本使用 /*** buffer正确使用姿势* 1.向buffer写入数据,调用channel.read(buffer)* 2.调用flip方法切换到读模式* 3.从buffer读数据,通过get方法,每次读取一个字节或字符* 4.调用clear方法或者compact方法切换到写模式*/ Slf4j p…

关于深度学习的 PyTorch 项目如何上手分析?从什么地方切入?

文章目录 PyTorch 项目分析1.背景2.分析流程 PyTorch 项目分析 1.背景 当我们拿到一个 PyTorch 的深度学习项目时,应该怎么入手?怎么去查看代码? 2.分析流程 首先阅读对应项目的 README.md 文件。通过阅读 README.md ,一般可以…

9、jenkins微服务持续集成(一)

文章目录 一、流程说明二、源码概述三、本地部署3.1 SpringCloud微服务部署本地运行微服务本地部署微服务3.2 静态Web前端部署四、Docker快速入门一、流程说明 Jenkins+Docker+SpringCloud持续集成流程说明 大致流程说明: 开发人员每天把代码提交到Gitlab代码仓库Jenkins从G…

电脑开机慢怎么办,电脑开机慢解决方法

新电脑呢,开机速度特别快。有很多人会感觉到电脑拿回家以后,一按开机键,六秒七秒,这个电脑就启动起来了,但是用一段时间以后呢,他会明显感觉到这个开机的速度呢,会特别慢,可能从六秒…

云主机8核16G配置租用优惠价格1198元1年、4688元三年

京东云8核16G租用优惠价格1198元1年、4688元三年,配置为8C16G-270G SSD系统盘-5M带宽-500G月流量,华北-北京地域。京东云8核16G服务器活动页面 atengyun.com/go/jd 京东云8核16G租用优惠价格 京东云:轻量云主机CPU内存:8C16G公网带…

【微服务】Sentinel(熔断降级,热点限流)

文章目录 1.熔断降级1.基本介绍1.线程堆积引出熔断降级2.示意图3.熔断,降级,限流三者之间的关系 2.熔断降级策略(以分钟为基本单位)1.慢调用比例2.异常比例3.异常数 3.熔断降级实例—慢调用比例1.需求分析2.com/sun/springcloud/c…

redis发布订阅和事务管理

目录 一、发布订阅 1.1 发布订阅简单介绍 1.2 相关命令 二、事务管理 2.1 介绍 2.2 Multi、Exec、discard 2.3 示例 2.4事务的错误处理 2.5 事务的冲突问题 2.5.1 悲观锁 2.5.2 乐观锁 2.5.3 事务解决冲突--WATCH 2.5.4 unwatch 2.6 Redis事务的三个特性 一、发布订…

[flink 实时流基础]源算子和转换算子

文章目录 1. 源算子 Source1. 从集合读2. 从文件读取3. 从 socket 读取4. 从 kafka 读取5. 从数据生成器读取数据 2. 转换算子基本转换算子(map/ filter/ flatMap) 1. 源算子 Source Flink可以从各种来源获取数据,然后构建DataStream进行转换…

Git——分布式版本控制工具详解

一、了解Git基本概念 (o)git github gitee的区别 (一)开发中的实际场景 (二)版本控制器的方式 1、集中式版本控制工具 集中式版本控制工具,版本库是集中存放在中央服务器的,team里…

如何检查电脑的最近历史记录?这里提供详细步骤

如果你怀疑有人在使用你的计算机,并且你想查看他们在做什么,下面是如何查看是否有访问内容的痕迹。 如何检查我的计算机的最近历史记录 要检查计算机的最近历史记录,应该从web浏览器历史记录开始,然后移动到文件。但是,可以修改或删除浏览器历史记录,也可以隐藏Windows…