Serverless和PaaS有什么区别?
对开发者来讲,Serverless和PaaS的后台架构都是对用户不可见的,它们是很相似的。但是,这两者之间还是一定差异的,对不同的场景选择其中之一可以更好的满足使用场景。
Serverless和PaaS最大的差异在于:可扩展性、价格、启动时间、工具集和边缘计算能力。
可扩展性
Serverless应用可以立即扩展、自动扩展、按需扩展,开发者不需要额外的配置。相比之下,虽然开发者可以按用户需求来编程PaaS应用,以实现扩展缩放,但这种实现不是PaaS平台内置提供的,开发者需要做一定的扩展预测。
Serverless计算资源可以比喻成从水龙头取水;现代住宅里的水龙头可以随时打开,按照需求想要多少水都可以得到。PaaS则更像饮水机或矿泉水派递服务,虽然想要多少水也可以得到,但是不像水龙头一样简单,因为需求增长时客户需要请求供应商提供更多。这两个场景中,虽然提供水质净化、送水上门的工作者都是在幕后,但是只有水龙头可以精确的扩大或缩小用水量,达到按需、实时供水。
Serverless架构可以做到快速扩展,通过快速增加Serverless functions实例;也可以做到快速缩减,通过关闭functions实例(当它们不再被需要时)。事实上,无服务网络应用程序可以一直缩减直到无实例活动,然后又在秒级或毫秒级别迅速启动,以响应触发事件。而构建在PaaS上的应用程序无法做到如此迅速和大规模的扩展或缩减。
价格
仍然用水资源来做比喻,Serverless服务付费非常精确,开发者只需要支付他们所使用的。有些Serverless供应商是按照使用时间收费的,可以精确计算到每个实例分别运行了多少秒。有些供应商则按照请求次数收费。
使用饮水机的客户虽然也只需支付他们所使用的,但是是按桶来计算的,而非流量。同理,PaaS平台供应商向开发者收费时就没有那么精确,有些PaaS供应商是按月收取费用,开发者可以自己决定需要消耗多少计算资源并支付多少费用,但是这需要提前预估,并且不能实时的扩展或缩减来应对不同的需求。
这样说并不意味着Serverless就比PaaS花费少,用起来更便宜。对于那些有着持续的大流量访问、波动相对不大的大型网络应用程序,用Paas就比用serverless总花费少。
启动时间
前面也说过,serverless应用程序可以瞬间启动,一经事件触发function。PaaS平台的应用程序也可以很快启动,但是没有serverless那么轻量化,构建和启动还是需要一段时间的。有时为了提供PaaS平台应用程序的用户体验,PaaS应用程序中的某些功能可能会一直在后台运行。
工具集
PaaS供应商一般会提供给开发者很多工具来构建和管理应用,如测试工具、调试工具。而无服务计算应用程序因为并不会跑在特定的机器或虚拟机等,无论运行在哪里,serverless functions都需要表现一致。所以,Serverless供应商虽然也提供一些工具集,但是不会提供一套完整的环境来构建和测试应用。
边缘计算能力
Serverless应用程序不依赖于特定的机器或平台,可以在互联网的任何部分任何地方运行;所以可以部署在紧邻终端用户的地方,极大的缩短延迟。对于PaaS而言,虽然从开发者角度看,PaaS也是无服务器的(不用管理服务器),但PaaS应用程序代码本质上是跑在IaaS(其他供应商的IaaS或自己的)。这意味着构建在云平台上的应用程序很有可能只能运行在特定机器上(如云计算中心特殊设计的机器或云数据库),从而可能阻止开发者优化应用程序来在边缘设备上运行。
转载请注明出处:
参考: