分享到

简介

Article header

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

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

无服务器意味着什么?

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

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

无服务器计算

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

Serverless computing

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

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

无服务器数据库

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

Serverless databases

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

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

权衡利弊

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

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

何时无服务器是一个不错的选择?

在许多情况下,无服务器环境可能是一个不错的选择。

如果您系统管理经验有限

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

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

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

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

如果您对成本敏感

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

何时避免使用无服务器

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

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

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

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

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

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

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

如果您已经有管理基础架构的经验

最后,如果您的团队已经面向管理基础架构和使用传统部署提供的上下文,那么无服务器可能不会为您提供很多优势。例如,如果您已经有一个强大的 DevOps 团队来管理基础架构和服务,那么无服务器提供的优势可能没有那么有吸引力。

此外,您的开发人员可能对他们如何测试和调试应用程序代码抱有期望,而这在无服务器环境中可能无法实现或无法访问。在无服务器平台上部署的函数可能无法以开发人员使用传统基础架构的方式进行分析。

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

总结

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

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

常见问题解答

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

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

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

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

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

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

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

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

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

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

关于作者
Justin Ellingwood

Justin Ellingwood

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