金融企业的数字化中台建设,是由科技部门主导的,旨在数字化转型背景下提高业务推出的速度,满足客户个性化要求。软件研发的经验告诉我们,实现这一要求,必须采用重用的手段,建设企业中台,就是要建设企业级可重用的软件平台,实现有计划、体系化、强制性的重用。重用的本质是将软件中共性的部分抽象出来,开发成可重复使用的能力,基于这些能力开发应用系统。广义的重用有很多种方式,例如代码、函数、文档、测试用例、架构、组件等等,这些方式在中台建设中都有涉及,但是中台建设中提倡的重用,有很多基本的原则:
(1)重用就是多个相似功能的抽象实现。企业应用是由业务流程和业务数据为核心组成的,因此企业级重用同样是流程和数据的重用,我们把这些可重用的流程与数据,称之为模型。每个可重用模型都应该有相应的组件对应,文档、架构、代码片段等等虽然有重用的价值,但仅仅是一种参考方式,无法达到强制的效果,并不是中台倡导的重用方式。我们常说,“有代码实现的重用才是重用”。
(2)企业级的重用提倡大粒度的重用,提倡端到端流程的重用。以前的重用主要是指相对较小的代码块的重用,也就是小粒度重用。有些机构已经建成了包含算法、模式、对象和组件的可重用库,然后鼓励研发人员使用库里所提供的东西而不是创建自己的版本。这种小粒度的重用在组合、集成为一个大的业务时可能会带来便利,但业务发生变化时需要重构相关的组合逻辑,往往造成大规模的调整。大粒度的重用需要在业务流程层面抽象共性,提供软件组合的模式与框架,而不是基于小粒度的自行组合。当然,大粒度的重用必然基于小粒度的重用,我们常说,要把可重用的组件“提供端到端的能力,大到不能再小”。
(3)重用的首要目标是满足个性化业务的快速推出。重用可以带来很多好处,包括快速推出业务,降低实施成本,提高软件的质量,降低人员能力要求等,以往实施重用的效果看,降低实施成本、降低人员要求、提高质量往往体现在首位,快速推出业务的效果并不明显,甚至担心大规模重用后会减少科技人员的数量,降低科技的投入。在数字化转型过程中会发现,最重要的是在有限资源投入的情况下,满足更多的业务需求,让业务能够快速试错、调整,重用会带来单点实施成本的降低,让节省出来的资源投入到更多新业务研发中。同时减少重复劳动,让科技人员能够投入到更多有价值的活动中。我们常说,要让重用“创造更多业务价值”。
(4)可变性管理是重用最重要的手段。传统SOA的服务化也是解决重用的问题,但SOA架构下的服务强调互联互通的标准化,并没有为服务的可变化能力进行标准化定义。为了适应不同的情况,服务往往存在下面几种方式:一是多版本方式,不同版本对应不同的业务,实际上每个版本就是不同的服务,我们不建议这种多版本方式管理服务,还不如做成一个新服务来维护;二是利用不同的输入参数标识需求特征,在实现中利用不同的代码分支(例如面向对象的多态方式)实现,这种模式是一个常见模式,但这种方式只对小粒度重用是有效的,大粒度重用时就会造成输入输出定义复杂,难以使用;三是通过内部配置的方式生成可执行的代码,这种方式已经接近重用的最佳方式,缺点是如何进行配置,能够支持哪些变化,外界是不可知的。因此,需要将重用能力所支持的可变性标准化出来。我们常说,“能力是柔性(可变化)的,柔性(可变化)是透明的”。
(5)通过数字化中台建设,推进重用在企业中的应用,实现软件设计理念与文化的提升。金融企业动辄上百套系统,庞大的软件规模,以往注重系统安全可靠运行,稳定性压倒一切,但数字化转型背景下不但希望核心系统稳定运行,而且希望新业态业务快速推出,占领市场,目前的软件研发方法显然不能满足要求。业界目前敏捷研发的方法是从研发过程的角度,在团队中建立良好的研发习惯,利用自动化手段减少重复劳动,提升研发效率,也是中台建设需要采用的方法。而重用是从软件结构的角度提升研发效率,需要在软件设计层面,提出重用的要求与目标,建立总结、抽象的习惯,改变设计的结构。传统金融企业软件,在会计、账务、支付、资产等等核心业务上,根据会计准则等要求,具备了良好的可重用模型,但是在客户接触、营销、运营等方面却缺少具备普遍共识的总结,在新业态、新商业模式下,业务已经不是以会计、账务为核心,而强调以客户、产品、合作伙伴为中心的全生命周期,因此,需要从上述方面进行流程、数据的总结、抽象,建立可重用的能力。重用对软件设计的要求很高,需要逐步形成重用的文化,逐步推广。我们常说,“软件行业已经进入深水区,取法乎上,得乎其中”。
(6)中台建设会带来组织架构的调整,但不能等待组织架构调整才进行中台化改造。一来金融企业的组织架构相对稳定,不像很多互联网企业容易变动调整,所以数字化中台建设是科技部门主导的,是科技的抓手,不需要等待业务组织架构的调整而进行;二来中台建设是一个重用文化的落地,希望将可重用软件与快速变化的应用研发分离,这个过程中首先需要推动设计架构理念的改变,可以选择多变的业务领域或者应用,采用小团队试点的方式,组织虚拟团队,明确产品经理、需求、架构、可重用组件开发、应用开发、测试等相关角色,采用中台的理念改造或者研发新的应用,逐步进行组织的调整。我们曾经在某大型国有商业银行,针对调账对账这样的业务开发了大粒度的可重用组件,让试点团队体验到可重用组件带来的价值,坚定了建立可重用能力的信心。
(7)可重用能力的建设,要采用产品化思维进行建设,在业务与技术之间达到平衡。过去往往在衡量可重用能力的时候,喜欢以被重复调用的次数、重复使用项目的次数等等,来作为主要的评价标准,这种方法是片面的。单一从这个视角进行评估,就是技术化的思维,事实上越是小粒度的重用能力,被调用、使用的次数就越多。中台提供的可重用能力,自身就是一个产品,需要有自己的愿景和定位,明确自己的客户是谁,为客户解决哪一类问题,这类问题的业务价值是什么,如何评估业务价值,针对不同用户的策略是什么(例如服务、定制还是自助),如何保证产品的服务质量,产品推广的策略是什么,如何建立产品持续运营的能力,回答了这些问题,就建立了数字化中台持续发展运营的能力,我们常说的“服务能力化,能力数字化”就是这个意思。
金融企业数字化中台建设,是一个建立企业可重用能力的体系,我们希望能够通过本书探讨这样一个体系的全貌。