分享到

简介

Article header

无服务器计算提供了一种使用云服务设计和部署应用程序的新方式。但它究竟是什么,又是如何工作的?

在本文中,我们将探讨无服务器是什么、它是如何工作的以及它如何影响开发体验。我们将介绍它提供的一些优势,并讨论一些它可能不适用的场景。这应该能为您提供所需背景知识,以便您进行进一步研究,并确定无服务器模型是否适合您的项目。

无服务器是什么意思?

无服务器”描述了一种模型,其中处理能力通过 API 而不是实际服务器暴露。应用程序可以使用计算资源运行代码,而无需管理其执行环境。

在许多方面,无服务器代表了云提供商为用户抽象资源的下一个逻辑迭代。提供商不再提供虚拟化服务器来访问资源,而是使用按需付费模型提供对资源本身的访问。从不同的角度来看,无服务器是一种托管服务(例如托管数据库实例),用于更通用的计算逻辑。

无服务器计算

大多数情况下,当人们使用“无服务器”一词时,他们指的是无服务器计算。无服务器计算是一种范式,用户可以创建函数或计算逻辑,这些函数或计算逻辑将在 API 被命中时由提供商执行。因此,无服务器计算提供商通常被称为函数即服务(或 FaaS)平台。

Serverless computing

在进行无服务器计算开发时,您需要提前定义希望提供商运行的逻辑。您的应用程序可以设计为根据需要利用尽可能多的离散函数。然后,当应用程序通过暴露的端点调用不同的代码时,这些函数会按需执行。您的函数生成的任何输出或数据都会返回给调用者或卸载到外部存储,因为函数本身不维护状态。

作为开发人员,使用无服务器时,您无需担心维护用于执行代码的环境。此外,该模型在处理不同流量负载时提供了灵活性,而无需管理扩缩。您支付的费用与您使用的计算能力直接相关,因此您无需提前估计和分配资源。

无服务器数据库

无服务器数据库将无服务器范式应用于数据库功能。实际上,这意味着后端服务器资源、扩缩、数据管理都从用户那里抽象出来。用户可以将数据库用作 API 驱动的服务,从而无需规划容量来处理不同的场景。

Serverless databases

通常,无服务器数据库使用分层架构实现。用户可以与API 或代理网关交互,该网关自动处理到后端资源的路由。在网关后面,执行工作池处理它们收到的任何查询请求。实际数据维护在第三层,任何执行工作程序都可以访问和操作该层。

通过这种模型,计算和存储资源都可以根据需求在后台独立扩缩。用户不控制扩缩。相反,他们只需为执行的查询和存储的数据量付费。

权衡利弊

既然我们已经讨论了无服务器是什么以及它从用户角度来看通常是如何工作的,我们就可以开始确定无服务器解决方案的适用场景。

无服务器技术并非一刀切的解决方案。虽然这些新范式可以简化开发、部署和管理生命周期中的某些部分,但它们最适用于某些类型的工作负载和应用程序设计。让我们来看看一些应用程序和组织的特征,这些特征可能表明无服务器是否是一个好的选择。

何时选择无服务器是明智之举?

在许多场景中,无服务器环境可能是一个不错的选择。

如果您系统管理经验有限

如果您的团队系统管理经验不足,无服务器提供了一种分担责任的方式。用于运行应用程序代码的基础设施由平台提供商维护,让您可以专注于业务逻辑。将基础设施管理从您的职责列表中移除可以帮助您更快地启动并随着项目成熟保持速度。

如果您需要出色的可扩展性

开发人员转向无服务器平台的主要动机之一与上一点密切相关。无服务器架构通过将其从您的关注领域中移除,使扩展变得简单。虽然您的应用程序今天可能只需要少数操作,但随着采用率的提高或使用高峰的出现,它可能需要更多操作。

无服务器平台可以自动适应这些场景。这意味着您的基础设施永远不会过度或不足配置,因为资源分配会自动反映您的使用模式。您无需确定高峰或平均负载,也无需测试和配置扩展策略,因为您的提供商已经为您设计了解决方案。

如果您对成本敏感

如前所述,如果成本是一个大问题,无服务器平台也很有吸引力。使用无服务器,您只需为执行的操作付费。您无需为备用服务器付费,这些服务器只是为了以防万一。这在整个开发生命周期中都很有帮助。您的开发和测试系统可以使用与生产系统相同的平台,这有助于您更准确地进行测试,而无需承担维护专用上下文的成本。

何时避免无服务器

无服务器模型有很多优点,但并非适用于所有情况。

如果您的应用程序对性能敏感

如果您的应用程序对延迟或性能敏感,无服务器架构可能无法满足您的需求。虽然无服务器平台可以随您的使用量进行扩展,但在识别使用量增加并配置系统以处理新需求之前,会有一个明显的延迟。

这通常被称为“冷启动”问题,它会影响系统任何时候使用量发生显著变化。这种增加的启动时间排除了无服务器在许多需要一致响应时间的应用场景中的应用,无论之前的活动水平如何。

如果您不习惯基于云或特定供应商的解决方案

如果您不习惯或无法使用基于云或特定供应商的解决方案,您也可以选择避免无服务器平台。如果基于云的基础设施由于合规性、隐私问题或简单的偏好而无法选择,那么使用无服务器平台将不可行。

无服务器平台也代表了供应商锁定的情况,因为您的应用程序与供应商的实现紧密相连。虽然将应用程序逻辑分解为一系列离散函数可能看起来使您的工作负载具有可移植性,但每个服务的工作方式细节可能会阻止您在不投入大量迁移成本的情况下更换供应商。

如果您已经有管理基础设施的经验

最后,如果您的团队已经习惯于管理基础设施并使用传统部署提供的上下文,那么无服务器可能不会为您带来很多优势。例如,如果您已经有一个强大的 DevOps 团队来管理基础设施和服务,那么无服务器提供的优势可能就不那么吸引人了。

此外,您的开发人员可能对如何在无服务器环境中测试和调试应用程序代码有期望,这可能无法实现或不容易访问。在无服务器平台上部署的函数可能无法像开发人员使用传统基础设施那样进行分析。

在为您的项目评估无服务器时,考虑所有这些权衡非常重要。它在某些情况下是一个很棒的解决方案,但重要的是要弄清楚您的用例是否是其中之一。

总结

在本文中,我们重点解释了“无服务器”的实际含义,以及为什么它对许多项目来说是一个有吸引力的选择。我们讨论了函数即服务模型如何将应用程序服务器管理卸载给平台提供商,以及无服务器数据库产品如何将数据库操作与数据存储解耦。之后,我们探讨了哪些场景最适合无服务器设计,以及何时它可能不是正确的解决方案。

关于无服务器应用程序、数据库、提供商和设计,还有很多内容需要学习。以下资源可能有助于您继续学习

常见问题解答

无服务器架构是一种构建和运行应用程序和服务的方式,无需管理基础设施。

您的应用程序仍然在服务器上运行,但所有服务器管理都由提供商完成。

无服务器应用程序是使用无服务器架构构建的应用程序。

您的应用程序无需您配置或管理任何服务器。

由于无服务器本质上将基础设施的控制权交给了提供商,因此他们提供密钥管理、身份验证和授权等安全服务。

无服务器安全要求您改变对应用程序安全的看法,因为安全并非围绕应用程序本身构建。提供商处理围绕应用程序功能的安全。

无服务器后端是将无服务器范式应用于数据库功能。

实际上,这意味着后端服务器资源、扩展和数据管理都从用户那里抽象出来。用户可以将数据库用作 API 驱动的服务,从而无需规划容量。

无服务器计算是一种范式,用户可以创建函数或计算逻辑,这些函数或计算逻辑将在 API 被命中时由提供商执行。

因此,无服务器计算提供商通常被称为函数即服务 (FaaS) 平台。

作者简介
Justin Ellingwood

Justin Ellingwood

Justin 自 2013 年以来一直撰写关于数据库、Linux、基础设施和开发工具的文章。他目前与妻子和两只兔子住在柏林。他通常不必以第三人称写作,这对所有相关方来说都是一种解脱。
© . This site is unofficial and not affiliated with Prisma Data, Inc.