FaaS、PaaS和无服务器体系结构的优势

简介:

本文介绍了无服务器技术,并将其与PaaS和SpaaS进行了对比,同时介绍了无服务器体系结构的收益和成本,还有框架方面的需求。

最开始,“无服务器”意在帮助开发者摆脱运行后端应用程序所需的服务器设备的设置和管理工作。这项技术的目标并不是为了实现真正意义上的“无服务器”,而是指由第三方供应商负责后端基础结构的维护,以服务的方式为开发者提供所需功能,例如数据库、消息,以及身份验证等。这种服务基础结构通常可以叫做后端即服务(Backend-as-a-Service,BaaS),或移动后端即服务(Mobile Backend-as-a-service,MBaaS)。

但Amazon在2014年发布的AWS Lambda让“无服务器”这一范式提高到一个全新的层面,为云中运行的应用程序提供了一种全新的系统体系结构。至此再也不需要在服务器上持续运行进程以等待HTTP请求或API调用,而是可以通过某种事件机制触发代码的执行,通常这只需要在AWS的某台服务器上运行一个简单的功能。

使用这一范式的开发者无需考虑服务器细节,只需要负责编写发生某些事件后所需执行的代码。云供应商将负责提供用于运行这些代码的服务器,并在必要时对服务器进行缩放。执行完毕后,承担这些功能的容器会立刻停用,并且执行过程以100毫秒为单位进行度量,用户只需为运行代码过程中所消耗的资源付费。一些人将这种模式叫做功能即服务(Function-as-a-Service,FaaS),另一种“即服务”(Yet-Another-as-a-Service,YassS),自从云计算技术登场后这样的称呼越来越多了。

Amazon并不是唯一的FaaS供应商。其他厂商,例如Google Cloud Functions、Microsoft Azure Functions、IBM OpenWhisk,以及Iron.io和Webtask等各种开源实现都提供了类似的服务。

无服务器体系结构很适合搭配NanoService使用。如果说微服务(MicroService)是为了提供相对小规模的业务能力,那么可以认为NanoService提供的是这种能力的碎片。例如,可以通过微服务代表为某个客户执行所有CRUD操作所需的代码,而NanoService可以代表客户所要执行的每个操作:创建、读取、更新,以及删除。当触发“创建帐户”事件后,将通过AWS Lambda函数的方式执行相应的NanoService。但这种时候很少使用NanoService这样的称呼,大部分人更愿意将其称为微服务,或者就叫做“服务”。

一些人认为FaaS就是另一种形式的PaaS,但Intent Media的工程副总裁Mike Roberts有自己的不同看法:

大部分PaaS应用无法针对每个请求启动和停止整个应用程序,而FaaS平台生来就是为了实现这样的目的。…

FaaS和PaaS在运维方面最大的差异在于缩放能力。对于大部分PaaS平台,用户依然需要考虑缩放,例如在使用Heroku时需要考虑到底需要运行几个Dyno。但是对于FaaS应用,这种问题完全是透明的。就算将PaaS应用设置为自动缩放,依然无法在具体请求的层面上进行缩放(除非提供非常具体的流量塑形配置文件),而FaaS应用在成本方面效益就高多了。

Roberts并不认为大家都需要抛弃PaaS转为拥抱FaaS,原因有几个:“工具,以及API网关的完善程度可能是最大的问题。此外PaaS中实施的12-Factor Apps可能会使用应用内只读缓存以优化性能,这种情况就不适合使用FaaS功能。”

自称为资深思想家和“话痨”的Camille Fournier发布了一条推文质疑说:“如果无服务器服务将成为类似存储过程那样的重要概念,一个本来挺好的想法可能很快就会产生大量技术债。”作为对这个问题的回应,Roberts认为,只有在无服务器功能仅仅是“一小段用于对数据库的访问进行封装(Wrap)”的情况下,FaaS才能称之为SpaaS(Stored-Procedures-as-a-Services,存储过程即服务)。但FaaS的功能还可以用于其他很多用途,因此不适合这样进行类比。Roberts同时还补充说,与存储过程不同,无服务器的功能不依赖具体的语言或框架供应商,可以轻松实现测试和版本控制等功能。

谈到无服务器体系结构,ThoughtWorks公司的开发者Badri Janakiraman补充了FaaS导致的一种变革:长久以来,用于包含大部分逻辑的服务器流程可以拆解为大量专有的,以及第三方服务,同时对应用程序的控制转移到了客户端:

无服务器应用程序通常需要借助大量第三方服务实现原本由自己的服务器所承担的任务。这些服务相互交织组成了丰富的服务生态系统,例如Amazon AWS和Azure,或者也可以通过“大包大揽”的方式通过一个服务提供一系列能力,例如Parse或Firebase。这些服务所提供的抽象可以是基础结构层面的(例如消息队列、数据库、边缘缓存…),也可能是高级别的(例如联合身份、角色和能力管理、搜索…)。

对于常规用途的基于服务器的Web应用程序,其主要职责之一在于控制请求响应周期。服务器端的控制程序负责处理输入,引用相应的应用程序行为,构建动态的响应,这一过程通常需要使用模板化的引擎。在无服务器应用程序中,应用程序的行为与第三方服务交织在一起,客户端的控制流和动态的内容生成取代了服务器端的控制程序。富JavaScript应用程序、移动应用(以及越来越多的电视机或嵌入式物联网应用)通过调用API并使用客户端UI框架生成动态内容,借此对不同服务之间的交付进行协调。

对于实施无服务器应用程序所能获得的收益,Janakiraman认为包括:成本大幅降低,开发者不需要为云中运行的整个服务器付费,只需要为执行代码过程中消耗的资源付费;可缩放能力,可以通过事件触发的方式轻松地对不同服务进行缩放,而无须考虑基础结构的运维和维护。在成本方面Janakiraman认为“将一个应用程序拆分为相互交织的不同服务,观念上的负担会非常大,所用服务的种类越多这种负担就会越大”,并且开发测试工作的复杂度会增加。

使用无服务器方法通过FaaS创建整个后端系统时还有一项隐含成本,serverless.com在自己的文档中谈到了这个问题:

虽然AWS Lambda提供了强大的应用程序开发/运行新方法,但在完全基于AWS Lambda开发首个项目时我们意识到自己急需一种新的结构。对Lambda所引入的所有容器进行管理这是一项困难的任务。对于包含多名开发者、多种阶段,或需要为多个区域提供支持的团队,很快就会开始变得手忙脚乱。

为此Serverless Inc.制订了Serverless Framework,希望借助这个开源项目帮助开发者通过FaaS顺利构建Web、移动,以及物联网应用程序。该框架目前可适用于AWS Lambda,但框架的创建者预计未来还将支持其他供应商。这个框架提供了多种功能,包括在本地或远程运行和测试Lambda函数,部署Lambda函数,将REST API部署至AWS API网关,部署Lambda事件,为多个AWS地区提供支持等。目前可支持的语言包括JavaScript/Node.js,对Python和Java的支持正在开发中,稍后可能还会增加对其他语言的支持。

其他无服务器框架还包括Apex,该框架具备类似的功能,可支持JavaScript/Node.js、Go、Java和Python,未来还计划支持其他供应商。

对于希望进一步了解无服务器体系结构的人,amazon.com的CTO Werner Vogels发布了一系列使用AWS Lambda构建应用程序的参考体系结构。他还提供了各种指南,帮助开发者创建移动后端、实时文件处理能力、Web应用程序、物联网后端,以及基于Kinesis的实时流处理能力。这些参考体系结构中体现的基本原则也适用于其他FaaS供应商,不过具体使用到的服务可能会有所变化。
本文转自d1net(转载)

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
5月前
|
机器学习/深度学习 人工智能 PyTorch
阿里云GPU云服务器简介:优势场景价详解,最新收费标准与活动价格参考
阿里云GPU云服务器怎么样?阿里云GPU结合了GPU计算力与CPU计算力,主要应用于于深度学习、科学计算、图形可视化、视频处理多种应用场景,现在购买有包月5折包年4折起等优惠,GPU 计算型 gn6i实例4核15G包月优惠价1681.00元/1个月起,包年16141.80元/1年起;GPU 计算型 gn6v实例8核32G包月优惠价3817.00元/1个月起,包年36647.40元/1起等。本文为您详细介绍阿里云GPU云服务器产品优势、应用场景以及最新活动价格。
|
6月前
|
存储 弹性计算 数据挖掘
阿里云2核4G5M带宽199元云服务器测评:价格、性能、适用场景与续费优势详解
阿里云目前活动中推出的“2核4G5M带宽199元1年”云服务器,是当下深受初创企业用户喜爱的云服务器。本文将从价格优势、性能优势和续费优势等几个方面,详细解析这款阿里云199元云服务器的各项特点,帮助大家更好地了解这款云服务器的性能和应用场景,以供选择参考。
|
6月前
|
存储 安全 数据挖掘
阿里云2核2G3M带宽99元云服务器测评:价格、性能与续费优势详解
阿里云推出的“2核2G3M带宽99元1年”云服务器,是当下深受用户喜爱的云服务器。这款云服务器以其极具竞争力的价格、出色的性能和超长的续费优势,吸引了众多初创企业、个人开发者以及中小企业用户的广泛关注。本文将从价格优势、性能优势和续费优势三个方面,详细解析这款阿里云99元云服务器的各项特点,帮助大家更好地了解这款云服务器的性能和应用场景,以供选择参考。
|
6月前
|
存储 运维 安全
【转】服务器托管服务:优势解析与决策指南
服务器托管服务通过专业数据中心提供稳定IT基础设施,帮助企业与个人降低成本、提升安全性与运维效率。相较自建机房,其优势包括成本节约、高可用性、网络安全防护、7×24技术支持及灵活扩展能力。本文深入解析五大核心价值、对比自建与托管模式差异,并提供服务商选择指南,助力企业做出明智决策。
357 0
|
存储 弹性计算 数据挖掘
阿里云服务器ECS经济型e实例与通用算力u1区别、特性优势、使用场景及租赁费用对比
阿里云ECS云服务器的经济型e实例和通用算力型u1实例各有特点。e实例适合个人开发者和小微企业,适用于中小型网站、开发测试和轻量级应用,性价比高。u1实例则更适合中小企业,提供更高的性能和稳定性,适用于企业级应用、数据分析和中小型数据库。同等配置下,u1实例在计算、存储和网络性能上优于e实例。
867 86
|
10月前
|
存储 弹性计算 人工智能
阿里云服务器第九代企业级g9i实例技术特点、性能优势、适用场景简介
阿里云不断推出创新产品和技术,以满足市场对高性能、高可靠、高性价比云计算资源的需求。近日,阿里云正式面向全球发布了第九代企业级实例ECS g9i,并开启了邀测活动。本文将深入解析阿里云ECS g9i实例的技术特点、性能优势、适用场景以及购买建议,帮助用户更好地了解并选择合适的云服务器实例。
|
10月前
|
弹性计算 运维 安全
阿里云服务器通用算力型u1实例简单测评:性能、优势与最新价格参考
在阿里云2025年的活动中,独享型通用算力u1云服务器是用户比较关注的云服务器,因为它的性能要比活动内的经济型e实例好,但是价格又比计算型c8i、通用型g8i等其他企业级实例的价格要便宜。那么,独享型通用算力u1云服务器到底怎么样呢?它又有哪些优势呢?接下来,本文将为您详细解析。
|
10月前
|
存储 关系型数据库 分布式数据库
|
11月前
|
Kubernetes 监控 Serverless
基于阿里云Serverless Kubernetes(ASK)的无服务器架构设计与实践
无服务器架构(Serverless Architecture)在云原生技术中备受关注,开发者只需专注于业务逻辑,无需管理服务器。阿里云Serverless Kubernetes(ASK)是基于Kubernetes的托管服务,提供极致弹性和按需付费能力。本文深入探讨如何使用ASK设计和实现无服务器架构,涵盖事件驱动、自动扩展、无状态设计、监控与日志及成本优化等方面,并通过图片处理服务案例展示具体实践,帮助构建高效可靠的无服务器应用。

热门文章

最新文章