有用的涨知识网有用的涨知识网

有用的涨知识网
一起学习分享有用的涨知识网

Gnutella2究竟是甚么原意?

译者丨黄米君

提及DevOps那个词,我坚信许多人一定不会孤单。

做为一个炙手可热的基本概念,DevOps近几年屡屡出现在数十家技术街道社区和新闻媒体的该文中,倍受金融行业大咖的青睐,也招揽了许多吃瓜广大群众的驻足观看。

所以,DevOps是甚么呢?

没人说它是一类方法,也没人说它是一类辅助工具,还没人说它是一类思想。什至,说它是一类神学。

越说越张华,感觉都要帝皇啦!DevOps这玩意儿真的有所以生硬吗?它究竟是干甚么用的?为甚么金融行业里单厢对它趋之如骛呢?

今天这首诗,黄米君就和大家回去聊一聊那个DevOps。

DevOps的起源地

那个故事情节有点长,Cubzac说起吧。

六十年代40年代,世界上首台计算机系统面世。从面世之日,它就有赖于流程(Program)的驱动力。而负责管理Royans的人,就被称为开发人员(Programmer)。

开发人员是计算机系统的P210,也是极为匮乏的专精人才。那个时候,只有高智商、高等学府早年的人,才有资格证书成为开发人员,驾驭计算机系统。

随着人类信息技术的不断发展,PC和Internet相继面世,他们进入了幸福家庭亲吻信息技术的时代。越来越多的企业已经开始将计算机系统做为办公设备用的辅助工具,借以提升劳动生产率。而一般一般用户也已经开始将计算机系统做为影视娱乐辅助工具,借以明显改善生活水准。

在信息产业里,开发人员有了更专精的用法,叫作应用软件设计技师(Software Development Engineer),也就是他们常说的码农。

他们知道,一个应用软件Cubzac到最终交货,约莫包括以下几个阶段:总体规划、代码、构筑、试验、发布、布署和维护。

最初,流程比较简单,工作量不大,开发人员一个人可以完成所有阶段的工作。

随着信息产业的日益发展壮大,应用软件的规模也在逐渐变得庞大。应用软件的复杂度不断攀升。一个人已经hold不住了,就已经开始出现了精细化分工。

码农的队伍扩大,工种增加。除了应用软件设计技师之外,又有了应用软件试验技师应用软件运维技师

分工之后,传统的应用软件设计流程是这样的:

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

早期所采用的应用软件交货模型,称之为瀑布(Waterfall)模型

瀑布模型,简而言之,就是等一个阶段所有工作完成之后,再进入下一个阶段。

这种模型适合条件比较理想化(用户需求非常明确、开发时间非常充足)的项目。大家按部就班,轮流执行自己的职责即可。

但是,项目不可能是单向运作的。客户也是有需求的。产品也是会有问题的,需要改进的。

随着时间推移,用户对系统的需求不断增加,与此同时,用户给的时间周期却越来越少。在那个情况下,大家发现,笨重迟缓的瀑布式开发已经不合时宜了。

于是,应用软件设计团队引入了一个新的基本概念,那就是大名鼎鼎的——敏捷开发(Agile Development)

敏捷开发在2000年左右已经开始被世人所关注,是一类能应对快速变化需求的应用软件设计能力。其实简单来说,就是把大项目变成小项目,把大时间点变成小时间点,然后这样:

敏捷开发

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

美其名曰:持续(Continuous),其实就是加速——反复——加速——反复……,这样子。

画个图大家可能更明白一点:

敏捷开发大幅提高了开发团队的工作效率,让版本的更新速度变得更快。

许多人可能会觉得,更新版本的速度快了,风险不是更大了吗?

其实,事实并非如此。

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

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

运维技师,和开发技师有着完全不同的思维逻辑。运维团队的座右铭,很简单,就是稳定压倒一切。运维的核心诉求,就是不出问题。

甚么情况下最容易出问题?发生改变的时候最容易出问题。所以说,运维非常排斥改变。

于是乎,矛盾就在两者之间集中爆发了。

那个时候,他们的DevOps,隆重登场了。

DevOps究竟是甚么

DevOps那个词,其实就是Development和Operations两个词的组合。它的英文发音是 /devɒps/,类似于迪沃普斯。

DevOps的维基百科定义是这样的:

DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

那个定位稍微有点抽象,但是并不难理解。反正它不是某一个特定应用软件、辅助工具或平台的名字。

从目标来看,DevOps就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得应用软件整体过程更加快捷和可靠。

破墙辅助工具

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

注意,那个观点是不对的。这也是DevOps这些年一直难以落地的主要原因。

想要将DevOps真正落地,首先第一点,是思维转变,也就是洗脑。不仅是运维的要洗,开发的也要洗。员工要洗,领导更要洗。

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

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

在DevOps的流程下,运维人员会在项目开发期间就介入到开发过程中,了解开发人员使用的系统架构和技术路线,从而制定适当的运维方案。而开发人员也会在运维的初期参与到系统布署中,并提供系统布署的优化建议。

DevOps的实施,促进开发和运维人员的沟通,增进彼此的理(gan)解(qing)。

在思维和流程改变的同时,想要充分落地DevOps,当然有赖于应用软件和平台的支持。

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

DevOps生态圈中令人眼花缭乱的辅助工具

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

换言之,DevOps考验的不仅是一家企业的技术,更是管理水平和企业文化。

对比前面所说的瀑布式开发和敏捷开发,他们可以明显看出,DevOps贯穿了应用软件全生命周期,而不仅限于开发阶段。

下面这张图,更明显地说明了DevOps所处的位置,还有它的价值:

DevOps的发展现状

DevOps那个词来源于2009年在比利时根特市举办的首届DevOpsDays大会,为了在Twitter上更方便的传播,由DevOpsDays缩写为DevOps。

目前,DevOps处于高速增长的阶段。尤其是在大企业中,DevOps受到了广泛的欢迎。

根据2018年的调查发现,74%的受访者已经接受了DevOps,而前一年这一比例为66%。

越大的企业,越喜欢DevOps。包括Adobe、Amazon、Apple、Airbnb、Ebay、Etsy、Facebook、LinkedIn、Netflix、NASA、Starbucks、Walmart、Sony等公司,都在采用DevOps。

如今,DevOps几乎已经成为了应用软件工程的代名词。

DevOps迅猛发展,相关专精专精人才的薪资待遇也跟着水涨船高。

根据调研,DevOps技师在美国的平均年薪为130000美金,在中国平均年薪也在40万-50万区间,能力强者年薪百万也是比比皆是。

数据来自招聘网站

薪资的猛涨,又带动了IT技师们学习和认证的热潮。

DevOps的认证目前最受欢迎的就是EXIN DevOps Master和EXIN DevOps Professional。这些认证的培训费用不低,但是仍然招揽了许多人踊跃报名。

EXIN DevOps认证体系

DevOps与虚拟化、容器、微服务

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

它们之间有甚么联系呢?

其实很简单。

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

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

所谓微服务,就是将原来黑盒化的一个整体产品进行拆分(解耦),从一个提供多种服务的整体,拆成各自提供不同服务的多个个体。如下图所示:

单体式架构(Monolithic)→ 微服务架构(Microservices)

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

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

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

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

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

DevOps和通信

做为一名通信技师,黄米君再说说DevOps和通信的关系。

最已经开始接触DevOps的时候,我和许多人一样,都以为这是一个纯IT的基本概念,和他们通信没有甚么关系。

后来,随着对DevOps的深入了解,我才发现,那个理念和他们通信有密切的关系。甚至说,早在十多年我刚入行的时候,其实就已经遇到了DevOps所面对的问题。

那时候(2005年左右)的电信业,产品的稳定性和可靠性是压到一切的(其实现在也是)。所以,电信业的应用软件版本,更新速度非常慢。对朗讯、爱立信这样的传统巨头来说,通常大半年才出一个正式版本。那个版本经过重重把关、精雕细琢,所以非常稳定。

随着3G的兴起,全球运营商已经开始对网络进行更新换代。华为和中兴已经开始趁机切入国际运营商市场,试图从国际巨头那边分一杯羹。

除了价格之外,华为中兴最大的杀手锏是甚么?就是响应速度。

那个时候,运营商客户对电信设备软硬件的需求非常多、非常频繁。像印度这样的地方,客户尤其难缠,每天单厢提出新的需求。

当时几家海外设备商的响应速度是非常慢的,从不轻易同意接受需求。即使接受,也会答复半年甚至一年后实现。客户听了直接就崩溃了。

而华为和中兴则不同,两家公司的售前市场人员对于客户需求非常大方,基本上有求必应。(当时售后同事单厢骂售前同事,可是仔细想来,不答应的话,根本没有进入市场的机会。)

当时华为和中兴的版本发布频率,快到甚么程度呢?最快的时候,三天一个版本。甚至,长期都有大批研发人员驻扎在客户办公设备室,现场改版本,提交热补丁。

那时候是2006年,DevOps那个基本概念的影子都还没有。研发那边,好像也就是刚刚提出敏捷开发。在没有理论框架和辅助工具平台的支持下,纯靠人力,实现了版本的飞速迭代。当然,这其中的代价和风险也是很高的。

不仅是开发人员很累很辛苦,项目里的工服(工程服务)技师,也就是技术支持技师,本文里面的运维技师,更是苦不堪言。你想啊,以前几个月升一次级,现在几天就要升一次级,能不辛苦么?

但就是这样的辛苦付出,才硬生生从传统巨头嘴里抢下来市场份额,最终一步一步做大做强。

后来,才慢慢有了敏捷开发的基本概念,现在更是有了DevOps,各种辅助工具啊平台啊都有了,给版本快速迭代提供了很好的条件。

对通信金融行业的运维来说,DevOps是机遇更是挑战。

就像前面说的容器、虚拟化。5G核心网采用的NFV虚拟化技术,让网元功能隔离,就大大降低了核心网技师的操作风险和难度。这是一个积极的变化。但是,DevOps对运维技师的能力要求,是大大提高了。。。

通信应用软件是IT应用软件的一个重要分支,和DevOps有很紧密的关系。建议通信技师回去了解一下DevOps,升级一下自己的知识库,做好技能储备。

未经允许不得转载:有用的涨知识网 » Gnutella2究竟是甚么原意?
分享到: 更多 (0)

有用的涨知识网 带给你想要内容

联系我们