数字金融时代,蚂蚁金服是如何谱写出金融IT架构的进化史的?
最近几个月来,蚂蚁金服对外技术合作的步伐正在加速。
在银行合作方面,从5月中旬开始一个月的时间,蚂蚁金服已经与华夏、光大、浦发、中信4家大型银行,以及城商行天津银行等分别签署了战略合作协议,在分布式架构、手机银行、风险管理、普惠金融等领域展开合作。
尽管在这一波银行拥抱金融科技的浪潮中,蚂蚁金服开放势头迅速,但在蚂蚁金服看来,未来还有很大空间。
“我们在合作伙伴和金融机构的合作当中发现,大家还是有技术瓶颈,如果不开放、不解决大家共同面临的问题,没法把支撑业务作数字化转型进行地更彻底。”在近日召开的GIAC全球互联网架构大会上,蚂蚁金服基础技术部中间件团队负责人杨冰告诉雷锋网 (公众号:雷锋网) 。而在这次大会上,杨冰也为刚于4月底开源的金融级分布式中间件SOFA代言,面向华南技术社区分享数字金融时代的云原生架构转型路径。
(图为杨冰在GIAC全球互联网架构大会上发表演讲)
蚂蚁金服的去IOE:业务反推技术,技术促生业务
蚂蚁金服对外技术输出的故事,要从“去IOE”说起。
2008年,前微软亚洲研究院常务副院长王坚空降阿里巴巴,出任集团首席架构师。在到任后不久,王坚就提出了相当超前的“去IOE”理念,即在阿里巴巴的IT架构中,去掉IBM的小型机、Oracle的数据库和EMC存储设备,代之以自主可控的自主研发技术。
“去IOE”计划2009年在阿里开始实施,标志着阿里技术开始全面迈向云计算架构,此举也推动了阿里云业务的发展,这一年9月,“阿里云计算有限公司”正式成立。
而在另一边,后来让所有网民疯狂的“双11”购物节也在2009年首次到来。第一个“双11”购物节虽然只有27个商家参与,销售额“仅有”5200万元,但当时几乎所有的人都没有意识到这个活动的潜力。
“2009年双11支付宝是差点有宕机的危险的。”杨冰告诉雷锋网。“当时是支付宝第一次经历双十一,实际的流量高峰超出所有人的预期,当然也超出了系统的承受能力,当时账务库和会计库是部署在一起的,眼看数据库快要跪了,我们以最快速度把会计的应用给 kill 掉,才勉强撑过去。从此便启动了各种大型的技术改造,并坚定的走上了自研道路。”
据杨冰介绍,在06年以前,支付宝关注的还是“快”,即如何更好地响应淘宝的支付业务需求问题,当时在技术上也是基于“烟囱式”的经典单体应用架构体系;06年以后支付宝的体系架构进入第二个阶段,鲁肃(雷锋网注:即阿里巴巴合伙人,蚂蚁金服CTO程立)、阿玺(雷锋网注:即蚂蚁金服副CTO胡喜)等人帮助支付宝整体架构往SOA(Service Oriented Architecture,面向服务架构)化的方向进行设计。
但SOA的架构更多讲的是“怎么样把功能单元进行标准定义,通过接口和统一的约定对外提供服务”的方式,而对于在分布式架构下对大规模服务和计算资源作有效管控治理并没有过多涉及。在这样的背景下,蚂蚁分布式中间件SOFA应运而生——当时叫做Service Oriented Fabric Architecture,即在SOA的基础上加入了“Fabric”(编排、编织)的概念,确保支付宝所有服务如账务、交易、支付等系统能通过服务化、模块化的方式高效组织和协同。到08年支付宝已经实现关键核心系统的模块化拆改造。
杨冰介绍,当时支付宝已经按中台化模式在运作,部分核心的系统都是以中台的模式沉浸在底层,有共性的业务能力也服务化的方式沉淀下来,帮助前台应用快速响应业务需求和变更。
而2009年“双11”暴露出小型机和商业数据库缺乏弹性、无法适应业务急剧变化的瓶颈,则加速了支付宝在分布式架构上的进一步演化。
当时的支付宝正处于一个飞快的增长时期——从2009年到2013年,支付宝的业务量每年都在以两三倍增长,而且一般来说,当年的峰值会是下一年的平均的业务量。新的架构不仅需要考虑满足业务演进,而且还要考虑下一年可能翻倍的容量峰值变化,无论从成本上还是技术上,推进微服务化、分布式架构看起来都是最适合的选择,希望能通过成本低廉的设备集群来提供一个高性能容易扩展且总体稳定的系统。
这样的转变同时也遇到了很大的技术难题:首先是服务拆分后的一致性问题,但同时需要考虑的另一个问题则是效率,支付宝当时的交易量已经处于一个相当高的水平。当时业务已经多以支付为主,为保证资金安全,技术团队当时已经开始通过“分布式事务”解决跨多个服务和数据库的交易一致性问题,同时兼顾性能。
此外对容灾、业务的连续性也是一个考验点。但对当时的支付宝来说,如果仍然采用旧有架构、通过一般常见的数据分库分表的方式修修补补,是没有办法满足系统大规模扩展的需求的,对同城甚至异地的多机房部署也带来了很大挑战。支付宝的架构通过一种“单元化”的方式进行改造,使整体业务处理能力得以在机房层级进行横向伸缩。
彼时,从早期淘宝收藏夹项目里逐步发展起来的一个分布式数据库OceanBase已经开始纳入到整个支付宝的技术架构当中,并按契合金融级需求的方式去发展,从数据库的层面解决容灾和扩展性的问题。支付宝开始逐步形成了一套以自研数据库,自研中间件和云平台架构为支撑的这样的一套三代架构,在三代架构上,所支持的上层应用会变得更丰富,而支撑业务的技术中台能力也变得越来越强。
在此过程中,SOFA也经历了若干次的边界延伸。最初的SOFA是一个重点在“模块化”和“服务化”上的开发框架,随着公司的技术架构的升级,SOFA的边界也扩大到应用和底层设施之间的中间件;而再往后,这个边界又被扩大到DevOps
平台和金融业务通用组件BPaaS 平台,在架构上也从单体架构转到服务化架构,在向着云原生(Cloud-Native)的方向发展同时,更进一步地实现异地多活、无损容灾等金融级特性,而现在SOFA已经从中间件这一层开始,逐渐对外进行开放和开源。
“业务在前面冲的很猛,技术必须不断寻求突破,除了每次要像救火一样,必须还要有额外的储备和沉淀,每一次大促都会让我们变的更强,让平台的演进从业务驱动逐步转变为驱动业务。”回忆起整个发展历程,杨冰颇有感慨。
2013年5月17日,阿里最后一台小型机从支付宝下线,这对阿里的“去IOE”来说是一个里程碑式的节点,标志着新的互联网技术和架构开始在阿里内部取代了传统的IT技术和架构。
相比起以底层基础设施的改变,阿里IT架构的整体改造的更大意义在于应用架构的重建,推动了应用的云化和微服务化,为业务创新插上了翅膀,新的IT格局不仅重构了阿里的技术框架,更让阿里从一家电商基因的公司进化成一家技术公司,并重新定义了企业IT和业务的边界。
如同乔布斯所说的“Connecting the dots”,从当初的“去IOE”开始,引发的支付宝IT体系的变化和架构的重建,支付宝的技术人员通过将一个又一个的变化连接在一起,在实现技术架构的基础上延伸出更多的新业务,最终勾勒出今日蚂蚁金服业务布局的基础。
从对内到对外,蚂蚁金服的又一跃
2014年,蚂蚁金服成立。2015年9月,蚂蚁金服推出了“互联网推进器”计划,提出将推动平台、数据和技术方面的能力全面对外开放,在5年内助力超过1000家金融机构向新金融转型升级。
“对内服务”到“对外服务”的改变,也导致了蚂蚁金服技术架构的第三次升级:以前蚂蚁金服的一些技术只要对内服务好性能,控制好性能成本,效率各方面就可以了,在这一阶段则要变得更兼容、更开放,让合作伙伴可以在上面做二次开发。
为配合合作伙伴转型升级,从2015年起,蚂蚁金服开始针对金融客户需求做金融科技开放。长久以来,银行对于金融IT系统要求极高,金融级的技术要求一直秉承这样的原则:资金安全,交易强一致、数据强一致、准实时交易、资金核对、异常熔断、快速恢复;达到99.99%以上的高可用性和异地多活容灾能力;安全,多层检测、感知与防御各类安全攻击;性能,包括响应时间、并发能力、快速调集资源;单笔交易和峰值交易平均成本;全链路数据质量管理与治理能力等六大要求。可以说这些需求,在蚂蚁金服的业务和技术升级中都有所涉及。
但对于同样场景复杂程度很高的业务场景,银行和互联网公司采用了不同的IT架构模式:与蚂蚁金服的“大中台”的做法和分布式架构不同,银行的IT架构仍以IOE为主,很多产品逻辑和业务逻辑沉淀到了数据库层面,应用系统则做得很薄,通过简单指令交互和数据组装来完成业务逻辑,架构模式正好与蚂蚁金服反过来。对于许多银行来说,这种近乎“推翻重来”的做法接受起来要困难一些。
尽管如此,“业务上云”对于银行来说仍然有着强大的吸引力。对于银行来说,“互联网化”是金融创新的主要趋势,将自身业务上云,本质上是可以将原来固定场景化的业务抽象成随时可以被调用的、面向消费者的服务,可以让银行形成一个敏捷的架构,从而更好更灵活地根据客户需求设计新的业务和为客户服务。
“令人欣喜的是,在银行业中云计算的价值已经深入人心。”杨冰说。“所以阿里也非常直白地提出,上云就上阿里云。大家觉得云是可伸缩的,是一个在效率方面可以带来提升的,成本方面带来下降的技术。”
同时杨冰还提到,尽管银行都在往云平台上走,很多时候大家的理念是相通的,但由于金融领域的特殊性,无论是业界提得比较多的云原生,还是在分布式的架构方面都还存在认识上的差异。大多数银行在这方面的实践仅停留在一些比较初级的远程调用组件、分布式文件系统等阶段,由于金融领域对一致性、无损容灾、弹性伸缩和成本的极致性的要求上的差异,其实已经相差的比较远了。如果银行还是仅仅是去看业界本身的非常普世的建议的话,“可能还会踩到一些我们踩过的坑。”
一方面在短期内无法离开IOE,一方面希望最大程度利用云计算的灵活性、敏捷性,双模IT成了很多银行尝试数字化转型时最合适选择。
杨冰告诉雷锋网,以蚂蚁金服、阿里云共同与南京银行合作的“鑫云+”互联网金融平台为例,保留了银行可靠稳定的传统核心系统,同时采用业界成熟可信的分布式架构技术搭建新平台,建立一个更开放、灵活、松耦合、高性能、易扩展的第二核心。新平台需要兼顾敏捷性和稳定性,满足业务快速迭代和技术架构弹性扩展的需求。
杨冰还告诉雷锋网,在做对外的技术开放的时候,蚂蚁金服不是重复发明一个轮子开放给外部的合作伙伴用,而是把现有技术作充分的产品化改造,开放和开源的产品都是“自己先吃的狗粮”(开发梗,“eat your own dog food”,即内部先使用自己的产品),包括SOFA在内,同步给内部和外部用是同一个版本。
“不过,我们还有一些要去做历史兼容的东西不太适合去开源,另外一些比较超前的东西,包括全业务混部这样的本身也还在演进的、或者对于大多数合作伙伴和机构客户还暂时不太需要的技术,可能我们会先在内部发展。”杨冰说。
这对于合作伙伴来说是一件好事。这意味着在蚂蚁的开源平台上,用到的都是经过蚂蚁严苛业务场景充分验证过的成熟技术。而从产品发展的角度,蚂蚁金服也是在把多年来在支付宝上积累的技术和运营经验开放给银行客户去推出下一代的数字化银行,搭建更多场景服务,在更多场景下去锻炼,最终构建一个相互都能获益的社区生态。
基于这种思想,SOFA在开源的时候并没有选择类似“全家桶”必须全套采用的形式,整套开源项目由许多非常小但又是可以被独立拿出去用的类库和组件组成,如果用户发现SOFA里面某一个东西很好,他期望拿过来用时,既可以合在一起用,又可以拆开用,这样的话就非常有利于开源社区的丰富和活跃。
“我们觉得社区肯定是要大家一起玩的,只有这样才能称之为社区。”杨冰说。“我们所设计的并不是一个特别定制化的产品,我们会考虑跟外部的一些平台做融合。所以,我们在设计框架也好,微服务也好,或者是我们将来会开放的其他组件也好,会优先考虑跟周边生态有很好的结合性。”
。