蚂蚁金服研发的金融级分布式中间件SOFA背后的故事
Posted 高可用架构
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蚂蚁金服研发的金融级分布式中间件SOFA背后的故事相关的知识,希望对你有一定的参考价值。
导读:GIAC大会期间,蚂蚁金服杨冰,黄挺等讲师面向华南技术社区做了《数字金融时代的云原生架构转型路径》和《从传统服务化走向Service Mesh》等演讲,就此机会,高可用架构社区编辑魏佳和王渊命对蚂蚁金服技术团队的杨冰和黄挺进行的访谈。访谈内容涉及到中间件,微服务,Service Mesh,OpenSource等多个方面,让我们大家一起看看蚂蚁金服技术专家对这些话题的独特见解。
魏佳:欢迎两位,我是高可用架构的编辑魏佳,这位是王渊命。今天很有幸邀请到两位在演讲之后接受我们的采访。两位可以先做一个简单的自我介绍。
杨冰:我是蚂蚁金服中间件的负责人杨冰。09年加入蚂蚁金服,早期时候是在架构组,后来加入中间件团队。从微服务与框架这样的一个方向开始,后来逐步参与了蚂蚁金融云对外的建设以及平台的开发,现在接管了整个中间件团队,仍然继续在这个方向上前进。
黄挺:我是从09年到阿里巴巴实习,之前是在阿里巴巴B2B团队,2010年正式加入阿里。我在阿里巴巴B2B团队待了3年,主要是做B2B业务。因为对技术这一块比较感兴趣,自己在业务团队也做了一些技术相关的工作,后来转岗到了杨总所在的团队。现在正在做SOFA开源的方面的事情,现在这方面也做了5年了,同时也是微服务方向的leader。
魏佳:这几年一直在做SOFA这一块的东西吗?
黄挺:是的,主要是SOFA体系内微服务相关的技术。
魏佳:我对杨冰的问题主要是分两块,一块是更多集中在您个人在阿里或者是蚂蚁金服体系下的成长,另外是您这些年工作集中的一个内容,它本身也是一个迭代成长的过程,更多是这两方面。您可以先从整体上快速和大家分享一下您自从2009年加入之后,做过的项目的情况。
杨冰:最早的时候,我们是第一批“近卫军”。毕业之后就进架构组的,当时架构组老大很多,我们进去就是帮帮忙,打打杂这样的状态。在这个过程中,接触了很多牛人。
最早的时候,从SOFA开始做,那个时候胡喜(现蚂蚁金服副CTO)已经把SOFA创建出来,和我们一起做。我个人是经历了SOFA1到SOFA2开发过程,其实SOFA1整体完成落地,SOFA2引入了整个服务的架构。那个时候主要还是以参与和协助为主,到了SOFA3,这个时候我们引入了新的东西。具体来说,我们把Tomcat JBoss那层替换掉,变成自研的Application Server(我们内部叫CloudEngine)。我们自研的应用服务器其实解决了我们内部系统做类隔离、模块隔离以及合并部署的问题。这个项目是我跟我一个同事,两个人主导推下来的。我个人参与了整个过程,所以印象很深刻。
后面开始做微服务这一部分。服务治理、链路相关的技术体系,也是由我这边主导的。大概在2015年的那个时候,我们开始做金融云,我也作为创始人之一。那个时候也就是四五个人作为创始团队,进去做最核心的PaaS平台的研发,包括一些产品化的系统,多租户体系的研发。在一年多的时间里,我自己变化非常大。因为以前作为一个新人在支付宝,以内部视角看待的很多东西都,有很大的惯性。然而走出去之后,我会发现很多应用场景,客户的要求,业务的场景,需要做的更好。
现在我们要和全世界去比,我们需要知道业界最新动向,最牛的人才在哪里,大家往哪一个方向去靠。会碰到更多这样的问题,用更多元的视角去看待。然后也逐步在这个过程当中形成了自己的技术观和对软件技术发展趋势的一些判断和理解。
后来在金融云走上正轨之后,我接手了中间件团队,这个时候整个视野会更开阔一些。我在落地比较关键的项目,比如说我们在数据上有很多的遗留问题,现在正在这边逐步解决。我们在今年在布局Mesh,还有后面团队蒋涛会分享的数据的一些演进方向上,都在做一些主要的设计,也都是比较关键的方向。我个人比较关注Mesh这个方向,因为我个人认为这是把基础设施沉淀到我们整个技术平台当中非常关键的一环。
魏佳:刚刚结合您说的您加入之后做的项目的过程,从侧面也是反映了支付宝或者说现在叫蚂蚁金服这些年演进的过程,这个过程当中除了项目本身有其他印象比较深刻的事情吗?
杨冰:印象比较深刻的事情很多,我挑两个印象比较深的来说。
第一,刚刚提到的我主导的合并部署的项目。
魏佳:就是你们替换到Tomcat,然后用自研的容器是吗?
杨冰:是的。这个过程中我有个心得。原先我们觉得OpenSource就是最好的,OpenSource就是全部,而且可能会有惯性。然而在替换过程中,我们发现我们的场景足以build up出来比OpenSource复杂度更高,能力更强的体系。我自己也参与在这个过程当中收获了很多。这件事情也是从一个侧面反映了蚂蚁金服演进的历程。我们从IOE的架构,经过采用一部分的开源软件,再到逐步开始全套自研。在自研过程当中,拥抱部分OpenSource,并且去做深度的创造,做一些自己的创新。整个过程其实是一条非常艰难的路,幸运的是,有这样一个场景来培育我们。这是第一个给我带来我观念上以及视野上的变化的事情。
第二,我对外接触的这个阶段。之前只是用OpenSource,到现在我们去做OpenSource,我形成了自己的技术观。我认为整个基础设施是应该走OpenSource化的,因为从C开始到Linux,到 Kubernetes,其实这个已经被一次又一次地证明。因为越底下的基础代码,包括SOFA中间件这样的东西,看起来逻辑没有业务系统那么复杂。然而其实它考虑的一些细节,设计的优雅性、架构的健壮性其实是非常强的。而且它一旦要去支撑那么多业务系统,整个工程的复杂度也是非常高的。很难用一家公司的程序员去搞定整个技术栈。包括SOFA其实也是一样的,我们越来越发现这方面的一些趋势。我们靠一己之力去做是很难的,再加上我们既要对内又要对外。现在明白了这样一个趋势,因此我觉得应该回馈社区,和社区共建才是比较好的一条路。在这个层面上,OpenSource最大的挑战,还是受制于商业世界对OpenSource的看法。因为大家觉得OpenSource会破坏商业的游戏规则。但是其实以Linux为代表的疯狂发展,以及伴随着而来的商业化生态的繁荣,是一次又一次向世界证明,OpenSource和商业化的结合是可以非常完美的。所以这两件事情对我的转变非常大,视野的转变,思考逻辑的转变非常大。
第一个阶段,突破我们只能选择OpenSource的禁锢,去选择自研。我们自研以后,这个东西成熟了,经过论证了又推广到开源社区。
现在说回来,我们一开始走自研,而且我们自研的东西可以做到世界领先。后来我们又认为,再往大了去看的话,还是要开源,走出去。遇到蚂蚁金服这样体量的公司,或者说像我们这样的团队,其实是非常宝贵的一个机会。一个团队会在一个方向上,比如说数据库可能有几百人,中间件可能有百人,这是一个非常难得的机会,能够把一些非常聪明的人才聚集在一起。我们应该在标准化上,在软件技术栈的标准化上,为社区做一些事情,为更大的领域去贡献我们的力量,所以最后又走出去。
王渊命:前面提到SOFA,正好你前面也简单说了一下SOFA的历史。我正好有一个关于SOFA的问题,SOFA在业界,很早大家就知道有这么一个东西,但是大家不知道它到底长什么样,并且它里面的组件很多很多,SOFA到底可以承载哪些职能,大家没有一个比较清楚的概念。并且最近我也看到你们是开源了一部分。能不能比较详细的介绍一下,SOFA从上面的业务层到下面基础设施,中间的这一层上,边界在哪里?让大家有一个概念。它已经迭代了很多版本了,您刚刚也简单说了一下它的情况。我想了解一下它的每次大的迭代之间,都有一些什么样的契机,我要做这个事情,把它要迭代一个新的版本?
杨冰:SOFA的边界在我们内部是一次一次扩大的。最早的时候SOFA是Service Oriented Fabric Architecture,它就是一个Famework,就是像Spring这样一个架构,集成了RPC、研发框架、脚手架类似这样的一些东西。那个阶段,它是解决研发效率的一个Famework而已。再往前发展,我们发现其实很多的理念是一样的,所以我们把SOFA的边界扩大到整个中间件的范畴。我们觉得它应该解决的不是一个Famework,因为它作为一个母体,它作为Famework也是自带生态属性的软件。它应该在应用和底层基础设施之间,很多逻辑都在这一层,所以我们认为SOFA应该是整个中间件。
再往后继续扩大,我们发现中间件自己搞定单元化架构是不够的,所以我们把边界扩大到DevOps平台,监控这一块,再加上我们内部有CICD持续交付平台,这些也都纳入到SOFA的边界里面,我们内部称之为大SOFA体系。我们认为这个是可以去承载整个分布式架构的比较完整的版本,就是Runtime+DEV+OPS这三个部分的组合,称之为一个大SOFA的概念。
但是我们这一次开放出来的部分,还是聚焦在中间件这一层。因此上午演讲放出来的大图,我们看到的还是是那个方向上的一些组件。包括微服务、链路、消息、数据、分布式事务。OpenSource主要还是在这个方向上为主。
黄挺:我来回答一下第二个问题。SOFA经历过多次版本迭代。SOFA的版本迭代和公司的架构发展是密切相关的。比如说我们从SOFA刚刚开始的时候,会做模块化的事情。到了SOFA2开始引入整个微服务的体系。到SOFA3我们希望能够在微服务体系下,能够把一些服务聚合在一起,组成一个链路出来,这就是我们之前说的合并部署。随着每年的交易量的不断上升,让我们必须从单体架构转到服务化架构,再往前演进到单元化架构,再往前演进到弹性架构。SOFA大部分的功能升级都是伴随着整个公司的技术架构目标上更大的一些挑战进行的。
杨冰:我补充两个阶段,第四个阶段,其实我们是SOFA4,SOFA4核心的事情是为开源做准备,以及为多租户做准备,因为我们在那两年做的SOFA4,其实在核心功能上没有太大变化,但是我们孵化出来几个事情。
第一个是轻量化的版本,因为以前一个Tomcat加一个Famework这样一个模式是比较传统的,整个业界发展方向是这样的。所谓的云原生,在它交付的时候也更加完整、一体化。这个理念我们是比较认的,所以我们在SOFA的基础上再重构代码,集成了 Spring Boot,以这样的一种方式去做整体化交付。而这个东西的理念和Ruby是比较像的,是非常适合快速一体化的交付,所以SOFA也演进到这个方向。并且因为我们在做对外的事情,我们在 SOFA4 ⾥⾯把多租户的隔离能⼒也做出来。当来⼀个用户的时候,不是说直接给⽤户部署⼀套新的中间件。在多租户的模式下,只要部署⼀套就够了。新来⼀个⽤户,在上面再隔离出⼀个租户就行。这样的话,在成本,运维各⽅⾯都有⾮常⼤的提升。
现在Mesh部分,如果说真要归个类,我们内部并没有特别想过怎么定义它,但是我觉得如果真要归个类,可以认为是我们往第五代迈进。因为Mesh是一个非常大的方向。所以我们是把SOFA冠在了 Mesh 的前面,而不是说 Mesh 仅仅是服务的部分,它其实应该是整个中间件比较大的方向,基础设施往下承载的方向。
王渊命:那顺便聊聊 Mesh 这一块的内容,其实我很早关注过这一块的东西。这一块其实本质上带来变化是团队的协作方式不一样了,以前是开发出来一个开发框架,开发团队要用我这个框架,框架升级的时候要追着开发团队说,你要把我的版本给升了。中间件这一层,没有独立的升级,也限制了迭代的演进的速度。但是 Mesh 把这一目标达到了。在你们实践过程当中,你们现在已经感受到这种好处了吗?你们团队协作上的变化有没有比较真实的案例或者是故事与大家分享。
黄挺:我们刚刚聊到 Mesh 在蚂蚁金服内部也是在一个起步阶段。我们现在在基于原来的产品落地,现在有二三十个系统正在使用。其实我们在上线过程当中,已经感受到了这一点。之前,比如说我们做多元化的改造,其实涉及到一些路由规则的变化。这个时候如果你的路由规则变化的计算出现问题的话,你就要推着他们去做升级。如果说遇到一个Bug,之前我们推着应用去改造,说你给我安排一个迭代吧,你把这个东西升级一下,这个东西可能会对你的影响很大,但是业务方有自己的业务需求,我的客户在等着我,产品经理在追着我说,要上别的功能。使用Mesh之后,我们的协作方式就很简单,现在我们去和 SRE 确定说,我发现我有这个Bug,然后我要去做升级了。我们和SRE确定之后,我们就开始去做一个灰度升级,灰度完成之后,就可以去做全面的升级。这个周期是非常快的,我们这个版本现在推到二三十个应用当中,只需要一周的时间就够了,之前二三十个系统起码要好几个月。
杨冰:我们看重这个交付的标准化,因为你在客户端,其实你很难标准化,无非就是做多语言,每个都做一遍,这样很难被标准化,什么东西最容易把变化给收拢呢?他是⼀个独⽴的运行时的时候,变化是比较容易被收拢的。这个时候我们把最关键的,变化最频繁的,也承载了架构的那部分关键代码沉到 SideCar 里面(这个基本上是由中间件团队和基础设施团队维护),这样就可以把它作为一个独立的模块去演进它。这个无论是对上云,还是我们走出去开放,都有很大的益处。我们这个规模,包括面向云这样的规模,是非常看重基础设施迭代更新的效率的。尤其你要让客户升级升级,那更复杂。
魏佳:结合您前面提到的,你们定位于中间件这一层,有不同、复杂业务的接入方,你们在整个落地也好,推的过程中也好,有一些是来自于技术之外的阻力或者是问题吗?尤其是对于阿里或者是蚂蚁金服这样一个很大的业务组织。
杨冰:其实如果说我们是自己革自己的命,其实这个最大的阻力就没了。阻力来自于几个方面。第一个是说我们这个价值是不是make sense。我们和老板是去聊过的,他是认这个方向对我们产生的价值是巨大的。因为交付效率的提高,是现在制约基础架构向前演进的最关键的要素。
二是我们公司有一个团队有很大权力和影响力,我们称之为风险部门。谷歌提出了SRE,我们也有SRE,谷歌的R是Reliability,我们的R是Risk。有一个部门其实他们这个团队会非常关注这个R,而且这个在蚂蚁是底线,是生命线。现在有很多方向,包括我们在搞的红蓝军演练,攻防这些东西,是非常依赖于中间件的。这一层基础设施被拿到了我们自己手里,可以更加快速修复治愈的时候,他们整个SRE的风险也会快速收敛。如果说要推到全站去升级的话,这件事情他们会很头大。所以在他们这边的阻力也会小很多,他们也是非常拥抱这个方向的。
因此这几个方面,一个是我们自己,一个是老板,一个是SRE,这三个都顺了之后就顺多了。剩下的无非是一些语言团队,这些语言团队基本上还是比较拥抱的。因为他们可能如果是在小公司的话,那部分承载基础设施的代码稳定了也就稳定了,他们就是做业务了。但是在蚂蚁这种业务在⻜快往前演进的地方,基础架构是看不到稳定的那一天的,他们做了一段时间之后会觉得⾮常累,他可能要和中间件一样,团队发展到一样的规模才可以支撑基础架构往前演进。⽽且每次基础架构升级都会消耗掉他们大量的精⼒。因此他们觉得可以在深度优化,以及业务创新上去花精力做一些小而美的事情。而在跟着整个基础设施跑的时候,是非常消耗人力的。所以他们也非常拥抱这个方向,大家一起开源共建。
王渊命:刚刚说到 Mesh,你们的定位是 SOFA 5。我们看到您所举到的 Mesh 所能达到的功能里,明显有一部分,原来 SOFA 提供的一些功能可以迁移过来了,可以用 Mesh 实现一部分。这当中有一部分 SOFA4 的版本和 SOFA5 的版本,怎么样来进行融合?
杨冰:它本质上把SDK给 Mesh 化,给Runtime化了。
王渊命:最后的演进,有一部分是互相融合,最后哪些组件是和Mesh整合,哪些组件被替代了?
杨冰:我之前也分享了一些,我们的原则还是那句话能复用的就复用。因为 istio 里面定义了XDS等很多DS这种东西,这些是服务发现的标准。这个东西我们是觉得非常有价值的。像社区走得慢的,我们就自己搞,然后patch回去。如果社区不接收,那我们就自己做一个分支,我们有一部分人会投入到开源运作。我们想办法把我们的理念、想法、推到社区,期望他们标准化。当年Docker,还有 Kubernetes 也是这么走过来的。一开始设计出来的时候也没有那么完美。但是到后来各种网络、容器的标准化,OCI的标准都出来了。我们也希望在微服务领域做一些标准化的工作。
刚刚说到的一些组件,比如说服务注册中心,是我之前提到到过的非常关键的部分。其实我们和 istio 的人聊过,其实谷歌做 istio 这一块的人,是谷歌 Gateway 这个部门转型过来去做的。因为它觉得这个东西不就我和我们整个 Gateway 做的事情非常像吗?而且他们把很多管控的理念加入进来,向前演进。但是说老实话,谷歌这样的公司虽然很伟大,但是在微服务领域,他们趟的坑我相信是没有阿里多的。因为它可能主要集中AI、搜索,它的业务形态真的没有金融那么复杂。我们也非常直接问过他们团队的人,微服务在你们内部有多少话语权,其实是没有太大话语权的。我们认为虽然谷歌这家公司,也包括IBM,有很多的沉淀,有非常多的牛人,但是他趟过的坑没有我们多。我们非常认同他们的方向、抽象能力以及设计能力。我们更多愿意扮演合作者的角色去推动社区往很好的方向发展。我们会自己做像服务注册中心这样的组件。所以现在Istio 的服务注册发现其实对接的是 Kubernetes 里⾯的 ETCD,但是 ETCD 其实没有我们内部这种高可⽤的能力。将来如果说这个社区比我们做的好了,我们会放弃掉自己的组件往社区的方向去发展。但是现在我觉得社区是搞不定的,所以在落地的阶段,我们会把服务注册中心等一些关键的组件自己来做。
王渊命:既然可以把 Mesh 理解成网络层,我们把所有的中间件放在网络层,而网络层最好的提供方,要么是容器平台,要么是云平台。下一步的容器平台或者云平台也会往这个方向发展,这两个会有一个什么样的结合演变方式?比如说刚刚讨论的 istio Sidecar 和Kubernetes其实是非常密切的,非常依赖于Kubernetes的能力,没有这个平台的支撑,它是很难去运维的。这一块两位有什么样的看法?现在业界做云的有没有这方面的动作?
杨冰:你是说这个方向怎么和Kubernetes这个方向以及非Kubernetes的方向更好的融合是吗?
王渊命:Mesh 这一层标准化了,那会不会变成云平台或者容器平台默认的,就在网络层支持的一套能力?
杨冰:谷歌之所以会出来做Service Mesh,是因为 Kubernetes 最强的还是在编排、调度,整个模型的抽象,从而让PaaS更加简单和轻量级。但是它在微服务这个层面上,虽然提供这个能力,但是它的玩法缺不丰富,而且相对也比较简单。就像我们内部都有很复杂的玩法,服务的动态上线、下线,基于服务粒度的弹性伸缩,这种能力很难在一个基于service这个维度去做。但是 Service Mesh 这个方向是可以让微服务更加容易地往基础设施走,这是谷歌做 Service Mesh 的一个用意,我们希望微服务这一层走向标准化。
但是就 Kubernetes 和 Service Mesh 这一层结合的事情,我们在和他们(istio 团队)聊的时候,他们也提到过,首先这个方向虽然是为了结合Kubernetes去做的更大,往微服务这个层面上去更进一步,把这一层去做表征化。但是Service Mesh本身它其实是一个可以支持多平台的一个架构的,只不过我理解他们团队现在应该是优先在做对Kubernetes的集成。因为他一开始在设计那个蓝图的时候,就考虑过能够运行在非Kubernetes的平台上。对用户来说,一旦标准化之后,其实他也不关心底下是不是 Kubernetes 。如果说他成为一个微服务的标准,他不管你是 Container Based 还是 VM Based 理论上都是应该可以的。Mesh是往上去抽了一层,做多元化适配,多种基础设施的适配,只是优先在做Kubernetes的适配。另外他在控制面这一层也是跨平台的设计。它不是说只是运行在谷歌云上,它是基于混合云架构去设计的,基于联邦论架构去设计的,只不过现在他也没有做这部分的特性,但是他们有规划去做。而且这一层的规划,比现在他们文档里面看到的东西,可能会大得多。但是他们现在做比较聚焦于在Kubernetes的适配这个方向上做。所以这个和我们的想法也是⽐较相近的,我们觉得也是这样的,⽽不仅是 Istio 现在的这些东西。
魏佳:回到您前面说到的整个的过程,如果说跳脱出来看,您觉得其他的同样在做互联网金融或者是传统金融转型的,有多少可以从你们类似的蚂蚁金服或者是原先的支付宝这样一个经验借鉴出来,在技术层面的。我问这个问题代表的更多的是,因为您知道金融科技相关的中小规模的企业非常多,有一些在金融领域遇到的一些问题是类似的。但是他们的技术积累、团队等等都远远比不上阿里系这样一个成熟的体系。有没有能让这些更轻量的玩家,技术储备比较弱的玩家,也能够借鉴到你们正确的一个路径向前走?
回答:我这个话题在刚刚分享当中也大概解答过。我个人的观点是这样的,金融这个领域,因为它天然是融入到生活方方面面的基础设施。金融也好,支付也好,无论是基金还是保险还是什么形态,都是服务于个人,服务于机构的,是渗透到生活的方方面面的。金融在任何一个方向在发展的时候,都会面临到比较大的流量的问题。有可能会出现可能针对机构的一些保险或者是机构的基金,但是肯定也会针对于C类用户的,一旦对接到C类⽤户,对接到互联网渠道,它的流量其实是⼀个解决不掉的问题。我们在这一块去做了很多的探索。其实跟整个集团的一些团队不太一样的地方是在金融要求下做事情。所谓的金融要求有几个方面。一个是我们的SRE的定义是不同的,我们会把风险放在第一位,可用性、兜底是被放在第一位的。第二,我们是被强监管的。所以我们在容灾、数据无损,类似于这方面的要求更高。戴着金融的枷锁,既要跑得快又要跑的稳。这些方面的平衡是深深写在我们的代码里面的。如果说要在快、量、可靠、安全方面上去做,我觉得我们的技术、理念都是可以借鉴甚至拿过去用的,这方面会帮他少趟很多的路。但是现在的Fintech,这个词虽然说有点被说滥了,也有一些误解,但是还是有很多创新领域上的一些探索。无论是安全、风控还是投研、投顾、质研,以及区块链方面的探索,我觉得这个形态会非常丰富。
这一块蚂蚁金服是非常踏踏实实地在做一些底层方向上的事情。这一块的想像空间和能做的事情远比蚂蚁金服现在做的东西要多。而且这个方向的成熟,不像我们现在开放出来的那部分技术那么成熟。我们开放出来的那部分技术,大家是可以参与、共建,是大家都会遇到的。另外一部分,我觉得可以去借鉴和沟通,因为我觉得远远没有到标准化的阶段。
魏佳:你前面提到了区块链,二位从个人的角度怎么去看汹涌而来的区块链大潮,当然避免不了有一些负面的事情或者是消息。但是假设是从技术角度本身而言,因为它本身和账本金融有一个天然契合的层面,从这个维度来看,你们个人怎么看这样一个趋势?
王渊命:我追问一下,区块链大家都说是金融革命,它可能是想重新定义金融的规则。在这样的情况下,又和蚂蚁金服这样的金融的体系肯定是有互相影响的地方。这个我不知道你们个人和内部是怎么看待的?
杨冰:我也只能说一些我能说的个人观点。如果有机会可以采访到我们这边的区块链负责人会更好一些,因为我对这个东西的理解没有那么透。确实像您所说,外面有很多的想法。我们比较明确的几个点是,第一,蚂蚁金服不会去做“币”这样的一些东西。第二,我们的一些应用场景(包括现在能够对外说的,比如说溯源、公益等等),蚂蚁金服是投重兵在做这件事情。因为我们非常认同这个东西对金融带来的变革,这是不用避讳的。我们是实实在在做和生活、金融便利性相关的一些方向的探索。我还是比较认同这个方向。我们内部更多聊的不是某一个区块链技术或者是某一个区块链思想,因为区块链已经变成默认事实。按照这个标准的话,很多事情确实是好做很多。就像我们真出了量子计算机之后,计算机上面的逻辑,比如说我们搞的要死的同城双活就不要搞了。
区块链记录一旦写入不能篡改,因此它本质上是一个加密的分布式的账本,它不可篡改,而且会广播达成一致性。这三个关键要素,一旦变成基础设施,安全性可以得到保障的话,某一个场景软件的写法会完全被颠覆掉,包括产出的场景都会被颠覆掉这是我们比较认同的,至于说什么场景我也不方便说。区块链的思想还是很好的。
王渊命:我想问一下SOFA开源的问题,SOFA很早以前就打算开源了,但是到现在才开出来。因为它是一个庞大的体系,开源有各种阻力,我们可以想到的,比如说开源出来要划分一个明确的边界,哪些事情是通用场景的,哪些是特殊场景,这个你们是如何划分这个边界和思考的?另外是内部的认识上,这样一个东西是核心竞争力之一,我们把它开源出去,大家的认识上会不会有一些冲突?
黄挺:首先我回答第一个问题,因为SOFA发展了这么多年,是有非常重的历史包袱的,这也是我们为开源准备了非常长时间的原因。在从SOFA3到SOFA4的整个过程当中,包括把整个SOFA做轻量化的过程当中,其实就是在做这件事情。有一些公用的能力(我们觉得这个东西,没有和蚂蚁整个架构或者是业务有非常强的相关的东西),我们都希望可以开源出来。我们做开源这件事情不会把我们代码分为完全两套东西,然后两个分别演进,我们觉得这不是开源的正确做法。
另外开源对我们整个团队的消耗是非常大的,我们希望用同一套代码来实现内部的兼容和外部的开源,我们会在开源的代码当中留一些比较好的扩展点,这也是对我们本身代码架构可扩展性的挑战,目前我们做到的程度就是这样的。你刚刚讲到开源对我们内部价值的问题。
王渊命:对,就是怎么统一这个认知,比如说有人觉得这件事情是我们的核心竞争力,不应该开源。
黄挺:当然,这肯定是我们一部分核心竞争力,但是我们已经发展了这么多年,本身SOFA当中用了非常多的开源软件。从技术人员角度来说,如果我们已经能够在业界某些方面做到领先程度了,我觉得我们应该是去回馈社区的。
另一方面,虽然说蚂蚁金服体量很大,我们在金融上面有非常多的形态,包括保险、基金、银行,以及本身我们的一些支付业务。但是实际上整个世界其实是很大的。我们从做金融云开始,看到了一个更大的世界。如果说为了我们整套体系能有更多人去用,在更多的场景下去锻炼的话,开源也是必须要去走的一条路。这也是从产品发展方向上来看的。因为毕竟内部虽然很大,但是场景比外面的世界还是要小很多。
杨冰:我补充一些宏观的思考。您提到核心竞争力,其实我们不否认这个东西。其实就像蚂蚁去做科技开放这件事情的道理是一样的。蚂蚁看到的是一个更大生态的可能性。我觉得蚂蚁或者是阿里最有意思的就是聚集了一帮确实很有梦想的人,我们相信这件事情。这么大的一个可能性,我们发现瓶颈确实在技术上,这虽然不是在我们的瓶颈,但是可能是一些合作伙伴或者客户的瓶颈。如果说这些问题可以被解决的话,整个生态不是一个零和游戏,蚂蚁金服自己也会收获更多,所以我们愿意开放出来一些东西。
第二,回馈是另一方面的考虑。我们开源不是说开放出来就可以了,我们希望做一些运营,希望更多人加入进来,因为开源或者是社区不是一言堂,要有更多人去用,这种基础性的软件是会有网络效应的,我们希望有更多人进来去把它变的更丰富,去应对更复杂场景。并且蚂蚁金服会跳出来去做标准的倡导者,因为有一些东西会在基础设施层面,或者是一些基础架构软件层面,如果变成标准化的话,我们自己也会受益更多。现在国家也在支持这个事情,自主研发等等。我们是希望把它变成在金融行业的基础设施,这条路应该是挺难的,但是蚂蚁金服是最应该去做这件事情的一家公司。
王渊命:我突然想到一个问题,做为一个技术人我也一直在思考一个问题。你看我们单说服务端的,前几年冒出来的 Docker,最近一直很火的 Mesh,这些点你单拎出来,并不是一个很坚深复杂的技术,说我们以前想不到的,以前我们可能就零散的去应用这些技术了,并且实际上解决这些问题了,但是没有做的就是把它能抽象成一套非常好的工具或者是标准去把它推广出来。这个事情,当然从技术深度上,我觉得现在国内的开发工程师没有太大的差距了,但是怎么产生这种想法,以及这种想法最后到落地,要有一个想法、酝酿、策划的过程,这个过程我们国内工程师是比较缺乏的,这件事情,您觉得大家应该在哪些方面去增强?
杨冰:我觉得不光是工程师的问题,其实这是一种文化的差异。美国或者是欧洲,他们是比较讲究这种社区文化的,是比较开放的模式。他们在社区协同还有这方面其实会做的更好一些。而这个东西又是需要大量社区协同的。
第二,我觉得还是科技人才和教育体系带来的一些变化。因为国外可能很早人们就开始写论文了,所以我们觉得老外抽象能力很强,因为他们在教的时候是已经体系化的。而国内我们这一代人在人才储备和想法上会比老外少很多,我们下一代会比我们这一代好很多。所以不是没有这个深度,没有这个能力,而是说在思维能力上就会少很多这样的人和思考的方式。所以第一个是想到的人就比较少,第二个是想到之后,他愿意分享出来,以协同化模式去运作的人也少。
第三,就OpenSource来说,真要做大的OpenSource还是一半商业,一半技术的。所以你会发现其实国外能够深刻理解这个商业生态以及和技术的结合,如何把它平衡好,以基金会的方式去运作的人才。这个已经不是对程序员的要求了,这种类型的人才国外比国内多太多了。因为我们近期也在做OpenSource,在找开源圈子的人,这种人是凤毛麟角,还是非常稀缺的。而且我觉得,做开放、开源这件事情就是一个人脉圈,你得有这样的人,理解共同的理念。大家可以看一下《大教堂与集市》那本书,他讲了整个黑客的文化,开源的文化。能够关注并且深刻理解,最终能够把它去做商业化结合这方面的人才是奇缺的。所以我觉得要形成这样一种体量的,还要走很长的路。
你看谷歌,Apache 是一个开放治理架构的一套体系,这个东西其实很难管的,在当中还可以产生商业。谷歌现在从自己做安卓,从相对独立的开源体系做到了现在的CNCF,他也投入了很多人去做 CNCF,在里面去扮演一些关键的角色,这也是一套开放治理的架构。它进来的东西有一些对它是不利的,但是他也会放进来。这种驾驭的能力,能管理这种开放治理体系的人才太缺了,我觉得国内几乎是没有的,所以很难达到这样体量的影响力。我觉得开源世界现在还是被老外统治的。
魏佳:我是很认同您刚刚说的那些点的,可能从学校阶段出来的时候,理论知识扎实的程度,包括整个西方的商业文明,每日熏陶人的思维模式,是在这样一个过程当中起非常重要的作用的。
杨冰:我给你讲一个我们团队当中很有意思的例子,大家去看可能老外随便搞一个项目,先把自己变成一个优秀的ReadMe工程师。我们团队的同学,写这个东西就会要改好几版,其实这是非常不利于开源传播的。其实我们整个这方面的人才储备(有商业化意识的人才),都是奇缺的。公司现在也是鼓励去推那些有商业化意识又有技术背景的同学,可以去帮助公司去看更大的方向。首先我们有很好的技术人才的储备,这个我们还不错,是高速发展。但是商业化和技术相综合的人才其实是非常缺的。所以我觉得有这样的人才,再加上教育上的一些差距慢慢补齐,才有可能运作大规模的开源项目。当然国家支持也很重要。所以现在自主可控、国家安全、民族崛起这些东西会引入更多的外脑。现在海外回来的人很多,他们是受过这种思想的熏陶,这样一些行为模式的培养。他们会慢慢带来改变。百度陆奇走了,陆奇走的时候我看了很多的文章,大家对他的文化、理念还是比较认同的。虽然整个国家,整个文化,整个技术圈子还是有这个惯性的,没有那么容易往更开放的社区化方向去走,但是总会慢慢改变。
魏佳:我代表我们业界这些刚刚从学校出来的,初出茅庐的年轻工程师的一个问题。因为二位都是一毕业就加入了阿里的,或者说加入了蚂蚁金服,特别是杨冰又是近十年走到现在这样一个角色,年轻工程师多半有这样的困惑或者是顾虑,就是我刚刚加入公司的时候,可能更多是他们认为不会有太多成长的这种业务的代码,写的一些功能,打交道的也是公司的产品、测试。可能在相对长的时间内你都很难有机会像您刚刚说的,你们做的中间件这样的积累,对个人也好,对平台也好都是快速增长的机会的存在。对于绝大部分的年轻工程师,在缺少公司能提供的这种机会的情况下,您觉得个人成长、提升应该有哪些方式或者是维度。比如说现在加入A公司,本身盘子就没有那么大,练兵场就远远比不上阿里可以提供的。没有这样的一个平台,可能就客观缺乏这样的机会。另一方面,您觉得您这十年的过程当中,公司之外的,或者说项目本身客观存在的东西之外的,还有什么是为您的个人成长,无论是技术还是能力、事业等等起了决定性作用的。
杨冰:其实这方面的鸡汤是很多的,我就说一下多自己个人的感受,因为这个也不算我个人原创的,我是看到一些东西,结合我自己的体会。前一段时间摩拜的创始人后来套现离开了,发了一篇比较负面的文章,说你的同龄人现在在干吗什么的。后来又有了一篇比较正面的文章,我觉得分析得挺好的
首先年轻人在做选择的时候,要看点线面,首先选择比努力更重要,怎么选择呢?我面了很多的年轻人,大家非常看眼前的。我分享一下,一个是看微观,一个是看宏观。看宏观是说,你在选择的时候,你要把自己投在一个大面上是好的,有机会让你成为亿万富翁的或者是欣欣向荣这个方向去发展的,你行业要看得准,方向要看得准。第二个,你看线的时候,你要看这几个赛道当中有几家公司,你削尖脑袋也要前去,或者是尽量优先去考虑,而不是说随便找一个就可以了。第三个,再到点是指微观的,有可能你在面上OK,线上面不是最佳,在点上面可能要去做一些平衡。你可以在年轻的时候带着一个向前看的心,多选择到一个投资自己或者是自己能够学到更多东西的地方去,差不多就是线、面选好之后,在点上做平衡。比如说有一家公司很好,在线上明显优于另外一家公司的,但是那个团队没有特别牛的人,只是说这家公司很好,你进去可能会带着这家公司的光环,但是你学不到很好的东西。光环没有了之后,你原先可以做的事情,在你到了另外一家公司之后你是做不了的。所以你宁可去选择大方向正确,弱一点,但是那边有一个牛人或者说你能够成长的公司。我觉得这个就要看自己在宏观和微观上的平衡了。
第二个,靠谱比聪明更重要一点。我在看团队的一些人,包括养,包括发现走得快的⼀些人,都是一些站在比较高的角度或者是完成事情比较靠谱的人。改变环境其实是挺难的,如果说你可以改变自己来适应这个环境,招数不一样的话,你在哪里都可以做好。如果你觉得这个公司,这个庙已经装不下你,你自己再怎么变,这个能量已经到了天花板的话,你就换一个地方。你一定要想办法去改变自己,去为这件事情负责。
第三个,如果说年轻人的话,我们面试的时候还会比较看稳定性。虽然说刚刚讲了那么多,但是其实如果说大家无论是做业务还是什么,其实可能3年为期,很多东西一年、两年是很难有沉淀的。你一旦从一个地方换到另外一个地方,人际关系要重新建立,信任关系要重新建立,你的机会要重新去获取。你再不断重复,在新的地方去证明自己就会消耗掉很大力量,你就很难再往上全走了。所以他在深度和广度上就会出现一个瓶颈。我们会在看人的时候,如果真的是招比较有潜力或者是比较好的人才的话,不仅是看稳定度和忠诚度的问题,也是在看他是否有耐心沉淀下来在这个领域里深耕一段时间的。我个人结合一些东西,我觉得这三个点是比较重要的。
魏佳:在这样一个将近十年时间里,对您而言影响最大的是什么?
杨冰:我觉得还是这两年,就是走出去的这两年,我觉得我自己有很明显的变化。原先我跟他(黄挺)在一个团队里面,其实大家想法上差别不大,虽然我一直是他的上级,但是其实大家在思想上是有一些局限的。我的团队包括我自己也有明显的感受。我们去看OpenSource,看社区,甚至是走出去,而不是只把眼光留在公司内部,这个对我确实有很大启发。我在这个期间接触了非常多商业化人才,或者说外部的一些不同的看法,包括投资圈的一些人,包括社区一些人。真的给我非常不一样的视角,让我能够从不一样的维度思考问题。另外公司也给我这样一个舞台和机会。可能是因为我会更花时间去关注公司高层或者是整个公司层面上,主赛道、方向上在做的事情和我这边的关系。这样的话会得出不一样的答案。这两年其实自己的个人变化还是比较大的。因为接触到外面更多的视角,更商业化的运作,结合技术再去思考,会得出不一样的结果。看公司层面上的事情,你看到的也是商业化上的判断。就是成本、效率、稳定性这些方面的。以前我们这些人都是不看这些的,但是结合商业再看主赛道,以及我们这些东西,是选择优先做哪一个答案就不一样了。
魏佳:我们今天的采访就到这里,感谢二位。
高可用架构
改变互联网的构建方式
以上是关于蚂蚁金服研发的金融级分布式中间件SOFA背后的故事的主要内容,如果未能解决你的问题,请参考以下文章
蚂蚁金服启动分布式中间件开源计划,用于快速构建金融级云原生架构
开源 |蚂蚁金服启动分布式中间件开源计划,用于快速构建金融级云原生架构