以 Docker 为代表的容器技术正在以一种不可阻挡的趋势席卷全球,但真正的落地过程依然十分坎坷。6 月 20 日北京,在 2019 企业容器创新大会上,业内首家覆盖业务全流程、运营全体系的移动信贷整体技术服务商飞贷金融科技的副总裁陈定玮分享了飞贷的数据库生产容器化及 Istio 应用的经验。基于飞贷金融科技容器化道路的实践与经验,InfoQ 记者也专访了陈定玮,并将其分享和思考整理如下。

 

传统的 IT 流程、基础架构和运维模式已经无法满足金融行业的业务发展需求,传统银行早已意识到转型的迫切性,但如何落地,其实对银行的智慧挑战很大。同时,客户对于金融服务的期望和要求日益增加,对于银行在全渠道体验、定制化内容、智能数据、实时、便捷及移动等方面的服务,不断提出更高要求。

1、传统金融行业的痛点

  • 如何快速响应用户需求

金融行业信息化建设的关键是及时响应业务需求,适应不同商业环境的 IT 架构,满足不同部门、客户和合作伙伴的各种需求。然而,传统的研发模型已经成为应用交付和迭代速度的瓶颈。

  • 烟囱式架构如何向分布式架构无痛转型

在 IT 基础架构层面,很多金融企业都是「烟囱式」架构,「烟囱式」架构带来的最大问题是数据孤岛, 不同的应用系统之间的数据无法实现共享。并且,在金融走向普惠、拥抱长尾市场的过程中,传统金融 IT 架构无法支撑巨量涌入的长尾客户。

  • 高复杂环境下如何确保系统的高可用性

金融 IT 运维人员的压力之大众所周知,这源于金融行业对业务连续性和可用性的严苛要求。随着金融信息化的不断发展,金融 IT 环境正在变得越来越复杂:应用纷繁复杂、IT 架构异构、系统规模日益增大……这些都导致运维的难度越来越大,运维部门需要全新的思路来应对复杂环境下 IT 系统运维的压力。

Docker 为代表的容器技术正在以一种不可阻挡的趋势席卷全球,其最大的过人之处在于它统一了云的交付件,从而给企业 IT 转型带来变革性的思路,赋予企业 IT 快速响应和持续创新的能力。

容器技术的不断发展和成熟为传统金融企业的容器化建设提供了新思路,但真正的落地过程依然十分坎坷。正如飞贷金融科技(以下简称飞贷)副总裁陈定玮在接受 InfoQ 记者采访时提到的,“其实,现在任何行业对容器的看法基本一致,都是非常认可的。从金融行业的角度,认可归认可,但大部分的实践还是基于边缘系统,而真正的核心系统想要落实容器化建设,中间要经历一段时间的“阵痛”。这就导致虽然大家都看好容器的发展趋势,但由于金融行业本身的特殊性,还是有很多企业不敢贸然行动。”

不敢贸然进行容器化建设的原因有几点:

一是人的因素。银行的科技人员是否足够了解并掌握容器技术,如果技术人员不具备这样的技术能力,是没办法进行容器化建设的。

二是金融行业的特殊性。银行对于新技术的引入非常审慎,由于追求安全第一的行业特殊性,金融行业与互联网行业相比,即使对新技术的“热情”很高涨也无法很快推行到核心系统。现在一些比较大的银行,渴望去尝试新的技术和应用,但目前仍处在经验积累阶段,还是只能在边缘系统尝试。只有当容器及相关技术在边缘系统运用得非常成熟和完善以后,才有可能慢慢地去取代核心系统,进而将新技术推广到核心部分。而且由于传统银行系统体量大,复杂度高,“包袱”重,探索出真正适合金融行业的技术方案和路线,需要经过一个很长的时间技术迭代。

陈定玮提到,“金融企业做容器化建设是一种必然趋势,但是整个进程的速度关键在于技术决策者,也就是 CTO 或者科技主管。他们对于新技术的运用以及怎么运用这件事情如果想得比较清楚,那么新技术的推动速度就会大大加快。”

2、历时4年的容器化之路

飞贷的容器化建设,起点很特别——公司内部所有的系统都是自研开发。容器化建设其实是对基础架构层的重新打造,自研系统的优势就在于对原系统和架构的改动不用经过第三方。陈定玮提到,“如果飞贷是采用第三方系统,那么每次新技术引进都需要跟合作方去谈,但问题是传统的软件系统对于基础架构这一层的事情并不太关注,这会在一定程度上阻碍基础架构层的技术改进。另外,飞贷的技术基因与其他公司有些不同,我们非常看重基础架构层的建设,因为这是整个飞贷赖以生存的一部分。从业务层面来看,飞贷本身有 C 端业务,并且是在解决 C 端用户遇到的问题和痛点的过程中,形成了最佳的解决方案,然后赋能给金融客户,这是飞贷与其他软件企业的不同,我们的商业模式里是有实体运作的经验,经过了生产历练且成效不错。”

容器化建设有两点显著的好处:一是弹性伸缩,二是容器化建设后,架构变小,这样系统恢复部署 / 运维速度会加快。

飞贷对于整个容器技术的理解和做法是:通过容器化去改变 RD 整个开发模式。有些企业在做容器化时,往往只是把虚拟化的技术替换成容器而已,但是实质上里面的东西没有变,这样容器技术根本起不到效用。比如,如果仅仅是将虚拟机换成容器,虽然系统容器启动时间会大幅缩短,由几分钟变为几十秒,但是系统的容器化构建编排需要几个小时,这样整个系统的交付体系效率并没有提升,甚至是变得更慢。整体效率考量才是企业做容器化想要达成的目的和结果。

飞贷的容器化建设不只是把 CloudStack 换成容器,而是把整个应用程序及研发流程,根据容器的规范和要求也做了大量的调整与重构,所以整个分布式系统的应用与部署才能变得更加高效。

陈定玮提到,“我们的容器化建设其实相当于重新开发了一套系统,之所以付出这么多努力去做这件事,除了看重容器化对于系统整体效率的提升以外,还在于通过容器技术可以解决很多实际问题,比如最重要的一点是节省了成本,这里面包括人力成本、效率以及硬件投入成本等,这往往是技术管理者最关注的地方。对于新技术是否采用的出发点,都是以成本去考量。飞贷整个容器化建设完成之后,物理资源成本相比私有云节省 40%,人力成本可以再节约 60%,研发投入可以再节省 40%,还有容器本身快速应用部署带来的效率的提升,比如可以在短时间内快速搭建出上百套现有环境,更快地服务 B 端用户。容器化对于飞贷而言意义重大。”

飞贷容器化建设的痛点

飞贷的客户主要由 B 端和 C 端构成,而促使飞贷进行容器化建设的动力来自于 B 端客户的需求。

飞贷采用混合云结构,私有云用 CloudStack 搭建,现有虚拟机规模在 3000~4000 台,如果没有做容器云平台,那么帮助 B 端客户搭建一套框架体系大概要花费 1~2 周的时间。当容器云平台搭建成以后,一天时间就可以部署上百套系统。同样的环境下,效益提升了 10 倍以上,物理资源也节省了 40%——也就是说,用原来的做法需要 100 台服务器,但是容器化之后只需要 60 台。

陈定玮提到,“B 端客户要在飞贷的平台上运行业务,就相当于将飞贷整个技术平台租给企业客户,由飞贷负责运维。这里面通常有两种模式:一种是我们提供金融云的服务,根据客户需求去定制化流程和服务;另一种是将飞贷的系统部署在 B 端。但这会存在一个问题,由于是分布式部署上百或上千台服务器,我们帮客户部署完,除了网路调通以外,他们后续的运维会非常复杂,不仅浪费资源,而且效率很低。但痛点就在于 B 端客户对资源的管控非常严格,导致后续在运维上比较棘手。”

做容器化以后,可以实现统一管理、统一调度,并且容器本身具有非常高的弹性伸缩的能力,因而在资源投入上会减少很多,这就满足了 B 端客户管控资源的需求。而且在容器化以后,不仅部署速度极大提升,也可以在一个管控界面上去追踪所有的应用与服务,从而节省人力的投入,这也是 B 端客户的技术人员也比较认可的方式。

飞贷容器云平台建设思路

对于飞贷的容器云平台的建设思路,陈定玮坦言,其实任何新技术的引入都要从三点来考虑:

  • 是否勇于尝试新技术;

  • 新技术能否结合实际来运用;

  • 评估技术成熟度和技术团队掌握能力,这里面包括两点,一是评估新技术是否足够成熟;二是判断技术团队是否有能力掌握。

早在 2015 年,陈定玮和他的技术团队开始研究容器技术,并做了相应的调研评估。2016 年开始试点,把容器 1.0 版本上到研发和测试环境。2017 年,开始调研和使用 K8S ,“其实在 2016 年的时候,我们也尝试了很多方案,但是当时容器技术