前言
DevOps作为一个热门的概念,近年来频频呈现在各大技能社区和媒体的文章中,备受职业大咖的追捧,也招引了许多吃瓜大众的围观。
那么,DevOps是什么呢?
有人说它是一种方法,也有人说它是一种东西,还有人说它是一种思想。更有甚者,说它是一种哲学。越说越玄乎,感觉都要封神啦!DevOps这玩意真的有那么夸张吗?它到底是干嘛用的?为什么职业里都会对它趋之若鹜呢?
DevOps 的来源
软件程序
这个故事有点长,从头开端讲起吧。
上个世纪40年代,世界上第一台计算机诞生。从诞生之日起,它就离不开程序(Program)的驱动。而负责编写程序的人,就被称为“程序员”(Programmer)。
程序员是计算机的驾驭者,也是极端稀缺的人才。那个时候,只要高学历、名校身世的人,才有资格成为程序员,控制计算机。
跟着人类科技的不断开展,PC和Internet连续问世,咱们进入了全民拥抱信息化的年代。越来越多的企业开端将计算机作为办公用的东西,用以提升生产力。而普通个人用户也开端将计算机作为文娱东西,用以改进生活品质。
所以,计算机的程序,开端变成了一门生意。程序,逐步演进为“软件(software)”,变成了最赚钱的产品之一。
软件开发
在软件产业里,程序员有了更专业的称谓,叫做“软件开发工程师(Software Development Engineer)”,也便是咱们常说的“码农”。
咱们知道,一个软件从零开端到终究交给,大约包括以下几个阶段:规划、编码、构建、测验、发布、布置和维护。
最初,程序比较简略,工作量不大,程序员一个人能够完成所有阶段的工作。
跟着软件产业的日益开展壮大,软件的规模也在逐渐变得庞大。软件的复杂度不断攀升。一个人现已hold不住了,就开端呈现了精细化分工。
码农的队伍扩大,工种添加。除了软件开发工程师之外,又有了软件测验工程师,软件运维工程师。
瀑布模型
分工之后,传统的软件开发流程是这样的:
软件开发人员花费数周和数月编写代码,然后将代码交给QA(质量保障)团队进行测验,然后将终究的发布版交给运维团队去布署。所有的这三个阶段,即开发,测验,布署。
早期所采用的软件交给模型,称之为“瀑布(Waterfall)模型”。
瀑布模型,简而言之,便是等一个阶段所有工作完成之后,再进入下一个阶段。
这种模型合适条件比较理想化(用户需求十分明确、开发时刻十分充足)的项目。大家墨守成规,轮番执行自己的职责即可。
可是,项目不可能是单向运作的。客户也是有需求的。产品也是会有问题的,需要改进的。
跟着时刻推移,用户对系统的需求不断添加,与此一起,用户给的时刻周期却越来越少。在这个情况下,大家发现,笨重迟缓的瀑布式开发现已不合时宜了。
所以,软件开发团队引入了一个新的概念,那便是大名鼎鼎的——“灵敏开发(Agile Development)”。
灵敏开发在2000年左右开端被世人所重视,是一种能应对快速改动需求的软件开发能力。其实简略来说,便是把大项目变成小项目,把大时刻点变成小时刻点。
灵敏开发
有两个词经常会伴跟着DevOps呈现,那便是CI和CD。CI是Continuous Integration(继续集成),而CD对应多个英文,Continuous Delivery(继续交给)或Continuous Deployment(继续布置)。
美其名曰:“继续(Continuous)”,其实便是“加快——反复——加快——反复……”,这样子。
画个图大家可能更理解一点:
灵敏开发大幅提高了开发团队的工作功率,让版别的更新速度变得更快。
许多人可能会觉得,“更新版别的速度快了,危险不是更大了吗?”
其实,现实并非如此。
灵敏开发能够协助更快地发现问题,产品被更快地交给到用户手中,团队能够更快地得到用户的反馈,然后进行更快地呼应。而且,DevOps小步快跑的形式带来的版别改动是比较小的,危险会更小(如下图所示)。即便呈现问题,修正起来也会相对简略一些。
尽管灵敏开发大幅提升了软件开发的功率和版别更新的速度,可是它的作用仅限于开发环节。研发们发现,运维那儿,依旧是铁板一块,成为了新的瓶颈。
运维工程师,和开发工程师有着完全不同的思想逻辑。运维团队的座右铭,很简略,便是“安稳名列前茅”。运维的核心诉求,便是不出问题。
什么情况下最简略出问题?发生改动的时候最简略出问题。所以说,运维十分排斥“改动”。
所以乎,对立就在两者之间会集爆发了。
DevOps
这个时候,咱们的DevOps,隆重登场了。
DevOps到底是什么
DevOps这个词,其实便是Development和Operations两个词的组合。它的英文发音是 /de’vps/,类似于“迪沃普斯”。
DevOps的维基百科定义是这样的:
DevOps是一组进程、方法与系统的总称,用于促进开发、技能运营和质量保障(QA)部分之间的交流、协作与整合。
这个定位稍微有点抽象,可是并不难理解。横竖它不是某一个特定软件、东西或渠道的姓名。
从目标来看,DevOps便是让开发人员和运维人员更好地交流协作,通过自动化流程来使得软件整体进程愈加便利和牢靠。
许多人可能觉得,所谓DevOps,不便是Dev+Ops嘛,把两个团队合并,或许将运维划归开发,不就完事了嘛,简略粗暴。
注意,这个观点是不对的。这也是DevOps这些年一直难以落地的主要原因。
想要将DevOps真正落地,首先第一点,是思想改动,也便是“洗脑”。不只是运维的要洗,开发的也要洗。职工要洗,领导更要洗。
DevOps并不只仅是安排架构革新,更是企业文化和思想观念的革新。如果不能改动观念,即便将职工放在一起,也不会发生火花。
除了洗脑之外,便是依据DevOps思想从头整理全流程的规范和标准。
在DevOps的流程下,运维人员会在项目开发期间就介入到开发进程中,了解开发人员运用的系统架构和技能路线,然后拟定适当的运维计划。而开发人员也会在运维的初期参与到系统布置中,并提供系统布置的优化建议。
DevOps的施行,促进开发和运维人员的交流,增进互相的理(gan)解(qing)。
在思想和流程改动的一起,想要充沛落地DevOps,当然离不开软件和渠道的支持。
DevOps生态圈中有许多令人眼花缭乱的东西,
这些关键要素里边,技能(东西和渠道)是最简略实现的,流程次之,思想改动反而最困难。
换言之,DevOps考验的不只是一家企业的技能,更是管理水平和企业文化。
比照前面所说的瀑布式开发和灵敏开发,咱们能够明显看出,DevOps贯穿了软件全生命周期,而不只限于开发阶段。
下面这张图,更明显地说明晰DevOps所处的方位,还有它的价值:
DevOps的开展现状
DevOps这个词来源于2009年在比利时根特市举行的首届DevOpsDays大会,为了在Twitter上更便利的传播,由DevOpsDays缩写为DevOps。
目前,DevOps处于高速增长的阶段。尤其是在大企业中,DevOps受到了广泛的欢迎。
依据2018年的查询发现,74%的受访者现已接受了DevOps,而前一年这一份额为66%。越大的企业,越喜爱DevOps。
现在,DevOps几乎现已成为了软件工程的代名词。