【k8s】:DevOps 模式详解

news2024/11/15 8:35:47

1.什么是DevOps模式?

DevOps 是当下非常火爆的一个概念,受到了很多互联网巨头的推崇。那么什么是 DevOps?它的全称是:集成开发与运维。至于它到底是干什么用的,为什么现在这么火爆,还得从源头说起。

1.1 瀑布模型

一个软件从零开始到最终交付,大概会经历规划、编码、构建、测试、发布、部署、维护等几个阶段:

运维嵌入grafana 运维devops_敏捷开发

最初,程序比较简单,工作量也不大,程序员一个人就能完成各阶段的工作。

随着软件行业的不断发展,软件的规模也逐渐庞大,软件的复杂度不断提升,一个人已经无法应付自如,因此开始出现精细化的分工。

程序员的数量扩大,工种增多,除了软件开发工程师,还有软件测试工程师、软件运维工程师等等。

运维嵌入grafana 运维devops_运维_02

软件开发人员花费数周甚至数月的时间编写代码,然后将代码交给 QA(质量保证)团队进行测试,然后将最终版本交给运营团队进行部署。全部三个阶段:开发、测试、部署。

早期采用的软件交付模型称为“瀑布模型”:

运维嵌入grafana 运维devops_devops_03

简而言之,瀑布模型意味着等待一个阶段的所有工作完成后再进入下一个阶段。

这种模式适合条件比较理想的项目(用户需求非常明确,开发时间非常充足),大家按照流程,轮流做事,各司其职。

1.2 敏捷开发

但是项目不可能是单向运作的,客户也有需求,产品也有问题,需要改进,随着时间的推移,用户对系统的要求不断提高,而与此同时,用户给出的时间周期却越来越短,在这种情况下,大家发现繁琐、缓慢的瀑布式开发已经不再合适。

因此,软件开发团队引入了一个新概念,即著名的“敏捷开发”。

敏捷开发在 2000 年左右开始受到关注,是一种能够应对快速变化需求的软件开发能力。简单来说就是把大项目变成小项目,把大时间点变成小时间点,然后:

运维嵌入grafana 运维devops_devops_04

与 DevOps 经常出现的两个词是 CI 和 CD。CI 代表持续集成 (Continuous Integration),而 CD 则对应多个英文单词,持续交付 (Continuous Delivery) 或持续部署 (Continuous Deployment)。

说是“连续”,其实就是“加速-重复-加速-重复……”,就像这样。画个图大家可能更明白:

运维嵌入grafana 运维devops_运维_05

敏捷开发大大提高了开发团队的工作效率,版本更新更加快捷。

很多人可能会想:更新速度快的话,风险不是更大吗?

事实上,事实并非如此。

敏捷开发可以帮助更快地发现问题,更快地将产品交付给用户,更快地得到用户的反馈,因此团队可以更快地做出响应。而且 DevOps 小步子、快跑带来的版本变更相对较少,风险也较小(如下图所示),即使出现问题,也会相对容易修复。

运维嵌入grafana 运维devops_敏捷开发_06

1.3 DevOps开发与运营一体化

敏捷开发虽然大大提高了软件开发的效率和版本更新的速度,但是其效果却仅限于开发阶段,研发人员发现运维端依然是一块坚实的阻碍,成为了新的瓶颈。

运维工程师和开发工程师的思维逻辑完全不一样,运维团队的座右铭很简单,就是“稳定压倒一切”,运维最核心的诉求就是避免出现问题。

什么时候最容易出现问题?当发生变化的时候,最容易出现问题。所以运维是非常排斥“变化”的。

于是,两人的矛盾就爆发了:

运维嵌入grafana 运维devops_敏捷开发_07

这时候,DevOps出现了。DevOps这个词,其实是Development和Operations两个词的组合,它的英文发音是/de'vɒps/,类似“迪沃普斯”。

运维嵌入grafana 运维devops_运维_08

DevOps 是一组流程、方法和系统,旨在促进开发、技术运营和质量保证 (QA) 部门之间的沟通、协作和集成:

运维嵌入grafana 运维devops_运维_09

从目标上来看,DevOps就是为了让开发人员和运维人员能够更好地沟通和协作,并通过自动化的流程让整体软件流程更加快捷、可靠。

运维嵌入grafana 运维devops_微服务_10

很多人可能觉得,所谓的 DevOps,无非就是 Dev+Ops,只要把两个团队合并起来,或者把运维划归到开发,就可以了,简单粗暴。

注意,这种观点是错误的,这也是近年来DevOps难以落地的主要原因。

想要真正把 DevOps 做到极致,首先要做的就是转变思维方式,或者说“洗脑”。不但运维人员需要洗脑,开发人员也需要洗脑,员工需要洗脑,领导更需要洗脑。

DevOps 不只是组织架构的改变,更是企业文化和思维模式的改变,如果思维模式不能改变,就算员工拼凑在一起,也不会擦出火花。

除了洗脑之外,整个流程的规范和标准都按照DevOps的思维进行重新梳理。

在DevOps流程下,运维人员会在项目开发期间介入开发过程,了解开发人员所使用的系统架构和技术路线,制定合适的运维计划。开发人员也会在运维前期参与系统部署,并为系统部署提供优化建议。

DevOps的推行促进了开发和运维人员之间的沟通,增进了相互的了解。

在转变思维和流程的同时,如果要全面推行DevOps,当然离不开软件和平台的支持。

支持 DevOps 的软件有很多,篇幅有限就不一一介绍了,不过现在 DevOps 这么火也是因为这些软件和平台,你可以趁机卖掉赚钱。

运维嵌入grafana 运维devops_devops_11

在上述关键因素中,技术(工具与平台)最容易落地,其次是流程,而思维方式的转变最难。

也就是说,DevOps考验的不只是一家公司的技术,更考验公司的管理水平和企业文化。

对比上面提到的瀑布式开发与敏捷开发,我们可以明显的看到,DevOps贯穿了整个软件生命周期,并不局限于开发阶段。

运维嵌入grafana 运维devops_运维_12

云计算技术近几年发展很快,虚拟化、容器、微服务等概念大家应该都很熟悉,提到这些概念的时候我们偶尔也会提到DevOps。

它们之间有什么联系?

事实上非常简单。

你可以想象一下,如果我们要将一项任务划分成更小的部分,是加工一大块铁更方便,还是把它分割成几块进行加工更方便?

显然拆分之后会更加方便。

所谓“微服务”,就是将原本黑箱化的整体产品从提供多个服务的整体拆分(解耦)成多个提供不同服务的个体。如下图所示:

运维嵌入grafana 运维devops_微服务_13

在微服务架构下,不同的工程师可以处理他们负责的模块,例如开发,测试,部署和迭代。

虚拟化其实是一种敏捷的云计算服务,它从硬件角度把一个系统“划分”成多个系统,使系统之间相互隔离,便于微服务化。

容器则更加彻底,不再划分到不同的操作系统,而是划分到操作系统上的不同“运行环境”(Container),占用资源更少,部署速度更快。

虚拟化和容器其实为DevOps提供了很好的前提条件,开发环境和部署环境可以得到更好的隔离,减少互相的影响。

这也是为什么DevOps在2009年并不流行,而现在却越来越流行的主要原因之一。

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

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

相关文章

无线感知会议系列【4】【基于WiFi和4G/5G的非接触无线感知:挑战、理论和应用-2】

前言: 本篇重点分享一下该论文 《Human Respiration Detection with Commodity Wifi Devices: Do User Location and Body Orientation Matter》 接 2020年北京智源大会 张大庆老师的一个报告 参考: https://blog.csdn.net/chengxf2/article/detai…

17.2 ksm源码讲解

本节重点介绍 : k8s资源对象的 buildStores构造函数注入MetricFamiliesk8s client-go 之 Reflector listAndWatch 方法watchHandler 监听更新,调用add等action 架构图总结 项目地址 地址 go get go get -v -d k8s.io/kube-state-metrics/v2v2.1.1源码分析 m…

uniapp微信小程序用户授权方法

效果 步骤 1&#xff09;div标签 <button type"primary" class"btn-login" click"getUserInfo">一键登录</button>2&#xff09;js方法 methods: {getUserInfo() {console.log("aaaa")uni.getUserProfile({desc: Wexin, …

Python画笔案例-056 绘制正方形金字塔

1、绘制正方形金字塔 通过 python 的turtle 库绘制 正方形金字塔,如下图: 2、实现代码 绘制正方形金字塔,以下为实现代码: """正方形金字塔.py """ import turtledef draw_square(length):for _ in

【Linux】yum、vim、gcc使用(超详细)

目录 yum 安装软件 卸载软件 查看安装包 安装一下好玩的命令 vim vim基本操作 模式切换 命令集 vim批量注释 vim配置 gcc 函数库 小知识点&#xff1a; Linux中常见的软件安装方式 --------- 下载&&安装 a、yum/apt b、rpm安装包安装 c、源码安装 y…

SDK(1.1note)

什么是SDK 控制台程序&#xff08;Console User interface&#xff09;CUI 对于控制台程序&#xff0c;通用&#xff0c;也就是平台无关 图形界面系统 可是如果你想要播放一个音乐&#xff0c;C语言有嘛&#xff1f; 所以需要平台开发&#xff0c;不可以移植性 平台会提供…

摒弃“流量思维”,以精准流量驱动企业发展——基于开源 AI 智能名片、链动 2+1 模式及 O2O 商城小程序的思考

摘要&#xff1a;本文深入探讨在当前竞争激烈的营销环境下&#xff0c;摒弃“流量思维”的紧迫性与必要性。强调做内容营销不能仅仅局限于发文案&#xff0c;而应摆脱一味追求阅读量、推荐量和粉丝数的误区&#xff0c;聚焦于获取精准流量。结合开源 AI 智能名片、链动 21 模式…

如何解决npm下载Puppeteer卡死的问题

亲测有效 export PUPPETEER_DOWNLOAD_BASE_URLhttps://cdn.npmmirror.com/binaries/chrome-for-testingnpm install https://github.com/cnpm/binary-mirror-config/pull/47https://github.com/cnpm/binary-mirror-config/pull/47 PS: 最开始看了下面这两个链接&#xff0c…

网络安全-长亭雷池的sql绕过

一、环境 雷池官网docker安装我的版本是 看官网介绍主要防御top10 二、讲解 我这里只描述通用型绕过&#xff0c;对于事件型不多描述&#xff0c;因为通用型的绕过是通杀的&#xff0c;差异化绕过 正常来说我们是因为没有一个很好的过滤所以造成第11关靶场的绕过 但是现在有了…

Stable Diffusion进阶篇:模型训练(附秋叶模型训练器)

前言 今天就来学习下Stable Diffusion关于微调训练方面的知识点。 今天没多少废话&#xff0c;因为我下午要去玩PTCG&#xff01;让我们冲冲冲 整理和输出教程属实不易&#xff0c;觉得这篇教程对你有所帮助的话&#xff0c;可以点击&#x1f447;二维码领取资料&#x1f618…

k8s介绍-搭建k8s

官网&#xff1a;https://kubernetes.io/ 应用部署方式演变 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其他技术的参与 缺点&#xff1a;不能为应用程序定义资源使用边界&#xff0c;很难合理地分配计…

Active Directory 实验室设置第二部分- 添加数据到AD域

在之前的文章中&#xff0c;我们已经讨论了AD森林的安装和AD基础知识。在这篇文章中&#xff0c;让我们开始使用 AD 对象&#xff08;如用户对象、计算机对象、组对象、网络共享等&#xff09;填充 AD 环境&#xff0c;以及计算机如何加入域。 #1、添加用户对象 可以使用GUI、…

什么是CPQ?一文讲解什么是CPQ选型配置报价系统

什么是CPQ选型配置报价? CPQ&#xff0c;是英文名 Configure Price Quote的缩写&#xff0c;中文称为配置报价软件。该软件经常出现在销售行业。它是一种可以快速为企业报价的销售工具。企业在报价时&#xff0c;会综合考虑数量、折扣、产品可选功能等。CPQ软件能够整合企业的…

Linux学习之路 -- 线程 -- 互斥

目录 1、概念引入 2、互斥锁 1、pthread_mutex_init && pthread_ mutex_destory 2、pthread_mutex_lock && pthread_mutex_unlock 3、互斥锁原理的简单介绍 1、概念引入 为了介绍线程的同步与互斥&#xff0c;我们以抢票逻辑引入相关的概念。 示例代码…

harmonyOS 原来构建还有这么多弯弯绕绕

随着用户需求的不断增长&#xff0c;我们的 APP 已发展成功能丰富的超级APP&#xff0c;这也导致打包构建变得非常耗时&#xff0c;可能需要数小时&#xff0c;严重影响开发效率和产品迭代。通过采用模块化设计、增量构建、并行处理、缓存机制、优化依赖管理&#xff0c;以及云…

SSM整合步骤

目录 一、Mybatis整合Spring 1、整合后的maven坐标 2、核心配置文件 3、pojo、mapper、service配置 4、单测 二、整合SpringMVC 1、引入springMVC的坐标并配置tomcat 2、核心配置文件 3、controller配置 4、启动项目并测试 SSM SpringMVC Spring Mybatis 整合顺序&#xff1…

Spring AOP - 注解方式实现

前文已经讨论了基于配置文件方式实现Spring AOP&#xff08;Spring AOP - 配置文件方式实现&#xff09;&#xff0c;本文采用注解的方式实现前文相同的功能。配置步骤如下&#xff1a; 1、项目增加aop依赖&#xff08;pom.xml) <dependency><groupId>org.springfr…

大数据:快速入门Scala+Flink

一、什么是Scala Scala 是一种多范式编程语言&#xff0c;它结合了面向对象编程和函数式编程的特性。Scala 这个名字是“可扩展语言”&#xff08;Scalable Language&#xff09;的缩写&#xff0c;意味着它被设计为能够适应不同规模的项目&#xff0c;从小型脚本到大型分布式…

vue2 中使用 Tinymce 富文本编辑器详解

vue2.x使用Tinymce富文本 项目中Tinymce效果图安装依赖包/创建依赖文件创建skins文件夹汉化文件-zh_CN.js 封装组件Tinymce.vue组件中使用封装组件tinymce.vueTinymce 扩展插件集合 项目中Tinymce效果图 如果想先了解一下&#xff0c;可以浏览一博主整理的的TinyMCE中文文档&am…

【揭秘大脑与AI的鸿沟:电化学信号与非线性动态交互的奥秘】

目录 【揭秘大脑与AI的鸿沟:电化学信号与非线性动态交互的奥秘】 1. 信息传递的奇迹:电化学信号的奥秘 2. 非线性动态交互:大脑的智慧之源 3. 结构与功能的鸿沟:从并行分布到有限层次 结语:探索未知的边界 【揭秘大脑与AI的鸿沟:电化学信号与非线性动态交互的奥秘】…