杨欣捷:大家好!我最早毕业时做的是数据库,当时是一个很美好的时代,用小型机、Oracle、F5等,没有开源软件时代,那时候做系统前后设计也不会想到开源软件,后来到了浦发银行以后往架构方面做,尤其是最近三年五年,发现要作出一个好的架构、一个可扩展的架构、一个处理大数据量的架构,怎么都避不开开源软件,大数据处理怎么都会碰到Hadoop这些东西,做一些高并发处理,怎么都会碰到一些容器云或微服务框架,开源软件成为一个绕不过去的问题。我行在去年成立了创新实验室,领导很重视开源方面研究工作,从去年开始我做开源治理方面的研究。
下面我详细介绍一下开源治理体系和经验。
因为我们是开源治理白皮书主要编制单位,我分享开源治理体系很多已经在中国信通院白皮书中有所体现,再加上之前赖总也介绍了他们的开源治理体系,我想把更多篇幅放到我对开源的理解上,治理体系讲得稍微快一点。
开源技术近二十年来,我们对它的认知发生了很大的转变,二十年前我还没工作,那个时候想到开源软件,总觉得是山寨商业软件,很自然的想法就是便宜没好货,免费的东西更是垃圾的。没想到现在说到开源软件,已经引领了技术创新,很多创新的领域都是开源在主导的基础软件架构。
二十年前说到开源软件,大家觉得是一种生产方式,是一种有别于封闭的立项,大家一起开发的方式,多通过互联网合作的软件生产方式。到今天,已经更多的是大家通过开源这种方式来完成这个市场抢夺的一种生态竞争的模式。
二十年前做开源软件更多是个人兴趣,很多大拿没什么事情做,纯兴趣做这个东西,现在比较大的公司,尤其是互联网公司、提供云服务的公司,从他们企业角度都花了大量精力做开源软件。
如图,整个基础软件栈从上到下,从云架构到操作系统、数据库、容器、中间件一系列东西,开源软件都已经占满了,开源软件在吞食世界。现在对银行来说已经不是用不用开源软件的问题了,这是肯定的回答,而是怎么用好开源软件。
RedHat的报告,开源软件在企业战略中的重要性,有40%的企业说开源软件是非常重要的,在企业市场份额逐步在上升,商业软件份额现在看起来比较多,很大程度是因为是存量系统。现在尖端的一些领域,如云计算、AI、大数据、区块链,开源生态已经是主流的生态。
开源软件对商业软件的优势(技术角度)。
这一块不是我自己想出来的观点,是从一本书里摘出来的观点,这本书也李建盛老师推荐了,大家有兴趣可以看一下。
开源软件对于商业软件优势,书中分了几个方面:
1.生态。云服务市场越来越大,一般基于开展软件构建的,MangoDB在修改协议,亚马逊为代表的云服务公司在吸他们血,正是如此也让这个市场起到促进的作用。
2.开源软件很多源于大型互联网公司,这些公司比商业软件公司更懂得客户需求,他们自己就有最好的客户场景。Oracle每年都开CAB客户大会,通过这种方式来反馈需求是比较慢的,开源软件是自己用,自己的需求最清楚,可以更快按照特殊的需求把这个东西做出来,所以他们有一个先发优势。
3.技术高速发展,快速适应市场的大背景下,架构选型中开发人员的话语权越来越大,一般情况下,预算不在开发人员手里,所以倾向于选择开源免费的软件。从技术的角度印证了为什么开源软件在近期相对于商业软件表现出那么大的优势和好的势态。
一开始做开源软件时,我自己会有一些内心的疑问,概括成两个悖论:分工悖论、分享悖论。
分工悖论:市场分工推动经济发展,经济发展的结果也必然是市场分工的细化;为何开源业态中,非软件公司为何投入大量资源研究和开发基础软件?
分享悖论:人类本性是追求个人利益最大化。为何开源业态中,大量的个人无偿分享其劳动成果?
我当时也被这两个困惑了,最普适的想法,开源也是人类经济活动的一部分,不可能脱离经济学的基本规律。这两个悖论有两个解释,一个是经济学大厦即将坍塌,还有一种是我对开源的理解不对。
分工悖论的解释。
在信息充分流动的条件下,市场最终会达到供需平衡(达到稳定态)。“最终”很重要,我们目前所处的时代远没有到最终平衡的时代,还在过程中,所以产品更新的速度跟不上市场需求的变化。这个不违背分工悖论,只是时间没有到。
软件生产方式利用互联网直接打通了需求和供给,产品能够在第一时间捕捉到市场的实际需求,利用各种社区资源迅速实现需求。
社会分工原则并未打破,只是市场模型并未处于稳定态。
我们更应该思考一个问题,市场什么时候到稳定态?我觉得永远不会到。“最终”是很泛泛的词,凯恩斯以前也说过我们都死了就是最终。所以我们不用考虑最终的问题,肯定是在我们活的时候还不会到最终。所以没有顶级IT实力的传统企业,拥抱开源,实际就是在自身有限的IT资源和力求快速应对市场需求的一个妥协。
相对而言,如果一切东西都自主开发,应对速度比开源更快,当然也是快于商业产品的模式。但IT人员的投入也是这么一个顺序,自主开发,什么都重新去造,投入很大。所以是市场需求和成本上的妥协。一般大家觉得用开源是省成本,我得出的结论,用开源至少对我们这种传统企业,并不是IT本身就投入很大的企业来说,并不省成本。
分享悖论的解释。
从开源项目角度来说,仅靠自身力量不足以维持产品长期的竞争力。
引入社区力量降低开发成本。
用极低的成本迅速占领市场,提供商业化订阅和支持服务来实现盈利。
相比于商业软件许可方式,这是一种低投入低营收的商业模式。
个人通过软件许可方式获利运作成本高,前期投入大,周期长。
开源工作成果有利于快速提升个人知名度和“身价”。可能不会自己把这个软件做出来去卖,最后演变成一个几百亿美元的企业,但至少个人知名度提升了,自己身价也提升的,对我自己来说也是获利的。
从这个角度来讲,开源并没有打破经济学的理性人假设,只是改变了软件的获利模式。
总结:
1.由此可见,开源业态特点能够解释分工悖论和分享悖论。不仅如此,正是这些特点,决定了即便是传统行业,要想快速应对互联网时代瞬息万变的市场需求,必须积极拥抱开源技术。
2.对于传统企业,拥抱开源获得更快速灵活的应对需求能力的同时,意味着整体IT投入的加大,开源的价值更多体现在“开源”上,而非“节流”上。
以上说的内容不排除在座有各位在公众号会看到,我没有剽窃别人的内容,那是我个人公众号,不一定能跟我联系得起来。后面可以咨询一下毕老师,公众号是否也搞一个许可证。
开源与风险。
在使用开源时,也会遇到很多使用开源中的风险,这些风险包括专利、著作权、许可证、收费、维护、服务、质量、安全等风险。
开源使用风险案例。
软件来源:非可靠来源的开源软件,被植入后门,造成重大数据泄露。关于putty、WinSCP等软件被植入后门的案例。
生命周期管理问题,用了开源软件以后,用了就用了,没有持续的管理流程,导致安全漏洞没有办法修复,导致数据丢失等等。告诉我们开源软件很好,我们要用,但是要好好地用,需要一套治理体系来把控。
浦发银行做这个事情挺早,在去年年底把完整的治理体系建起来了,而且我们治理体系不仅有这个体系,把相应平台都建出来了。我们认为治理体系主要包括以下五个内容:
1.开源治理的配套组织架构。没有组织架构,什么都做不出来。
2.开源治理配套流程制度。
3.软件的评估评价方法。
4.开源软件治理支撑平台。
5.开源金融行业技术应用社区。
开源治理四个维度就是四种风险的类,软件来源、合法合规、生命周期和漏洞管理。
组织架构。
我们首先有一个开源决策团队,这是最高决策机构,下面有一个开源治理团队,这个团队一般情况下在银行是没有的,等于是为了这件事情生出来的一个团队,主要是开源治理执行机构。我们目前由创新中心作为主体来做,后续会根据部门内部划分职责到具体的常态化处置。
专项团队分了技术专业团队、法务团队、安全团队和运维团队。法务团队是我们需要补强的一个地方。
虚拟团队开展工作会遇到一个问题,我们把这些虚拟团队最重要落到实体团队中去,除了开源治理团队由创新中心来做,开源安全团队由安全内控处来做,开源专业团队分了八种不同软件类型,分到相应不同的处室里面去,现在的做法是架构部门、操作系统等比较基础的平台,大数据、应用中心是大数据类,开发中心是开发框架类等。我们也有相应内部管理制度,发布了开源软件的应用管理流程和开源软件技术管理要求。
流程体系。
现在主要在跑的是引入、使用和漏洞管理。不同的单位可能有不同的做法,我们是属于宽引入、严使用的架构,开源软件的引入只要确定没有严重的安全漏洞或这个版本明显已经没有人维护了,大部分都是允许引入的。具体引入以后,哪个应用上使用哪种开源软件,是根据应用特点来做,这和以前商业软件做法不太一样,因为商业软件以前引入都有一个招标的商务过程,有一个架构收敛的需求,但从各种互联网公司经验来看,已经很少有吃遍天下的技术软件,肯定根据不同的应用场景选择不同的软件来应对,所以我们认为引入环节在没有场景情况下不适合做选型,一定要在具体应用下才适合做选型。
开源软件评估评价体系。
借助了E-OSMM模型以及华为开源治理成功经验来做这个事情。实际操作中我们一直在迭代、更新,发现有些并不能落地,就去掉了,一些我们觉得重要的就加进来。
管理平台。
有了这些体系和制度,在银行里把这个事情推进起来还是很难或根本推进不起来,一定要有一个平台来做这个事情,否则所有的引入、漏洞等都通过邮件,肯定做不下来。我们纯自主开发了一套开源软件的治理平台,涵盖整个开源软件治理体系的周期,引入阶段会把开源软件结构化,实体入库,保证来源可靠,引入过程中除了审批流程以外,也会在我行做一个唯一合法的开源软件库,统一存放,会和工程建立的工具结合在一起直接给别人去构建工程时使用,我们会做一个开源软件和生产应用系统的对应关系,台帐明确,一旦漏洞被定为到以后,可以很快找到是哪个应用系统用了这个版本的开源软件,会产生全程跟踪的工单,根据这个工单到责任解决安全问题,整个过程都是可追溯的。
开源软件管理平台除了作为流程平台和漏洞跟踪、软件台帐外,还有很重要的是社区信息抓取,我们通过几个外部的数据源,GitHub为主,还有别的数据源,定去爬取一系列信息,把它的各种数据统一有一个内部算法,这个算法也是借鉴了华为一些建议,把所有开源软件做社区活跃度和贡献度的评级,历史趋势都可以在上面展现出来,这对我们来选择一个开源软件时,社区属性就可以从这个平台一目了然看到。
社区共享
这是我们在去年10月12号和中国信通院、华为一起发起成立的社区,这个社区平均一两个月就会搞一次活动,成员13家,活动比较频繁,除了定期做一些分享活动以外,后续希望能够共享一些开源软件评估评价结果、知识库分享。因为这个社区除了金融机构以外,还有开源服务商,能够提供一些专业技术支持。
下阶段安排。
后续计划:
开源治理平台优化工作,现在还没有专业工具扫描。效率上不够,不能在真正项目节点上去严把控开源软件,所以后面要对接。
各大银行后面肯定有科技输出的计划,肯定会涉及到自研代码的输出,还要有相应流程。
继续深化社区合作。今天发布一个贡献度排名,后续还有别的,我们也有计划,马上就要落地,我们团队已经把我们行开源治理平台中一些涉及我行内部开发框架的东西拨出来,纯粹开源组件做了开源版本,预计这个月可以正式开出来,也是秉持开源精神。去年我们做了开源治理体系,以白皮书方式贡献给了社区,这次会把平台以直接代码开源方式贡献给社区。欢迎大家一起来使用,到时候会给下代码,也会在公有云上布一个大家可以访问的平台。
谢谢大家!