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

1.3 Serverless一词的诞生

Serverless的核心特性是按用量付费(Pay As You Go)和弹性计算(Elastic Compute)。而其中按用量付费的理念,最早可追溯到 2006 年发布的 Zimki 平台(目前已关闭)。Zimki 平台提供了编写能够运行在服务端(即后端)的 JavaScript 脚本的能力,并且实现了按用量付费的计费模式。而 Serverless 一词的首次提出,则是在 2012 年 Ken Fromm 发表的一篇名为Why The Future Of Software And Apps Is Serverless的文章中。在该文章的开篇,是这样描述云计算未来的:

虽然云计算已经十分普及,但我们仍然围绕着“服务器”在工作。不过,这种情况不会持续太久,随着 Serverless 的流行,我们将进入云应用的时代,它将对软件和应用程序的创建与部署产生重大的影响。

云计算的核心方向在于帮助研发人员隔离物理机房、物理机等基础设施的建设;对于具体的计算资源,研发人员仍然需要关心服务器的数量和配置等信息,并根据负载情况确定何时进行扩容。而在这篇文章中,Ken Fromm 提出云计算不应该继续围绕服务器设计,部署在云上的应用应该是 Serverless 架构的,这将完全改变应用程序的创建和分发模式。

该文章使用了一种比较生动的比喻来描述计算资源的产生过程。它以电力生产方式的变化进行类比。早期通过作坊式小型水车发电供能的方式,与工业时代通过火力发电厂燃煤发电,再通过电线将电力传输到千家万户的方式相比,后者大大降低了电力的生产成本。我们通过墙上的插座,即可使灯、电视、电钻等设备获得所需要的电力。同样,如果云计算服务能通过弹性计算的方式,使得我们的应用所需要的计算资源可以像电力的来源一样:按需使用、随用随取,那么研发人员就无须根据当前或预期的负载情况来配置他们的服务器资源,这将大大降低开发者的使用和运维成本。

虽然 Serverless 一词最早是在该文中被提出的,但它真正变得广为人知,主要应该归功于2014 年 Amazon 推出的 AWS Lambda 服务。Amazon AWS Lambda 通过触发器的机制,确保当有请求进入时,立即启动对应的服务进行响应,而无须在服务器上持续运行应用程序以等待相应的 HTTP 请求。同时,它还提供了比 GAE 更加细粒度的控制能力:函数。与应用程序不同的是,应用程序往往会提供一系列的相关服务;但函数只实现一个单一的功能,这一点让它能够更灵活地对服务实例进行扩容或缩容。也就是说,当这个服务没有被请求时,云计算上并没有这个函数的实例。一旦请求发出,调度平台将以毫秒级的服务实例化一个服务并完成响应。请求处理完成后,调度服务又将自动回收这个实例。最终,我们只需要按函数的执行时间进行付费即可。

Amazon AWS Lambda 虽然是最早上线的这种服务,但其并不是唯一的。目前各大云计算供应商都推出了自己的计算服务,这里面主要包括 Google Cloud Functions、Microsoft Azure Functions、IBM OpenWhisk 以及阿里云 Function Compute等。

“Serverless”一词虽然一直被提及,但各云计算供应商却没有达成统一的认识,这导致不同的云计算供应商提供的 Serverless 服务各有差异。那么 Serverless 的定义有被大家所认可的一个标准吗?如果有,它又是由谁,在什么时候提出的呢?