什么是DevOps模式

文章转载自:https://blog.csdn.net/kenneth_h_liu/article/details/103650364

一、什么是DevOps模式

DevOps是目前非常热门的一个概念,受到了众多互联网大厂的推崇。那么什么是DevOps呢?简称叫:开发运维一体化。至于它的具体是做什么用的,为什么时下如此流行,得从源头说起。

1.1 瀑布模型

一个软件从零开始到最终交付,大概包括以下几个阶段:规划、编码、构建、测试、发布、部署和维护:
在这里插入图片描述

最初,程序比较简单,工作量不大,程序员一个人可以完成所有阶段的工作。
随着软件产业的日益发展壮大,软件的规模也在逐渐变得庞大。软件的复杂度不断攀升。一个人已经hold不住了,就开始出现了精细化分工。
码农的队伍扩大,工种增加。除了软件开发工程师之外,又有了软件测试工程师软件运维工程师
在这里插入图片描述

软件开发人员花费数周和数月编写代码,然后将代码交给QA(质量保障)团队进行测试,然后将最终的发布版交给运维团队去布署。所有的这三个阶段,即开发,测试,布署。

早期所采用的软件交付模型,称之为“瀑布(Waterfall)模型”:
在这里插入图片描述

瀑布模型,简而言之,就是等一个阶段所有工作完成之后,再进入下一个阶段。
这种模型适合条件比较理想化(用户需求非常明确、开发时间非常充足)的项目。大家按部就班,轮流执行自己的职责即可。

1.2 敏捷开发

但是,项目不可能是单向运作的。客户也是有需求的。产品也是会有问题的,需要改进的。随着时间推移,用户对系统的需求不断增加,与此同时,用户给的时间周期却越来越少。在这个情况下,大家发现,笨重迟缓的瀑布式开发已经不合时宜了。

于是,软件开发团队引入了一个新的概念,那就是大名鼎鼎的——“敏捷开发(Agile Development)”。

敏捷开发在2000年左右开始被世人所关注,是一种能应对快速变化需求的软件开发能力。其实简单来说,就是把大项目变成小项目,把大时间点变成小时间点,然后这样:
在这里插入图片描述

有两个词经常会伴随着DevOps出现,那就是CI和CD。CI是Continuous Integration(持续集成),而CD对应多个英文,Continuous Delivery(持续交付)或Continuous Deployment(持续部署)。

美其名曰:“持续(Continuous)”,其实就是“加速——反复——加速——反复……”,这样子。画个图大家可能更明白一点:
在这里插入图片描述

敏捷开发大幅提高了开发团队的工作效率,让版本的更新速度变得更快。
很多人可能会觉得,“更新版本的速度快了,风险不是更大了吗?”
其实,事实并非如此。

敏捷开发可以帮助更快地发现问题,产品被更快地交付到用户手中,团队可以更快地得到用户的反馈,从而进行更快地响应。而且,DevOps小步快跑的形式带来的版本变化是比较小的,风险会更小(如下图所示)。即使出现问题,修复起来也会相对容易一些。
在这里插入图片描述

1.3 DevOps开发运维一体化
虽然敏捷开发大幅提升了软件开发的效率和版本更新的速度,但是它的效果仅限于开发环节。研发们发现,运维那边,依旧是铁板一块,成为了新的瓶颈。

运维工程师,和开发工程师有着完全不同的思维逻辑。运维团队的座右铭,很简单,就是“稳定压倒一切”。运维的核心诉求,就是不出问题。
什么情况下最容易出问题?发生改变的时候最容易出问题。所以说,运维非常排斥“改变”。

于是乎,矛盾就在两者之间集中爆发了:
在这里插入图片描述

这个时候,就出现了DevOps。DevOps这个词,其实就是Development和Operations两个词的组合。它的英文发音是 /de’vɒps/,类似于“迪沃普斯”。
在这里插入图片描述

DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合:
在这里插入图片描述

从目标来看,DevOps就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠。
在这里插入图片描述

很多人可能觉得,所谓DevOps,不就是Dev+Ops嘛,把两个团队合并,或者将运维划归开发,不就完事了嘛,简单粗暴。

注意,这个观点是不对的。这也是DevOps这些年一直难以落地的主要原因。
想要将DevOps真正落地,首先第一点,是思维转变,也就是“洗脑”。不仅是运维的要洗,开发的也要洗。员工要洗,领导更要洗。

DevOps并不仅仅是组织架构变革,更是企业文化和思想观念的变革。如果不能改变观念,即使将员工放在一起,也不会产生火花。

除了洗脑之外,就是根据DevOps思想重新梳理全流程的规范和标准

在DevOps的流程下,运维人员会在项目开发期间就介入到开发过程中,了解开发人员使用的系统架构和技术路线,从而制定适当的运维方案。而开发人员也会在运维的初期参与到系统部署中,并提供系统部署的优化建议。
DevOps的实施,促进开发和运维人员的沟通,增进彼此的理(gan)解(qing)。

在思维和流程改变的同时,想要充分落地DevOps,当然离不开软件和平台的支持。

目前支持DevOps的软件实在是太多了。限于篇幅,就不一一介绍了。话说回来,现在DevOps之所以被吹得天花乱坠,也有这些软件和平台的功劳,可以趁机卖钱啊。
在这里插入图片描述

上述这些关键要素里面,技术(工具和平台)是最容易实现的,流程次之,思维转变反而最困难。

换言之,DevOps考验的不仅是一家企业的技术,更是管理水平和企业文化。
对比前面所说的瀑布式开发和敏捷开发,我们可以明显看出,DevOps贯穿了软件全生命周期,而不仅限于开发阶段。
在这里插入图片描述

这几年云计算技术突飞猛进,大家应该对虚拟化、容器、微服务这些概念并不陌生。当我们提到这些概念的时候,也会偶尔提及DevOps。

它们之间有什么联系呢?
其实很简单。

大家可以设想一下,如果要对一项工作进行精细化分工,我们是对一个大铁疙瘩进行加工方便?还是拆成一块一块进行加工更加方便?

显然是拆分之后会更加方便。
所谓“微服务”,就是将原来黑盒化的一个整体产品进行拆分(解耦),从一个提供多种服务的整体,拆成各自提供不同服务的多个个体。如下图所示:
在这里插入图片描述

微服务架构下,不同的工程师可以对各自负责的模块进行处理,例如开发、测试、部署、迭代。

而虚拟化,其实就是一种敏捷的云计算服务。它从硬件上,将一个系统“划分”为多个系统,系统之间相互隔离,为微服务提供便利。

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

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

这也是DevOps为什么09年时不火,现在越来越火的一个主要原因之一。

DevOps下测试左移和右移需要做些什么,下一篇文章再介绍。

以上就是本篇文章的全部内容,如果对你有帮助,

欢迎扫码关注程序员杨叔的微信公众号,获取更多测试开发干货内容资料:
在这里插入图片描述

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DevOps 是一种新的软件开发方法论,它将软件开发、质量保证、运维和运营四个领域结合起来,提高软件产品的质量和效率。 DevOps 的核心思想是通过提高团队协作和自动化流程来缩短产品上线周期,提高软件的可用性和安全性。 ### 回答2: DevOps是一种结合了开发(Development)和运维(Operations)的文化、方法和实践。它旨在通过软件开发团队和运维团队之间的协作和沟通,打破传统的分工模式,实现软件开发、测试、交付和部署的流程自动化、持续集成和持续交付。 DevOps的核心理念是通过自动化工具和流程,将开发和运维环节紧密结合起来。它鼓励开发和运维人员共同参与从软件的开发阶段到部署和运行阶段的整个生命周期。开发人员与运维人员之间的协作和沟通可以减少问题和错误,提高软件的质量和稳定性。 DevOps重视持续集成(Continuous Integration)和持续交付(Continuous Delivery),通过频繁地集成代码和自动化的测试,能够快速发现和修复问题。持续交付则指的是能够在任何时候将可靠的软件版本交付给用户,实现更快速、更可靠的软件交付。 DevOps还注重监控、日志和问题解决。通过实时监控系统性能,快速捕获问题并及时解决,可以降低系统故障和停机时间,提供更好的用户体验。 总而言之,DevOps帮助开发和运维团队建立合作、高效的工作流程,加速软件开发和交付过程,提高软件质量和稳定性,满足当今快速迭代的软件开发需求。 ### 回答3: DevOps是一种软件开发和运维的方法论和文化。它通过将开发团队和运维团队紧密结合,促进沟通和协作,实现高效的软件开发和持续交付。 DevOps的核心理念是将软件开发和运维视为一个整体,强调开发人员和运维人员之间的协作和共同责任。传统上,开发和运维是两个独立的部门,存在着沟通障碍和合作困难。DevOps通过打破这种壁垒,使开发和运维团队能够更紧密地合作,共同解决问题,提供快速响应和高质量的软件交付。 在DevOps中,自动化是一个重要的概念。通过使用自动化工具和流程,可以减少手动劳动和错误。软件开发和部署过程中的许多重复、繁琐和容易出错的步骤可以通过自动化来处理,提高效率和质量。此外,DevOps还强调持续集成和持续交付的实践,通过频繁地进行代码集成和部署,快速反馈和修复漏洞和问题。 DevOps还注重监控和日志的重要性。通过实时监控软件的性能和运行状态,可以及时发现和解决问题,避免发生严重的故障。同时,收集和分析日志可以帮助开发人员改进代码和系统设计,提高软件的稳定性和可靠性。 总结来说,DevOps是一种团队合作的方式,通过结合开发和运维团队,借助自动化工具和流程,追求快速、高质量的软件开发和交付。它强调协作沟通、自动化和持续改进,旨在提高效率、减少错误和改善软件质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值