来源:Gitee 封面人物 丨 2019-07-15
本期嘉宾
SOFAStack 团队:包括余淮、善逝、丞一、碧远等人。
SOFAStack:蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践,其中 SOFABoot、SOFARPC、SOFABolt 等三个组件获得码云 GVP 。
余淮:我是蚂蚁金服高级技术专家章耿,花名余淮。2007 年毕业后,先后参与国网招投标平台的系统开发、国网电子商务平台开发。2012 年加入京东从事中间件开发,先后参加了京东服务框架 SAF 和 JSF 的建设,到后来负责服务与框架组。
2016 年底,加入蚂蚁金服中间件(SOFAStack 团队)成为开发框架组负责人。2018 年初开始参与 SOFAStack 开源,目前也是 SOFAStack 整体开源负责人。
余淮 SOFAStack 开源负责人
善逝:我是张奇龙,花名善逝,2016 年清华大学硕士毕业进入蚂蚁金服,负责框架 SOFABoot/SOFAArk 的开发。当时选择来中间件团队,理由其实挺单纯的,希望能够深入地了解学习支撑蚂蚁金服这么大体量的工程技术。
善逝 SOFABoot/SOFAArk 开源负责人
丞一:我是来自蚂蚁金服中间件团队的林鑫,花名丞一,目前在蚂蚁金服中间件负责消息中间件相关的开发工作,同时也是网络通信框架 SOFABolt 开源负责人。2012 年毕业后在蘑菇街从事大数据平台和中间件相关的开发工作。2018 年初加入蚂蚁金服中间件。当时希望能到一个更大的平台,做一些更有挑战的事情,加上从上大学开始就一直在杭州,所以自然而然地选择了带有金融属性,对系统要求更加苛刻的蚂蚁金服。
丞一 SOFABolt 开源负责人
碧远: 我是来自蚂蚁金服中间件团队的雷志远,花名碧远,目前在蚂蚁金服中间件负责 RPC 框架和 Mesh 研发的工作,同时也是 SOFARPC 开源负责人。2014 年从武大毕业后,加入蚂蚁金服,在 2017 年之前,主要在支付团队从事测试开发的工作,2017 年进入中间件团队。因为个人的兴趣更加偏向底层技术,另外对支撑蚂蚁金服整个集团业务的基础组件感兴趣,所以选择了加入蚂蚁金服中间件团队。
碧远 SOFARPC 开源负责人
丞一:日常工作节奏中,大部分时间在思考和解决系统的各种异常场景,思考和设计系统会占到日常工作四成左右的时间吧,去实现落地会占四成,剩下一些时间处理一些运维和支持性工作。
从我的角度看,我喜欢从源头上解决运维效率的问题。很多时候需要做的支持或者运维工作,往往是因为你的系统产品化做得不够,或者 API 设计得不易理解,导致需要跟用户去解释,所以我会花更多的时间在系统的设计上,尽量减少后续不必要的一些运维和支持工作。不可避免地,日常还是会有一些运维、支持相关的工作,对于这部分工作会在每天尽量固定的时间集中处理,并沉淀下来定期反馈到系统上,形成正向的循环来减少这部分工作。
余淮:最大的感受就是管理工作比纯粹技术工作要难很多。一个最普遍的情况就是,大部分刚开始从纯粹写代码到管理技术团队的同学,都无比希望回到只写代码的时候。
管理工作的本质是协调,管理的核心是人的行为,要对全局计划有合理安排并带着团队一起前进。而技术工作则更多看重的是能力,例如在某个专业领域的专业性前瞻性等,也就是我们说的深度和广度。
由于我所在的是一个技术型团队,基本上算是技术驱动型,所以管理工作和技术工作是密不可分的。平时我在技术工作中需要利用自己的一些经验与判断,和大家一起讨论一些技术方向,在实施过程中无需事无巨细,相信团队的力量,配合和协调团队及外部资源,将我们认定的技术方向落地掉。
丞一:变化可能是更严谨、更关注细节了。在蚂蚁金服的体量下,特别又是中间件这样的基础组件,产品的任何一个微小的问题可能会引起业务上的大故障,所以需要以更严谨的态度去关注到各个细节的问题。
SOFAStack 架构由支付宝自 2007 年开始自主研发的 SOFA(Service Oriented Fabric Architecture) 框架发展而来,旨在解决 SOA 架构下的服务模块化编排协作(Fabric)问题。SOFAStack 历经了多代架构演进。在 2017 年,伴随着蚂蚁金服科技的整体对外开放,全称正式升级成 Scalable Open Financial Architecture Stack 。
Scalable,以「异地多活」为目标,使系统能在多个数据中心内任意扩展,提供机房级容灾能力,保证业务连续性;Open,整体设计秉承「开放」原则,使新兴架构向下兼容,能与经典架构有机融合,同时开放技术标准,拥抱开源生态;F 代表 Financial,即这个架构是金融级,安全、稳定、可靠是其内在的属性,具备「分布式事务」和「无损容灾」能力,保证在分布式架构下承受高并发交易,在系统扩展、容灾恢复、更新发布时确保数据无损,服务可用。
在开发流程上,SOFAStack 的发布基本上走的是小火车的开发模式,我们会在某个版本拉起的时候基本确认好这个迭代的功能点、开发测试排期等。
SOFAStack 开源之前已经在内部经历了大的四代架构演进,每一代架构都和业务发展息息相关,都是在解决业务高速发展以及对业务持续性、数据一致性的极致追求而努力。这里我简单给下这些关键字:第一代是集中式的;第二代是分布式、服务化、自研中间件;第三代的关键字是单元化、异地多活、弹性架构;第四代是国际化、科技开放,SOFAStack 也是在这个时间开源的。
从 2015 年开始,蚂蚁金服开启了金融科技对外输出的战略,SOFAStack 也走出了蚂蚁金服,甚至跨越了国界,被更多金融机构与合作伙伴所使用,如天弘基金、信美互信、南京银行、PayTM、DANA 钱包等。在与合作伙伴以及客户的沟通、合作过程中,我们发现了 SOFAStack 的理念和能力也正是很多金融行业的企业所需要的,大家或多或少正在规划或者已经在做类似的东西,但缺乏像蚂蚁金服这么大的流量来提供考验,也缺乏专业团队的长期投入,更缺乏丰富的金融场景和严苛的业务压力来驱动技术持续发展。
在金融科技对外输出的过程中,我们内部已经进行了一定程度的代码重构,例如历史兼容逻辑的剥离等。关于开源,内部一直有开源的讨论,只是一直没彻底决定,直到 2017 年双十一结束后正式决定开源。经过了一系列的准备,2018 年 4 月,SOFAStack 正式开源,由技术团队进行日常维护和专门的团队运营。目前 SOFAStack 在蚂蚁金服有将近 2000 个应用,是被蚂蚁金服实践证实的一套框架,开源出去,让更多的人去体验、使用,对于 SOFAStack 的发展具备很大的意义。
为了实现我们开源「Open Core」的策略,我们投入了大量的重构工作,以可扩展化的方式来层层构建 SOFAStack 的能力,保证 SOFAStack 的内部版本和开源的版本采用的是同一个内核。所以 SOFAStack 的内部版本就是在开源版本之上扩展了内部逻辑和历史版本的兼容逻辑。
开源版本的核心逻辑内外是一致的,并在蚂蚁金服的生产环境中被广泛使用,同时会随着蚂蚁金服自身业务诉求的驱动,不断地演进。整个过程肯定有遇到一些困难,特别是内部的一些历史遗留代码,以及对老逻辑的兼容,怎么适配到新的扩展模式,但这些恰恰就考验了我们的技术能力,重构后我们的代码更加优雅,可维护性更强了。
蚂蚁金服的代码对内部都是开源的,而对外开源的时候是有流程的。在开源一个组件之前我们需要先思考开源的目的、开源后的持续性、社区的建设计划等。因为开源不是一锤子买卖,特别是刚开源的时候需要持续投入才能保持社区的运转。
中国有句老话“众人拾柴火焰高”,SOFAStack 的各个组件经过蚂蚁金服的业务锤炼而生,但是毕竟场景有限,依靠开源社区的伙伴们,才能拓宽更多的技术服务场景。社区对 SOFAStack 来说,意味着更多可能性和想象空间。
投入到社区中,我们从键盘和屏幕前,走到了人群中。社区里有各种各种的人,有关注者、使用者、开发者,甚至是挑战者。关注者可以给 SOFAStack 带来更多的想法和思考;使用者可以 SOFAStack 在更多的业务场景下生产验证,以提高项目质量;开发者可以参与 SOFAStack 的建设,完善和增强 SOFAStack 的能力;挑战者也可以使项目良性发展,遇强则强。
除此之外,社区里有很多优秀的开发者和开源项目,我们也互相学习、分享、交流技术,目前我们和 SkyWalking / ShardingSphere / Servicemesher / AntDesign 等项目和开源社群都建立了良好的关系。
当初开源的期待是希望更多人知道 SOFAStack,更多的开发者参与 SOFAStack,更多的用户使用 SOFAStack,在贡献给社区的同时,也期待社区、合作伙伴甚至客户,都能够一起参与共建,形成行业标准和最佳实践。
目前 SOFAStack 在 Github 上一共收获了 25600 Star,120+ Contributor 帮助共建,近 40 家企业用户在生产环境使用 SOFAStack 的组件。其中 SOFARPC、 SOFABolt 和 SOFABoot 三个组件获得了码云 GVP 。近日 SOFAStack 在由中国信息通信研究院主办的云计算开源产业大会上还获得了 OSCAR 尖峰开源技术创新奖(自主研发)。可以看到我们当初的一些期待在大家认真开源、持续投入下还是有一些收获。当然,我们还在开源的起步阶段,接下来还将继续努力,也非常欢迎社区的朋友一起共建 SOFAStack。
目前 SOFAStack 的代码是同时放在了 Github 和 Gitee 上,我们的文档也是中英文双语的,在更新文档的时候必须做到同步。这里也正好借机感谢开源中国码云的认可,我觉得开源和技术是无国界的,社区是开放的,我们也非常感激国内外的开发者的关注。
随着 Cloud Native 等技术理念的推广,我们可以看到社区有很多优秀的技术、架构、理念等,包括 Docker、Kubernetes、Service Mesh、Serverless 等等。SOFAStack 在这个阶段的策略是积极拥抱云原生,我们会在 Service Mesh、Serverless 持续探索,在内部生产落地,将演进的实践开源出来。目前 Service Mesh 的数据平面部分我们已经在 618 大促链路上上线了,可能是国内目前最大规模的落地。接下来我们将统一控制平面,探索更云原生的架构方案。
下图为 SOFAStack 开源全景图,其中橙色部分为 SOFAStack 包含的开源组件,白色部分为兼容或集成开源社区其它优秀的开源产品。
除了目前已开源的项目的持续维护外,我们还是会继续开源更多的产品和实践。在微服务组件上,下一步我们可能会在动态配置上做一层统一封装,以及和 Spring Cloud 的一些集成。而在云原生方向上,我们将继续在内部落地 Service Mesh 和 Serverless,并将落地实践开源出来。
碧远:有肯定是有的,天天吃一样的东西你也会想换口味的嘛。工作了一段时间,发现工作上的需求基本都能做完,在这段时间内,主动的接触一些非工作本身的领域,可能容器内核,也可能是算法理论,也有可能是网络底层,然后就发现,其实除了工作,个人还有非常多需要提升的。而且在这些内容上,也会获取到一些灵感。更有利于工作。
工作之余,个人主要是偶尔玩玩 Switch,在海拉鲁大陆上割草炸鱼。也会去看看电影。
碧远:有的,个人比较传统,主要是订阅了一些业界技术比较好的个人或者公司的博客 RSS,跟进一些业界大家在做的事情,然后就会去看看一些领域内比较经典的书,同时在Gitee 和 Github 上也会比较活跃。
时间上,没有特别地安排过,主要还是根据事情动态调整。