DevOps—基本概念

article/2025/8/30 4:20:00

DevOps—基本概念

  • 1. DevOps
  • 2. CI/CD

1. DevOps

维基百科定义:
DevOps是一组过程、方法与系统的统称,用于促进 开发、技术运营质量保障(QA) 部门之间的沟通、协作与整合。我理解DevOps是一种软件管理思维模式。

为什么会有DevOps呢,或者说软件开发领域是怎么样演变出DevOps这个概念的呢?

项目管理模式的演变是受项目的规模大小影响的。

最初阶段,项目软件功能比较简单,工作量不大,程序员一个人可以完成规划、编码、构建、测试、发布、部署和维护所有阶段的工作。
在这里插入图片描述
后来,项目扩大,软件的规模也在逐渐变得庞大,采有传统瀑布流模型。团队里面除了软件开发工程师之外,又有了软件测试工程师,软件运维工程师,各个工种分工合作,一个阶段所有工作完成之后,再进入下一个阶段。

在这里插入图片描述
再后来,随着项目的再次扩大,用户对系统的需求不断增加,与此同时,用户给的时间周期却越来越少,时间周期比较长的瀑布流模式不再适用,于是就出现了“敏捷开发”,为的就是小步快跑,持续迭代,快速发现问题,快速解决问题,快速和用户、业主进行确认。
在这里插入图片描述
再然后,在现今这个时代,对变化进行响应的要求越来越高,可以一个项目几天就要迭代上线一版。而从上面的图也可以看到,敏捷开发大幅提升了软件开发的效率和版本更新的速度,但是它的效果仅限于开发环节,运维部署成为瓶颈。运维的核心就是维稳,不出问题,这导致了开发快速迭代的版本很难快速正式上线。

这时候,DevOps这个概念才被提出和关注。从目标来看,DevOps就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠。而从DevOps概念提出到现在,也不仅仅只是要打通开发和运维的壁垒了,而是扩大到整个项目团队涉及到所有角色,也包括了市场、需求等人员。

在这里插入图片描述
DevOps 的三大支柱,即人(People)、流程(Process)和平台(Platform)。

DevOps = 人 + 流程 + 平台
人 + 流程 = 文化
流程 + 平台 = 工具
平台 + 人 = 赋能

这是这个行业演变过程,也是一个公司从成立,到发展壮大的过程,一个公司的项目管理模式演变过程是整个行业演变过程的缩影,不同阶段有不同阶段的模式,达到一定阶段才有改变的必要,不过我们如果提前有这些了解,提前有所准备,那边在转变的过程中就可以少些弯路和内耗。

DevOps要做就是使用技术工具按照标准化的流程统筹各个阶段的人和人的行为,实现快速交付。它的落地考验的不仅是一家企业的技术,更是管理水平和企业文化,需要一家公司从上到下进行思维转变,并且重新梳理全流程的规范和标准。技术(工具和平台)是最容易实现的,流程次之,思维转变反而最困难。

虽然思维转变是最重要的,但是思维转变没法凭空而来,不可能看一下概念,听一下别人的描述就可以转变过来。只有身处在那样的环境,体会到确切的痛点,如一个公司随着规模的扩大,项目变得复杂,发现按照以前的项目执行方式每次都是亏钱,这样才有可能引发思考,如果这时再体验到相关地技术带来的便利和好处,这样才有可能引发思维的转变。

对于DevOps的介绍,大家可以再看看以下文章,感觉这两篇还是讲得比较清楚的,我这里也借鉴了他们。
DevOps到底是什么意思?
https://www.zhihu.com/question/58702398?sort=created

对于开发人员个人而言,虽然DevOps实施落地中技术和工具是最简单的,但是我们还是要先了解技术和工具,从中体会它与我们日常工作流程的差别,引发思考,同时也为可能用到的时机进行准备积累。

2. CI/CD

DevOps涉及开发的各个阶段,涉及到各个阶段的人,人的思维转变是最难的,而标准的流程和规范是DevOps的基础,是将各个阶段的人和行为管理起来的根本,平台则是流程自动化的技术工具。其中,CI/CD是DevOps中最能体现流程化的一个阶段,旨在通过技术工具搭建标准自动化流水线过程,减少重复工作的资源浪费。

在这里插入图片描述
CI/CD是伴随着DevOps出现的两个词汇,CI是Continuous Integration(持续集成),而CD对应多个英文,Continuous Delivery(持续交付)或Continuous Deployment(持续部署)。所谓持续就是即时和反复,为的就是及时发现问题,及时响应。

持续集成:

持续集成是指多名开发者在开发不同功能代码的过程当中,可以频繁的将代码行合并到一起,然后进行自动化测试,并且不会相互影响工作。
在这里插入图片描述
持续交付:

持续交付是指在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。
在这里插入图片描述
持续部署

在持续交付的基础上,把部署到生产环境的过程自动化。如果你对比上图持续部署就可以发现持续部署和持续交付的区别就是最终部署到生产环境是自动化的。
在这里插入图片描述
关于CI/CD概念更多的了解,可以再看一下以下文章:什么是CI/CD

从上面的几个图可以看出,要实现CI/CD最起码需要一个固定的流程和三个工具。流程需要规定从代码开发到生产环境需要经过哪些阶段,每个阶段需要做什么,如果一个阶段没有达到预期应该怎么做,这个流程不同公司会有所不同,也是每个企业管理方式的体现。最基本的三个工具包括源代码管理工具(SCM)、自动化构建平台,消息通知工具。

平台工具各个公司各有不同,大家日常工作中也各有熟悉的工具,DevOps也不仅仅CI/CD需要平台工具,如项目管理、需求、原型和UI管理都需要工具,这里只是介绍CI/CD过程相关的。

源代码管理工具一般选择 GitLab,也可以用Gitbilit等其他的,这些大家都应该很熟悉,毕竟是日常工作中必不可少要接触的。

自动化构建平台成熟的有很多,GitLab也自带有CI/CD模块可以用,而这里要采有的是开源且发展历史长久,广泛使用和最好的CI/CD工具之一的Jenkins。

消息通知可以用邮件,也可以通知到钉钉等办公软件中。

之后的文章将介绍相关工具的部署和准备,并结合k8s做一些生产环境中的示例。

上一篇:容器技术—docker stack
下一篇:DevOps—源码管理工具


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

相关文章

DevOps简介

一、DevOps定义:Development和Operations的组合,突出重视软件开发人员与运维人员的沟通合作,通过自动化流程使得软件构建、测试、发布更加快捷、频繁和可靠。 它是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成&#xf…

什么是 DevOps?看这一篇就够了!

文章目录 一、前因二、记忆三、他们说……3.1、Atlassian 回答“什么是 DevOps?”3.2、微软回答“什么是 DevOps?”3.3、AWS 回答“什么是 DevOps?” 四、DevOps 文化4.1、什么是文化?4.2、什么是 DevOps 文化?4.3、领…

Devops基本概念和原理

一、什么是DevOps 1、 DevOps概述 DevOps,即Development and Operations,是一组过程、方法与系统的统称,用于促进软件开发、运维和质量保障部门之间的沟通、协作与整合。DevOps的出现是由于软件行业日益清晰的认识到:为了按时交…

DevOps概念及搭建全过程(Jenkins、Harbor、SonarQube、K8s)

DevOps入门及过程搭建 在如今互联网的格局下,抢占市场变得尤为重要,因此敏捷开发越来越被大家所推崇。于是,慢慢的有了DevOps这个概念,大致意思是开发-运维一体化。 1 DevOps概念 1.1 基本概念 可以看到上图是一个无穷大的一个符…

Hzero数据库初始化

一:获取种子数据: git地址:https://gitlab.flytiger.net/huying-hzero/hzero-resource.git 二:配置数据库信息 打开hzero-resource项目,编辑application.yml配置文件,修改对应的数据库连接信息 三:初始化…

【Python学习笔记】深入剖析随机数种子

深入剖析随机数种子 一、定义1.1 作用 二、实战2.1 同样的随机数种子2.2 不同的随机数种子2.3 不指定随机数种子 三、随机数列的大小是多少呢?3.1 设定为百万,没问题3.2 设定为千万,没问题3.3 设定为亿,没问题3.4 设定为十亿&…

pytorch的主要模块

1. torch模块 torch模块包含了一些pytorch的常用激活函数,如Sigmoid(torch.sigmoid)、ReLu(torch.relu)和Tanh(torch.tanh);同时也包含了pytorch张量的一些计算操作,如矩…

np.random.seed()随机数种子学习笔记

文章目录 np.random.seed()随机数种子为什么使用np.random.seed()什么是np.random.seed() 代码理解np.random.seed()的参数适用情况 np.random.seed()随机数种子 为什么使用np.random.seed() 在机器学习中,有很多的操作和算法带有一定的随机性,所以在复…

种子项目详解

引言 在上一篇文章简单讲解了种子项目搭建,但是项目搭建起来是为了方便我们后续开发的。因此了解整个项目的架构,以及各个Maven模块是如何各司其职、相互依赖,是至关重要的。 这里分成两块介绍 lenosp自带的内容新增扩展的内容 lenosp自带…

【Abp VNext】实战入门(九):DbMigrator 自定义项目所需种子数据

前言: 项目开发过程中难免会涉及到一些业务相关的基础数据,我们称之为种子数据,主要为了方便测试功能或者展示效果; 常规做法是手动到数据库表创建数据,但是随着表结构更改或者数据清空后,又要重新录入基…

区块链模块化的大胆尝试,解读公链Celestia

作为以链游为主的社区,暴躁兔也会时常关注加密行业的其他赛道和方向。对于目前市场而言,公链的机会与红利仍然存在,且相对而言,技术创新较多,同时资本也比较喜欢这样的赛道。今天为大家讲解的是Cosmos生态的项目Celest…

scrapy_redis种子优化

前言: 继《scrapy_redis去重优化(已有7亿条数据),附Demo福利》优化完去重之后,Redis的内存消耗降了许多,然而还不满足。这次对scrapy_redis的种子队列作了一些优化(严格来说并不能用上“优化”…

总结一下Python的模块加载解析

正式的Python专栏第16篇,同学站住,别错过这个从0开始的文章! 学委之前分享了很多代码,也发布了几个库。 新手可以从两篇基础文章入手学习,积累了一些代码,可以考虑做成一个个模块,包装代码有利…

C++ 函数(模块化编程)

目录 函数定义 函数 函数定义的语法形式 函数调用 调用函数需要先声明函数原型 函数调用形式 嵌套调用 例3-1编写一个求x的n次方的函数 例3-2 数制转换 源代码: 例3-3 编写程序求π的值 arctan函数 主程序 例3-4 寻找并输出11~999之间的数M&#xf…

单片机常开常闭检测

单片机检测常开常闭点(干接点信号)的方法:检测干接点的闭合和断开,从而单片机实施一定的操作,它具有两根线,具体步骤:1、引出单片机一个IO口线,连接干接点一端。2、干接点另一端通过…

干海星怎么吃做法 干海星的功效与作用有哪些

干海星是生活中并不常见的一种海鲜类食材,在很多人眼中干海星都是一种中药材,其实它也可以当做一种菜品来食用,那么干海星应该怎么吃呢?接下来我就把自己总结的干海星吃法大全写出来分享给大家。 干海星怎么吃 干海星的功效与作用…

大前端干货资料

JavaScript 文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference ES6 入门教程:https://es6.ruanyifeng.com/ Vue 官网:https://cn.vuejs.org router 官网:https://router.vuejs.org/zh UI框架 Ele…

干簧管(磁开关)

其实干簧管的工作原理并不复杂 干簧管的特点: 干簧管是干式舌簧管的简称,是一种有触点的无源电子开关元件,具有结构简单,体积小便于控制等优点,其外壳一般是一根密封的玻璃管,管中装有两个铁质的弹性簧片…

苹果手机位置共享后没开启定位服务器,iPhone默认开启但无卵用的设置开着干嘛?难怪手机这么耗电...

原标题:iPhone默认开启但无卵用的设置开着干嘛?难怪手机这么耗电 如果你的苹果手机开启了定位功能,那么在iPhone【设置】-【隐私】-【定位服务】-系统服务】,点击进入后有很多项开关,而很多都是在打开定位服务后默认开…

adams打不开提示msc license_adams安装后打不开

虽然要支持正版……但是 安装后打不开,借鉴了adams2017安装教程后台留言 图片发自简书App 1.首先我这么做是因为其实在安装过程中就有一次没找到路径 。所以该方法仅供参考。 图片发自简书App 此时我直接在“此电脑”内搜索“MSC.Software”了 图片发自简书App 耐心…