【DevOps】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做一些生产环境中的示例。

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

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

相关文章

《UnityShader入门精要》学习2

UnityShader 基础 UnityShader 概述 一对好兄弟:材质和UnityShader 总体来说,在Unity中我们需要配合使用材质(Material)和Unity Shader才能达到需要的效果。一个最常见的流程是: (1)创建一个…

ts内置对象有哪些有什么作用

TS内置对象是指在TypeScript中自带的一些对象,可以直接使用而不需要导入或安装。一些常见的TS内置对象包括: Math:提供了一些常用的数学函数,例如sin、cos、sqrt等。 Date:提供了日期和时间的相关功能,例如…

(5)SpringMVC处理携带JSON格式(“key“:value)请求数据的Ajax请求

SpringMVC处理Ajax 参考文章数据交换的常见格式,如JSON格式和XML格式 请求参数的携带方式 浏览器发送到服务器的请求参数有namevalue&...(键值对)和{key:value,...}(json对象)两种格式 URL请求和表单的GET请求会将请求参数以键值对的格式拼接到请求地址后面form表单的P…

【深度学习】UniControl 一个统一的扩散模型用于可控的野外视觉生成

论文:https://arxiv.org/abs/2305.11147 代码:https://github.com/salesforce/UniControl#data-preparation docker快速部署:https://qq742971636.blog.csdn.net/article/details/133129146 文章目录 AbstractIntroductionRelated WorksUniCo…

【Linux】HTTPS协议

文章目录 📖 前言1. 引入https协议2. 常见的加密方式2.1 对称加密:2.2 非对称加密:2.3 数据摘要&&数据指纹: 3. 对加密方式的探究3.1 只使用对称加密:3.2 只使用非对称加密:3.3 双方都使用非对称加…

SQL和Python,哪个更容易自学?哪个更适合数据工作的编程新手?

如果你想从事数据工作,比如数据分析、数据开发、数据科学等,你可能会遇到这样的问题:SQL和Python哪个更容易自学?哪个更有用?哪个更有前途?其实这两种语言都是数据工作的重要技能,但它们的特点和…

vue拦截器是什么,如何使用

Vue拦截器是一种用来拦截并处理HTTP请求和响应的机制,它可以在请求或响应发送前或后进行一些预处理或处理。在Vue中,可以使用axios库来实现拦截器,axios库是一个基于Promise的HTTP客户端,可以用于浏览器和Node.js平台。 使用axio…

计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度(matlab代码)

目录 1 主要内容 系统结构 CCPP-P2G-燃气机组子系统 非线性处理缺陷 2 部分代码 3 程序结果 4 程序链接 1 主要内容 该程序参考《计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度》模型,主要实现的是计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度…

智能井盖传感器:提升城市安全与便利的利器

在智能化城市建设的浪潮中,WITBEE万宾智能井盖传感器,正以其卓越的性能和创新的科技,吸引着越来越多的关注。本文小编将为大家详细介绍这款产品的独特优势和广阔应用前景。 在我们生活的城市中,井盖可能是一个最不起眼的存在。然而…

通过动态IP解决网络数据采集问题

前言 网络数据采集是目前互联网上非常重要且广泛应用的技术之一,它可以帮助我们获取互联网上各种类型的数据,并将其转化为可用的信息。然而,一些网站为了保护其数据被滥用,采取了一系列的限制措施,其中包括对访问者的…

java:使用Jedis操作redis

Redis是一个基于内存的高性能键值存储数据库,支持多种数据结构,如字符串、列表、集合等。在Java中,我们可以通过Jedis客户端来操作Redis数据库。 安装Jedis客户端 在Java应用程序中使用Jedis客户端之前,需要将其添加到项目中。可…

lNmp安装:

一、LNMP LNMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件, 能够提供动态Web站点服务及其应用开发环境。LNMP是一个缩写词,具体包括Linux操作系统、nginx网站服务器、MySQL数据库服务器、 PHP(或…

各类高危漏洞介绍及验证方式教程(一)

本期整理的漏洞验证教程约包含50多类漏洞,分多个章节编写,可从以下链接获取全文: 各类高危漏洞验证方式.docx (访问密码: 1455) 搭建dvwa测试环境基础教程.docx(访问密码: 1455) web逻辑漏洞挖掘快速入门基础教程.docx(访问密码: 1455) 01 Ca…

十一、对象的新增方法

对象的新增方法 1. Object.is()(1)Object.is() 与 行为基本一致(2)两个不同之处: 0 不等于 -0,NaN 等于自身。 2. Object.assign() 用于【对象的合并】(1)Object.assign(target, so…

salesforce的按钮执行js代码如何链接到apex代码

在Salesforce中,你可以通过自定义JavaScript按钮或链接来触发Apex代码的执行。这可以通过使用JavaScript Remoting或Visualforce页面来实现。以下是一些步骤来将JavaScript按钮与Apex代码链接起来: 使用JavaScript Remoting链接JavaScript按钮到Apex代码…

WPF向Avalonia迁移(三、项目结构)

前提: Avalonia版本11.0.0 1.配置文件 1.1 添加配置文件 1.2 读取配置文件 添加System.Configuration.ConfigurationManager using Avalonia.Controls; using System.Configuration;namespace AvaloniaApplication7.Views {public partial class MainWindow : W…

git服务器宕机后,怎么用本地仓库重新建立gitlab服务器(包括所有历史版本)

一、重新建立 当您的 GitLab 服务器因为某种原因宕机后,您可以使用本地仓库中的备份数据来恢复 GitLab 服务器。以下是一般的步骤,用于重新建立 GitLab 服务器: 注意: 这些步骤假定您已经定期备份了 GitLab 数据,包括…

如何使用Net2FTP搭建免费web文件管理器打造个人网盘

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一,特别是智能设备的大面积使用,无论是个人…

常用的Linux命令及其用法

常用的Linux命令及其用法 1. ls:列出文件和目录 ls命令用于列出当前目录中的文件和子目录。通过不同的选项,可以显示详细信息、隐藏文件等。 示例: ls -l ls -a2. cd:切换工作目录 cd命令用于切换当前工作目录。通过指定目标…

H3C交换机的40G堆叠线 ,可以插在普通光口做堆叠吗?

环境: S6520X-24ST-SI交换机 H3C LSWM1QSTK2万兆40G堆叠线QSFP 问题描述: H3C交换机的40G堆叠线 ,可以插在普通光口做堆叠吗? 解答: 1.H3C交换机的40G堆叠线通常是用于连接堆叠模块或堆叠端口的。这些堆叠线通常使…