都在说CI/CD,到底什么是CI/CD

article/2025/9/22 10:42:14

引入

这篇文章是自己工作多年对CI/CD的理解,纯属个人见解。

不想说太多概念性的东西,直接从技术人员实际能接触的过程来展开说说。另外我这篇只是想关注一些通用的流程,细节的不同这里不纠结。比如微服务的CI/CD和单体服务有些不同,如果涉及到容器和k8s,又会有不同的地方。这里都不展开说。

CI指的是持续集成,CD指的是持续部署。合在一起通常包含这几个过程:

在这里插入图片描述

代码阶段

代码节点也可以叫开发阶段,这个阶段我们一般是本地开发代码,这个阶段首先涉及到一些开发工具比如idea,vscocode等。

同时,我们需要一个代码托管工具,常用的比如git,当然并不限制一定要用git。

最后还有一个很重要但是容易被忽略的环节,就是code review(简称cr),cr的重要性无需多说,在国外很多科技公司,cr都是一个强制的流程。国内感觉最近几年对cr也越来越重视了,我之前在的一个公司,代码没有经过cr是不允许发布到测试环境的。

关于cr阶段使用的工具,不同的公司一般不一样。我见过直接使用idea等开发工具进行cr的,也有用gitlab等托管工具cr的,有些大点的公司有自己开发的cr工具。不过工具不重要,重要的是过程。

编译阶段

编译阶段也可以叫构建阶段。首先通常会考虑依赖的问题,比如编译java代码会考虑jdk的版本,pom依赖等这些都是需要解决的。

其次一个要关注的点就是单元测试,编译阶段一般都会自动运行你在开发阶段编写的单元测试代码(当然前提是你写了,哈哈)。同时单元测试要确保一定的覆盖率,覆盖率很低的单元测试也没啥意义。这样要求我们要一个良好的开发习惯:写单元测试。关于单元测试的种种,不是本文的重点,这里不表。

编译没问题,并且单元测试没问题,一般就可以构建、打包发布到测试环境了。打包发布常用的工具是jenkins,如果涉及到容器部署,这个阶段通常我们也会打包服务的镜像并且推送的镜像仓库(可以是私有仓库或者公有仓库)。

测试环境

我们的服务打包到测试环境之后,一般我们需要在测试环境进行集成测试,所谓的集成测试,就是把流程整合按照接口或者某个特定功能的测试。比如下单的流程,可能涉及很多模块,我们对下单这个流程的测试就属于集成测试。

生产环境

生产环境涉及的环节比较多,也是最重要的。毕竟这是最终交付的环节,前面所有的努力都是为这一步做准备。

当我们发布到生产环境时,通常不会马上进行全量的发布,而是先进行灰度部署。灰度部署是指逐渐将生产环境流量从老版本切换到新版本。通常流量是按比例分配的。例如 90% 的请求流向老版本,10% 的请求流向新版本。然后没有发现问题,就逐步扩大新版本上的流量,减少老版本上的流量。

这种能最大限度的减少出现故障造成的影响。

实现灰度发布有很多方案,比如通过前端的cdn技术,后端的方案就更多了,比如基于nginx实现,如果你是基于容器部署,可以通过k8s的ingress实现灰度发布等。

灰度验证完没有问题,一般就可以进行全网发布了。尽管前面已经做了各种测试了,全量发布后依然不能保证一定不会出问题,因为有些问题可能是流量很大的时候才会暴露。这就要求我们一定要有回滚机制,当线上出问题时能够快速的回滚到上一个版本。

另外一个关注点就是,服务上线后持续的监控以及出现问题的及时告警机制。这种一般要借助于一些第三方的监控工具,比如Prometheus等。


http://chatgpt.dhexx.cn/article/xtGTomdp.shtml

相关文章

自动化运维CICD

目录 概述 为什么持续集成和发布可以提高效率 如何实现 1、在linux服务器安装部署代码仓库 2、安装jenkins 使用shell脚本实现CICD 使用pipeline实现CICD 使用Blue Ocean实现CICD 概述 持续集成(Continuous Integration,CI)和持续发布&#xff0…

什么是 CI/CD ?

说在开头 CI、CD 其实是三个概念,包含了一个 CI 和两个 CD,CI全称 Continuous Integration,表示持续集成,CD包含 Continuous Delivery和 Continuous Deployment,分别是持续交付和持续部署。这三个概念之间是有前后依赖…

【神经网络】一文读懂LSTM神经网络

简介 说到LSTM神经网络,大家都不陌生,LSTM指的是Long Short-Term Memory,意思是:长短时记忆,也就是说这个神经网络有记忆功能,为什么说它有记忆功能呢?因为在训练数据的时候,很久之前…

深度学习中的循环神经网络LSTM详解

(一)、什么是循环神经网络LSTM? LSTM指的是长短期记忆网络(Long Short Term Memory),它是循环神经网络中最知名和成功的扩展。由于循环神经网络有梯度消失和梯度爆炸的问题,学习能力有限,在实际任务中的效果…

【神经网络】学习笔记三—LSTM简介篇

1. RNN和LSTM结构对比 RNN: 循环神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的神经网络。相比一般的神经网络来说,他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不…

深度学习-LSTM网络-代码-示例

一、 LSTM网络原理 要点介绍 (1)LSTM网络用来处理带“序列”(sequence)性质的数据,比如时间序列的数据,像每天的股价走势情况,机械振动信号的时域波形,以及类似于自然语言这种本身带有顺序性质的由有序单…

LSTM模型介绍

递归神经网络(RNN) 人类不会每时每刻都开始思考。 当你阅读这篇文章时,你会根据你对之前单词的理解来理解每个单词。 你不会忘掉掉所有东西,然后再从头开始思考。 你的想法有持久性。 传统的神经网络不能做到这一点,…

人人都能用Python写出LSTM-RNN的代码![你的神经网络学习最佳起步]

0. 前言 本文翻译自博客: iamtrask.github.io ,这次翻译已经获得trask本人的同意与支持,在此特别感谢trask。本文属于作者一边学习一边翻译的作品,所以在用词、理论方面难免会出现很多错误,假如您发现错误或者不合适…

LSTM神经网络算法

RNN RNN 是包含循环的网络,允许信息的持久化。 在下面的示例图中,神经网络的模块,A,正在读取某个输入 x_i,并输出一个值 h_i。循环可以使得信息可以从当前步传递到下一步。 RNN 可以被看做是同一神经网络的多次复制&…

Understanding LSTM Networks(LSTM的网络结构)

Recurrent Neural Networks 人类不是每时每刻都从头开始思考的。当你读这篇文章的时候,你理解每个单词是基于你对以前单词的理解。你不会把所有的东西都扔掉,然后从头开始思考。你的思想有毅力。传统的神经网络无法做到这一点,这似乎是一个主…

理解 LSTM 网络

递归神经网络人类并不是每时每刻都从头开始思考。正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词。你不会丢弃所有已知的信息而从头开始思考。你的思想具有持续性。传统的神经网络不能做到这点,而且这似乎也是它的主要缺陷。比如&…

LSTM网络的简单理解

目录 RNN递归神经网络LSTM神经网络结构变形1.peephole connections结构2.在忘记门与输入门之间引入一个耦合3.门循环单元(GRU) 今天对LSTM网络进行学习。 在理解LSTM网络之前,我们首先要对Recurrent Neural Networks(RNNs&#xf…

循环神经网络与LSTM

1. 循环神经网络 ①基本结构 在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么&am…

实例 :教你使用简单神经网络和LSTM进行时间序列预测(附代码)

翻译:张玲 校对:丁楠雅 本文约1500字,建议阅读5分钟。 作者基于波动性标准普尔500数据集和Keras深度学习网络框架,利用python代码演示RNN和LSTM RNN的构建过程,便于你快速搭建时间序列的预测模型。 图片来源&#xff…

【LSTM】深入浅出讲解长短时记忆神经网络(结构、原理)

本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅!​​个人主页:有梦想的程序星空​​个人介绍:小编是人工智能领域硕士,全栈…

深入理解LSTM神经网络

本文内容及图片主要参考:Understanding LSTM Networks LSTM核心思想 LSTM最早由 Hochreiter & Schmidhuber 在1997年提出,设计初衷是希望能够解决神经网络中的长期依赖问题,让记住长期信息成为神经网络的默认行为,而不是需要…

LSTM神经网络实战

上一遍博客简单的介绍了LSTM神经网络的工作原理, 有兴趣的打开了解一下: https://blog.csdn.net/weixin_52486467/article/details/126301845 显目介绍: 一、问题背景 电力系统负荷(电力需求量,即有功功率&#xf…

LSTM -长短期记忆网络(RNN循环神经网络)

文章目录 基本概念及其公式输入门、输出门、遗忘门候选记忆元记忆元隐状态 从零开始实现 LSTM初始化模型参数定义模型训练和预测 简洁实现小结 基本概念及其公式 LSTM,即(long short-term Memory)长短期记忆网络,也是RNN循环神经网络的一种改进方法&…

机器学习之LSTM的Python实现

什么是LSTM? LSTM(长短期记忆人工神经网络),是一种可以学习长期依赖特殊的RNN(循环神经网络)。 传统循环网络RNN虽然可以通过记忆体,实现短期记忆,进行连续数据的预测。但是当连续…

神经网络:LSTM基础学习

1、LSTM简介 在时间序列数据学习中,传统的循环神经网络(RNN)存在较多的学习瓶颈和技术缺陷,而长短时记忆(LSTM)神经网络克服了循环神经网络的缺陷,使其在长时间序列数据学习训练中能克服梯度爆炸…