什么是无服务器计算 (Serverless)
无服务器计算 (也称为 Serverless)是一种按使用情况分配机器资源的云计算执行模型。 在无服务器模型下,开发人员可以构建和运行应用程序,而无需管理任何服务器,并且只需为所使用的确切资源量付费。 相反,云服务提供商负责配置、管理和扩展运行应用程序代码的云基础设施。
虽然这个名称可能会产生误导,但无服务器并不意味着 “没有服务器”。 相反,无服务器应用程序抽象了与应用程序开发相关的常规基础设施工作。 您无法了解运行应用程序的计算机,无法配置它们,也无需管理或扩展它们。 换句话说,您为服务器的服务付费,而不是服务器本身。
从开发的角度来看,就好像根本没有服务器一样——开发人员编写代码,将其部署到生产中,云提供商处理其余的事情。
无服务器计算如何工作?
在构建应用程序时,开发人员通常需要执行许多其他服务器管理任务才能部署代码,例如定义用于处理和存储的资源、修补、负载平衡等。 所有这些额外的项目都会导致更长的配置时间和额外的运营开销,最终减慢开发团队的速度。
无服务器计算试图为开发人员提供一种无形的“无服务器”体验,从而无需考虑服务器或应用程序可能需要运行的任何内容。 相反,服务提供商会在幕后完成所有工作,以确保您拥有执行代码并满足要求的资源,而无需为闲置容量付费。
这是一个简单的类比,可以更容易地理解无服务器计算的工作原理
将无服务器想象成给你家送水。 您可以自己挖井,测试水质,并安装和维护将水引入房屋所需的所有外部管道。 或者,您可以连接到城市的主要供水系统。 您只需转动水龙头,即可在需要时获得所需的水量,并且城市每月会向您发送准确的用水量账单。
同样,云提供商会自动启动执行无服务器应用程序所需的基础设施资源和运行时环境,并在执行完成后自动缩减至零。 通常,您将根据执行期间的资源付费。 但是,这可能会因服务和供应商的不同而有所不同。
无服务器与其他类型的云计算
但是等等,其他类型的云计算不是以按需付费的方式提供资源吗? 确实,基础设施即服务 (IaaS) 和平台即服务 (PaaS) 等云服务模型也提供对计算资源的按需访问。
但是,即使您不使用分配给您的云基础设施,它仍然保持活动状态。 您还有责任扩展服务器容量或配置应用程序以根据用户需求进行扩展或缩减。
另一方面,无服务器架构是事件驱动的。 在此模型下,提供程序仅在事件触发您的代码运行时才为您提供资源,并将立即自动根据请求进行扩展。
无服务器计算示例和用例
在无服务器云计算中,通常有两种类型的服务:功能即服务(FaaS)和后端即服务(BaaS)。
- FaaS:
Function as a Service
- BaaS:
Backend as a Service
FaaS 提供执行应用程序逻辑以响应请求所需的计算资源。这些逻辑(或功能)在由云服务提供商完全管理的容器中运行。 无服务器应用程序通常分为单个功能,这些功能执行一个操作来响应事件。
BaaS 将 Web 或移动应用程序的整个后端功能作为服务提供,例如身份验证服务、数据库管理、云存储、推送通知和托管。 BaaS 还消除了管理服务器、容器或虚拟机的需要。
一般来说,无服务器计算仍然主要用于简单、短期的任务。 一些最常见的无服务器计算示例包括:
- 与第三方服务和 API 集成
- 运行计划任务(例如,每日报告、备份或业务逻辑)
- IT 流程自动化,例如自动删除访问权限、启动合规性安全检查或发送批准
- 结构化和非结构化数据的实时数据处理
- 自动化持续集成和持续交付 (CI/CD) 管道
- REST API 后端
- 基于触发器的操作或运行计划任务(例如每日报告、备份或业务逻辑)
- 异步处理
- 实时或预定通知
无服务器计算的优点
优势 |
描述 |
---|---|
更好的开发人员生产力 | 无服务器支持的开发人员专注于编写代码和优化业务逻辑,而不用担心配置、管理或扩展基础设施。 |
开箱即用的可扩展性 | 无服务器架构本身就可以扩展或缩小。 与其他类型的云计算中需要微调规则的自动缩放不同,无服务器自动缩放是即时的,并且可以缩小到零。 |
灵活的定价 | 无服务器定价模型通常根据实际使用情况和执行功能所需的时间进行收费。 您也无需为闲置容量付费,从而有助于降低与运行和管理您自己的服务器相关的运营成本。 |
更快的部署 | 借助无服务器,DevOps 团队无需花时间定义集成、测试、交付或部署代码所需的任何基础设施。 他们只需编写并部署到生产中即可。 |
使用任何语言 | 无服务器环境支持任何语言或框架,允许团队使用他们最舒服的语言或框架(Go、Python、Java、Node.js、.NET 等)进行开发。 |
无服务器计算的缺点
无服务器计算的最大缺点之一是它仍然是一项相对较新的技术。 因此,它尚不适合满足所有潜在的用例。
此外,无服务器的短暂性质及其缩减至零的能力使其不适合某些类型的应用程序。 它并不是为了长时间执行代码而构建的,并且不能始终为具有严格的低延迟要求的应用程序提供服务,例如金融服务应用程序。
最后但并非最不重要的一点是,将所有计算资源的管理移交给第三方提供商的优点也可能带来一些缺点。 虽然它可以腾出时间来专注于代码,但迁移到新的云提供商也可能很棘手。 您也无法了解服务在何处或如何运行,并且对扩展方式、运行的硬件代码类型以及灾难恢复情况的控制也有限。
尽管如此,无服务器计算还是有很多值得喜欢的地方,特别是对于那些希望帮助开发人员更快地采取行动并寻找更简单、更具成本效益的方法来构建基于云的应用程序的组织。
同样明显的是,随着无服务器计算的不断发展,当前存在的一些弱点将随着时间的推移而得到解决。 特别是,在无服务器的开源实现方面已经做了很多工作,并寻找使云服务更加开放的方法,以使解决方案可以跨不同平台和环境移植。