文 / 交通银行软件开发中心 郭志军 白宗杰 汪涛 王冠雄
交通银行软件开发中心 基础平台部高级经理 郭志军
引 言
近十年来,开源技术在世界范围内得到广泛的使用,曾被广受诟病的开源软件质量和性能不足的问题在Nginx、Redis等杰出代表出现后也渐渐被大众淡忘,众多优秀商业软件公司也积极主动拥抱并加入开源行列。开源软件的直接用户是广大开发者,“得用户者得天下”这句营销格言在软件开发领域也得到了充分证明。同时伴随着大数据、云计算、人工智能等新技术的发展,分布式、云原生等概念已深入人心,开源技术甚至已超过了商业技术成为了行业主流。
近期,国家多部委也联合发布了《关于规范金融业开源技术应用与发展的意见》,《意见》一方面明确金融机构应遵循“安全可控、合规使用、问题导向、开放创新”四项原则要求,做好做实开源技术治理工作,也提出金融机构可以积极融入开源社区、开源基金会等组织,和多方一起共同推进开源生态建设。金融机构尤其是银行正处在数字化转型关键阶段,在业务和技术转型的同时,需要做到技术管理的与时俱进,保持创新发展和稳健经营的平衡,《意见》的出台为如何做好这些工作带来了诸多启示。本文将从开源技术的本质及优势谈起,在制度建设和标准化体系两个方面展开讨论。
开源技术本质与优势
所有技术从开始萌芽直至最终成熟都会经历多个阶段,Gartner总结了众多技术发展规律提出了很有代表性的“技术成熟度曲线”(见图1)。开源技术的免费、源码开放、可修改定制、社区讨论活跃等特征有效的促进技术的攀升和成熟,吸引了大量个人和团体开发者的使用。
图1 技术成熟度曲线(来自Gartner的研究)
从金融机构视角来看,选择开源会额外引入技术支持团队维护成本、软件管理成本、运行期风险和法律合规风险,在不考虑功能差异的情况下,商业软件往往是更好的选择。那为何开源软件还能突破商业软件壁垒进入到企业研发过程中呢?我们认为主要在于以下两个原因,即开源技术的“新”和“行业标准化”。
开源技术不一定都是新技术,但很多新技术都会以开源的形式推出,这和新商业模式通过补贴来打开市场是一个道理。从企业创新发展的角度来看,“新”意味着机遇,意味着突破,意味着可以迅速落地占领市场。因此,在技术诞生的促动期,缺少成熟商业产品支持的环境下,开源技术是最佳选择。
“行业标准化”说的则是已经在行业内立足的开源软件。它们在作者和社区的努力经营下已经被开发者们充分接受,经过了大量商业案例的检验,成为了某一技术领域的标准或标准之一。企业引入这个类型的软件可以更好地适应未来技术的发展,也可以更好地和其他商业产品进行连通。
除此以外,开源技术还具有降低软件采购成本、降低厂商绑定风险、容易扩展形成企业自主研发软件等其他优势,这些都是企业积极拥抱开源的动力。为了充分发挥开源技术的优势,企业应当建立相应的技术管理制度和配套体系。
开源管理制度建立与落地
管理制度在建立过程中首先需要理清管理的目标对象,开源技术涉及面很广,大到操作系统、数据库和中间件,小到依赖库、工具包,不同粒度和规格的技术产品需要采用差异化的管理模式。其次需要明确管理的目标,金融机构需要形成适应其自身发展的技术栈体系,科学实施技术创新并控制技术风险,建立技术准入机制,建设软件技术使用台账,实现开源技术和业务系统的双向关联。最后需要界定管理边界,企业采购的商业软件往往也会大量引用开源技术,这些技术在管理上不应该和企业本身的开源管理混淆,建议纳入商业软件管理范畴中综合考虑。
1.构建开源软件框架管理模型。交通银行近几年根据自身企业技术架构发展需要,坚持需求导向、问题导向,积极拥抱开源技术,坚持安全可控并相继制定了开源软件管理办法、开源依赖库管理细则等,总体上形成以图2为框架的管理模型。
图2 开源软件框架的管理模型
在软件仓库管理方面,针对体量较大的开源软件,采用双库管理模式,用于应对新技术和标准化技术两种场景诉求;对于体量小、数量较多的开源依赖库,考虑到其主要面向开发且行业标准化特性较少,直接采用单库管理。
在版本管理方面,开源依赖库的不同版本引入是通过申请、审核评审等流程进行,大型开源软件则会由软件主管部门周期性发布其推荐版本供后续部署和使用。对于引入过程中扫描发现的有问题软件,或使用过程中暴露出安全漏洞的软件版本,会及时移入企业软件黑名单。
在开源软件评估方法上,我们会结合技术需求、技术栈现状、开源软件基本信息等背景,结合申请方提供的安装部署手册、性能及功能测试报告、参数配置说明文档等资料,采用技术评审的方式就许可证、安全性、产品活力、可维护性这几个方面进行综合评估。不可否认,这种评估方式比较依赖专家团队的技术广度和主观判断力,存在一定局限性,我们也在考虑引入第三方的软件评测机构,提供更为客观公正的评估报告。
2.总结当前,规划未来。站在企业级软件管理模型的角度,我们认为后续还需要完善相关关键工作。一是建设一套企业级的开源软件治理平台,并组建管理团队来进行平台的运营、软件信息的维护、审批和相关统计分析工作。该平台应和软件研发流程与系统上线流程等进行整合,确保其中登记的信息是实时有效的,同时避免应用系统未经授权使用这些软件。对于依赖库的管理,由于其级联关系复杂,版本变更频繁,可以采购相关商业软件工具来辅助管理,从而达到更好的效果。二是建立一支具备一定技术能力专家队伍,完善软件使用规范,跟进软件相关技术发展动态,向企业内部的团队提供软件技术支持。只有在“用什么”和“如何用”都有章可循的情况下,我们才能说企业具备了开源软件治理的能力。三是建立和开源社区、同行同业的良性沟通机制,参与开源生态建设。企业需打造开放共赢的研发理念,将开源社区优秀的技术和迭代模式带入到企业内部,并根据实际情况将有利于整个行业的技术创新反馈到开源社区,实现相互促进和共同发展。
3.积极拥抱、开放共享。交通银行在落实管理制度的基础上,也进行了相关实践工作,与同行同业进行广泛交流,积极参与《金融行业开源软件评测规范》的团标制订及国标升级工作。同时我们秉承参与开源生态建设,共享开源技术研究成果的精神,从2013年开始基于蚂蚁金服的OceanBase开源项目,开发满足金融业务特征、自主可控的数据库产品CBase,整个项目采用“产、学、研”共创模式,并在2018年将该项目代码在github上以GPL-2.0协议开源,回馈社区。
应用标准化体系构建与实施
推进开源管理制度的建设有助于我们更好地应用开源技术来支撑IT的发展,但从企业技术架构管理角度来看,除了开源技术,还有大量商业软件和自研技术产品需要被治理。作为技术管理部门,需要充分平衡好开源、商用和自研这三类技术体系的关系,让每个应用研发团队都有明确的架构路线和技术架构来参考,从而保证技术的安全、可控和先进性,也能有效控制成本和风险。金融机构,特别是银行有大量的业务系统,统一的技术体系和规范此时就显得尤为重要。随着近年来微服务架构的流行和大数据、云计算等基础设施的完善,银行业以IOE体系构建的传统单体应用架构标准已不再适用,企业需要以分布式架构思维建立新一代应用标准化体系,从而继续维持IT架构的先进性。
从银行的实践来看,应用标准化体系建设一般分为三个部分,即基础设施、架构设计规范和研发交付体系(见图3)。
图3 应用标准化体系框架
基础设施是应用标准化体系建设的基础,一般以云平台或技术中台的形式表现,通过将纳入企业白名单的开源软件、已采购的商业软件和自行研发的软件产品进行抽象和包装,形成开箱即用的标准化服务或组件。随着基础设施的不断完善,应用系统会逐步和具体的软件产品解耦,一方面降低了应用开发团队的学习成本,另一方面也将降低管理制度对研发过程的侵入,可大大提高研发效率。
架构设计规范是应用标准化体系落地的手段。金融机构IT研发讲求工程化思维,应用研发团队在设计时应该多做“选择题”少做“填空题”,为了能达成这个目标,需要总体架构团队对应用系统的类型和特征进行全面梳理,结合基础设施提供的能力形成“架构套餐”,囊括技术选型、微服务设计、高可用架构等多个维度的技术标准。架构设计规范涵盖的面越大,满足标准化要求的应用系统就会越多,总的管理和维护成本就会越低,技术风险也会越低。
研发交付体系则是应用标准化体系质量的保证。企业不仅需要有自己的开发平台、工具组件、研发规范等产品和文档,更要搭建覆盖软件研发全生命周期的一体化研发平台,在解放生产力的同时,也把规范和标准牢牢地把握住,使IT研发形成良性发展趋势。
应用标准化体系建设是一个长期的、需要持续迭代和优化的工程,也很难完全借助外部力量来实现,但它会确保企业IT技术架构的稳定,提高研发效率和质量同时降低技术风险,值得每一个企业投入实施。
展 望
使用开源技术已成为金融机构技术研发的常态,而融入开源生态、参与开源建设、乃至共同构建我国金融开源产业链将会是未来金融IT部门新的发展方向。我们可以看到,目前大部分优质的开源技术仍由国外的基金会掌控,主流的源码托管平台也在国外,国内很多企业开源的意识不强,仍然以用为主,缺少贡献开源的理念和习惯,相信随着数字化转型的浪潮,能够涌现出越来越多的开源企业,形成中国自己的开源社区和开源产品,在国际开源生态中占据一席之地。
声明:本文来自金融电子化,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。