论面向服务的架构与其应用


摘要:2020年4月,本人所在的某市金融投资集团启动了集团综合管理系统建设,该项目实现基金、融资租赁、资金管理、转贷、融资担保、保理等金融业务信息化及人力资源、智能办公、法务管理等内部管理功能,在此项目中,我担任了架构师,负责项目总体架构设计工作。本文以该综合管理系统为例,主要论述了面向服务的架构在该系统中的应用。提供数据联邦、数据复制转换、工作流集成等控制服务实现新老系统数据的集成、流程的集成及交互界面的集成;提供已有信息和应用资产集成及通用业务开发模板等业务逻辑服务实现已有应用、新开发应用的集成;提供分布式存储、分布式事务、单点登录、短信邮件等IT支持服务实现高效、便捷的应用开发及稳定、可靠的运行环境。通过面向服务的架构提供高质量、可重用的平台服务。
正文:本人所在的某市金融投资集团已经建设了移动办公系统、财务系统、融资租赁系统、基金管理系统等应用系统,但仍有部分业务缺乏信息化支撑,已建成的系统比较分散,主要是“竖井式”方式建设,系统与系统之间信息不共享以及信息与业务流程相脱节。针对这些问题,2020年4月,经集团党委决定,启动集团业务管理系统建设,实现以下功能。一、实现转贷、保理、融资担保、资金管理、人力资源、智能办公等信息化,同时整合基金管理系统、内部办公系统、财务系统等已有信息资产,促进部门、子公司之间横向协同。二、建立统一共享的信息平台,利用数据报表平台为管理层提供决策信息支持,实现纵向管控。三、建立涵盖分布式文件存储、单点登录、分布式事务支持、短信邮件通知、可控任务调度等服务的基础IT设施,提供高质量、可重用的平台服务。
在此项目中,我担任架构师,负责项目总体架构设计。由于项目范围较大,我采用分层设计,总体分为IT基础设施层、业务层、数据管控层。在此项目中,通过将已有系统功能封装为服务实现重用,并通过提供稳定、高效、健康的IT基础设施,实现了新开发服务的快速开发。
SOA技术参考架构中包含六大服务。1.连接服务。连接服务通过企业服务总线提供架构中各个元素之间连接的能力。2.业务逻辑服务。业务逻辑服务包括业务应用服务、业务伙伴服务、应用和资产,用于提供实现业务逻辑及执行业务逻辑的能力。3.控制服务。实现人、流程和信息的集成,以及执行这些集成逻辑的能力,包括信息服务、流程服务服务、交互服务。4.开发服务。贯彻整个软件开发生命周期的开发平台,从需求分析,到建模、设计、开发、测试的维护等全面的工具支持。5.业务创新与优化服务。用于监控业务系统运行时的性能,并及时通过获取到的性能和变化,采取措施适应变化的市场,包括公共事件框架、采集服务、监控服务等功能。6.IT支持管理服务。支持各业务系统运行的IT基础设施,包括安全、目录服务、系统管理和资源虚拟化等,提供稳定、可靠、安全、健康的IT运行环境。下面将以控制服务、业务逻辑服务、IT支持管理服务三个方面来具体论述面向服务的架构实施过程。
一、控制服务。
由于涉及到新老系统的集成,自然也离不开数据信息的集成。在本项目中,我开发了数据复制、转换服务,及数据联邦服务。由于融资租赁系统数据与新系统并不完全兼容,需要对数据进行清洗、转换,因此基于KETTLE ETL工具实现了从老系统数据库提取所需数据,过滤到不符合要求的数据,并对信息进行转换,如两个系统的人员id、部门id并不一致,按规则处理后,新系统才可以方便使用。有时我们需要同时访问多个数据源,如针对员工考勤处理、报表处理等,我们需要同时访问移动办公系统的数据库及业务综合系统自身的数据库,通过多数据源访问框架、路由策略的配置及SQL解析确定需要访问的数据源,我们搭建了数据联邦服务,仅需要在数据联邦服务这一层关心数据所在的位置,而对于业务层则是透明的。另外,基于activity工作流引擎实现了流程编排服务,实现如转贷业务服务的项目立项流程、合同签订流程、收付款流程等一系列业务流程的流程审批功能,以及流程审批时伴随着的一系列动作。
二、业务逻辑服务。
集团已有应用信息资产数量较大,存量数据较多,对于融资租赁系统这类拥有代码的系统,及移动办公系统这类具有较完善接口文档的系统,我们通过对这些存量服务进行封装,产生一个可用、便捷的服务并注册到企业服务总线中,以便与新开发的服务进行交互。如移动办公系统,我们封装了新闻发布接口、消息通知接口、OA工作流接口、OA登录接口、待办任务接口,实现了业务综合系统与移动办公系统服务层面的互联互通。而对于新开发的业务应用,我们对旧业务系统进行抽象、归纳,总结出适应于各个集团金融业务的特定领域体系结构,并对其进行实现,开发了可重用的组件,包含项目管理、合同管理、投放管理、财务管理、收尾管理等功能,并支持各个业务的个性化定制,实现具体业务时,继承所需类,并在继承类中增加个性化数据,实现个性化功能,而后来如果一个功能在多个业务中重复出现,又可以将该功能加入到基础组件中,这样利用业务基础模板,可以非常快速地增加功能,并最大化了业务功能复用。
三、IT支持管理服务。
为业务系统营造健康、高效的运行环境,我们开发了诸如基于OSS的分布式存储服务、基于CAS的单点登录服务、短信邮件通知服务、日志管理服务、任务调度服务等一系列公共支持服务。基于阿里云的OSS服务,我们封装了树形结构的文档管理组件,以及单文件组件、单文件夹组件,支持文件的上传、下载、压缩、检索等服务,而由于OSS本身支持的定时备份,我们可以不需要过分担心数据丢失、硬件损坏的问题。基于CAS的单点登录,我们实现了遗留系统与新系统的登录打通,而用户不需要重复登录,也便于系统间的数据传递,并可基于用户身份进行数据权限的验证,避免用户通过前台漏洞获取权限外的数据。又基于短信平台接口以及Spring提供的邮件组件,封装了短信发送、邮件发送功能,并支持单独发送、批量发送,发送文字模板定制、历史记录查询等高级功能。通过这些基础功能的服务化,对于业务功能来说,仅需要通过webservice调用相关接口,帮助业务功能高效地开发,并由于这些基础功能在实际运行中经过长久地考验,远比单独开发来得更加稳定、可靠。
项目经过一年多的开发测试,于2021年7月份上线,至今系统运行平稳,实现了所预期的横向协同、纵向管控的目标,有力地支持了集团业务的开展运营。但系统仍存有遗憾,一是由于部分旧系统没有代码,因此无法改造,导致系统中存在多个工作流引擎,分别是移动办公系统自带的工作流、融资租赁系统工作流及业务综合系统工作流,因此对于审批时,领导需要同时审批三个地方的工作流,造成极大的不便,目前通过在移动办公系统中生成待办任务集中整合,并链接至相应系统处理URL来方便办理。另外由于涉及服务较多,服务部署任务较为繁重,尤其是开发阶段,部署压力较大,后续通过接入jenkins实现自动化部署,极大减轻了运维的压力,以帮助开发人员全身心地投入到开发中。