Serverless 是近年最火的技术之一,目前在阿里已成燎原之势。在 GMTC 全球大前端技术大会(深圳站)2019 现场,InfoQ 记者采访阿里巴巴高级前端技术专家,ICBU 跨境供应链多元化履约团队 TL 缪传杰(樵枫),请他结合阿里跨境供应链前端的架构演进过程,介绍他的团队是如何看待 Serverless 、如何用好 Serverless 的。
InfoQ:首先请您介绍一下您目前负责的工作,还有当前团队的主要工作范畴?
缪传杰:我来自阿里巴巴 ICBU 技术部,所服务业务 alibaba.com 是阿里巴巴最“古老”的一块业务,有 20 多年历史,为全球跨境贸易买卖家提供一系列专业的服务。我所在的跨境供应链是其中的一个版块,为小企业提供通关、外汇、退税、物流、金融等外贸领域的服务。
如果从前端视角看,有挑战的技术领域有这样几个:1、国际化,这个是很大的 Scope,里面包含了面向全球的极致性能问题,以及面向全球的测试保障、本地化等等问题;2、第二个命题是,我们的业务里面有大量中后台,怎么去高效的支撑、怎么在这种场景下去发挥更大的前端价值,让技术赋能业务,我这次的 Serverless 分享也是围绕这个命题的,此外我们还和集团共建开源了表单框架 Formily、列表方案 Alist 等; 3、还有一些其他命题,比如我们的业务里面涉及很多大宗外汇、资金流转,怎么去做全流程的质量保障,避免资损,为此我们针对不同节点研究了不同的质量保障产品,比如测试阶段用 F2etest 做在线浏览器兼容性测试,发布前用 UiRecorder 录制的脚本做回归测试,上线后用扁鹊平台实时监控 Nodejs 业务异常,目前 F2etest 和 UiRecorder 已经开源。
InfoQ:ICBU 跨境供应链在架构演进上划分了哪几个阶段?
缪传杰:从前后端协同视角可以分成三个阶段。2016 年之前,是以 Webx(一个 Java MVC 框架)来承载 Web 层的服务,承载页面数据的聚合、渲染 VM 模板等。这是夹在 Java 微服务跟我们浏览器之间的一个东西,带来的一个问题就是前后端的耦合:前端也在改,后端也在改,导致协同效能提不上去;另外还会有一些质量问题;此外,在这种架构下,前端的抓手很弱,会受制于后端的整个开发栈,开发体验和幸福感会很低。在这样一个大背景下,我们一直在探索怎样做前后端解耦提效,怎样更好的去赋能业务:我们想从架构的视角去看整个事情。
从大概 2016 年开始,我们采用 Node.js(Egg 框架)来作为中间层,也就是 BFF 架构。我们做的这个事情不算早,但是恰如其实,当时 Egg 体系相对成熟,我们有更多精力去处理业务层的事情。这个架构升级给我们带来的好处除了协同效能、开发体验提升外,更多的是发现前端可以承担更多职责,很多的商业想法更容易去推进落地了。但是我们毕竟是一个不算大的团队,另外我们毕竟是个前端团队,所以带来一些好处的同时也会带来一些弊端。比如我们要管机器运维的事情,还要去考虑机器成本、运维成本。
所以我们也在思考有没有更合理的方案、更轻量的方案,第一能把机器成本降下来,第二能够更快部署,第三就是能够让我们不用去管运维的事情。经过多方交流和学习,我们大家都一致认定 Serverless 是个方向,于是就进入了第三个阶段的探索:用 Serverless 把我们整个的研发效能提上去,把运维成本降下来,机器成本降下来。于是我们就跟集团的中间件团队,还有集团的 Node.js 中台团队去做共建,一起去把 FaaS 体系初步搭建起来。
对于整个阿里前端委员会来说,Serverless 是其中一个非常重要的核心技术方向,集团已经牵头拉着更多业务团队,包括中台团队,把整个体系丰富完善起来,这样其他团队如果要接入的话,会很方便。
InfoQ:Serverless 给中后台业务上面的前端开发带来了哪些改变?
缪传杰:这个问题可以分两个层次,因为从前端视角来看,实际上 Serverless 本质上还是 Node.js 的一个延展。第一个层次,Node.js 给前端带来什么?我认为 Node.js 给前端带来的价值,就是给我们带来更强的对业务的把控能力,和更高的协同效能等;第二个层次,就是引入 Serverless 之后,对原来的 Node.js 体系提升了什么?我认为 Serverless 代表的是普惠的服务端能力,让原来 Node.js 的体系更加简单、容易维护、成本更低。
还有就是,我之前提了一个概念叫 Serverless+,这是什么意思呢?我举个例子,比如说我们有人在用 SSR 这个能力,这个东西很好,但是它的一个问题就是对于前端来讲,你要去搭 SSR 必然要涉及到服务端的能力建设,成本还是比较高。所以 Serverless 进来之后就让 SSR 这个事情变简单了,这个就是 Serverless+SSR。还有一个例子,Serverless+BFF,BFF 让前后端分离这个事情变得更简单。另外还有一个例子就是 Serverless+中后台搭建,传统的搭建里实际上只是解决了 UI 层的拖拽、渲染、编排问题,有了 Serverless 之后,实际上可以让整个体验更好——除了搭建 UI 之外,只需要拖拽就可以把一个服务端的能力、接口的能力,在页面中做出来,解决体验隔离的问题。
InfoQ:但是 Serverless 从提出到现在时间也不是特别长,大概只有两年左右的时间,还是比较初级的阶段,它在实际落地的过程中会有哪些不足?
缪传杰:首先,在我们体系内,Serverless 说实话完善度还不是特别高。这个完善度包括平台的扩缩容速度、应用的起动速度,还包括整个工程链路是否足够平滑,以及线上监控速度是否完备,这些实际上还是要进一步去完善的。再比如生态能力需要不断完善,具体来说就是 BaaS 需要更加的丰富。
其次,如果是从小的开发团队或者个人开发者的角度来看的话,我更建议他们直接用云上的产品,因为自己去搭 Serverless 体系还是特别困难的。不过对于开发者来说,他们要面临的厂商选择可能会很多,阿里云、AWS、腾讯云…每个厂商都有自己的标准,每个厂商的函数写法可能都不一样。我们跟集团一起共建了开源框架 Midway FaaS,把各个厂商的差异点给抹平了。
另外,在编程模型上面,Serverless 可能跟传统的应用还是有很大差异。传统的应用是有分层次的,我拿 Egg 来举例,它可能有 Controller、Service 这些,而 FaaS 体系下,能不能用这么扁平的一个编程模型就能支撑我们很复杂的业务流?这个是要去探索的。比如 EaaS(Egg As a Service )就是一个探索的实践,我们把整个 Egg 直接跑到 FaaS 底层架构上面,看上去是个 Egg,但是底层跑的是 FaaS 自动扩缩容。
InfoQ:您怎么去看 Serverless 接下来的发展?
缪传杰:整体来说 Serverless 还是处于早期摸索阶段,未来一两年我觉得这个基本面不会有太大变化,发挥的空间还非常大。CNCF 把 Serverless 玩家分成平台提供者和开发者,可以从这两个视角去看趋势。从平台提供者的视角看,过去两年各个云产商对这块的投入力度非常大,谷歌发布了 Knative,Cloud Run,AWS 发布了 Firecracker, 腾讯云联手 Serverless.com ,在阿里不管在云上还是集团内部也有很多的发力。未来这块各大巨头的投入只会多不会少。再看社区上 Nodejs 框架,Midway Faas 开始发力,Egg 也将针对 Serverless 做更多的特性升级,比如正在讨论的 Module 机制。从开发者视角看,会有更多的业务进入,但是说实话 Serverless 不是银弹,怎么结合自己的业务场景更好的做出业务价值是需要持续思考和探索的。可以借用许晓斌的两句话概括:1、Serverless 现在还没有一个事实标准,还在探索阶段;2、Serverless 有着美好的未来。未来三到五年可能会相对比较成熟。
InfoQ:您的团队接下来在 Serverless 开发上会有什么样的规划吗?
缪传杰:我们是一个业务团队,首先还是要解决业务上的问题,接下来的一两年会全部上 Serverless,目前这个事情正在有计划的开展。其次,我们正在积极的参与集团 Serverless 体系的共建,把前期积累的能力和经验贡献出来,让更多的业务能享受到 Serverless 带来的快感。最后,我们正在和淘系一起在 Midway FaaS 开源项目中去对社区输出这个领域的积累,也欢迎大家一起来共建。
嘉宾介绍:
缪传杰(樵枫),阿里巴巴高级前端技术专家,ICBU 跨境供应链多元化履约团队 TL 。毕业后先后供职于华为、阿里等公司。在阿里的 4 年多时间里,曾担任 Ewtp 国际化等大型项目前端负责人,推进了跨境供应链复杂中后台业务前端架构的变革;参与推进了集团 Serverless 体系从 0 到 1 的建设,并成功在多个业务落地;同时推进了基于 Node.js 运行时的可视化诊断平台“扁鹊”的诞生和产品化。并在中后台架构领域有丰富的经验。
评论