分享到

介绍

Article header

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

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

无服务器意味着什么?

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

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

无服务器计算

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

Serverless computing

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

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

无服务器数据库

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

Serverless databases

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

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

权衡取舍

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

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

什么时候无服务器是好的选择?

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

如果您拥有有限的系统管理经验

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

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

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

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

如果您对成本敏感

如前所述,如果成本是一个主要问题,无服务器平台也很有吸引力。使用无服务器,您只需为执行的操作付费。您无需为闲置的服务器付费,而这些服务器只是在需要时才需要。这在整个开发周期中都有帮助。您的开发和测试系统可以使用与生产系统相同的平台,这可以帮助您更准确地测试,而无需维护专用环境相关的成本。

何时避免无服务器

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

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

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

这通常称为 "冷启动" 问题,它在每次使用量发生显著变化时都会影响系统。这种增加的启动时间排除了许多需要持续响应时间的用例,而这些用例与之前的活动级别无关。

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

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

无服务器平台也代表了一种 供应商锁定 的情况,因为您的应用程序会绑定到提供商的实现。虽然将您的应用程序逻辑分解为一组离散的函数似乎可以让您的工作负载可移植,但每个服务的工作方式的细节可能会阻止您在没有大量投资迁移的情况下更改提供商。

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

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

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

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

总结

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

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

常见问题

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

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

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

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

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

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

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

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

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

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

关于作者
Justin Ellingwood

Justin Ellingwood

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