在华为HDG成都站,华为软件开发云***架构师王金伦,主要与在座开发者分享了如何在云和大数据时代下提升软件研发效率。他认为,在当今的软件研发中,开发者面临越来越多的挑战,主要体现在:市场变化快,产品盈利窗口窄,研发周期短;跨地域协作多,研发平台复杂;数据安全可靠性要求高。
现场实录如下:
大家下午好,大家今天听一天了,能坚持到现在,还是挺感谢大家的。我首先介绍一下,我是2012实验室的,二级部门是研发中心。昨天是从大连来到成都这边的,大家可能挺奇怪的,华为大连软件与创新中心,实际上我们现在也是刚刚在大连那边推广和使用我们的开发云。所以这个项目,这次来开发者大会,也是跟大家一起来分享一下,在云计算、大数据发展的时代,我们怎么去做云上产品的一些交互提高我们的一些效率和质量。这个是我们现在推出来的公有云的服务,叫软件开发云,这一次也是软件开发云***次在外面来讲讲解,原来我们主要还是在大连这边做实验,希望把这个产品更好的打磨一下。
今天跟大家主要分享的内容不太涉及到软件开发云怎么去用,我主要还是讲一下现在目前的一些趋势和挑战,再就是讲一下我们解决方案的特点,通过这些希望能够给大家未来的交付效果质量提升提供一些帮助。
首先跟大家分享一下,在现在大数据的时代,有一个词非常的火热,特别是经过上个月华为的HC大会之后特别热,就是连接,包括腾讯提出来的互联网+,这个战略实际大家都在做连接,都是希望连接来聚合这样一个行业,或者一个群体,或者一个生态的力量,把大家的经验、工具,各方面共同的集中起来,然后实现这个方面的一些变化。对于我们开发者来说,或者对于我们行业企业来说也面临这个方面的挑战,就是我的软件企业之间怎么连接,怎么更好的去完成一个产品的交付。当然在座的各位,如果作为一个个人开发者的话,我在成都,如何跟大连的一个好朋友去连接,完成这个产品的交付,你总不能让他每天,或者每周都飞过来一次,这个成本蛮高的。所以通过连接我们可以实现很多很多的交付。
这个里面涉及到了很多,对于我们这种电子方面的来说,可能有工具的,有产品需求的,有我经验的,等等这一些连接,通过在一个管道上进行传递,能够达到我们连接的目的和连接的价值。未来随着连接的发展大家也知道,通过连接,这里面可能会产生数据,这个数据的价值,未来大家希望开放的话,肯定也是多方面的。只是对于企业我怎么去正连,我的这个软件的能力是有一定的标准,是有竞争力的。你怎么去正连,大家现在可能是通过一个证书,或者通过CIM的认证,或者ISO的认证,然后去向我的客户证明我有这种软件交付能力,或者应用交付能力。但是这一个现在肯定是越来越受到挑战,所以我们也希望通过这种链接,以后大家可以在这个平台上,跟我的客户连接起来,客户可以实时的参与到我的研发过程当中,对我软件的需求,软件的质量,实施的进行一些交流,共同的推动这个交付的质量,这是一个方面。另一方面我也能够实时的把我的软件交付的能力展示给客户,这样让客户更能够放心的跟我来合作。所以连接这方面涉及的比较多,对于个人开发者,一个企业,一个园区,甚至到一个软件行业比较发达的城市,甚至到整个全国范围之内,这也是我们为什么选择了在大连这边来做软件开发试点的这样一个初衷,希望在这个软件比较发达的城市,先连接起来一部分开发者,然后逐渐的把更多的人连接起来,把这个生态能够打造好。这是一个挑战。
大家也知道现在很多企业自己内部是建了很多很多的开发平台,里面有非常多的开发工具,也有自己的一些经验,等等各方面的。但是一旦我要涉及到从外面交流,比如说跟客户交流,甚至跟我的下一个合作伙伴交流的话,你如果要把这个平台开放出来,实际上会涉及到很多很多的安全,以及各方面的问题。另外也会涉及到你会形成一个网状的连接,假设你有10个口,你要跟10个口要打通这个连接,最终涉及的是一个网状的。这也是整个的为什么要做这个连接平台的初衷。
随着这个连接的大背景下,现在对于研发模式也逐渐发生了变化,现在逐渐的开始往Devops这样一种开发模式,甚至往经济这些方面逐渐的发展。主要的也是为了加速我们业务的交付,因为在这样一个互联网+,或者是云大数据的时代,技术的变化越来越快,对于业务的交付要很快。大家也知道,一个业务如果交付周期太长的话,说不定你出来的时候它的价值不再存在了。所以现在说要小步快跑,快速的把我们的产品能够开放给开发者使用。主要也是因为现在的很多系统逐步不再是一个封闭的系统,而是越来越多的开发到互联网上,甚至包括大家经常原来遇到的华为的平台,甚至包括ERP的,SRO的,都在往互联网使用。包括甚至很多政府公共的服务平台,都在往这边做。所以现在Devops成为一个比较重要的发展的方式。这个也出了很多年了,但是现在随着云和大数据的发展,包括一些云化服务的发展,它的落地越来越成熟了。
这是一个Devops的全景图,这里主要是介绍大家一些意识或者文化上的想法,要有一些自动化,要做一些度量,还有一些更小的文化,这些大家了解一下应该是比较简单的内容。我们要有一些平台,要有一些工具来支撑,能够把这样一种理念去落地它。这里面比较重要的还是涉及到了一些持续集成、持续交付,并且是度量和自动化的方式。如果大家把这个支撑起来,实际上自己要去搭建很多很多的平台,这也是现在发展的趋势。
还有一个是对于我们的研发场景,大家也知道现在包括开发、测试、部署、运维,都开始往云上迁移了,你要使得这个产品的生命力更强,可能更多的跟外界发生连接,这个连接***的是云和大数据上,当然有些成份是企业内部的,不是很多和云发生连接的。包括运营商,包括银行,包括基金、证券这些行业,它的触角越来越转向普通的发展。像十几年前一个基金公司连一个网上交易的系统都没有,大家可以想像它主要和银行的对台。但是现在大家知道,通过淘宝的余额宝能够汇集几千万的投资者,这个在当时是不可想象的,但是现在成为一种现实。
还有一个大家现在经常谈论,好像今天上午大家还在说PSP是世界上***的,这个很容易让我们开发者打架。实际上有一个难题,好和坏这个东西对于我们开发者来说,是很难用的两个字眼。我们可能很多要用适合或者不适合这样的字眼。对于这种语言也是面临着这样的问题,现在是用在很多项目当中多语言的混合编程是一种常态了。比如有一些我用java语言处理更加迅捷一些,但是比如我做数据分析的,现在用peasant或者我用阿里它的优势会更加明显,更有利于解决业务上面面临的一些问题。为什么java发展的这么多年,一直还是排在前面,就是它配套的工具非常非常多。你发现任何性能的问题,基本上可以找到方法去解决它。所以工具就是一种生产力,这是非常重要的,所以大家在谈这类语言的时候,在现在很多大数据项目当中,有三到四种语言是非常少见的。比如大家在外部编程的,比如说java、js、css、h5,基本都会涉及到。这个实际也给我们的工具带来了非常大的挑战。
对于研发工具本身来说,现在也在逐渐的往前发展,包括开始往轻量化、往服务化,社交化来发展。随着web技术的发展,逐渐的向云上,web的RDE,慢慢的会占据一些主流。现在RDE的能力还不能比上本地RDE,但是它一定在调试可以做到了。未来随着网络各方面的完善和发展,webRDE的发展会越来越好。
企业面临的挑战这块就不讲了,因为这里面有很多,我想大家也会遇到。对于面临这样一些问题,包括现在云计算服务的发展,我们华为这个团队想推出一个为开发者自己使用的工具,就是软件开发。大家可能原来做过很多的系统或者软件就是给别人使用的,我们做这个平台主要是给各个开发者来使用。
到底软件开发云是什么呢,简单来说它就是面向软件开发者提供的云服务,我通过在云上提供这种软件开发生命周期配套的支撑,从项目的管理,到代码的管理,到代码检查,编译、构建、测试,到最终的发布,甚至部署,提供一个工具链。因为Devops最终的落地和实施也需要一个工具链,加上其他支撑的,目前这个软件开发云主要是提供这个Devops工具链的发展。我们最终的一个愿景或者想法是,想提供这个软件开发生命周期全流程的支撑,通过前面的项目管理,到开发管理,到测试管理,到部署发布整个的支撑。最终它也会跟华为企业云,像RS,或者资产的服务打通,完善大家的生产、开发、运营的环境。这是我们最终的想法和梦想,这个的发展我们正在努力的推动,现在已经有部分的服务在云上提供出来,可以满足大家一些基本的需要。后面我会简单的介绍一下这些相关的服务。
这个是基于华为企业云打造的运营,就是我通过开发云的这个服务,把产品生产出来,利用R层或者P层的服务,把我ETAP的环境在部署层实现Devops运营的模式。
这是我们业务产品的架构,除了Devops这个服务端之后,我们到时候会提供一些客户端,包括Web客户端,移动客户端,还有cloudRDE,还有一些RDE的插件和API,和SDK,这是一个整体的规划。目前是主要提供了web客户端和一些插件,未来明年预计像webRDE会上,移动客户端预计今年年底会上,另外我们也会把一些API的能力开放出来。这样便于某些垂直领域的专用的开发工具由我们来集成,共同打造一个软件开发者的生态。
下面我主要讲一下软件开发云主要的特性和特点,具体的就不讲了,具体的大家后续可以体验。像项目管理现在主要是支撑了这种敏捷化的项目管理,这里面除了通常我们所用到的像里程碑啊,迭代啊,需求啊,这样一些个管理特性之外,包括一些图表之外。我觉得有两点还是想推荐给大家的,***个是怎么规范化的模板,就是我们内置了像需求、缺陷这方面的标准的模板,大家可以按照这些模板来编写需求或者缺陷,这样更利于我们做交流。第二这里面正在发展当中的社交化的协作,大家可以在这上面针对需求进行相关的讨论。这所有的讨论都可以记录下来,以便于后续进行相关的合作。第三个大家可能经常比较关心的是,我们对需求,或者是一个缺陷,我的开发之后,跟代码进行这种关联,然后便于我进一步审视。这边也提供了跟需求的关联。
另外一个是关于个配置管理,配置管理目前我们基于开源社区比较常用的get的工具,然后来打造云上的分布式的代码托管的平台,便于大家实现跨地域的协同。以后大家如果身在成都,想跟大连的伙伴完成一个协同的开发,可以在这个平台上来完成。不用发邮件,通过邮件发给你,或者通过微信发给你,直接在上面进行代码的合并。甚至如果有些觉得不太对的,想让别人做一些代码的检查,也可以在上面完成相关的工作。这里面我们也是基于一些东盟的安全手段,甚至我们自定的一些手段,包括一些代码仓库的加密,IP白名单一些手段,尽量区别安全的认识。
这个大家可能会说为什么没有支持SVN,大家可能用的比较多一些,包括CBS,这样一些传统的配置管理的工具,目前确实没有提供。因为现在随着这种开源力量的影响,get的发展越来越多。包括我们内部很多原来的发展,都开始往get方面去协作。所以现在是支持这样一个,这里面有非常多的比较好的特性,对于get,对于分置的管理,是比较轻量化的,比较轻量级的,所以这是非常非常方便的。
再一个是我代码之后可以做一些代码检查的工作,然后通过我去检查这里面的一些安全的缺陷,包括设计啊,或者编码规范的缺陷,就可以在事前把一些潜在的安全质量的风险发掘出来。目前这个里面大概接近一千套的检查规则,现在也在进一步的完善和补充当中,后续的能力会越来越强。我们现在内部也正在研发对于这种缺陷的,这个还是基于规则的,后续我们会基于特征模型做一些缺陷的画线,另外也会对一些通用的缺陷做一些修复,这样一些功能,希望能够很快的跟大家见面。
测试这一块目前主要是测试管理、测试应用的管理,通过我的需求怎么去编码测试,怎么去做支持,这个跟大家平时用的是非常类似的,这一块就不详细讲解了。
另外一个我要做测试,肯定希望我的产品包能够出来,现在我们提供了一个云上的CI的平台,一个服务,我们叫参与构建服务,可以让大家在云上非常方便的完成像单元测试啊,甚至一些接口测试,甚至跟前面代码质量检查,来完成这样一些工作。这里面主要的提供了一个流水线的功能,大家从我提交代码之后,我的代码的检查,单元的测试,我的编译出包,最终的发布,这样一个流水,全部能够在云上完成。当然目前这一块主要的现在是支持java和linux生态下的C++的相关的功能,应该今年会上到这个平台上,尽量会达到这样一个编译构建的环境。实际上编译构建大家也知道,环境差异是非常非常大的,比如说我有不同的标准,还有不同的语言,还有不同的操作系统,组件、控件,这些包的管理是比较复杂的。在云上来说这一块也是面临着很大的挑战,实际上平时也有很大的挑战。
现在业界的一些说法是,我一定要尽量的做归一化,对于一个产品来说我有没有必要一定要这么复杂的环境,实际我们在真正的产品研发的时候,也要做一些归一化的工作。另外一个大家现在用开源组件用的比较多,我在选开源组件的时候,一定要对开源组件进行评估,我要做一些***的版本,把这些感觉起来。在华为内部来说,对于这种开源组件会做安全的评估,整个会有哪些组件是***的,哪些是可以用的,哪些是禁止用的,这些是非常非常重要的。因为我们这个也有一些VOP的管理,下一步也会把这些我们已经做好的东西共享给大家。当然大家以后也可以把我觉得用的比较好的,或者我觉得是***的,在这上面打上标签。类似于大家在淘宝上买商品,我觉得这个组件是安全的、可靠的、***的,打上这个标签,最终大家都用这个组件,就减少大家以后面临的安全问题,甚至一些版权上的问题。比如说不同的人开源方案要求是不一样的,有些是你不能修改代码的,有些是你不能够修改源代码的,有些是你必须发布使用的方案。所以未来这些平台上都会搭起来。
刚才说到有了这样一些平台,这个平台的发展可能单靠我们华为的一个团队,或者单靠华为本身,它的建设还是有比较大挑战的。我们也希望跟这些合作伙伴,甚至跟我们的个人开发者,一起来打造这样一个软件开发的生态。因为这里面涉及到了三个非常重要的维度,就是方法论、工具和***实践。方法论就是我刚才前面提到的Devops等等这些,这是一个方法。这个方法的落地可能需要我工具平台去支撑,华为可能会提供。方法论可能也有很多的厂商可以去提供。还有一个是***实践,大家也知道一个工具出来之后,我适用于哪些场景,我怎么用会更好的匹配我的研发场景,这个是只有在实践当中才能够出来的,也就是我们所说的实践出真知。我们也希望未来能把这些都汇聚起来。当然了这个汇聚一方面是汇聚起来,未来如果有一种模式,我能够把这些方法、***实践和工具进一步的给各位变现,这是一个更好的发展状态和趋势。所以我们希望往这方面发展,让大家有很多的方式和方法来去做。
我们在整个的过程中提供了这样一些平台,我们现在的产品也在公测的节吨,我们也找了一些代表性的客户,围绕着自己的场景,做了一些相关的工作。比如说有一个是孵化器这样一种企业,是帮助它孵化器下的各个企业进行协作。当然它会用到各个工具,然后去提升我各个团队的能力。但是孵化器***的特点我要有多个企业,然后去协同完成一个产品的交付。如果我底层的工具不统一,数据是没有办法交换的。并且因为我手头不是一个客户,我如果跟众多客户,下面各个伙伴交流的话,我客户就跟你分了。所以我统一在这个平台上联合开发的模式,业界叫联合开发模式,更快的加速这样一种开发。
另外一个项目是一个研发平台的项目,最终去打造一个团队,一个产品之间的交付。现在这个规模也不是特别大,大概有十几个开发策略工程师,是发布在不同的地方。有30多个像服务化或者微服务化的块,大家分成大概几个人的小团队来完成这个工作开发,代码量大概有一百多万。原来交付的周期是非常长的,现在我们通过使用这个平台,现在基本上做到了构建在分分钟就可以完成,每个交付的周期是在每周内我都可以及时的去完成。实际上真正在产品内部的使用,每天我都个可以完成每日构建的,有问题之后我们开发人员第二天可以进行相关的开发。
这是软件开发云整体的情况,今天主要是跟大家讲一下华为现在在不断开放云平台,包括各个平台,包括各个的能力,实际上现在也在打造开发者自己的工具平台,为大家来提供服务。当然软件开发云现在从去年开始做,然后逐步推出的,未来还有很大的竞争的空间,也希望未来跟大家一起,把这个平台能够打造好,如果大家有什么意见或者建议,也可以给我们反馈,希望最终大家能够在这个平台上完成自己业务的开发。今天我主要的讲解就是这么多,当然了我来之前,我们软件开发云的运营团队给我布置了一个任务,他们现在正在做一个一块钱得到梦想的产品,做最牛体验端的活动,后续我这边,或者麻烦叶鑫这边发到群里,大家可以去体验一下。如果后续大家有一些想法,有一些需求,甚至有一些系统的问题,大家都可以跟我们联系,我们很快也会做这方面的改进。
今天的讲解就到这儿,谢谢大家。