蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。
善逝:我是张奇龙,花名善逝,2016年清华大学硕士毕业进入蚂蚁金服,负责框架SOFABoot/SOFAArk的开发。当时选择来中间件团队,理由其实挺单纯的,希望能够深入地了解学习支撑蚂蚁金服这么大体量的工程技术。
余淮:最大的感受就是管理工作比纯粹技术工作要难很多。一个最普遍的情况就是,大部分刚开始从纯粹写代码到管理技术团队的同学,都无比希望回到只写代码的时候。
管理工作的本质是协调,管理的核心是人的行为,要对全局计划有合理安排并带着团队一起前进。而技术工作则更多看重的是能力,例如在某个专业领域的专业性前瞻性等,也就是我们说的深度和广度。
由于我所在的是一个技术型团队,基本上算是技术驱动型,所以管理工作和技术工作是密不可分的。平时我在技术工作中需要利用自己的一些经验与判断,和大家一起讨论一些技术方向,在实施过程中无需事无巨细,相信团队的力量,配合和协调团队及外部资源,将我们认定的技术方向落地掉。
SOFAStack架构由支付宝自2007年开始自主研发的SOFA(ServiceOrientedFabricArchitecture)框架发展而来,旨在解决SOA架构下的服务模块化编排协作(Fabric)问题。SOFAStack历经了多代架构演进。在2017年,伴随着蚂蚁金服科技的整体对外开放,全称正式升级成ScalableOpenFinancialArchitectureStack。
Scalable,以「异地多活」为目标,使系统能在多个数据中心内任意扩展,提供机房级容灾能力,保证业务连续性;Open,整体设计秉承「开放」原则,使新兴架构向下兼容,能与经典架构有机融合,同时开放技术标准,拥抱开源生态;F代表Financial,即这个架构是金融级,安全、稳定、可靠是其内在的属性,具备「分布式事务」和「无损容灾」能力,保证在分布式架构下承受高并发交易,在系统扩展、容灾恢复、更新发布时确保数据无损,服务可用。
在开发流程上,SOFAStack的发布基本上走的是小火车的开发模式,我们会在某个版本拉起的时候基本确认好这个迭代的功能点、开发测试排期等。
从2015年开始,蚂蚁金服开启了金融科技对外输出的战略,SOFAStack也走出了蚂蚁金服,甚至跨越了国界,被更多金融机构与合作伙伴所使用,如天弘基金、信美互信、南京银行、PayTM、DANA钱包等。在与合作伙伴以及客户的沟通、合作过程中,我们发现了SOFAStack的理念和能力也正是很多金融行业的企业所需要的,大家或多或少正在规划或者已经在做类似的东西,但缺乏像蚂蚁金服这么大的流量来提供考验,也缺乏专业团队的长期投入,更缺乏丰富的金融场景和严苛的业务压力来驱动技术持续发展。
在金融科技对外输出的过程中,我们内部已经进行了一定程度的代码重构,例如历史兼容逻辑的剥离等。关于开源,内部一直有开源的讨论,只是一直没彻底决定,直到2017年双十一结束后正式决定开源。经过了一系列的准备,2018年4月,SOFAStack正式开源,由技术团队进行日常维护和专门的团队运营。目前SOFAStack在蚂蚁金服有将近2000个应用,是被蚂蚁金服实践证实的一套框架,开源出去,让更多的人去体验、使用,对于SOFAStack的发展具备很大的意义。
为了实现我们开源「OpenCore」的策略,我们投入了大量的重构工作,以可扩展化的方式来层层构建SOFAStack的能力,保证SOFAStack的内部版本和开源的版本采用的是同一个内核。所以SOFAStack的内部版本就是在开源版本之上扩展了内部逻辑和历史版本的兼容逻辑。
开源版本的核心逻辑内外是一致的,并在蚂蚁金服的生产环境中被广泛使用,同时会随着蚂蚁金服自身业务诉求的驱动,不断地演进。整个过程肯定有遇到一些困难,特别是内部的一些历史遗留代码,以及对老逻辑的兼容,怎么适配到新的扩展模式,但这些恰恰就考验了我们的技术能力,重构后我们的代码更加优雅,可维护性更强了。
蚂蚁金服的代码对内部都是开源的,而对外开源的时候是有流程的。在开源一个组件之前我们需要先思考开源的目的、开源后的持续性、社区的建设计划等。因为开源不是一锤子买卖,特别是刚开源的时候需要持续投入才能保持社区的运转。
中国有句老话“众人拾柴火焰高”,SOFAStack的各个组件经过蚂蚁金服的业务锤炼而生,但是毕竟场景有限,依靠开源社区的伙伴们,才能拓宽更多的技术服务场景。社区对SOFAStack来说,意味着更多可能性和想象空间。
当初开源的期待是希望更多人知道SOFAStack,更多的开发者参与SOFAStack,更多的用户使用SOFAStack,在贡献给社区的同时,也期待社区、合作伙伴甚至客户,都能够一起参与共建,形成行业标准和最佳实践。
随着CloudNative等技术理念的推广,我们可以看到社区有很多优秀的技术、架构、理念等,包括Docker、Kubernetes、ServiceMesh、Serverless等等。SOFAStack在这个阶段的策略是积极拥抱云原生,我们会在ServiceMesh、Serverless持续探索,在内部生产落地,将演进的实践开源出来。目前ServiceMesh的数据平面部分我们已经在618大促链路上上线了,可能是国内目前最大规模的落地。接下来我们将统一控制平面,探索更云原生的架构方案。
下图为SOFAStack开源全景图,其中橙色部分为SOFAStack包含的开源组件,白色部分为兼容或集成开源社区其它优秀的开源产品。
除了目前已开源的项目的持续维护外,我们还是会继续开源更多的产品和实践。在微服务组件上,下一步我们可能会在动态配置上做一层统一封装,以及和SpringCloud的一些集成。而在云原生方向上,我们将继续在内部落地ServiceMesh和Serverless,并将落地实践开源出来。
工作之余,个人主要是偶尔玩玩Switch,在海拉鲁大陆上割草炸鱼。也会去看看电影。
碧远:有的,个人比较传统,主要是订阅了一些业界技术比较好的个人或者公司的博客RSS,跟进一些业界大家在做的事情,然后就会去看看一些领域内比较经典的书,同时在Gitee和Github上也会比较活跃。