前端Serverless:面向全栈的无服务器架构实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

0.1 意义深远的Serverless

据各大云计算供应商对 Serverless 使用情况的数据统计显示,目前各 FaaS(Function as a Service,函数即服务,是 Serverless 的两大能力之一)平台中,主要的编程语言是 Node.js。其在所有支持的语言中,占比甚至超过 80%。也就是说,Serverless 的使用者几乎都是 Node.js开发者。而在 Node.js 开发者中,又以前端研发人员为主。

为什么是 Node.js?又是什么原因导致了这一现象?作为前端研发人员中的一员,我们是否应该使用 FaaS 平台来构建应用?另外,Serverless 的另一分支 BaaS(Backend as a Service)又是什么?FaaS 和 BaaS 是什么关系?上述这些问题,正是我希望与读者进行探讨和交流的。

我认为,随着前端技术和业务复杂度的不断上升,以及 Cloud Native 技术的普及,Serverless架构对于前端研发人员来说,是一个十分有利的基础设施,因为它可以极大程度地降低云端服务的研发成本。在云端我们经历了从传统大型机到服务器集群的演化,其间,虚拟化技术从虚拟机的方式演化到容器化的方式。可以看出,我们正在“走向”那些更加轻量、更具灵活性的解决方案,以便可以采用更细粒度的方式去调度自己需要的计算资源。另外,伴随着基于前后端分离的 BFF 架构在 Web 应用开发中的流行,不同的终端也都有了属于自己的 BFF 层。在BFF 架构的普及之下,前端需要面临 3 个新的问题:

◎ 增加的 Node.js 应用,带来了更多的运维成本。

◎ 中长尾应用导致 Node.js 应用的计算资源长期闲置。

◎ 大量类似的基础服务(如身份认证、权限管理、消息推送等能力)需要在多个 Node.js应用中实现。

如何能从这些重复且烦琐的工作中解放出来,更聚焦于业务中,同时又能有效地提高资源利用率、降低成本,是我们迫切希望解决的问题。

于是,我以前端研发人员的身份,带着对上面这些问题的思考,在业务中进行了探索。经过两年时间的摸索与沉淀,我所在的团队完成了从基于 Node.js 应用的 BFF 架构演进到基于Serverless 的 BFF 架构的工作。随后又经过两年,我们将其应用在了更多的领域中(如传统的移动应用的服务端、面向生态的开放平台以及针对 AIoT (人工智能物联网)设备的能力建设等方向)。其间,我同时有幸牵头、建设了阿里巴巴公司内部服务于全体前端研发人员的Serverless 统一研发工作台项目,推进了集团前后端一体化解决方案的落地工作。通过这几年的观察和实践,我对 Serverless 的价值和方向有了深刻理解,对其架构的优劣势及其应用场景和局限性有了进一步的认知。

我购买并阅读了市面上几乎所有探讨Serverless的相关图书,但令人遗憾的是,这些图书的大多数篇幅都在介绍如何使用由云计算供应商提供的 Serverless 平台(如 Amazon AWS Lambda),描述如何创建、发布和维护一个基于该平台的应用,而对于 Serverless 的起源、发展、价值以及意义则一带而过。我认为,技术的发展历史和演化过程才应该是作为研发人员的我们,真正需要关心的内容。

知往鉴今,才有可能把握未来技术的发展方向。

另外,Serverless 的最大受益方是前端研发人员,但市面上却鲜有一本专门面向这一群体来介绍 Serverless 技术的图书,这不禁令人感到诧异。因此,我将从前端研发人员的视角,全面介绍 Serverless的原理及应用,希望更多的前端研发人员能因 Serverless 而受益。

本书除了介绍基本的 Serverless 基本理念和规范标准,还会对我个人在 Serverless 架构改造中总结的一些经验和教训进行阐述。希望通过对本书的介绍,能够解答读者的上述问题,让前端研发人员对 Serverless 不再彷徨。