证券行业容器云落地实践分享

[复制链接]
发表于 2025-6-30 17:25:02 | 显示全部楼层 |阅读模式
随着证券行业的发展,支撑业务的IT系统也在逐渐壮大。为了快速响应业务需求,敏捷交付成为了IT系统建设新的要求。容器技能作为敏捷交付的最佳拍档,已经深刻影响了持续集成和持续交付,也改变着IT系统的开发、交付和运维。


一、背景

金融市场瞬息万变,高效的业务支撑本领离不开与时俱进的IT系统。随着公司业务的发展,IT系统数目在不断增多,同时每个系统的复杂度也在不断提高。即便在微服务改造之后,IT系统的开发、交付和运维仍旧面临着以下难题:
开发

  • 代码量不断增长、协同开发难度加大
  • 多样化的编译和运行环境
交付
运维

  • 微服务化后带来的架构复杂度提高
  • 产品团体部署和运维难度增长
这再次印证了软件工程的天下里“没有银弹”。微服务化解决了IT系统紧耦合、强技能依赖、难维护的题目,但是却同时带来了新的题目。在我们看来,这是一个螺旋上升的过程。
随着容器技能的发展,容器技能与微服务逐渐碰撞出火花,业界也广泛以为容器技能和微服务是“天生一对”。在2017年,容器化微服务成为了我们新的选择,优化了开发、交付和运维方式和流程,并一直推动着公司敏捷和DevOps的发展。



二、华泰容器云简介

2017年,随着容器和容器编排技能的日趋成熟,我们建设了符合实际应用场景的“容器云平台”。容器云平台接纳时下最盛行的容器技能Docker和已成行业尺度的容器编排工具Kubernetes建设而成,通过构建、服务、流水线、监控监控、日志日志等功能有效承载了微服务、CI/CD、DevOps。
2.1 微服务

现在越来越多的金融企业使用微服务架构,以应对快速变化的互联网金融挑衅。通过微服务改造把应用拆分成很多细小的服务,每个服务专注于单一的功能,服务和服务之间有明确的边际,使用轻量级的通讯协议进行沟通,实现某个相对单一的功能。微服务的到来降低了巨大单体式应用复杂度、每个服务的开发技能自有选择、每个服务可独立扩展、每个服务可独立部署。但使用微服务架构不要低估细粒度分布式应用治理与运维的复杂度。而结合容器技能的微服务则可以给企业带来更高的资源使用率,更加速捷的迭代变更,更加方便的快速扩容本领。
2.1.1 容器是微服务的最佳载体

通过容器将微服务的运行时尺度化,每个容器承载一个服务,然后像搭积木一样组合起来,让彼此通信,从而就能很轻松地模拟出复杂的微服务架构。

容器天然做到了应用之间相互隔离,在包管安全隔离的同时,可以有效提高资源使用率

  • 为微服务的快速扩容提供有效的支撑,容器启动非常快速,秒级实现,通过镜像可以快速启动多个微服务
  • 对软件和其依赖环境的尺度化打包,包管了微服务多个副本之间的绝对同等性,使得我们可以方便运维管理更多的微服务
  • 容器占用资源少、部署快,每个微服务应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大上风,为每个微服务单独构建镜像,通过镜像可以独立发布一个微服务,不依赖于生产环境基础结构,这使得从研发到测试、生产能提供同等环境。
2.1.2 使用Kubernetes支撑微服务

Kubernetes在支撑容器平台和微服务的竞争中依然胜出。传统的应用部署方式是通过插件或脚原来安装应用。这样做的缺点是应用的运行、配置、管理、全部生存周期将与当前操作系统绑定,这样做并倒霉于应用的升级更新/回滚等操作。Kubernetes是Google开源的一个容器编排引擎,它支持主动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用步伐时,通常要部署该应用的多个实例以便对应用请求进行负载平衡。
在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载平衡计谋,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
2.1.3 微服务运营管理

1.配置管理
雷同的微服务,部署在差异的环境,如差异的生产中心、灾备中心、测试迭代环境、并行测试环境等,需要有差异的配置,容器云平台通过Kubernetes特有的PV/PVC功能,结合配置中心的同一管理,方便实现配置管理,真正实现“一次打包,到处运行”。
2. 主动扩缩容和灰度发布
使用Kubernetes和容器,华泰容器云平台可以很好的的实现治理微服务需要的主动扩缩容和灰度发布。根据实际的业务需求和计谋,容器云平台通过Kubernetes主动“调解”其“弹性资源”的管理服务。通过弹性伸缩功能,业务团队可设置定时、周期、自定义的监控监控计谋,敏捷快速地增长或减少“弹性资源”,并完成实例配置,包管业务平妥当康运行。在满足业务需求高峰增长时无缝地增长“弹性资源”,并在业务需求下降时主动减少“弹性资源”以节约成本。同样结合负载平衡软件,我们可以让流量渐渐指向新扩容出来的新版本的微服务,快捷的实现灰度发布全过程。
3. 健康检查
当微服务数目不断增长后,健康检查和服务主动修复是一项重要工作,华泰容器云平台使用容器的特性,提供了容器健康监控监控和服务主动修复的功能,减少了微服务过程中运维的压力。
2.2 CI/CD

2.2.1 持续集成

持续集成是一种软件开发实践,开发人员通过经常性地主动化集成他们的工作,从而尽早地发现IT系统集成错误。持续集成通常包括如下过程:同一的代码库、主动触发、主动构建、单元测试、主动化部署、主动化集成测试等等,这些工作通过Jenkins固然也能完成,但是需要大量编码工作,而且强依赖底层资源和环境,这使得开发和测试人员花费了大量精力在流程的对接上,而容器云平台的建成大大改善了这种情况。开发和测试人员在容器云平台通过图形化的界面操作便可以完成持续集成的整套流程,将精力聚焦在软件开发细节和测试用例上。使用容器云平台不仅屏蔽了底层资源,大大简化了运行时环境预备工作,结合容器的弹性,还大大提高了资源使用率。下图展示了容器云平台的持续集成流程:

2.2.2 持续交付

持续交付是持续集成的天然连续,它完成了产品从开发测试到生产的“质的蜕变”。使用容器云平台上的流水线,我们完成了从提交代码主动化触发构建到最终主动更新生产环境某个微服务版本的整套交付流程。在开发测试环境构建出的应用镜像通过流水线同步至预发布环境,经过测试后再同步至生产环境部署,我们做到了在包管交付质量的前提下,加速交付速度,从而更快地反馈市场需求,赋能业务发展。下图是持续交付流程图:

图3 持续交付
2.3 DevOps

DevOps 主要用于开发、测试以及运维之间的协作管理,而且通过主动化流程,更加速捷、频繁、易重复且可靠的构建软件、测试及发布部署。持续集成和持续交付是实现DevOps的一部分,但不等于DevOps。DevOps应该还包括一套完整的持续部署以及持续运营的完整开发测试运维一体化的DevOps方法和工具。DevOps不是一定要用容器,但是有了容器,DevOps变得更加简单。可以说容器云平台的建设既是DevOps实践,也推动了华泰证券DevOps的落地:
1.借助容器云平台提供敏捷开发本领,让开发端更加敏捷;
2.通过容器云平台,实现开发测试生产环境同等性,渐渐建立尺度化、同等性的开发、测试、运维环境,专注于业务应用开发,不分心于资源管理;
3.实现应用全生命周期管理,满足应用开发、主动化部署、主动化运维等应用服务全生命周期管理需求;
4.基于容器云平台的本领,实现应用服务的弹性伸缩、灰度发布等本领,满足多种业务需求。


三、华泰容器云的落地路径
容器云平台的落地凝聚了很多特色功能,这些功能经过设计、验证和实践,有效支撑了容器云平台稳定、高效地运行,下面简单介绍4个落地路径:网络模式、弹性伸缩、有状态服务、应用市场。
3.1 网络模式

为了让用户应用平滑地迁徙至容器,比如一些传统应用大概监控应用需要直接使用Host的物理网络,也为了保障网络管理的同等性与网络性能的高效,我们选用了Macvlan网络模式。Macvlan本身是linxu kernel的模块,本质上是一种网卡假造化技能。其原理是在宿主机物理网卡上假造出多个子网卡,并分配独立的 IP 地址和 MAC 地址,把子网卡分配给容器实例来实实际例与物理网络的直通,并同时保持容器实例的隔离性。Host 收到数据包后,则根据差异的 MAC 地址把数据包从转发给差异的子接口。在网络上看起来容器直接连接到物理网络,和物理机和虚机没有区别。Macvlan共有4种模式,我们使用的是高性能的Macvlan Bridge,如下图所示:

3.2 弹性伸缩

弹性伸缩是容器云的重要特性和业务场景。容器的封装性使其横向扩展非常方便,但是想做好弹性伸缩这还远远不够。比如要做到基于CPU和内存负载的弹性伸缩,不仅要做好容器的监控,还要配合负载平衡、灰度发布等功能,最重要的是弹性伸缩的时机,这里面有些是技能题目,而有些需要根据差异业务做定制化处理。还有一点实践履历,善用Kubernetes的Liveness和Readiness Probes对增长应用步伐的稳定性很有资助。通过健康检查保障微服务之间的启动顺序,当应用步伐预备好的时候,它们才会开始服务通信,这使得主动调度、滚动更新和弹性伸缩运行得十分顺利。

图6 弹性伸缩
3.3 有状态服务

众所周知,因为容器本身的磁盘空间不大,而且容器的可写层数据在容器重启后会丢失,所以容器没办法很好地承载有状态服务,而是被广泛应用于无状态的服务。但是我们的容器云平台基于容器和容器编排技能,并结合分布式存储技能,有效支撑了有状态服务,比如容器化RDS。其焦点思想是计算与存储分离,将数据库运行于容器中,而将其数据在外部分布式存储中恒久化。结合多种调度计谋以及快照功能,可按需创建满足差异业务场景的数据库服务。

图7 计算与存储分离
3.4 中间件市场

随着越来越多的应用系统相继建设,对一些公共中间件的需求越来越强烈,比方redis、kafka等等。同时这些中间件的运维工作也越来越繁重,申请底层资源、安装配置中间件、调试等繁琐、重复性的工作占据着中间件运维人员的大部分时间,容器化的中间件出现大大降低了中间件维护人员的工作量,无需关心底层资源和界面化的配置操作显著提高了中间件的发放效率。后续中间件的自服务是我们的努力方向。

图8 中间件市场



四、总结和展望

容器云平台在敏捷转型之下应运而生,也很好地支撑了IT建设的敏捷转型。开发、测试和运维人员通过容器云平台真正实现了高效协作,形成了DevOps的最佳实践。我们计划在后续的容器云平台建设上更多地考虑云原生的思路,推动以容器为中心的云原生生态,赋能金融科技发展。

原题:《容器云在证券行业的探索与实践》
作者:华泰证券管文琦、朱凯
未经授权,请勿转载


点击阅读原文关注社区  容器云技能主题 ,将会不断更新优质资料、文章,您也可以前往提出疑难题目,与同行切磋交流。

下载 twt 社区客户端 APP
与更多同行在一起
高手随时解答你的疑难题目

轻松订阅各领域技能主题
浏览下载最新文章资料

或到应用市肆搜刮“twt”

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表