简介
无服务器计算提供了一种使用云服务设计和部署应用程序的新方式。但它究竟是什么,又是如何工作的?
在本文中,我们将探讨什么是无服务器、它是如何工作的,以及它如何影响开发体验。我们将介绍它的一些优势,并讨论一些可能不适用的场景。这应该能为你提供进行额外研究所需的背景知识,并判断无服务器模型是否适合你的项目。
访问 Prisma Data Platform,在一个地方管理你的所有应用程序数据。
无服务器意味着什么?
无服务器描述了一种模型,其中处理能力通过 API 而非实际服务器暴露出来。应用程序可以使用计算资源来运行代码,而无需管理其执行环境。
在许多方面,无服务器代表了云提供商为用户抽象资源的下一个逻辑迭代。提供商不再提供虚拟化服务器来访问资源,而是使用按需付费模式提供对资源本身的访问。从另一个角度来看,无服务器是一种托管服务(例如,类似于托管数据库实例),用于更通用的计算逻辑。
无服务器计算
大多数情况下,当人们使用“无服务器”一词时,他们指的是无服务器计算。无服务器计算是一种范式,用户可以创建函数或计算逻辑,当 API 被调用时,这些函数或计算逻辑将由提供商执行。正因为如此,无服务器计算提供商通常被称为函数即服务(或 FaaS)平台。
使用无服务器计算进行开发时,你需要提前定义希望提供商运行的逻辑。你的应用程序可以设计成利用尽可能多的离散函数。然后,当应用程序通过暴露的端点调用不同的代码时,这些函数会按需执行。你的函数生成的任何输出或数据会返回给调用者,或者卸载到外部存储,因为函数本身不维护状态。
作为开发人员,使用无服务器时,你无需担心维护用于执行代码的环境。此外,这种模型在处理不同流量时提供了灵活性,而无需管理扩缩容。你支付的费用直接与你使用的计算能力相关,因此无需提前估算和分配资源。
无服务器数据库
无服务器数据库将无服务器范式应用于数据库功能。实际上,这意味着后端服务器资源、扩缩容和数据管理都对用户进行了抽象。用户可以将数据库用作 API 驱动的服务,从而无需规划容量来应对不同场景。
通常,无服务器数据库采用分层架构实现。用户可以与API 或代理网关交互,该网关自动处理到后端资源的路由。在网关后面,执行工作池处理接收到的任何查询请求。实际数据保存在第三层,任何执行工作者都可以访问和操作该层。
在这种模型下,计算和存储资源都可以根据需求在后台独立扩缩容。用户不控制扩缩容。相反,他们只需为执行的查询和存储的数据量付费。
权衡取舍
现在我们已经讨论了什么是无服务器以及它从用户角度来看通常是如何工作的,我们可以开始确定无服务器解决方案的适用场景。
无服务器技术并非一劳永逸的解决方案。虽然这些新范式可以简化开发、部署和管理生命周期的某些部分,但它们最适用于特定类型的工作负载和应用程序设计。让我们来看看应用程序和组织的一些特征,这些特征可能表明无服务器是否是一个好的选择。
无服务器何时是好的选择?
无服务器环境可能适用于多种场景。
如果你的系统管理经验有限
如果你的团队没有丰富的系统管理经验,无服务器提供了一种卸载该责任的方式。用于运行应用程序代码的基础设施由平台提供商维护,让你能够专注于业务逻辑。将基础设施管理从你的职责列表中移除,可以帮助你更快地开始并随着项目的成熟保持速度。
如果你需要强大的可伸缩性
开发人员转向无服务器平台的主要动因之一与上一点紧密相关。无服务器架构通过将其从你的关注范围中移除,从而使扩缩容变得简单。虽然你的应用程序今天可能只需要少量操作,但随着采用率的提高或使用量的激增,它可能需要更多操作。
无服务器平台可以自动适应这些场景。这意味着你的基础设施永远不会过度或不足配置,因为资源分配会自动反映你的使用模式。你无需计算峰值或平均负载,也无需测试和配置扩缩容策略,因为你的提供商已经为你设计了解决方案。
如果你对成本敏感
如前所述,如果成本是主要考量,无服务器平台也极具吸引力。使用无服务器,你只需为你执行的操作付费。你无需为那些可能需要但目前空闲的服务器付费。这在整个开发生命周期中都很有帮助。你的开发和测试系统可以使用与生产系统相同的平台,这有助于你更准确地进行测试,而无需承担维护专用环境的相关成本。
何时避免使用无服务器
无服务器模型有许多优点,但并非适用于所有情况。
如果你的应用程序对性能敏感
如果你的应用程序对延迟或性能敏感,无服务器架构可能无法满足你的需求。虽然无服务器平台可以随你的使用量进行扩缩容,但在识别到使用量增加并配置系统以处理新需求之前,会有一个显著的延迟。
这通常被称为“冷启动”问题,它会在使用量发生显著变化时影响系统。这种增加的启动时间使得无服务器不适用于许多需要无论之前活动水平如何都保持一致响应时间的使用场景。
如果你不习惯使用基于云或特定于供应商的解决方案
如果你不习惯或无法使用基于云或特定于供应商的解决方案,你也可以选择避免使用无服务器平台。如果基于云的基础设施因合规性、隐私问题或仅仅是个人偏好而不可行,那么使用无服务器平台将不是一个选择。
无服务器平台也代表了供应商锁定的一个案例,因为你的应用程序会与提供商的实现绑定。虽然将应用程序逻辑分解为一组离散函数似乎可以使你的工作负载可移植,但每个服务工作方式的细节可能会让你在没有大量迁移投资的情况下无法更换提供商。
如果你已经有基础设施管理经验
最后,如果你的团队已经习惯于管理基础设施并使用传统部署提供的环境,那么无服务器可能不会为你带来太多优势。例如,如果你的团队已经有一个强大的 DevOps 团队来管理基础设施和服务,那么无服务器提供的优势可能就不那么吸引人了。
此外,你的开发人员可能对如何测试和调试应用程序代码有预期,但在无服务器环境中可能无法实现或难以实现。可能无法以开发人员使用传统基础设施相同的方式对部署到无服务器平台的函数进行性能分析。
在为你的项目评估无服务器时,考虑所有这些权衡取舍非常重要。对于某些情况来说,它是一个很棒的解决方案,但重要的是要弄清楚你的用例是否属于其中之一。
总结
在本文中,我们重点解释了“无服务器”的实际含义以及为什么它对许多项目来说是一个有吸引力的选择。我们讨论了函数即服务模型如何将应用程序服务器管理卸载给平台提供商,以及无服务器数据库产品如何能够将数据库操作与数据存储分离。随后,我们探讨了哪些场景最适合无服务器设计,以及何时它可能不是正确的解决方案。
关于无服务器应用程序、数据库、提供商和设计,还有很多值得学习的地方。以下资源可能在你继续学习时有所帮助:
- 13 大无服务器计算和数据库提供商
- 常见无服务器挑战简介
- 传统数据库与无服务器数据库
- 无服务器词汇表
- Martin Fowler 关于无服务器架构的页面(作者:Mike Roberts)
- Cloud Academy 的“什么是无服务器计算”
访问 Prisma Data Platform,在一个地方管理你的所有应用程序数据。
常见问题
无服务器架构是一种无需管理基础设施即可构建和运行应用程序和服务的方式。
你的应用程序仍然在服务器上运行,但所有服务器管理都由提供商完成。
无服务器应用程序是使用无服务器架构构建的应用程序。
你的应用程序不需要你配置或管理任何服务器。
由于无服务器本质上将基础设施的控制权交给了提供商,因此他们提供密钥管理、身份验证和授权等安全服务。
无服务器安全要求你改变对应用程序安全性的看法,因为安全性并非围绕应用程序本身构建。提供商处理应用程序功能的安全性。
一个无服务器后端是将无服务器范式应用于数据库功能。
实际上,这意味着后端服务器资源、扩缩容和数据管理都对用户进行了抽象。用户可以将数据库用作 API 驱动的服务,从而无需规划容量。
无服务器计算是一种范式,用户可以创建函数或计算逻辑,当 API 被调用时,这些函数或计算逻辑将由提供商执行。
正因为如此,无服务器计算提供商通常被称为函数即服务(FaaS)平台。