宣威网站建设c3sales,网站如何做ICP备案,宁波外贸seo网站建设,肥西上派网站开发前言
DevOps作为一个热门的概念#xff0c;近年来频频出现在各大技术社区和媒体的文章中#xff0c;备受行业大咖的追捧#xff0c;也吸引了很多吃瓜群众的围观。
那么#xff0c;DevOps是什么呢#xff1f;
有人说它是一种方法#xff0c;也有人说它是一种工具#…前言
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不就是DevOps嘛把两个团队合并或者将运维划归开发不就完事了嘛简单粗暴。
注意这个观点是不对的。这也是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几乎已经成为了软件工程的代名词。