分享到

简介

Article header

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

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

无服务器意味着什么?

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

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

无服务器计算

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

Serverless computing

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

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

无服务器数据库

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

Serverless databases

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

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

权衡利弊

现在我们已经讨论了什么是无服务器,以及从用户的角度来看它通常是如何工作的,我们可以开始确定无服务器解决方案在哪些方面是合适的。

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

何时选择无服务器?

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

如果您系统管理经验有限

如果您的团队没有丰富的系统管理经验,无服务器提供了一种卸载该责任的方法。用于运行应用程序代码的基础设施由平台提供商维护,使您可以专注于您的业务逻辑。从您的职责列表中消除基础设施管理可以帮助您更快地入门,并在您的项目成熟时保持速度。

如果您需要强大的可扩展性

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

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

如果您对成本敏感

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

何时避免使用无服务器

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

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

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

这通常被称为“冷启动”问题,它会在系统任何时候出现使用量显着变化时影响系统。这种增加的启动时间排除了许多需要一致响应时间的使用场景,而与之前的活动级别无关。

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

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

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

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

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

此外,您的开发人员可能对他们如何测试和调试应用程序代码抱有期望,而这在无服务器环境中可能是不可能的或难以实现的。以开发人员使用传统基础设施的方式分析部署到无服务器平台的功能可能是不可能的。

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

总结

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

在无服务器应用程序、数据库、提供商和设计方面,还有很多东西需要学习。以下资源可能对您继续学习有所帮助

常见问题解答

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

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

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

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

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

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

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

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

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

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

关于作者
Justin Ellingwood

Justin Ellingwood

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