社区/文章分享/工业级 Serverless 平台需要具备这些能力

工业级 Serverless 平台需要具备这些能力

作者 | 冉叶兰

嘉宾 | 周俊鹏

Serverless(无服务器运算) 是云计算的一种模型,也被称为云计算未来的方向。因其降低开发成本、按需自动扩缩容、免运维等诸多优势,被越来越多的公司用来构建云上应用。国内外此类型产品,有诸如 腾讯云云开发、AWS Lambda、Microsoft Azure Functions 等。

Serverless 相关技术的普及影响前端开发者的现有能力和定位,同时前后端架构和工程体系也随其发展而产生变化,那么 Serverless 如何走工程化道路?在 GMTC 北京 2020,我们邀请到了腾讯高级工程师周俊鹏老师来分享《面向全栈的工业级 Serverless 平台成型之路》。我们有幸在会前采访了腾讯云云开发团队的周老师,聊聊 Serverless 给前端带来的挑战和机遇,以及面向全栈的 Serverless 平台应该具备哪些能力。

InfoQ:请介绍下你自己。

周俊鹏: 我的从业经历比较复杂,最初的工作以 CSS 和动画为主,随后一段时间专注于前端工程效率即所谓的前端工程化,然后有两年半时间专攻图形编程(Canvas/SVG/WebGL)。目前就职于腾讯云云开发 Cloudbase 团队,负责云开发 Cloudbase 相关研发和生态建设工作。团队的主要产品云开发是支持多端开发(一云多端)的 Serverless 应用开发平台,小程序·云开发就是我们团队的主要产品,现在我们已布局小程序、 Web 和移动应用开发领域。

InfoQ:你是怎么看待 Severless 发展的?

周俊鹏: 其实在参加工作至今的六年时间里,之所以每份工作的技术侧重点有很大差异,是想尽量摸清前端开发技术的广度和深度,以便确定最终的从业方向。所以有宏观到全栈的工程化,也有微观到像素的 WebGL 编程。

在充分熟悉了这些技术之后,我个人认为前端在未来的核心发展方向主要有两个:数据可视化和全栈开发数据可视化 对数学和算法的要求很高,同时可以与多线程、WebAssembly 等新技术结合,充分压榨浏览器的性能,考验的是技术深度,其价值体现在疑难问题的攻坚上。全栈开发 指的是从底层到应用层的全链路闭环开发,当然事无巨细不现实,所以要依托一些技术、工具或平台,而目前来看,Serverless 是最有可能支撑全栈开发落地的指导思想之一。

InfoQ:团队是在什么契机下,引入 Serverless 的?

周俊鹏: 团队的主要产品云开发 Cloudbase 是一个基于 Serverless 架构(FaaS+BaaS) 构建的一站式后端云服务平台,作为一款 ToB 产品,它以生产工具角色为开发者提供价值。2018 年在微信小程序落地“小程序·云开发”之后得到了不错的反馈和增长,而 Serverless 理念的亮点之一便是并没有限定应用场景,所以我们团队目前在微信小程序之后继续布局多端平台,目的是尽量帮助开发者解决业务逻辑之外的琐碎事,提高生产力。

InfoQ:现在团队内部的 Serverless 平台发展现状怎么样?

**周俊鹏:**Serverless 思想是贯彻在我们产品全局设计和功能设计上的。

在产品矩阵方面,云开发 Cloudbase 除了提供函数、文件存储、数据库等基础服务以外,还融合微信生态的云调用能力,开发者可以免鉴权快速调用微信开放能力。同时,场景化需求,提供静态托管、扩展能力等综合解决方案。

在功能细节上,不仅在计算服务上我们提供函数服务,在数据库上我们更是联合微信团队共同打造了业界真正的 “Serverless for NoSQL”,Serverless 模式下的数据库服务,开发者在云 + 端上可以原生地使用微信 SDK 操作数据;特别是端上的数据操作,这种 Serverless 模式下的数据库可以更有效地利用端的计算能力,从而节省用户的底层资源成本。此外,微信内部的数据通路让整个链路也更安全稳定可靠。

在多端布局方面,云开发 Cloudbase 与多端和跨端开发技术相结合,在微信小程序、QQ 小程序、Web、移动应用 (Flutter) 均已落地。

在开发者量级方面,已经有超过 50 多万开发者在使用,API 日均调用量超过 7 亿次。

InfoQ:你认为工业级 Serverless 平台应该具备哪些能力?

周俊鹏: 一门新兴技术或理念如果想令开发者摆脱玩一玩的心态,转变为真正接受它的工业价值,有很长的路要走,ToB 平台的路程则更加艰辛。而云开发 Cloudbase 作为一个结合新技术理念的 ToB 平台,这条路的艰辛程度更甚。以我个人的理解,工业级 Serverless 平台有一个非常重要的基调需要在确定迭代方向之前完成,即明确用户群体。

以云开发 Cloudbase 为例,用户的基本诉求虽然大体上均是在保证服务稳定性的前提下追求高生产效率,但是对平台能力的具体需求上,按照颗粒度可以大致分为两类:一类用户偏重完整、闭环,对平台能力的需求以高度封装的 API 为主;另一类用户偏重定制化、可组合甚至二次开发,对平台能力的需求以细粒度的 API 为主。所以我个人认为工业级的 Serverless 平台既要有高度封装的全能型能力,也要具备细粒度可组合的定制能力。以此为基调,我们团队在制定云开发 Cloudbase 迭代路线时,即提供函数、存储、数据库这类细粒度能力,又提供扩展能力、应用服务托管这类高度封装的解决方案。

InfoQ:全栈架构如何升级?

周俊鹏: 我们讲全栈开发并非是令一个开发者负责技术架构的所有环节和细节,而是令开发者只关注业务逻辑本身,而不必关心业务逻辑之外的繁杂事。比如 Web 服务器支持业务逻辑正常运行的背后是硬件、网络、操作系统等与业务无关的事,我所期待的全栈开发理想形态是将这些工作从开发者的关注清单中删除,只剩业务逻辑本身。以目前的技术发展状况看,Serverless 是最有可能实现这种全栈架构的技术模式之一。

InfoQ:如何打造适合自身发展的工程模型?

周俊鹏: 打造工程模型的基本前提是紧密结合团队自身的技术架构和组织架构,其中技术架构又往往取决于组织架构。以前端工程化为例,前后端分工模式决定前端架构的定型,进而才能建立工程体系。回顾前端技术的发展历程,从最初的静态网页到如今的大前端,技术的演进推动技术架构和组织架构的调整,工程模型也随之改变。Serverless 提供了全栈开发的可能性,前端技术架构进化为全栈架构后,工程模型从以前只覆盖前端范畴进化为全链路闭环体系是必然的趋势。

InfoQ:你认为 Serverless 应当如何与端应用开发技术相结合?

**周俊鹏:**Serverless 相关的技术本身隶属云计算领域,与应用端开发其实并没有太深的联系,而跟云计算之前的技术(比如:IaaS、PaaS、SaaS)相比,Serverless 之所以在前端领域大热,根本原因在于:它比 IaaS、PaaS 更加接近应用层。回顾云计算技术的发展,其实是自底向上一步步解放生产力的过程,而 Serverless 是目前云计算领域最接近应用层的技术模式。但是这并不意味这没有沟壑,Serverless 距离端的“最后一公里”至今仍没有绝对统一的解决方案,云开发 Cloudbase 也只是率先提出了一种相对合理且接受度较高的方案而已。

我们解决 Serverless 对端问题上坚持一云多端的理念,服务本身是平台无关的,在应用端的支持上有两种可选方案:一是提供封装能力的端 SDK;二是提供平台无关的 HTTP API。用户可以根据自身的需求选择任意一种。SDK 的优点是高度封装,并且我们有一些跨端的 SDK,比如:JavaScript SDK、Flutter SDK、React Native SDK 等等;HTTP API 的优点是粒度更细,可组合性和可定制性更高,但是对开发者的技术能力要求相对高一点。

嘉宾介绍

周俊鹏,腾讯高级工程师,就职于腾讯云云开发 CloudBase 团队,负责云开发 Cloudbase 相关技术研发工作。QCon 2017 讲师,GMTC 2018/2019 出品人,主要研究方向是前端图形编程、工程化和 Web 应用层架构。著有《前端工程化:体系设计与实践》《前端技术架构与工程》。