在前一段时间我们从DevOps业务谈敏捷开发、软件工程及新角色中探讨了DevOps的出现改变了一些传统的协作方式,在构建协作和点到点的理解过程中,引入自动化而构建的工具,传统软件工程的前后端扩展以及新角色的有效流程。
而在本次与IBM Rational中国区技术总监 孙昕老师的交流过程中,我们将详细的分析DevOps落地需具备的那些条件和规划,广义的DevOps在传统企业中软件交付的问题,以及Jazz的出现如何来解决了这些问题。
以下是采访内容:
记者:目前企业要落实DevOps,应该需要具备哪些条件?
孙昕:这是个好问题,DevOps我也怕有时候会让客户,或者让一些人迷惑。DevOps是一个很大的概念,但是其实就像我们做事的方法一样,我们可以把东西规划的很长久,任何事情都要一点一点的去做,如果一个成熟度非常低的企业,即便做传统的软件工程的时候我们都会建议他不可能什么都上。对于DevOps,有的企业大老板会觉得这个概念很好,来吧,我们来个DevOps,无疑是不可能的。实现一定是个漫长的周期,只是说在这个阶段它会有一个pattern,什么样类型的企业在这个框架下是先上哪部分更好,而且这种跟以前传统的软件工程pattern是有一个继承化。比如说我们看到的DevOps通用的企业我认为首先你有没有对基本的软件工程基础性的平台,比如像配置管理、一些自动化的测试工具。然后再慢慢的可以考虑到,你的业务需求变更是不是很频繁,你是不是以市场为驱动,为导向的公司。如果我的需求为了支撑固定的用户,已经把我的东西做成产品化,但是它是这种高可靠性的应用,这时候你要关注你的运维了,因为你经常会出现发版的问题,发版过去之后出的问题能不能及时回馈回来,你的生产系统不能宕机,你要提升到24小时,这时候可能要关注一些监控,甚至刚开始的时候你多点开发,成熟度足够高多点开发的时候,你也可能不一定把这些数据从最开始全部打通,这可能需要很多的时间慢慢的,我觉得每个企业确实都不一样。
记者:是的,只要有了一个长久的规划,才能一步一步的去实现。
孙昕:我觉得这就是咱们刚才说的,它的落地一定是一点一点的落地,但是这个落地我需要强调一点,一定要有一个大的规划好,你不能说以前软件工程的时候,现在我跟有些客户在一起,我说你们管理性的工具,其实我们把这个产业有的人我是开发人员,我就用Lisp或.NET,这是我的一亩二分地,测试人员我就用QTP,LoadRunner这些我觉得都OK,这是Dev这一级的,但是对于整个团队从他的业务规划到需求到发布,所有东西要贯穿起来,它会有一个team,大家都要用的一个管理性的平台在,这个管理性的平台一定是在不同的阶段都有的,然后管理性的平台一定要考虑到你将来数据要能融会贯通,要能打通,你不能说今天就好象说,我家里装修今天在这个屋买个这个厂商的东西,明天在那个,我真合在一起合不起来,DevOps在企业要去落地的话,一定要想你要买的东西要好,你要用开源的东西也好,还是你要买厂商的东西,你是咨询服务也好,你***所有落地的服务你将来这些所有的数据要能够集成,这一点是最重要的。否则有的人搭DevOps,这个是用这家的东西,那个用那家的东西,***其实他还是每个环节在各干各的,将来就会出问题。
记者:那么在广义上DevOps涉及哪个方面?其实我指的是一些行业之间,现在咱们只在互联网行业比较多一些,那么在金融行业,以及其他的一些传统行业是如何区分的?
孙昕:传统行业也会很多,确实在不同的行业有一定的区分,但区别不大,不过会有几大类行业。***大类我们还是更多的以技术来分,在我们看***是IT类的行业,无论你是互联网还是金融,所谓IT类的行业就是说基本上他的应用都是装在电脑上,我要跑系统等等,还有一类我们的行业我们叫做系统行业,系统行业就是聚焦了传统我们认为的很典型的,比如制造业,还有电信设备商,像华为、中兴,制造业甚至包括了电子产业包括一些家电制造业,还有航空航天等等,这部分的行业实际上它跟传统的IT行业不一样的。他的软件大部分都是要依赖于硬件,它是绑在一起的,嵌入式的,这时候你看DevOps在这个上头和在这个上头会有一些差异,我认为落地的时候一定会有一些差异,因为在传统的系统行业比如说我讲在像海尔、海信这样的制造业,他们一定都有大量的PDM【产品数据管理】系统,那是他们的主要系统,在这个PDM系统上DevOps又是跟他们怎么结合的,我们现在落地DevOps毕竟还是在软件这一部分,怎么管理怎么发布,这部分是软件。从规划可以有硬件的部分,硬件呢,机械设计和电子电器设计都是在PDM系统,PDM系统PRM的这些东西跟DevOps为核心的这些东西他们的数据怎么打通,这个需求在IT行业是看不到的,这个是有蛮大的区别的。
记者:你觉得哪个需求更大一些呢?IT行业跟传统行业?
孙昕:都很大,这个没有办法去比较,因为现在尤其到了互联网的时代,软件经常都是跑在系统上,而且我们其实也很关注怎么跟系统包括怎么跟PRM厂商的工具怎么打通,有意思的是,就好像刚才在谈DevOps,我们在讲数据要说话,其实我在那个片子里头我讲到了Jazz这个概念,英文翻译过来就是爵士乐。Jazz是什么概念呢,我就大胆的说一句,如果没有Jazz提出来其实也不会有今天的DevOps真正大的出现。我为什么会这么说,我稍微花一些时间。***我们在说Jazz,Jazz我现在把它比喻成软件工程的ESB,数据总线,说白了就是数据总线,为什么这么说,因为以前的软件工程,我们在讲需求管理、配置管理、变更管理、构建管理等等,包括一些测试管理。这些东西实际上各个厂商之间都很难把它所有的数据集成在一起,所有的集成都是点对点,比如说我买两个工具,他们之间就要做一个集成的插件,做一个集成,再买第三个麻烦了。当我买七八个工具的时候我会崩溃,崩溃到什么程度呢,05、06年的时候当年Rational能够把自己的工具从头到尾数据全部集中起来,在当年已经是***,没有人能做得到,但当年其实也算一个内幕,当年我们在做开发者大会的时候,我们在开发者大会上演示了一个demo,从最开始的一个需求,一个小的到***自动化的测试,全做成了,当时几千人的会场觉得很震惊。但我们为了搭这个集成环境,我们一个Team的人花了好多时间,后来有时候我们在想我们这些都是高手,在这个领域都是十几年甚至二十年的人,我们都得花这么多时间,对于很多企业来说他花在集成上的成本有时候甚至都大于他的收益了。那时候软件工程就像生产汽车一样,是一条流水线,这是一个很美的词,但真的落地的时候是有点惨不忍睹。IBM认识到这个问题,IBM认为这个领域如果靠工具与工具之间的点对点集成,一定是死路一条,因为每个工具甚至都是不同厂商收购过来的,它的存储模型不一样,数据模型不一样,存储展现的方式都不一样,有的是CS结构,有的是Web客户端,完全都不一样,这时候点对点集成累死你,而且一个工具要换全部都要改。
后来IBM认为其实我们应该做一个软件工程领域的一套标准,一套国际化的标准,其实后来已经不是软件工程领域了,当时大概有30多个厂商联合做了一个行业的标准,它叫OSLC,就是生命周期的协议,说白了就是说它包括了很多领域,比如说软件工程的配置管理领域、项目管理领域、测试领域,甚至到PDM很多厂商,像西门子都是这个协议。这是一个国际化的标准,后来这个标准IBM把它落地就叫Jazz,相当于是说你现在再买IBM的产品,就不会说买三个每两个产品还做集成,它每个产品就是一个小芯片,就好像插电脑一样,这是我的主板,我插到这个上头这是显卡,这是网卡,他们两者之间不用联线,因为底层都是这个主板,这个主板叫Jazz。而它后头就是国际化的标准,就是OSLC。那么参加OSLC的有哪些厂商呢?你甚至可以看到西门子很多厂商,这些已经不是软件工程厂商,是PDM的厂商,他们的数据已经很多东西可以跟你软件工程当中的需求,一些开发管理打穿,你就不用点对点的再去做开发,这个就是未来,这是DevOps未来,也是在系统领域你的PM怎么跟DevOps落地将来怎么做,一定要有Jazz或者OSLC标准,遵照这个标准大家都知道你的数据怎么表现过来,我的数据怎么交给你,你才能读得懂,这是一套国际化的协议。这套框架已经好多年了,已经有个五六年甚至六七年了,IBM把它的产品全部都迁移到Jazz这个平台上,就是OSLC这套国际化的框架下。不仅是IBM,西门子很多东西也在上头,你看在别的领域也在上头,但实际上我们就能够打穿,这就是ESB,ESB做到了这一天,这是一个顶层设计。当时我们开句玩笑话说也只有IBM当时有这个财力和物力敢做这个事情,如果始终只是一个厂商来做,别人不遵照你没用的,你只能把你自己做的很好,框架很好又怎么样,当时IBM自己也是联合了很多厂商一起来做。
记者:那在Jazz上,比如刚刚的例子,如果我的显卡或者网卡出现问题了呢?
孙昕:我可以换一块,它的底层一定要依赖于像Jazz这个平台,如果没有这个平台的话,我有什么技术手段换了这个立刻数据还在?比如说我这块是Oracle,那个说我这块是DB2,又要做复杂的集成,而且这些都是硬拷贝、硬连接,数据的复制一定都出问题。但是在Jazz这个概念下,讲一点,比如说你是这个工具,我如果要去消费这边的数据,因为他想拿这边数据的时候,他并不是把这个数据拿到他这里测,是因为大家都基于这个框架。我知道你的数据源是存在底层Jazz后头的数据库,一个大数据库,我的也存在这儿,大家都知道数据在哪里,所以直接暴露出来一个引用,一个数据源,立刻我在这边就把你相关的数据读过来了,速度也快,且不用复制。就算换了别的工具搁这里也是一样,因为大家都是在说英文,或者都是在说中文,听得懂,这就是Jazz做的事情。而且Jazz做的事情不仅仅是我们说的软件工程在做,PDM厂商也在做,将来跟这个领域硬件、软件、机电软一体化相关的领域如果都做这个事情,大家如果都是用相同的协议在说话的时候,这个集成量就会很小,这个是做软件将来未来,这是一个顶层设计,这是IBM一直考虑跟这些几十个公司大家为什么花这么精力要搞OSLC国际化的框架、标准,很多年前就在搞这个事情,就是因为IBM很多像一些院士这样的人他就考虑到这样的问题,软件工程如果像传统发展,再过五年就永远走不下去了,客户不会去用。我们也是看到从最早一直在变,包括Jazz提出来,我们也在学,这个行业变化还是挺大的,可能有些讲的我只是举了一些例子,没办法讲的太细。
#p#
记者:是的,没有规矩不成方圆,DevOps也是一样。其实现在很多企业很多的相关项目都用DevOps,已经实践这个东西了,您觉得实践起来有没有很多难的地方。
孙昕:就好像说中国比国外要晚个两三年,我们现在看到的DevOps这个概念刚刚开始,有时候客户不知道这个概念,实际上我们现在给他做软件开发、软件测试、软件发布的很多东西已经是在这个框架下,他可能并不知道,没有意识到,我们也没必要说一定为了救这个名词而去做,哪个东西能够让你用起来,能够加速你的开发过程这个就是你要的,所以从这点来说DevOps其实落地的过程当中还是我们以前能够看到的传统的一些问题和挑战,这是正常的。比如说大家对工具去改变自己工作方式的程度,还有工具怎么能够跟你业务跟你这个行业的很多地方相关。举个例子,这是我们看到的挺大的,当然IBM现在做的还不错,这个过程当中其实是蛮艰辛的,DevOps当中我是有点救这个名词了,我们先不说DevOps。我们说软件开发最重要的就是你的需求,后来我们认为其实不仅仅是软件开发最重要的是需求,所有的产品设计最重要的都是需求,但我们发现在一个客户当中,他甚至不做软件开发,但是他的需求重要到已经变成他的核心关键,因为他将来的研发、设计、采购、组装所有都是依据他的需求。
你也知道中国造这种很复杂飞机的企业,造飞机其实已经跟软件,软件只是其中一部分,这时候我们会发现碰到的困难和我们在其他领域都是类似的,当你把你的系统和方法应用在客户场景当中的时候,举个例子,客户从飞机顶层的拆解,飞机要拆多少个模块、子系统、系统、部件,每个部件应该什么样的规格,这些系统之间的需求应该有什么样的关联性、依赖性,这些完全是行业的知识。但它应该怎么拆解,应该怎么把它的行业知识应用到你的工具上,当时对我们其实提出了非常大的挑战。因为我们不懂飞机,我们不懂飞机的设计,所以就需要这些行业的专家能够了解这套方法,能够去应用,当时IBM从全球找到了很多,甚至给波音、给空客做一些设计的人来帮助中国做这个事情,回过头来说这个是一个极端的例子,完全跟软件一点关系都没有,但我们看到大多数的客户都是可能会有一些自己特定的东西。这个怎么应用到工具上,可能是我们需要落地的时候特别关注的,这里头又碰到了一个现实的挑战,中国大部分的客户可能不愿意把很多的钱投入到服务上,因为我卖给你一个系统,这个系统实际上是需要应用到你的督脉上的,这是需要你的人能够去学习方法,我的人要学习你的知识,怎么一块传帮带做起来,需要大量的投入,所以你看到在国外为什么很多软件会应用的非常好,因为他们基本上是,老外的客户是他买一分钱的软件,他自己就会去买两分钱的服务,他一定要让他的团队都用的起来。在中国哪怕你拿比例反过来是2:1都不可能,基本上客户是说你如果买了10块钱的软件产品,他掏一块钱去买服务就已经阿弥陀佛了。我们看到更多不是纯粹,刚才我说的是业务知识的问题,怎么应用,然后同时跟现在的服务的重视程度的现状,客户不重视,所以会导致很多落地实施的时候就会出问题。
记者:其实关键还是要提高客户认识服务的重要性的。在前一段时间IBM的技术峰会上,我记得特别清楚的一句话:DevOps已经成为帮助企业实现移动和云计算转型的一个关键,能说一下你自己的想法,你怎么认为?
孙昕:其实对于移动和云计算我确实不是云计算的专家,很难说给一个很准确我自己的观点。我的理解是,移动的开发不仅仅只是说我手机上写一些程序做IOS还是android开发,因为作为一个企业级应用的时候,举个例子,比如说我手机上有订机票的一个应用,现在其实很多人都在用,就像航旅纵横,有意思的是如果我要做这么一个应用,实际上这个应用它要在去做moblie开发之前,你要连国航、南航,这些航空公司的接口有没有给你?其实都没给你,很多人是不给你的。***你要跑测试的时候他才把接口数据能给你就不错的,这么一个小应用就这么复杂,对于一个企业级的应用可能更是这样,将来企业级的应用怎么变成moblie化,这里头你要有架构考虑的设计,你要考虑到应用的灵活性设计,弹性的设计,在这些领域其实都体现出来传统软件设计、软件开发管理当中的难题是一样的。所以我觉得DevOps从这个角度来说确实能帮助做这些,比如说我刚刚举的例子就是说你要提前做接口测试,但是接口都没有你怎么做测试?你开发的程序接口数据都没有你怎么跑?所以必须要做模拟测试。以前国内的客户就用一些没办法的办法,在银行自己去写一些程序,模拟别人写一串数据,它叫挡板测试,但是现在其实虚拟化测试已经是DevOps当中落地的一个很好的实践,就是你可以模拟各种各样的协议,我觉得万变不离其宗,将来移动和云一定是越来越复杂,它的这种技术会越来越多,新技术的涌现,这个过程当中个人已经不容易管理了,在这种情况下DevOps一定是能够帮他们。
记者:为针对将来实践的过程做好准备,现在个人开发还是蛮多的。
孙昕:对。
记者:如果开发一个应用或者游戏,还需要整合很多像业务这块的东西。
孙昕:没错。我觉得我们说更多的DevOps不完全是,互联网企业是非常大的,DevOps将来可能落地的受众群体,但是在我看到我的这些客户,互联网企业往往都是少数客户,在我的这个比例当中。为什么呢?坦率的说,互联网企业大部分大一点的互联网企业人员素质比较高,他们对新技术的掌握、应用都很快,所以他们有很多的技术实力,包括很多敏捷甚至都是从他们开始的。但是相反中国更多数企业不是他们这种企业,他们更需要这种东西,工具、方法结合在一起去帮助,所以IBM的大部分客户倒不是互联网企业。
记者:***能否说一下DevOps发展前景的看法。
孙昕:DevOps的发展前景我觉得,在我看可能也会有一些阶段性,现在大家的关注点已经开始慢慢的从最开始的开发转移到了狭义当中的DevOps这个概念。因为这个词很新,有些人开始了解觉得这个概念很好,开发人员和运维之间打通,在下一个阶段你会发现可能很多人谈DevOps就是在这个领域上去实现。而且这个领域有时候会很快见到成效,因为这是在做自动化,自动化能够替代很多人工工作的时候,这个是很容易量化,短期内就能看到效果。我觉得这部分肯定是下一阶段的重点,不管是产品还是一些新的理论方法,一些应用的范围都会很容易见得着,换句话说DevOps更大的概念当中是我们往业务端的扩展,实际上可能有一些重点领域我们会去做尝试,至少我们的这个团队会去做尝试。***个尝试是在业务规划当中,比如在系统客户当中我们会尝试,叫产品线工程,产品线工程其实很多是在规划怎么跟软件得到***的交付,绑的更紧,应该会有一些能够落地的东西解决方案出来。我觉得在业务规划往前推,开发我们刚才是说往后,往前推在我看是一些对大的企业在一些重点的行业可能会有一些落地,但它可能会比这个要滞后一些,当这些都成熟的时候,可能监控的东西才能慢慢的变得更加丰富和成熟,当然这纯粹是我个人的观点,绝对不代表IBM的一些观点。这是我个人对这个行业的感觉,可能在DevOps不同的框框里,他的成熟度市场的适用程度节奏会有点不一样,但是无疑这些东西都会慢慢增长,需求也会慢慢增长,长到一定程度的时候,他们融合的需求也就越来越大,DevOps慢慢的就会越来越热门,这就是我的感觉,也许过五年之后,所有人都知道DevOps,这需要一个过程。
记者:现在的人还是谈DevOps比较少。
孙昕:现在你一谈DevOps,大部分人都觉得不要谈这个概念,这个概念你能帮到我什么呢?别谈这些虚的。而我们因为毕竟在这个圈子里时间太长,十几年了,有些东西我们知道这个方向应该是不错,这真的不是虚的,而且有些东西可以落地。但是你为了解释这个得花上两个小时、三个小时,还不如告诉客户先不谈这个,我先让哪个地方能帮你落地,最简单,有时候我也不会去说这个东西不是虚的,我觉得这种整争执是没有意义,假设它就是一种框架而已,哪个地方先能落地我们就先落地。
记者:还是阶段性的过程。
孙昕:对,我们在谈软件的时候我们也在谈顶层设计,模型驱动,以前在传统软件的时候我们也在谈这些,DevOps也是,问题是整体框架不设计好的话,将来你可以发现其实IBM做事情是蛮系统化的,它会把一个大的框架搭好,这时候你看很多事情就会很顺畅的做好,这是IBM的厉害之处。有人说IBM老是谈一个理论,想想其实它的很多理论***真的还是能落地,或者说他的有些理论可能是帮到别人了,衬托了一个行业,***在这个里头其实是一份子,***这个行业。所以我觉得DevOps也一样,真到一个大的企业做规划的时候,你要按这个思路去给他做规划,包括业务的整合,产品数据的整合等,我觉得作为一个企业的管理者来说,他不能说今天这儿有问题就医这儿,那儿有问题就医那儿,绝对不能。如果作为一个管理者来说,我会跟他谈DevOps,如果他是想做一个长期规划,我会跟他谈,但是如果是作为一个部门我只管这个,我跟谈DevOps我觉得意义不大。因为他可能没有这个职责考虑到整个企业的规划,我把我这块做好就行了,我觉得DevOps还是跟什么样的客户有选择的去谈。