来源:鑫智奖·2024第五届金融机构数智化转型优秀案例评选

获奖单位:无锡农商银行

荣获奖项:基础设施优秀案例奖

一、项目背景及目标

云原生架构早就在互联网巨头如Netflix、Alibaba、Tencent等公司中得到广泛应用,并逐渐成为业界的热门话题,成为技术论坛和社区非常火热的存在。云原生的兴起同时与许多技术和业务趋势密切相关,包括云计算、微服务、容器化、持续交付、敏捷开发等,这些技术和方法的发展为企业的实践和发展提供了更好的基础和支持。

随着线上化业务的不断开展,我行的IT架构近些年来随着互联网大潮流的发展也开始在传统单体式架构的基础上进行微服务化的演进。鉴于银行业以稳为主的治理思路,我行在云原生体系化最开始的道路上便有以下几个痛点:

1.“系统多、杂”,最新数据显示我行目前生产在运行系统共计250+套,而其中70%的系统是传统单体式应用架构,所有业务全都耦合度在一起,往往会因为一个简单需求而改动到全局功能以至于出现不可预期的问题;各个业务系统开发框架、编程语言、技术栈、编码、协议等等五花八门各不相同,有C语言、Java、python、存储过程等,各种系统建设均由采购厂商实施从而自成一派,呈烟囱式增长,各系统间交互和运维非常复杂且困难;

2.“故障点集中”,我行内部系统之间进行接口交互原来基本上全都通过我行公共的接口转发平台(GXP)进行简单报文协议转换和路由转发,对于GXP而言,属于较为传统单体式架构,远不及企业总线般灵活与高效,各个业务系统交互均通过GXP实现线性的访问关系,可以说GXP承载了全行业务系统之间互访的重任,耦合度非常高且万一出现故障影响面非常大;

3.“治理困难”,随着行内系统建设的日益发展,部分新建系统采用微服务架构,服务拆分的粒度和技术栈又出现不同的分歧,有dubbo体系、有springcloud体系,建设期往往更多关注的是业务层面的功能而非底层架构实现,这就导致每个系统架构都不同,如何精确的定位系统间交易逻辑流向与痕迹,以及服务之间的关联便成了一个很大的难题。

4.“资源严重浪费”,从目前生产资源使用情况来看,无论是应用亦或是中间件,均采用各个系统独立申请独立使用的方式,并且按照标准资源模板申请与使用,而未考虑整体资源利用率的规划,导致申请资源使用确非常小,造成资源的严重浪费。

5.“人工效率低下”,目前所有开发流程及打包部署均靠人为方式进行,一方面针对开发与源代码版本的管理混乱,另一方面人员的操作存在误操作与差异性的风险,易产生低级的代码管理与打包部署问题。

云原生项目的建设目标一方面从业务系统架构出发, 解决传统单体式架构的集中式故障点问题,同时随着互联网业务及线上化转型的压力,快速响应业务发展的科技架构则成为首要目标,建设一套适用于我行现状并且能够持续发展、快速迭代与演进的敏态技术架构,从基础设施层将资源最大化,结合敏捷交付的流程工具,实现自动化运维的最终目标。

二、创新点

1.容器化技术的应用:云原生的核心是容器化,通过独立部署最小单元的方式,使应用更容易部署、扩展和管理。

2.微服务架构:云原生倡导微服务,将大型应用程序拆分为小而自治的服务,提高了整体系统的可维护性和可扩展性。

3.自动化运维:云原生通过自动化工具和流程,实现了持续交付、持续部署和自动化运维。

4.DevOps文化:云原生推动了DevOps文化,促使开发和运维团队更加紧密合作,提高了交付速度和系统稳定性。

总体来说,云原生技术的创新在于推动了一系列新的开发、部署和管理方法,使我行科技发展能够更好地适应快速变化的市场和技术环境。这种创新不仅提高了效率,还为我行带来了更大的灵活性和竞争优势。

三、项目技术方案

云原生架构从我行的思考和规划中整体以三个方面进行建设,以微服务+容器+DevOps为核心技术架构,以下将以这三个方面分别阐述。

打开网易新闻 查看更多图片
图 1 云原生体系整体架构

随着系统复杂度不断提升与业务需求和技术的快速发展,现代软件系统的规模和复杂度不断提高。单一的大型单体应用难以应对复杂系统的开发和维护,需要更加灵活和可扩展的架构来支持快速迭代和持续交付。微服务架构可以将应用拆分成多个小型的服务,每个服务都有自己的生命周期和可独立部署的版本。这使得开发人员可以更快速地响应需求变化,提高交付效率。由于微服务架构将应用拆分成多个小型的服务,当一个服务发生故障时,只会影响到该服务的功能,而不会影响整个应用的运行。此外,微服务架构还可以通过负载均衡和自动扩缩容等技术来提高应用的弹性和可靠性。

我行在微服务的建设中,我行基于开源、开放的建设思想与微服务的设计理念,面向全行科技应用形成了敏态+稳态的双模IT架构,既面向新建的微服务体系进行统一治理和运维,又面向传统GXP对接 的业务迁移和治理,形成统一运行态治理体系。

整体微服务体系分为基础设施层与应用接入层,基础设施层主要包括支撑微服务运行与治理的对应基础组件,包括:

1.统一注册中心:作为微服务体系中最核心的“通讯录”,注册中心用于构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施,让微服务的注册、发现、管理、共享、组合更加容易。

2.统一配置中心:作为微服务体系中不可或缺的配置抽离中心,使得应用与环境剥离,形成参数高度配置化,并且在无需重启应用的情况下实时生效。

3.统一监控告警中心:微服务的架构下各个应用的耦合度比较松散,相对而言就带来了治理困难的问题,作为微服务体系中监控引擎,敏态运行体系集成了skywalking、prometheus等目前主流的监控引擎程序,对应用可以说低侵入甚至无侵入。通过整体交易链路、全局流水号与性能指标的采集,为整个运行体系平稳运行提供了基础保障。

4.统一接入生态:敏态运行体系提供三种不同接入方式(SDK、边车、网关),为传统异构应用、新建微服务应用、存量各类型应用,均可通过最合适的方式接入敏态运行体系。针对体系中各个生态组件说明如下:

(1)SDK:可以理解为一组运行态SDK的集合,实现注册发现、微服务调用、负载均衡、熔断限流等功能,适用于基于我行开发平台的应用系统;

(2)网关:可以理解为分布式微服务版GXP,负责协议转换、服务路由、熔断限流,适用于我行原来对接GXP,并且还未或者不能集成边车的老系统;

(3)边车:可以理解为一个轻量级的为某个老系统独立部署的独享网关(协议转换、熔断限流),适用于我行原来对接GXP的老系统;

打开网易新闻 查看更多图片
图 2 敏态微服务运行体系

敏态架构下微服务治理体系设计包括两点:

基于SDK生态的服务治理:敏态运行体系SDK,是一种集成了Feign、Ribbon、Hystrix、Apollo、Nacos等运行体系所支撑的第三方依赖包的SDK,具备熔断限流、权限控制、负载均衡等功能,对于集成SDK的应用而言,注册至统一的注册中心,系统内服务间访问通过点对点服务调用的方式进行互访,跨系统间访问则通过注册中心寻址对方服务名/API网关服务名/边车服务名等体系内服务进行互访。基于SDK生态的服务治理宗旨是降低服务间。

基于边车(SideCar)生态的服务治理:基于Service Mesh的理念,针对存量异构服务进行应用服务代理与流量控制,SideCar作为应用出向与入向的代理程序,负责异构程序的应用协议编码转换,并提供双向健康检查接口。在应用层,对外以边车暴露接口的方式提供服务共外部系统调用,外部系统调用本应用通过访问边车后经过协议转换再转发。在视图层,管理平台提供统一详细的接口明细、服务列表、熔断限流配置等转发相关的控制。

稳态架构下微服务治理设计:

基于API网关生态的服务治理:目前我行存量业务系统间/外部系统间互访均通过GXP(分内联与外联),为降低GXP集中式企业服务总线的耦合度,增强分布式微服务的负载与弹性伸缩能力,建设了与传统GXP能力一致并且个性化增强的API网关,具备协议转换、编码转换、个性化适配、熔断限流等一系列微服务网关的基础能力,一方面通过微服务架构可随时进行横向扩展弹性伸缩,另一方面将集中式GXP通过分布式网关进行业务解耦与集群解耦,提升业务连续性。

针对微服务系统的建设,我行从开发态抓手,制定了一系列开发规范,包括项目依赖包治理,从标准依赖、核心模块、日志模块、访问权限、基础组件等日常开发常用套件打包组合,形成我行独有的特色源码依赖体系。

打开网易新闻 查看更多图片
打开网易新闻 查看更多图片
图 3 开发态微服务生态治理

随着微服务的不断扩展与增多,服务拆分的颗粒度越细,业务问题便越难以定位,涉及跨服务调用甚至跨系统调用更是难以显性化追踪和治理。为解决微服务治理难、运维难的问题,我行引入的skywalking基础组件,作为微服务系统间非侵入式的快捷运维工具,通过日志链路工具集成,实现了业务系统跨服务、跨系统间服务调用接口级别的链路追踪与全局流水号追踪能力。

微服务治理工具的应用,解决了我行在业务发展中定位问题、解决问题的难题,但微服务的涉及服务之多、粒度之细,往往在监控与告警层面捉襟见肘,我行在监控告警层面也是利用zabbix、skywalking、prometheus、自实现等多种方式实现接口级别的细粒度监控预警能力,通过采集每笔交易的响应状态、响应耗时进行分析、预警与统一大屏告警。

打开网易新闻 查看更多图片
图 4 应用容器云架构体系

随着我行微服务体系的建设,服务数量的日益增多,相较于传统应用部署仅需要1-2台虚拟机部署独立应用程序即可,随着业务的解耦与服务的拆分、组合,往往需要大量的依赖包、虚拟机进行部署,运维成本迎来了另外一大挑战,因此我行在解决微服务部署难题上,引入了无状态容器,通过容器化的方式进行集装箱式应用部署,并且利用容器弹性伸缩的特性,适应微服务架构下业务高峰低谷的动态调配能力,极大的发挥微服务特征与资源的利用率。针对我行应用服务上云,制定了经过技术验证可行的应用上云的最佳实践,形成了节省资源的部署和应用接入运行、监控、治理一体化治理方案。主要包含以下几点:一、标准接入验证方案,包括:1、标准微服务运行体系接入容器云;2、异构微服务体系接入容器云;3、单体系统接入容器云。二、标准应用交互方案,包括:1、系统内部跨云访问;2、系统之间跨云访问;3、系统内部云内访问;4、系统之间云内访问。三、监控运维方案,包括:1、容器云平台自身监控;2、针对Java应用级别监控;四、灰度方案、流量切割方案;五、针对资源超分和动态扩缩容策略制定;六、镜像分层与制作方案。

打开网易新闻 查看更多图片
图 5 中间件容器云架构体系

针对传统Kafka、ES、MQ等虚拟化中间件的云化演进,利用k8s自动化、智能化的调度能力,提高了中间件的稳定性和运维能力。传统中间件往往存在难运维、监控粒度粗、故障人工干预困难等痛点,同时各个业务系统独立申请的资源利用率也仅仅使用40%左右,资源出现严重浪费,因此建设了基于kubernetes+operator的有状态容器云平台,用于提供可视化的有状态中间件的部署、运维、监控、故障自愈等能力,实现了有状态容器与无状态容器的混合云基础设施。

打开网易新闻 查看更多图片
图 6 DevOps架构体系

微服务与容器结合后,充分将微服务的特性与优势放大,同时又将资源的利用率加以提升,可以说带来了无限前景,但随之而来的就是运维成本,微服务架构下的服务太多、组件太杂,原来单体应用可能只需要直接登录快速部署,而面对微服务系统架构、配置文件的修改、部署机器的数量、应用的部署和发布需要耗费大量的人力,靠人工逐台服务器发布往往非常困难,并且随着业务发展,往往需求的交付周期会随着业务不断变化,敏捷交付、持续集成、持续部署便成了云原生三大基石中不可或缺的存在。

四、项目过程管理

云原生架构体系的建设,我行通过近3-5年的规划和演进方向所制定,以微服务+容器+DevOps为核心技术架构循序渐进的实施,整体项目建设的实施周期如下:

1.涉及微服务架构与体系建设通过与江苏博云科技股份有限公司合作研发,分为三个阶段建设,一阶段以平台建设为主,自2020年9月启动建设,2021年2月正式投产发布;二阶段以微服务治理与规划建设为主,自2022年1月启动建设,2022年6月正式投产发布;三阶段以应用接入治理与可视化运维为主, 自2022年10月启动建设,持续至2023年10月以敏捷交付方式迭代发布。

2.涉及无状态容器云平台通过与江苏博云科技股份有限公司合作研发,分为两个阶段实施,一阶段以平台建设为主,自2020年10月启动建设,2021年2月正式投产发布;二阶段以应用上云与平台扩容建设为主,自2023年2月启动建设,2023年6月正式投产发布。

3.涉及有状态中间件容器云平台通过与杭州网易数之帆科技有限公司合作研发,自2022年9月启动建设,2023年4月正式投产发布。

4.涉及DevOps平台项目通过与江苏博云科技股份有限公司合作研发,自2023年5月启动建设,2023年8月正式投产发布。

五、运营情况

云原生架构体系的建设,我行以微服务+容器+DevOps三大基础体系建设后,一方面将整体科技水平以适用我行现状的目标逐步推进,另一方面在科技创新的道路上,迈出重要的一步,整体项目建设的运营情况与取得成效如下:

微服务体系建设成效:自平台建设完成后,体系运营上从业务系统运行角度出发,先分析出微服务架构在运维和监控上面的痛点,将可视化运维作为第一要务,解决微服务多且难治理的问题,并将微服务的交易链路与日志相关联,形成可视化的系统、服务件调用关系展示,通过关键信息一键查询展示并定位故障节点,可协助快速定位问题。截止目前该微服务运行体系已作为我行整个科技条线最重要的技术架构演进目标和方向,并为我行整体技术架构的制定了统一规范和实践落地。目前我行已完成企业网银、远程视频银行、智能柜台、智能感知中台等超20套高频业务系统微服务化改造和治理层面对接。截至目前微服务网关共计163个应用系统接入使用,共计230个服务提供接口(含微服务与传统老系统),共计1664条路由(不同于GXP系统级别,而是精细到接口级别的治理),支持丰富的协议转发,包括银联定长交易、核心KVL、综合前置GAPS等特殊协议的个性化定制开发,提供丰富的报文+协议组合能力,同时实现熔断策略,及时拦截频繁告警并进行路由熔断,提高系统稳定性。期间完成多家外部系统,包括兴业、省联社、宜兴房屋交易、中国人民银行、农业银行、京东、宜签等外部机构的对接,帮助行内完成内外部通信转发和交易协议转发,减少需求开发与调试时间,提高业务对接效率。目前API网关的集群交易数据日均250万+笔,高峰日均1500万+,通过23年的性能测试和优化,整体TPS可达6000,可以适应我行近5-10年的交易流量承压。文件网关系统实现了行内与行外文件传输的标准化与统一化。通过兼容SOCKET和HTTP协议两种请求方式,支持通过SFTP文件传输协议或文件流的形式高效、安全地进行文件传输。为了确保数据的安全性,所有通过文件网关传输的文件都会进行严格的加、解密处理,并且系统会详细记录每一次的传输日志,以便于后续追踪和审计。目前,已成功与20个行内系统以及5个行外系统完成了对接,展现出卓越的兼容性和稳定性,未来将作为我行系统间文件交互的首要对接方式与技术规范,既提高可视化的文件传输监控告警,又提升业务系统的对接效率,降低开发难度与工作量。

容器云体系建设成效:面向应用系统部署使用的无状态容器云平台已接入企业手机银行、统一消息融合平台、远程视频银行、智能柜台等6套常用业务系统与敏态运行平台、统一门户等4套管理类系统。并形成支撑容器云使用的近30份指导手册与方案。为我行无论是新建系统还是存量系统使用容器云进行部署提供了强有力的指导方针,也为我行整体业务服务云化打下了坚实的基础。面向有状态中间件,通过建设云原生中间件平台,提供MQ、Kafka、ES、Redis等云化中间件服务,通过持续对接存量业务与新建业务,现已完成57个集群的建设和提供使用。节省生产环境下的180+CPU资源、370GB+内存资源,以及39TB+存储资源。在监控告警方面提供了千余项指标进行全面的监控,针对不同级别的行为进行不同等级的告警处理,可以做到实时自动分析集群的运行状态,并且提前预知可能发生的故障,并与管理部运维大屏实时对接通知并告警处置。其次通过自研云化Redis项目,对生产环境中的50多个业务系统进行了云化改造和存量迁移,大幅提升了其可靠性和可维护性,通过使用k8s的调度策略,Redis集群能够安全快速的自动愈合、一键扩缩容、一键修改规格等能力。针对所有中间件使用进行规范的梳理和开发侧培训,为所有接入系统提供统一的中间件使用指导与支持,并联合调试各系统,确保其与中间件的无缝集成。

DevOps敏捷研发体系建设成效:我行虽然于2023年6月才开始DevOps平台的建设,但自2021年开始,便进行敏捷文化的宣导和转型,包括业务需求交付版本火车的制度制定、需求版本规划SCCB会议的制定、JIRA研发流程的引入、敏捷站会等各项敏捷文化建设,可以说为DevOps文化建设奠定了基础。通过DevOps平台建设,形成了开发规范、源代码管理规范、分支管理规范、制品库管理规范、流水线管理规范、环境管理规范等6大研发管理规范,提供从“需求->开发->测试->发布->运维->运营”端到端的开发运营一体化平台解决方案,覆盖项目管理、研发管理、测试管理和运行管理的协同服务和研发工具支撑,将线下 IT 生产过程转变为线上高度自动化、可视化、可度量的 IT 生产线,提升产品研发效率,快速响应业务需求。截止目前已完成9套应用系统的开发、自动化测试、持续集成、持续部署的全流程打通,并将全量200+套应用系统源码迁移纳管,成功完成由svn迁移至gitlab的管理工作,并于今年持续进行存量系统的持续集成、持续部署的专项推进工作。

六、项目成效

我行建设的云原生技术架构,从经济效益上虽然无法直观的展现,但是该架构体系是规范和树立我行未来3-5年的技术架构路线与技术发展趋势,规范了技术架构的前提下,节省了所有新建系统与演进系统公共基础设施的重复部署与技术架构的重新讨论,直接按照当前的技术架构设计和落地,并将技术栈进一步收缩和规范化治理,减少了技术栈的熵增,同时精细化治理现有技术栈,无论是新建亦或是使用,均能够有效节省设计、开发、部署等工作,可以说从隐性的经济效益提升,同时在新架构的实施下也带来以下节点比较直观的成效:

1.灵活性与可扩展性:云原生架构通过容器化和微服务的方式,使应用程序更具弹性,能够快速适应变化。这种灵活性和可扩展性有助于满足不断变化的业务需求和应对突发的流量波动。

2.快速交付与持续交付:云原生推动了持续集成和持续交付(CI/CD)的实践,使开发团队能够更快地交付新功能和更新。这有助于提高产品迭代速度。

3.资源利用效率:容器化技术使得资源的利用更为高效,通过弹性伸缩与动态扩缩容技术实现硬件资源池化共享机制。这有助于降低成本,提高整体效能。

4.自动化运维:云原生技术通过自动化管理和监控,减少了人为错误的风险,同时利用容器化自动拉起、故障自愈等技术提高了系统的稳定性和可靠性。

5.安全性:云原生采用了一些先进的安全实践,例如微服务之间的隔离、持续监控和自动修复等,可以实现资源虽然池化,但是业务确可以独立分割而互不干扰,从而提高系统的安全性。

七、经验总结

无锡农商银行作为地方中小金融机构,在IT架构发展历程中,面临多方面的挑战和痛点,主要涉及传统集中式单体架构局限性、微服务架构引入后的挑战性、中间件使用的规范性、研发流程的敏捷性,相信此类问题在中小型机构中是非常普遍存在的问题。近年来,随着金融行业的快速发展,以及金融科技的不断创新,银行IT系统面临着不断变化的挑战,云原生技术的出现为银行IT系统的转型升级提供了新的动力。无锡农商银行在基于自身技术架构和现状的基础上, 分析自身现状与急需解决的痛点后,我行科技发展制定了科技战略方向的三年规划,快速确定战略目标,自上而下开始敏捷化与云原生化转型,借助云原生技术的优势,进行科技的线上化转型。一阶段建设基础平台系统,以敏捷转型为切入点,快速完成核心平台的建设,即科技战略三大阶段中的一阶段“平台化”,二阶段基于基础平台将能力进行组合、封装、管理,实现基础平台的能力输出,同时全面启动研发运维一体化建设,基础设施云化底座建设,即将平台化转变为“服务化”,三阶段则是将所有基础开发统一标准化,利用统一微服务治理手段,形成标准化治理策略,将银行业系统业务应用云化,扩展第三方应用生态与对外开放业务圈,实现银行传统业务云化支持。秉承着业务为主,科技赋能业务的宗旨,循序渐进的推进架构的演进和更新迭代。通过近三年的建设,已逐步形成了我行特色的敏态+稳态的双模IT架构,敏态面向微服务架构应用,采用DevOps实现持续交付、自动化测试与持续部署,利用容器化技术加速应用交付与资源整合,稳态则是面向存量传统业务,实现业务的无缝衔接和快速转型。

在未来,无锡农商银行将继续围绕技术创新、安全合规、优化效率和合作生态等方面,开展云原生技术的应用实践,不断提升IT架构的支撑能力,更好地满足业务发展需求,在以下几个方面不断实践:

1.持续关注新兴技术领域。边缘计算、人工智能和区块链等领域应用可以为银行业务带来更多可能性,推动业务创新和用户体验上的突破。未来通过探索边缘计算在银行业务中的应用,提升业务的响应速度和可靠性,应用人工智能技术,提升客户服务、风险管理等方面的智能化水平,结合区块链技术,打造更加安全可信的金融基础设施。

2.持续提升效率。不断优化现有技术架构和系统设计,提高系统的可靠性和稳定性。通过技术手段和创新思维,持续提升银行业务的运营效率和服务水平。

3.持续加强科技人才培养与团队建设。通过技术培训和知识分享,吸引更多优秀人才加入团队,不断提升团队整体水平。

4.持续推进建立开放的生态系统。加强与合作伙伴的合作与交流,建立更加开放和稳固的生态系统,通过与行业内外的合作伙伴紧密合作,共同推动银行业务的创新和发展。

我们相信,通过不断的努力,无锡农商银行将在云原生技术的应用实践中取得更大的进展,为地方中小银行业务的创新和发展提供有力支撑。

更多金融科技案例和金融数据智能优秀解决方案,请在数字金融创新知识服务平台-金科创新社案例库、选型库查看。