金融级云原生容器云建设研究
2022-04-29陈菲琪黄进王景斌
陈菲琪 黄进 王景斌
摘要:在数字时代蓬勃发展下,亟须一种更加快速、敏捷的基础设施解决方案,以支撑顶层的数字经济。Kubernetes是一种开源管理云平台中多个主机上的容器化应用,是分布式集群管理系统和私有云、公有云的事实标准。江苏苏宁银行按照务实、高效、架构先行等原则,以Kubernetes为容器编排器,构建新一代的容器云平台,首先探索并解决资源使用效率问题,其次利用Kubernetes的容器编排、弹性伸缩、容器漂移和故障自愈能力,简化应用部署方式、周期及难度。未来将利用容器快速弹性伸缩能力及云原生技术自动化能力,不断提升运维效率和保障能力。
关键词:云原生;容器;编排;弹性伸缩
中图法分类号:TP393文献标识码:A
Research on construction of financial-grade cloud-native container cloud
-Taking Jiangsu Suning Bank as an example
CHEN Feiqi,HUANGJin,WANGJingbin
(Jiangsu Suning Bank Co.,Ltd,Nanjing 210019,China)
Abstract:With the vigorous development of the digital age,a faster and more agile infrastructure solution is urgently needed to support the top-level digital economy.Kubernetes is an open source management cloud platform for containerized applications on multiple hosts.It is the de facto standard for distributed cluster management systems and private and public clouds.Jiangsu Suning Bank follows the principles of pragmatism,efficiency,and architecture first,and uses Kubernetes as the container orchestrator to build a new generation of container cloud platform.First,it explores and solves the problem of resource utilization efficiency, and then uses Kubernetes' container orchestration, elastic scaling, container drift. The fault self-healing capability simplifies the application deployment method,cycle and difficulty.In the future,the rapid elastic scaling capabilities of containers and the automation capabilities of cloud-native technologies will be used to continuously improve operation and maintenance efficiency and guarantee capabilities.
Key words: cloud primitiveness, containers, arrangement, elastic expansion
1 引言
在銀行业科技金融的创新过程中,计算的根基以及应用开发与运营的方式都发生了翻天覆地的变化,需要操作系统、平台软件、容器和云原生等方面做出适配性改造,以适应快速、敏捷、迭代开发的文化和流程等。特别是随着数据要素成为一种新的生产资料,对现有的金融基础设施提出了更高的要求,需要一种更加灵活便捷的基础设施解决方案,以为顶层的数字银行建设打好基础[1]。数字化基建作为数字银行建设基础,云平台是数字化基建的关键,需夯实底层云架构后才能更高效和更稳定地进行数字银行转型。通过数字化,连通客户社交生态、连接内部经营要素;构建数字化智能,打造数字化转型的新引擎,管理数据资产;培育数字化转型的新源泉,打造数字为先的企业文化,培养复合型、知识型和创新型数字化人才,打造专业的数据分析师人才队伍;夯实数字化基建,打造数字化转型的新底座,构建适应业务发展的共享能力平台,采用敏捷迭代的微服务架构。
容器解决了应用发布的标准问题,是用于轻松部署和隔离应用的关键技术之一。通过命名空间提供轻便、有效的应用隔离,并将其运行所需的所有组件打包在一起,有效避免了依赖底层宿主机操作系统关键组件的应用程序之间可能的冲突。使用容器技术可以实现“一次构建,到处运行”效果;可以确保版本在不同环境中实现一致性,从而方便了应用的移植,消除了各种难以修复的冲突。容器中运行的所有服务,隔离运行在物理服务器(或者虚拟机)上的共用操作系统中。实践表明,容器消耗极少的系统资源(如内存),基本上不会对应用性能产生影响。
Kubernetes 是一种开源的管理云平台中多个主机上的容器化应用,是一个分布式操作系统,是当前分布式集群管理系统的事实标准。凭借优秀的开放性、可扩展性以及活跃开发者社区,其在容器编排之战中脱颖而出,目前已经被广泛用于各行各业的容器自动部署、扩展和管理。Kubernetes 屏蔽了 IaaS 层基础架构的差异并凭借优良的可移植性,帮助应用一致地运行在包括数据中心、云、边缘计算等在内的不同环境。通过 Kubernetes 结合自身业务特征来设计自身云架构,从而更好支持多云、混合云,可以免去用户被厂商绑定的顾虑。随着容器技术逐步标准化,进一步促进了容器生态的分工和协同。江苏苏宁银行在容器应用与管理探索实践过程中,积累一定经验后,新一代的容器云平台将 Kubernetes 作为容器编排器。
2 背景
江苏苏宁银行进行容器化改造前,针对业务系统架构进行了充分的梳理,将其分为如下两类:一类是基于远程服务调用框架的 Web 应用。前端界面表现层使用 HTML,Angular JS,Vue 等前端技术,后端编程采用 Java 技术栈,业务逻辑控制层采用 Spring MVC 或 Spring boot 等开发框架,数据存储层采用分布式数据库中间件。后端使用 MAVEN 编译打包,发布使用基于 Jenkins 自研的 CD 平台。此类应用特点是前后端分离、跨平台、易迁移;另一类是非 Java Web 应用的技术架构,包括 LAMP,Python 等技术栈。前端界面表现层采用 HTML,CSS,PHP,Ajax 等技术,业务逻辑层使用 PHP MVC 开发框架—Symfony,数据存储层采用 MySQL MGR 集群技术。此类应用架构简单、稳定、部署方便灵活。
随着业务发展,应用系统不断增多。基于远程服务调用框架的 Web 应用之间的关系、调用链路越来越复杂;非 Java Web 的技术架构变得越来越臃肿,运行维护面临众多痛点:一是环境部署复杂。在搭建基础环境的过程中,需要部署编译很多 lib 库、编译器、组件包,并且各个组件的依赖关系非常复杂,特别是银行业因为安全等方面要求,生产环境与互联网物理隔离,安全策略严格,各种基础库及依赖包的安装费时费力,部署完成一套系统环境甚至需要一周时间之久;二是环境污染严重,难以二次使用。测试环境部署完成,经过多次测试后,各类参数和配置文件经过多人调整,需要恢复到初始状态部署应用测试时,耗时费力,需要多人参与,有时需要重新创建虚机,以实现纯净环境;三是系统迁移困难。由原先部署在Vmware虚拟机的业务系统迁移到“ OpenStack+Kvm”的云平台,应用迁移烦琐且容易遗漏配置文件。从底层虚拟化文件层迁移,镜像格式不同,缺少合适的跨平台打包工具,非常复杂也容易出错;四是缺乏快速响应能力。整体系统研发、投产过程中开发测试的并行开展度不高,业务需求需要快速上线。业务系统的线下环境和线上环境的配置参数不统一,导致实际投产过程的复杂性提高、报错率提升;五是弹性扩展能力差。系统拥有部分高并发业务场景,业务应用需要快速弹性伸缩来满足峰时需求。单体式应用系统的复杂性过高,系统拓展性不足,系统维护性难度加大。
3 建设原则
结合江苏苏宁银行实际情况,并经过长期技术预研和多次技术论证,遵循如下原则构建新一代云原生架构的基础平台:一是务实。以解决实际问题为出发点,不追求“高大上”。将环境部署过程中碰到的问题一一列出,逐个讨论,不清晰、不明确的需求先搁置;二是稳中求进。不过度追求极致自动化,优先保证生产稳定安全。选择有一定先进性、技术活力、能代表未来发展方向的技术;三是提升效率。减少人工重复性操作,选择的技术和建设的平台与业务系统的发展不是正比关系,而是业务系统的高速发展,只会使得系统运维工作略有增加;四是符合整体规划建设。将 IT 建设的整体规划作为依据,从方案上考虑容器云建设的合理性和必要性,使得建设的平台具有先进性和可持续性。
4 建设阶段
在如上原则指导下,将容器云平台建设分为两个阶段。
第一阶段:探索并解决资源使用效率问题。将容器作为微服务架构的运行体,Rancher 作为容器编排调度技术,建设江苏苏宁银行的容器云平台[2]。建设完成后,推动应用上云。应用上云分为三步—首先,完成容器化改造,通过容器自带的镜像构建能力将各个业务组件打包,推入自建的镜像仓库,以实现标准化交付。其次,容器环境构建,将改造后的各个业务组件分别独立地运行在容器中,保证各组件能在容器中正常运行,同时实现开发、测试、生产环境的代码和配置的完全一致性管理。最后,通过 Rancher 实现对容器的编排。利用容器的标准化交付和隔离特性,实现了从开发环境到生产环境的快速移植和发布;利用容器快速启动的优势,实现业务应用系统在高峰期的快速弹性扩展,从而满足高并发的应用场景。在应用上云的同时,把传统单体式应用、基于 RPC 调用的应用系统,使用 Spring Cloud 框架进行改造,向着微服务化架构方向演进。
第二阶段:弹性、敏捷、助力 DevOps 和 AIOps[3]。从传统构建、部署方式向容器化转变完成后,以较低的投入实现了资源使用效率提升的目标。同时,在容器化方面积累了经验,有了充分的技术沉淀,具备一定的容器化平台建设和规划能力。结合江苏苏宁银行实际情况,采用 Kubernetes 代替 Rancher 作为容器编排器,构建新一代容器云平台。充分利用 Kubernetes 的容器编排、弹性伸缩、容器漂移和故障自愈能力,简化应用部署方式、缩短周期及降低难度。另外,利用 Kubernetes 的容器编排能力与 DevOps 结合,进一步提升研发运维一体化能力,并为后续 AIOps 建设打下基础。
5 结论
江苏苏宁银行采用容器和 Kubernetes 编排调度技术自主研发的容器云平台,在全行运行容器实例近万个、承载全行多套环境(DEV/SIT1/SIT2)的各类应用中间件。根据不同环境资源使用需求,自助式创建服务,资源利用率提升4倍以上,服务器、机柜成本下降60%;利用容器的快速启动及自动部署能力,中间件及各开发组件部署效率提高90%以上;全面助力业务系统微服务化,实现业務系统从开发到部署的敏捷、快速迭代开发。在掌握容器云平台建设的关键技术,并积累一定经验后,基于 Kubernetes 编排技术构建的新一代容器云平台已经在生产环境上线,承载部分应用系统。
江苏苏宁银行历时8个月独立开发完成基于 Docker 和 Rancher 技术的容器云平台,以及新一代基于 Docker 和 Kubernetes 的容器云平台,达到高并发业务快速弹性伸缩、业务开发测试快速上线的理想效果。以云原生 DevOps 为理念,打造以服务为中心的管理模式,屏蔽基础运维架构,覆盖从代码到生产的全生命周期。容器云平台架构图如图1所示。
江苏苏宁银行容器云平台实现基础设施云端化、开发流程敏捷化和应用架构现代化:一是基础设施云端化。稳定快速的物理环境保障,跨越 VMware、私有云的管理,简化多集群的资源隔离和管理,灵活集群托管,全面加速和优化云的管理。具备服务清理和管控能力,可管理容器服务的全生命周期,实现服务授权、服务访问流量转化、服务编排、容器调度、服务发现、零宕机等目标;二是开发流程敏捷化。以云原生 DevOps 为理念,持续性地将高质量、具有价值的应用快速推向市场。通过应用和服务编排,一键式地部署相互关联的服务,简化服务部署流程,快速部署复杂的服务[4];三是应用架构现代化。深度支持SpringCloud微服务框架,平滑迁移基于 Spring Cloud 的微服务应用,构建微服务架构和管理平台。以低成本、重安全的方式管理微服务的开发和运维,使部署、管理和服务功能交付变得更加简单。
6 未来规划
第一阶段,通过自研的金融级容器云平台在测试环境长期运行,以提升资源使用效率,为完全自主掌控核心技术积累经验;第二阶段,利用容器快速弹性伸缩能力及云原生技术自动化能力,提升运维效率和保障能力。同时,系统微服务化改造范围不断扩大,为容器云的可持续性演进打下坚实基础,为江苏苏宁银行全面实现云原生技术架构下的 DevOps 乃至 AIOps 奠定坚实基础[5]。
随着云原生技术的发展和应用,江苏苏宁银行将持续投入研发基于云原生基础架构的容器云平台,实现容器化封装常用的大数据套件和中间件组件、人工智能平台,满足业务系统全面云原生下金融场景特定需求。
参考文献:
[1]罗勇.云银行的内在逻辑与核心技术[ J].中国金融,2020(21):49?51.
[2]树岸,彭鑫,赵文耘.基于容器技术的云计算资源自适应管理方法[J].计算机科学,2017,44(7):120?127.
[3]刘思尧,夏绪卫,华荣锦.基于 Docker 容器的云平台集群伸缩算法研究[J].科技通报,2018,34(7):150?153.
[4]杨鹏,马志程,彭博,等.集成 Docker 容器的 OpenStack 云平台性能研究[J].计算机工程,2017,43(8):26?31.
[5]齐磊,张海峰,张天骁,等.基于容器技术的 PaaS 云平台方案[J].电信科学,2017,33(4):177?182.
作者简介:
陈菲琪(1985—),硕士,高级工程师,研究方向:金融科技、云计算、数字银行。
王景斌(1969—),博士,高级会计师,研究方向:会计、风险管理、金融科技(通信作者)。