频频出现的DevOps到底是什么呢?浅浅了解下什么是DevOps吧

news2024/11/28 20:40:11

文章目录

📑前言

🧩DevOps的概念和起源

📰DevOps的概念

📰DevOps的起源与发展

📰总结

🧩DevOps的发展

📰发展过程速览

📰发展现状

📰未来发展

📄以下几方面因素可能促使一个组织引入DevOps:

📄DevOps对应用程序发布的影响

💻参考文章


📑前言

近几年来,即便是在疫情影响下,互联网的发展脚步也未曾停止过,技术更新迭代的速度飞快,因此不断学习是我们应对现状的最好办法。回归主题,那么近几年爆火的DevOps是什么呢,一种方法?一种工具?一种思想?一种开发流程?对此有着层出不穷的说法,那么它到底是什么呢?接下来我们一起来简单了解一下吧。

从以下三个角度入手了解

  • 起源
  • 原理
  • 发展

🧩DevOps的概念和起源

📰DevOps的概念

首先我们先了解一下DevOps这个词是什么意思

  • DevOps这个词来源于2009年在比利时根特市举办的首届DevOpsDays大会,为了在Twitter上更方便的传播,由DevOpsDays缩写为DevOps。
  • DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
  • 它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
  • 它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作。

📰DevOps的起源与发展

  • 说起DevOps就不得不从DevOps之父——Patrick Debois说起。2007年,Patrick参与了比利时一个政府下属部门的大型数据中心迁移项目。在这个项目中,他分别负责测试和验证的工作。这就意味着他不光有机会和开发团队(Dev)工作,也时常要和运维团队(Ops)工作。在开发团队中,他需要适应敏捷交付的节奏,但在运维团队他又得按照传统模式,像管理消防队员那样维护系统。两种工作氛围的来回切换,令他十分沮丧。不同的工作方式、思维方式势必存在着巨大差异,所以在这两者之间工作,到处都是冲突。作为一个敏捷的簇拥者,他果断调整自己,试图通过打通开发和运维的这堵部门墙。而他所开展的敏捷管理实践就是DevOps发展的第一个雏形。
  • DevOps的发展在业界有几个公认的、比较重要的阶段。2008年,敏捷博客的诞生,到后来在多伦多大会上,持续集成的流行为DevOps埋下种子。2009年,Velocty大会提出,一个中心两个基本点的概念,更强调了发展DevOps的两个重要概念——文化和工具的重要性。随之在同年10月,DevOps便正式诞生。次年,敏捷博客发表什么是DevOps文章,重点阐述了依据敏捷体系构造出的DevOps体系。它包括一系列价值观、原则、方法、实践以及对应的工具支撑。
  • 回顾软件发展的管理模式

  • 不同岗位的程序员各司其职完成开发任务​​​​​​​

  • 在传统瀑布模式下,开发、测试和运维分属于不同的部门,相互之间都有着厚厚的部门墙,下一个环节的动作,必须要等到上一个环节全部完成外才能进行。再到后来的敏捷时代,也主要是打通了开发和测试的部门墙,采用迭代的方式,测试驱动开发。比较两种模式的不同,我们会发现,传统瀑布管理模式注重在交付范围不变的情况下,通过计划驱动修改交付的时间和协调调动资源来完成交付。而敏捷则讲求的是在资源、时间不变的情况下,通过价值驱动更改交付范围。

  • 到DevOps时代,其实就是敏捷思想从软件开发端(Dev)到系统维护端(Ops)的延伸。"Dev"是开发人员的简称,但真正在实践中,意味着更广泛的“参与开发产品”的所有人,包括产品、质量和其他种类的工种。"Ops"也是一个总括术语,泛指系统工程师、系统管理员、操作人员,发布工程师、数据管理员(DBA)、网络工程师、安全专家等维护支撑类工种。

  • DevOps聚焦软件快速交付、系统稳定运营。通过让团队共享面向客户的价值和集成目标,同时也共担质量责任。但是,DevOps并不会取代敏捷,而是对敏捷的补充。它通过消除浪费和简化部署等思想,来实现持续交付的目标。DevOps是集大成者,它并不制造概念,而是将很多理念和实践做了整合,是真正打通端到端交付的方法体系。

📰总结

  • 总之,DevOps准确的定义就是Development和Operations的组合,是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。简单来说,其核心理念是提倡开发、测试、运维,三者之间的高度协同,在高频率部署的同时,保证生产环境的可靠性、稳定性和安全性。 DevOps好处就是能不断地以端到端的传播形式,向用户端直接传递价值,通过缩短业务上线时间,保障业务的市场竞争力。任何直接面向用户,并为他们提供产品和服务的企业,都可以实践DevOps。
  • 随着微服务、容器以及云技术的成熟,DevOps强调的持续集成、持续部署、持续交付的概念,才能更好地发挥价值。尤其是万物互联的时代,一个连接着人与人、人与物、以及物与物的信息时代,需求关系的转变,让业务变得越来越复杂,系统功能越来越多。如果继续让整个系统耦合在一起,则必定会牵一发而动全身,系统维护肯定直线上升。因此,IT技术架构必定会随着系统的复杂化而要求不断地变化革新。
  • 一图流

🧩DevOps的发展

  • 目前,DevOps处于高速增长的阶段。尤其是在大企业中,DevOps受到了广泛的欢迎。根据2018年的调查发现,74%的受访者已经接受了DevOps,而前一年这一比例为66%。越大的企业,越喜欢DevOps。包括Adobe、Amazon、Apple、Airbnb、Ebay、Etsy、Facebook、LinkedIn、Netflix、NASA、Starbucks、Walmart、Sony等公司,都在采用DevOps。

📰发展过程速览

  • DevOps包含development和operations,是开发和运营维护的总称。软件设计过程中,应对开发部门、运维部门进行协调,确保各项工作流程与方法高效使用,为项目管理工作提供可靠参考。基于devops软件开发源于2009年欧洲传统IT模式,对解决运维管理问题起到关键作用。为巩固软件设计与开发结果,将开发、运维与测试结合一起,形成了DevOps软件开发管理模式。
  • 基于DevOps软件开发可对测试环境进行应用,同时可将数据包融入到软件环境中。DevOps立足全局角度,对开发效果进行分析,加强人员之间的合作与交流也是软件开发设计工作重点,应对其进行合理安排。在devops框架下,对软件进行开发可实现自动化操作,使得人机交互方案应用具有可行性。
  • 传统的软件组织将开发、IT运营和质量保障设为各自分离的部门。在这种环境下如何采用新的开发方法(例如敏捷软件开发),这是一个重要的课题:按照从前的工作方式,开发和部署不需要IT支持或者QA深入的、跨部门的支持,而却需要极其紧密的多部门协作。然而DevOps考虑的还不止是软件部署。它是一套针对这几个部门间沟通与协作问题的流程和方法。
  • 需要频繁交付的企业可能更需要对DevOps有一个大致的了解。Flickr发展了自己的DevOps能力,使之能够支撑业务部门“每天部署10次”的要求──如果一个组织要生产面向多种用户、具备多样功能的应用程序,其部署周期必然会很短。这种能力也被称为持续部署,并且经常与精益创业方法联系起来。 从2009年起,相关的工作组、专业组织和博客快速涌现。
  • DevOps的引入能对产品交付、测试、功能开发和维护(包括──曾经罕见但如今已屡见不鲜的──“热补丁”)起到意义深远的影响。在缺乏DevOps能力的组织中,开发与运营之间存在着信息“鸿沟”──例如运营人员要求更好的可靠性和安全性,开发人员则希望基础设施响应更快,而业务用户的需求则是更快地将更多的特性发布给最终用户使用。这种信息鸿沟就是最常出问题的地方。
  • DevOps经常被描述为“开发团队与运营团队之间更具协作性、更高效的关系”。由于团队间协作关系的改善,整个组织的效率因此得到提升,伴随频繁变化而来的生产环境的风险也能得到降低。

📰发展现状

 

  • 在云计算、大数据等技术颠覆性趋势继续在应用经济下发挥作用的同时,DevOps也已经稳健地在业务思维方式中占有一席之地,并将在2015年扮演主要角色。在应用驱动、云连接、移动化的大环境下,DevOps战略将助力业务增值。2015年对于很多公司来说是DevOps之路的第一步。
  • 紧跟行业趋势、进行新的技术变革往往会带来发展的阵痛,DevOps也同样要经历这一过程。中国及全球各地的企业正在认识到DevOps可以助力软件开发速度加快,软件应用质量提升,更重要的是与业务目标更完美地结合。如果说,2014年DevOps还在谋求广泛的认可,那么2018年DevOps将走到舞台中心,被整合成为企业战略的重要组成部分。
  • 与DevOps相伴的一个变化是向持续集成的演进。软件开发和部署的速度是其中一个驱动因素,使得开发和运维的合并不是空谈而成为必需。

📰未来发展

  • DevOps、微服务、容器、云计算都经历了一个进阶发展的过程。像从瀑布到敏捷再到DevOps一样,微服务也经历了一体化到n层架构再演变为微服务架构。部署方式也是,从物理服务器到虚拟服务器再到容器技术。最后,云计算也可以看出,早期的数据中心概念如今也演变成了大家都比较熟悉的云计算技术。
  • 再说回DevOps概念,比如说微服务架构要求松耦合,每一个服务都要具有它自己的代码库和状态,由更小规模的敏捷开发团队,进行独立的管理,这就满足了DevOps更快、更敏捷开发、部署和更新要求。容器技术相当于很好地解决了微服务的复杂性,每个微服务的依赖组件、运行环境都不一样,被打包到一个容器当中,即使服务有不同的版本,不同的运行环境和不同的依赖组件,容器技术依然都可以让它们运行在相同的主机之上。微服务运行依托的所有东西都被打包在一起,成为一个不可变的环境,这也正是一个典型的持续集成实践。云原生技术的出现,它利用的正是容器的效率,微服务的架构,比组合或单体环境更加实用和具有自适应性。
  • 这是一个瞬息万变的时代,我们所处的时代充满了易变性、不确定性、复杂性和模糊性,业务需要,频繁地从真实用户那里得到对商业假设的有效验证,成功者必须具有拥有快速交付价值、灵活应对变化的能力。这也就必然造就了DevOps快速发展的环境。
  • 近几年,几乎每个行业机构和组织,都想制定一套自己的DevOps实践。很多人以为只要进行自动化、配置管理和敏捷开发,就算是真正意义上了解并实践了DevOps。然而并没有那么简单。DevOps与软件系统的发布机制是密切有关的。DevOps要求建立协作互通的开发团队,可以朝着一个可预见的目标一起工作。还涉及到实践过程中的集体性和服务心态。DevOps要求团队组织中建立—种敏捷而灵活的传输机制。
  • 有一种说法是DevOps其实和工具、技术以及自动化无关。自动化实际扮演的是实现敏捷开发,减少团队内部合作并辅助更快交付的角色。DevOps并不提供框架和方法,当它应用到团队和项目管理中,它其实是DevOps和企业共同实现既定目标的一系列原理和实践经验。其次,这些原理和实践经验并不执行任何特殊程序、工具和技术,甚至环境。最后,即便DevOps有的技术和流程本身确实可能对实现DevOps的目标和愿景比较适用,但事实上,DevOps只是在应用实践这些工具、技术和流程的过程中提供了指导思想。

📄以下几方面因素可能促使一个组织引入DevOps:

  1. 使用敏捷或其他软件开发过程与方法
  2. 业务负责人要求加快产品交付的速率
  3. 虚拟化和云计算基础设施(可能来自内部或外部供应商)日益普遍
  4. 数据中心自动化技术和配置管理工具的普及
  5. 有一种观点认为,占主导地位的“传统”美国式管理风格(“斯隆模型 vs 丰田模型”)会导致“烟囱式自动化”,从而造成开发与运营之间的鸿沟,因此需要DevOps能力来克服由此引发的问题。

📄DevOps对应用程序发布的影响

  • 减少变更范围
    • 与传统的瀑布式开发模型相比,采用敏捷或迭代式开发意味着更频繁的发布、每次发布包含的变化更少。由于部署经常进行,因此每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长。
  • 加强发布协调
    • 靠强有力的发布协调人来弥合开发与运营之间的技能鸿沟和沟通鸿沟;采用电子数据表、电话会议、即时消息、企业门户(wiki、sharepoint)等协作工具来确保所有相关人员理解变更的内容并全力合作。
  • 自动化
    • 强大的部署自动化手段确保部署任务的可重复性、减少部署出错的可能性。与传统开发方法那种大规模的、不频繁的发布(通常以“季度”或“年”为单位)相比,敏捷方法大大提升了发布频率(通常以“天”或“周”为单位)。

💻参考文章

百度百科—DevOps

DevOps概念和起源

DevOps到底是什么意思?


🎯点赞收藏,防止迷路🔥


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

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

相关文章

【前端】JavaScript数据类型

目录 一、数据类型简介 二、简单数据类型 数字型Number 1.数字型进制 2.数字型范围 3.数字型三个特殊值 4.isNaN() 字符串型String 1.字符串引号嵌套 2.字符串转义符 3.字符串长度 4.字符串拼接 布尔型Boolean Undefined和Null 三、获取变量数据类型 四、数据类型…

res.add(new ArrayList<>(path))和res.add(path)的区别

一.问题描述 在链表path里面添加值,之后把path链表添加到res链表中,自己做的时候使用res.add(path),结果发现出现解答错误。 题目链接:113. 路径总和 II - 力扣(LeetCode) 代码如下: class …

网络初始之网络协议

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 1.局域网: 概念: 构建方式 2.广域网: 3.IP地址: 4. 端口号: 常考点: 一、…

【单端S参数与差分S参数转化】

单端S参数与差分S参数转化 1 单端S参数说明 对于单端信号来说,用单端S参数来描述其传输特性,如常见的2端口网络,其S参数包括S11(1端口回波损耗RL)、S21(插入损耗IL)、S12(插入损耗…

[JSON] JSON基础知识

JSON(JavaScript Object Notation,JavaScript对象表简谱)是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据 JSON文件的文件类型是.json JSON是纯文本,具有层级结构,易于阅读和编写,其本…

【愚公系列】2022年11月 微信小程序-优购电商项目-商品支付页面

文章目录前言1. 商品⽀付页面设计规范一、商品支付页面1.业务逻辑2.涉及的接口数据3. 关键技术二、商品购物车页面相关代码1.页面代码2.效果前言 1. 商品⽀付页面设计规范 第一、支付流程一定要简单。现代人的生活节奏是非常快速的,而且情绪比较浮躁。当用户在浏览…

深入理解Java内存区域(最新版面试题)

1、什么是JVM? JVM(Java Virtual Machine)是用于运行Java字节码的虚拟机,包括一套字节码指令集、一组程序寄存器、一个虚拟机栈、一个虚拟机堆、一个方法区和一个垃圾回收器。JVM运行在操作系统之上,不与硬件设备直接交…

微信小程序消息订阅Java

前言 编写日期 : 2022-11-04 写这篇文章原因 公司给政府做一个订餐系统,需要在员工在小程序上发起订餐后经过部门领导和书记的审批后,再由食堂确认订餐结果。在订餐审批单在各个节点流转的过程中,需要给每一个节点的审批人发送微信订阅消息…

Linux企业应用——Docker(三)之史上最简单,一篇学会Docker私有仓库Harbor的搭建

文章目录一、什么是Harbor二、搭建私有仓库1.安装docker-ce2.安装软件库包3.创建认证三、在另一台已安装docker的主机上四、搭建Harbor测试docker hub虽然方便,但是还是有限制:• 需要internet连接,速度慢• 所有人都可以访问• 由于安全原因…

SharpShooter Reports.Web 7.5 Crack

SharpShooter Reports.Web 是真正的跨平台报告查看器,因为它能够向 Windows、Linux、Mac OS 甚至 iOS 和 Android 平板电脑和手机提供报告。创建的报告可以轻松集成到任何网站和网页中,包括 MS MVC 和 ASP.NET 应用程序。by Ω578867473报告设计方便易用…

22级第三次比赛题解

文章目录A (1). Ashy与几何(贪心几何)B (2). One eye question of hengheng(前缀和)C Fox hate oranges(模拟)D KingZhangs Similar pair (思维)E (5). 38秒你敢交我A题?F (6). How many numbers are thereG (7). Jump lattice (思维)H (8). CCoolGuang Conjecture(…

五十万字总结,2022最新Java面试八股汇总(含答案,收藏版)

写在前面 今年的疫情,让招聘面试变得雪上加霜。已经有不少大厂,如腾讯、字节跳动的招聘名额明显减少,面试门槛却一再拔高,如果不用心准备,很可能就被面试官怼得哑口无言,甚至失去了难得的机会。 现如今&a…

【网安神器篇】——瑞士军刀Netcat

作者名:Demo不是emo 主页面链接:主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…

G1D5-Intriguing properties of neural networks

今天考完软考中项啦~~明天还有翻译,不过不想复习啦~ 读读论文啦~读网络安全文献课需要的叭 这篇2013年的intruging properties of neural networks的作者都好大佬!!! 先来看看h指数是什么哈~ 一、h指数 一个人的所有论文中&…

C语言题解 | 去重数组合并数组

… 🌳🌲🌱本文已收录至:C语言题解系列 更多知识尽在此专栏中! 文章目录🍉前言🍉正文🍍去重数组🍌分析🍌思路🍌代码🍍合并数组&#x1…

Allegro基本规则设置指导书之Physical规则设置

Allegro基本规则设置指导书之Physical规则设置 下面介绍规则设置指导书之Physical规则设置 点击Set-up-constraints-Constraint Manager打开规则管理器 设置Physical规则 打开时默认有个Default规则 从左往右 Line Width 最小线宽 最大线宽 Neck 最小线宽 Neck的走线长度 如…

动态内存分配:malloc、calloc、realloc(超详解析,多维度分析,小白一看就懂!!!!)

目录 一、前言 二、动态内存的简单介绍 🍉什么是动态内存分配 🍎为什么要使用动态内存分配 三、动态内存函数的介绍和拓展 🍋malloc()函数 🍊free()函数 🍌calloc()函数 🍇realloc()函数 四、…

UDP套接字编程详解

UDP 是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议。 UDP协议与TCP协议一样用于处理数据包。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之…

【状语从句练习题】综合训练

1. 改正错误 1.第二个 either 改为or 2.后面的 he plays 去掉,不必要的重复 3.but 去掉 4.cold 后 and 5.I went out. 加 个 I. 6.第一个 will 去掉,get 变为 ges 7.so 去掉 8.去掉第二个 either 9.去掉后面的 I need 10.Although/but 去掉一个 11.后…

【JavaSE】类和对象——上

文章目录1. 类的定义1.1 什么是类1.2 如何定义类2. 类的实例化3. this关键字3.1 this访问成员变量和成员方法3.2 构造方法及this()我们给类初始化的方法有:3.2.1 就地初始化3.2.2 使用 set 方法赋值3.2.3 使用构造方法4. 如何便捷的打印对象中属性1. 类的定义 1.1 什…