3年时间、2亿用户、2200+套系统上云:招商银行ACS原生云怎样练成?


熊爱国,招商银行资深IT工程师,招行总行信息技术部原生云团队主管。

一、云建设的背景和选型

在开始之前先说三个问题:为什么上云、为什么选择原生云和全栈云、为什么是多云和混合云?

凡事皆有因果。2015年招行组织了前往美国硅谷进行云计算考察当时考察的结论是云计算是新IT变革的决定性力量,招行需要一个先进私有云来构建科技体系,实现科技的扁平、开放、共享和敏捷,并支撑全行业务更加融合互通及快速发展。
2015年做出这个决策之后,包括咨询从2016年到2017年才开始真正的启动。刚才同事讲到招商银行三年上云工程从2020年开始的,实际上三年上云之前还有一个三年,从2017年-2020年主要就是招行私有云平台建设的过程。
经过三年的努力,招行将私有云平台建设好并具备上云的条件,才启动三年上云的工程。

1.1 为什么上云

当年为什么要决策上云?其中一个原因是传统技术架构已成为了进一步创新发展的瓶颈。包括两个方面:传统主机系统和传统的开放系统

比方传统的主机系统招行用到了IBM z390、IBM AS400,用到了Tandem,就面临一些问题:COBOL语言在现代化的场景下已经不太适应。

面临的诸多挑战:比如难以横向扩展、与主流技术脱节、生态封闭、参与者少等等。传统开放系统也有问题,比如资源割裂、敏捷和弹性差、技术栈繁杂、应用架构散乱等。

因此,招行在上云过程形成两个洞察

  • 我们认为整个技术的发展已经从头部厂商引领转变为开源社区的引领。因为传统的IBM、EMC、Oracle 等,在技术的引领方面已经落后于开源社区。

  • 外包外购到自主可控,金融行业转型到云需要做很多的探索和创新,传统的头部厂商不能给更多的引领和帮助。所以很多工作需要我们自主可控、自主创新。

1.2 为什么是全栈云和原生云

为什么是全栈云和原生云?原生云是在云发展过程中提出的一个概念,要求云在技术架构、组织、流程和工具等各方面均要具备先进的特性,以AWS为首的公有云正是原生云的最佳实践,建私有云就必须建原生云,以最先进的公有云为目标导向。

全栈云是以相对于局部的 IaaS 和 PaaS 云的,在建云的时候是选择 IaaS 云还是PaaS 云?招行坚持必须是全栈的。
在面向用户场景方面,构建以满足技术人员云原生应用开发、云服务开发、应用和服务部署以及业务人员使用云场景的全栈功能云,而非实现局部的 laaS 云或 PaaS 云。

1.3 为什么是多云和混合云

经常看 Gartner 报告的同学会知道“双模(BIModal IT) ”,就是以标准+稳态为主的传统架构和以云原生为主的云架构。

在建设私有云的过程中,招行发现云的理念和架构已经可以接受考验,传统架构达到的可用性,云架构同样可以达到。

所以我们要求传统架构也可以上云:可以上一个稳态的云,这正是招行所理解的多云:稳态云+敏态云Gartner 报告里面显示85%企业采用 Multicloud 多云架构,多云现在不仅仅是一个策略,而是一个实践。稳态云:金融交易云FTC,还有一个敏态云:ACS,这正是招商银行的多云战略。

混合云官方定义混合云=公有云+私有云,招行理解是跨多云的统一云平台,具有高可用、安全异构、避免锁定、安全信创等特点。

1.4 招行私有云特征

招行私有云特征:云开两朵、一云双栈、一云多芯、开放+云原生。
  • 云开两朵:面向金融核心稳定的金融云,面向开源开放敏捷的原生云。
  • 一云双栈:招行私有云发展过程中采用两种技术栈,一是使用X86技术栈的通用区,另外是安可信创技术栈的信创区。

  • 一云多芯:通用区主要使用 X86 的芯片,在信创区更多使用国产芯片。

  • 开放+云原生:招行坚持开放、全面面向云原生的架构,容器化、微服务、DevOps、Serverless 等。这就是招行私有云的特征。

二、云建设的历程和现状

下面简要介绍下 ACS IaaS 平台发展历程:

  • ACS 1.0:2015年做出建设私有云的决策,2017 年招行建设了首个云计算实验室,并且在2018年基于WS2016建设一朵分行云,此时仍处于试点阶段。
  • ACS 2.0:2019年,我们将ACS原生云升级到了2.0,已经具备3AZ云原生架构,无论是规模还是可用性安全性稳定性已经到了一定的水平,为三年上云工程打好了一个基础。
  • ACS 2.1:2022年,招行根据发展情况做出全面上云的决策。全面上云是指所有业务都上云(敏态业务+稳态业务)。

  • ACS 3.0:2022年ACS也升级到了3.0,此时已经实现全行一朵云,建成大规模先进的私有云。在这个全面上云过程中我们也符合国家的信创战略,与腾讯云合作,建设了原生云信创区,正式实现“一云双栈”和“一云多芯”,持续迭代两个技术栈,并实现两个技术栈全面支持IPv6+IPv4。

2.1 ACS PaaS 平台建设历程

2015年基于 Pivota Cloudfoundry,成功投产了 PaaS 1.0 容器平台的落地;2018年引入 RedHat OpenShift 作为 PaaS 云的底座;2019年,在 ACS 1.0 的基础上打造了ACS PaaS 容器平台,并实现了相关的部署和服务。
2020年根据发展状况,评估平台可用性稳定性以及规模和容量,已经能够满足招商银行上云需求后,启动三年上云。2020年开始,ACS PaaS平台取得了巨大的发展,2020年已经能够支撑全行上云。

当前,ACS PaaS平台在三个方面取得较大进展:

  • ACS PaaS 容器平台已经发展到了3.0
  • 基于 ACS 信创技术栈也打造了一个全信创的平台
  • 招行开始自研 Kubernetes ,在 2022 年招行推出自研的 CMB K8S,打造完全可控的容器平台。同时在这个过程中逐步扩大规模,最终在2022年全面实现了上云。

2.2 应用上云历程

总结上云主要分为两个阶段,一是上云试点阶段,包含分行上云试点和总行上云试点。

启动全面上云之后,上云速度显著提高,2020年700+系统上云,2021年1500+系统上云,2022年9月全行所有的系统均实现了上云。

上云不光是一些不重要的系统,招行最核心应用——手机银行、掌上生活等都实现了上云,共计2200+系统完成了上云。

招行当前的规模原生云已经实现双 Region+11AZ 架构,物理服务器突破2万台,容器实例数突破40万+,2022年底完成了100%上云。在架构上面,IaaS 平台技术从微软通用技术栈发展到微软+安可双栈架构,PaaS 容器平台从 OCP 逐渐过渡到招行自研的 CMB K8S 架构。
当前在做建立云原生的成熟度,通过应用分类分级提升可用性,在不断的推广招商银行自研的 CMB K8S,并且在信创技术栈方面持续的迭代和升级。在未来的一段时间信创技术栈会有一个较大的突破。

在2022年原生云可用性达到99.995+%,大致相当于 IBM AS400主机的水平,在同业中处于领先地位。
应用上云率100%、容器化程度90%以上、微服务能力在行业处于领先地位,获得了IDC2023亚洲(银行业)基础设施现代化领航者(中国)、人行金融信创优秀案例。

2.3 发展趋势总结

总结下来发展和历程有四点:
  • 稳中求进:是从单技术栈(通用区)发展到了双技术栈(通用区+信创区)。
  • 安全合规:从开始的单网络栈 IPv4 到双网络栈(IPv4+IPv6),建设招商银行私有云的过程中主要是通过招行自己的技术在不断的推进,把两个技术栈通用区和信创区都实现了 IPv4+IPv6 的双网打通。招行 IPv4+IPv6 是全路径的,包括从前端负载均衡 → Web服务器 → 应用服务器 → 容器平台都使用了IPv6。
  • 有的放矢:容器化和微服务化,我们借助一些第三方的力量来帮助我们做云原生云服务的改造。
  • 小步快跑:我们在上云的过程中首先是建立一个云计算实验室小规模的试点,建设一个分行云把分行拿上来试点,当条件具备环境成熟的时候我们就启动全面的上云。

三、问题和风险

在上云过程中我们也碰到了大量的问题,包括安全、网络、体验、运营运维、业务连续性、上云方面的问题,PPT上的每一行字都是我们的血泪经验和教训,都是在过程中发现问题的思考与总结。

3.1 安全的问题

安全方面:DMZ 和 BIZ 安全方面的问题,招行上云要不要把这两个区合并到一起。从云计算技术角度来讲,可以通过 VPC、安全组、虚拟防火墙做到虚拟的隔离,但是要不要做这两个的虚拟隔离。招商银行选择物理隔离,因为银保监会是要求物理隔离的。这不仅仅是一个技术问题,实际上也是一个策略问题。

两地三中心,招商银行每一个中心对云计算来说都是做一个region,每一个 region 都部署了一个3AZ 架构。必须采取云计算的标准高可用架构才能解决我们的问题,稳态业务能够上云,云上的高可用架构通过多年的验证是行之有效,并且不会因为上云把安全合规标准和要求降低。

3.2 网络的问题

网络方面:这方面问题非常的突出,主要就是因为 SDN 引入,招行上云是上一个彻底全栈的云原生的云,所以必须要用软件定义网络。肯定会面临一个和传统的物理交换网络同样存在的问题,就是超时丢包、网络容量和传输瓶颈等等。这些问题都是没有现存解决方案的,都是要在上云的过程中,在建设过程中持续演进,迭代不断优化。

我们在这个过程中花费了大量的努力,最终把超时和丢包优化到原先的低两个数量级。最开始上云的时候有很多投诉,丢包、超时、延时不如原来的云下的性能,我们没有放弃,持续优化,现在已经没有客户投诉。我们也做了大量的扩容和优化,既要运用 SDN 的优势,也不让容量延时丢包等问题影响到上云,在这个过程中需要做大量的优化和控制。

3.3 体验的问题

体验问题:传统上,金融机构IT类似保姆式服务,实际上云之后是自服务的模式,自服务模式就需要去推责任共担模型,责任共担模型在公有云是非常普遍的,私有云推动有很大阻力。

习惯上,有一些研发团队和业务部门习惯保姆式的服务,现在做自助式服务转变比较困难。在招行流程和分工做优化才能够适配。在传统的IT里面是没有租户体系的,上云一定会有租户的概念,一定要建立自己的租户体系。我们的云不仅仅是要服务于总行上云,也要服务分行上云,还有服务子公司上云,需要不断优化和调整我们的租户体系。

3.4 运营运维的问题

运营和运维问题:我自己也是一名运维老兵,在传统领域不太重视运营的工作,上云之后运营和运维同等重要。之前运营只是运维的一小块,但是在上云之后这个工作会非常的突显,资源治理/计量计费,如果上云有还不去做云运营的话,这个上云一定会花很大代价和成本,且收效也不是很好。
所以上云之后一定要重视运营工作,招行在上云之后将组织架构做了适当调整,有一个专门的团队来做云运营。当然云运维工作也是非常重要的,云运维本身要保障站点可用性,所以这个工作只能加强不能够削弱。

3.5 业务连续性的问题

业务连续性:在上云前很多业务连续保障是依赖于物理机的可用性,上云之后无论是 X86还是C86还是Arm,可用性肯定是比不上 IBM,上云之后大部分应用容器化、分布式、微服务化,怎么样保障业务连续性?从实际运用来看,招行在上云的三年过程中可用性是一直在向上走的,没有任何的损失,怎么做到的?主要就是要通过 AZ 隔离和切换,通过架构设计来去保障这个业务连续性。
招行在做三年上云经验总结就是强调架构设计是整个上云的基础源头。在业务连续的处置方面也发生了巨大的变化,以前做运维,业务连续性的处置是发现-定界-处置,但是上云之后发现-定界-处置落不了地,前面讲到分布式还有隔离,你很难去处置,甚至有时候你发现问题你都不知道是哪里出了问题,尤其上了 SDN、SDS 之后,很多问题不是一时半会能够定位的。
策略一定要发生变化,就是从发现-定界-处置变成发现-定界-隔离。现在每次出了故障和事件,第一时间先发现定界,然后直接隔离,根本不去分析问题和定位故障,因为你没有时间没有精力去做定位。幸好在上云的过程中,在应用开发范式和应用组织架构方面做了大量的设计,以便我们这个策略能够落地。
我就是通过隔离解决问题,2022年招商银行通过 AZ 容器平台隔离次数100多次,如果不是隔离的话就是一百多次故障,可用性肯定受影响的,但是很多故障根本就不考虑真正的根因在哪里,先隔离再说,隔离再去发现和解决,再去分析。
还有就是三板斧的建设,我们业务联系性保障是要求5分钟解决问题,三十分钟没有解决就需要上报银保监会。三板斧的建设非常重要,就要求我们在具体处置方面要把三板斧做得更好,三板斧就是重启、隔离、切换。三板斧的建设目前在云运维已经有60%以上的场景已经实现了三板斧的建设,也就是说绝大多数故障处置用三板斧就可以了,而且三板斧的建设还要持续的予以落地。
最后一个是混沌工程,上云之后混沌工程是一个必须的,因为你不知道它会在哪个地方出问题,所以一定要通过混沌工程模拟和演练才能够识别。
3.6 上云的问题

上云的问题:包括流量调度、灰度发布、混合部署、迁移搬迁,三年上云涉及到了大量应用的迁移搬迁——从传统环境往云上进行搬迁。也需要有相应的工具和条件,搬迁的时候能不能实现灰度搬迁?搬迁过程中IP地址保持不变,或者搬迁过程中能够是流量式分批介入。

还有统一日志、链路追踪,这都是非常重要的。这些问题如果得不到解决,是很难定位和分析问题的。尤其是链路追踪,必须实现全链路的追踪才能够真正实现快速定位和解决问题。还有信创替代等都是在上云过程中需要面对和解决的问题。

最后讲一下招行上云过程中的经验和趋势。

四、经验和趋势

4.1 顶层设计在云建设中的关键性

首先强调顶层设计云建设中重要性,包括构建企业级云能力框架、保证云使能的建设原则、在探索中交付,在发展中完善和锚定业务场景规划总体构架。这个流程并不是一步到位和一次性规划好,必须在上云过程中不断、持续的迭代和优化。

4.2 集中力量打磨云平台的关键组件

通过平台化、服务化屏蔽基础设施的复杂性,持续改进服务质量。

重点提下招行自主研发的几个工具,包括用户侧的云管理平台,运维侧的云运维平台。还有公共能力,CMBAgent、CMDB、监控平台、事件平台等,把这些能力牢牢抓在自己手里才能够脱离厂商的控制和约束。

4.3 发挥云基础设施敏捷弹性的优势

通过层层支撑最终赋能业务,通过能伸能缩来减少资源浪费。在应用方面要打造标准应用架构,招行 2000+应用上云,应用的架构不能够千奇百怪,必须要规范应用的标准架构。
因此,招行推出了自己的云开发框架、云开发范式,来规范应用架构,通过应用的分类分级来打造提升可用性。
在 PaaS 服务方面,要构建业务不中断前提下的动态扩缩容能力,在 IaaS 服务资源快速交付能力,提高交付成功率,目前交付成功率达到97%以上,交付的速度最慢的云服务也能够在22分钟交付完毕。
在基础设施方面我们始终坚持存算分离的高可用架构和可扩展的软件定义网络。目标是保障基础架构的弹性和敏捷。

4.4 活着是第一要务,恢复业务是第一优先

我们认为解耦的可用性才是管理的可用性,多管齐下提升容量性能,通过灰度升级保障服务不中断,构建多层次的保障体系,业务活着对我们就是0和1的关系。

4.5 开放才能有未来

招行的私有云一定要坚持一云双栈,一云多芯。通过通用区和信创区的双栈混部架构,满足应用支撑能力(业务需求)、独立自主(监管要求)、成本(可持续性)。

双栈使用 x86 和 c86,它们同源,代码可以复用,可以节省研发投入,并且通过前端的流量调度可以实现平稳的迁移,在上云的过程中是先以信创应用试点逐步推广。

4.6 紧追前沿技术,分享技术红利

刚才强调了招行现在完成了的第一步,从传统架构向 OnCloud 的转型——把应用迁移上云,最后实现从 OnCloud 到 InCloud 转型,那怎么实现这个?

需要持续的飞轮的敏捷迭代才能够实现,比方说就是要实现云开发范式、云原生架构模型、持续演进、全场景覆盖和数字化向智能化这样一个飞轮架构,通过不断的敏捷迭代使飞轮能够旋转起来,这个旋转速度越来越快,最终必将实现一个 InCloud 云的架构。

以上就是今天分享的内容,谢谢。


本文根据演讲者在 GOPS 2023·深圳站演讲整理而成,如有图文不妥,请以视频为准。更多精彩,请关注高效运维公众号。

作者简介:

熊爱国,招商银行资深IT工程师;招商银行总行信息技术部原生云团队主管。长期专注在金融科技和 IT一线。熟悉银行 IT 架构和系统管理。经历从大机时代、小机时代、云计算时代,到现在的云原生时代。十八年开放平台技术架构、运维体系建设老兵。亲历云原生技术快速发展若干关键时刻,有着丰富的云建设、云运维和云运营相关经验,对如何“建好云”、“用好云”和“用省云”有独到理解。
熊爱国老师 PPT 领取

长按下方二维码,立即领取

还不过瘾?还想了解更多国内一线名企DevOps & BizDevOps 落地指南?
6月29-6月30,2023 DOIS DevOps 国际峰会暨 BizDevOps 企业峰会·北京站,BizDevOps、精益/敏捷、SRE 稳定性、AIOps,你想看的内容,都在这里!
▲扫码图片二维码,进入大会官网,上下滑动,查看更多
近期好文:

世界上第一个SRE是如何诞生的?

被 Kubernetes 报错整懵了?试试这些排障方法

“高效运维”公众号诚邀广大技术人员投稿

投稿邮箱:jiachen@greatops.net,或添加联系人微信:greatops1118。
点个“在看”,一年不宕机

标签

发表评论