简介
无服务器计算是云计算领域一个相当新的演进。无服务器提供商让开发人员能够专注于其应用程序所需的功能,而无需担心执行环境或任何其他底层。
在本文中,我们将介绍一些最受欢迎的无服务器提供商,并分析它们在不同类别中的比较。在了解了您的选项之后,您将能够更好地评估您的选择,并选择最符合您需求的服务。
我们将讨论每种服务的共同点、不同之处以及哪些标准可能让您选择其中一种而非另一种。虽然没有一个无服务器提供商适合所有用户,但本分析旨在突出有助于根据您的优先级评估候选者的标准。
请查看Prisma Data Platform,在一个地方管理您的所有应用程序数据。
提供商概述和评估标准
虽然存在其他选项,但在本文中,我们将介绍一些最常见的商业无服务器提供商。我们将评估以下选项
- AWS Lambda
- Microsoft Azure Functions
- Google Cloud Functions
- Cloudflare Workers
- Netlify Functions
- Vercel Functions
这些产品中的每一个都代表了无服务器计算的一种实现。为了更好地了解无服务器计算是什么以及它能提供哪些好处,请查看我们的“什么是无服务器?”文章。
请注意,我们在此避免讨论基于容器的解决方案。容器服务广泛存在,并且在许多情况下,与无服务器计算提供的一些价值重叠。然而,基于容器的生态系统比短生命周期、面向需求的无服务器用例要广泛得多,因此我们将专注于符合这种更狭窄设计的解决方案,以限制我们的范围。
在描述各个提供商提供的服务时,使用相同的通用类别来比较每个选项会很有帮助。对于本指南,我们将探讨这些无服务器平台在以下方面的比较
- 侧重点: 提供商对服务的首要目标是什么?它们是通用产品,还是专注于市场的某个特定方面?
- 功能: 该平台是否提供任何独特的卖点使其脱颖而出?
- 语言支持: 函数支持哪些语言?
- 成熟度: 该服务经过了多少测试,以及它证明自己可靠多久了?
- 价格: 使用该服务需要多少费用?是否有免费和付费层?如何计算使用量?
- 限制: 工作负载执行有哪些限制和上限?执行时间、请求和响应大小、每天或每月执行次数等的阈值是多少?
我们还将简要介绍一些无服务器计算相关技术,如无服务器数据库,这些技术有助于改进您的无服务器策略。我们将提及以下提供商和服务
- Amazon DynamoDB 和 Aurora Serverless
- Microsoft Cosmos DB Serverless 和 Azure SQL Serverless
- Google Firestore
- PlanetScale
- MongoDB Atlas Serverless
- CockroachDB Serverless
- Fauna
- Neon
最后,我们将介绍一些新的工具和服务,如果您正在构建无服务器应用程序,您可能需要关注它们。虽然它们目前可能尚未准备好投入生产,但它们可能很快就能提供价值
- Deno Deploy
- Prisma Accelerate
考虑到这些类别,我们可以开始查看可用的服务。
AWS Lambda
概述
- 发布时间 2014
- 侧重点: 通用无服务器计算。AWS 服务集成。
- 语言支持: 广泛
- 成熟度: 成熟
- 定价: 按调用次数和资源消耗计费。边缘部署或预配置热实例需额外付费。
一般描述
无服务器领域最知名的提供商可能是AWS Lambda。Amazon 的 Lambda 服务于 2014 年推出,是首批引起市场广泛关注的提供商之一,这在很大程度上归因于其他服务产品带来的固有客户群。
由于其稳定性、功能范围和普遍熟悉度,AWS Lambda 仍然是其他产品进行比较的主要服务。
侧重点
AWS Lambda 是一个通用的无服务器平台。它不专注于解决特定问题,而是提供一个平台,用于您可能拥有的任何事件驱动工作流。
由于 Amazon 拥有广泛的服务目录,Lambda 非常重视与其他 AWS 服务的兼容性和集成。
功能
AWS Lambda 提供的功能超出了所有无服务器提供商都能提供的基本功能。随着时间的推移,该服务变得更加灵活和强大,使其保持竞争力和创新性。
以下是它的一些特色功能
- 任意可执行文件:您可以配置 Lambda 服务来运行任意可执行文件来处理事件,而不是使用特定语言的函数。
- 自定义运行时:用户可以实现自己的语言运行时,超出 Amazon 原生提供的运行时。
- 预置并发:能够保持事件处理程序处于启动和待机状态,以帮助缓解在事件发生时分配资源的冷启动问题。
- 轻松访问持久性:用户可以使用Amazon 的 RDS Proxy从其函数安全地连接到数据库实例,并使用 Elastic File System 存储基于文件的Durable数据。
语言支持
截至撰写本文时,AWS Lambda 提供以下原生语言运行时
- Node.js:10、12、14
- Python:2.7、3.6、3.7、3.8、3.9
- Ruby:2.5、2.7
- Java:8、11
- Go:1.x
- .Net Core:2.1、3.1
此外,如上所述,您可以提供自己的自定义运行时,这允许您任意扩展可用的运行时支持。
成熟度
由于运行时间长,AWS Lambda 可能是当今最成熟的无服务器平台。它已被证明可靠,并且能够处理各种大小的工作负载。
价格
AWS Lambda 根据毫秒级跟踪的资源使用量收费。不幸的是,由于许多不同因素会影响总价格,运行 AWS Lambda 的总成本通常难以提前计算。
总价格基于多种因素
- 执行函数所用的架构:x86 或 Arm。按请求数量和每个请求的持续时间收费。
- 分配给函数的内存量:从 128 MB 到 10,240 MB,以 1 MB 为增量分配
- 预置并发使用量:如果您选择预置并发以帮助提高性能,额外的并发将花费更多
- 函数进出的数据传输量
- Lambda@Edge 使用量:如果您将函数部署到更靠近客户端的位置,您将需要为该额外服务付费。
限制
无服务器提供商通常对您的函数和账户允许消耗的资源设有限制或配额。AWS Lambda 的一些更重要的上限是
- 函数内存:可配置,从 128 MB 到 10240 MB,以 1 MB 为增量
- 函数超时:900 秒(15 分钟)
- 函数层:5 个
- 函数突发并发:500-3000,取决于区域
- 请求和响应大小:同步为 6 MB,异步为 256 KB
- 部署大小:压缩后 50 MB,解压后 250 MB
总结
AWS Lambda 是一个强大而成熟的平台,用于构建无服务器应用程序。它比许多其他提供商拥有经验优势,并且在无服务器领域的许多功能和演进方面仍然处于领先地位。
它与其它 AWS 服务的集成使其成为那些已经生活在 Amazon 生态系统中的用户的明显选择。不幸的是,它也继承了 AWS 服务经常被批评的成本预测困难。
然而,总的来说,AWS Lambda 是无服务器函数的一个强大、通用的选择。它可能会继续增加功能和集成,以保持竞争力。
Microsoft Azure Functions
概述
- 发布时间 2016
- 侧重点: 通用无服务器计算。Azure 服务集成。
- 语言支持: 广泛
- 成熟度: 成熟
- 定价: 按调用次数和资源消耗计费。提供分层捆绑包。
一般描述
Microsoft Azure Functions是 Azure 云生态系统于 2016 年推出的无服务器产品。虽然 AWS Lambda 抢占了先机,但 Microsoft 能够利用其经验作为起点来开发自己的定价策略、定位和功能。
由于 Azure Functions 旨在填补其服务目录中与 AWS Lambda 相同的空白,因此在许多方面,它是一个类似的产品。即便如此,仍然有一些重要的区别使得 Microsoft 的产品与众不同。
侧重点
Microsoft Azure Functions 是一个通用无服务器平台,旨在运行事件驱动的应用程序。虽然它被开发为一种灵活的通用工具,但 Azure Functions 的设计也考虑到了 Azure 生态系统的其余部分。
功能
Azure Functions 提供您期望从无服务器平台获得的所有标准功能。此外,它还提供一些有趣的功能,包括
- 多种部署选项:Azure 为无服务器函数提供多种计划,根据您的需求捆绑功能。
- 可扩展绑定:您可以向平台添加扩展以支持不同的工作流和集成。
- 集成 HTTP 端点:Azure 函数开箱即用,带有完整的 HTTP 端点管理功能。
语言支持
Azure Functions 原生支持以下语言运行时
- C#:.Net Framework 4.8,.Net Core 2.1 和 3.1,.Net 5.0 和 6.0
- JavaScript:Node.js 6、8、10、12、14
- F#:.Net Framework 4.8,.Net Core 2.1 和 3.1,.Net 6.0
- Java:8、11
- PowerShell:PowerShell Core 6,PowerShell 7.0
- Python:3.6、3.7、3.8、3.9
- TypeScript:(编译为 JavaScript)
通过运行轻量级 Web 服务器作为自定义处理程序,可以支持其他语言和运行时。
成熟度
Azure Functions 已经存在一段时间,并有时间成熟。Azure Functions 产品在其初始产品的基础上进行了迭代,现在代表了一个相当稳定的产品,在大多数用例中都具有良好的性能。即便如此,Microsoft 的产品通常感觉仍然在追赶 Amazon 的产品,这对于某些用户可能很重要。
价格
就成本而言,Microsoft 的 Azure Functions 与 Amazon Lambda 的定价基本相同。遵循相同的模式,Azure Functions 根据执行次数和分配给处理函数的资源进行计费。
Azure Functions 的不同之处包括
- 仅对使用的内存收费,而不是分配的内存
- 在同一执行实例中执行多个函数时,资源仅收费一次
此外,Azure Functions 提供分层定价模型,为不同类型的使用提供计划
- 消费计划:经典的无服务器产品,采用事件驱动、自动扩展的执行模式,按使用量付费
- 高级计划:以更高的价格增加额外的预留容量和资源分配,以避免冷启动。
- 专用计划:函数主机不会关闭,因此不可能出现冷启动。
限制
Microsoft Azure Functions 的限制取决于您使用的计划类型。函数的一些资源分配包括
- 扩展:消费计划最多 200 个实例,高级计划 100 个实例,专用计划 10-20 个实例
- 函数最大执行时间:消费计划 10 分钟,高级和专用计划无限制
- 最大请求大小:100 MB
- 最大内存:消费计划 1.5 GB,高级计划 3.5-14 GB,专用计划 1.75-14 GB
总结
总的来说,Microsoft Azure Functions 是通用无服务器应用程序的一个绝佳选择。Microsoft 拥有一个完整的服务和工具生态系统,您可以使用 Functions 将它们连接起来。此外,它在分配资源和预测成本方面提供了更多的灵活性。
最终,您选择 Microsoft Azure Functions 的原因可能与您对云环境的其他选择类似。这不仅关乎服务本身,还关乎您是否对整个生态系统感兴趣。对于使用以 Windows 为中心的开发技术或依赖基于 Azure 的服务的开发人员来说,Azure Functions 提供了一个很好的选择,它应该能很好地与您的其他工具配合使用。
Google Cloud Functions
概述
- 发布时间 2016
- 侧重点: 通用无服务器计算。GCP 服务集成。
- 语言支持: 广泛
- 成熟度: 成熟
- 定价: 按调用次数和资源消耗计费。函数存储需额外收费。
一般描述
Google Cloud Functions是 Google Cloud Platform 上提供的一种通用无服务器解决方案。Google Cloud Functions 于 2016 年发布,旨在弥补几年前 AWS Lambda 造成的空白。
Google Cloud Functions 遵循竞争对手云平台提供的一般产品模型,提供高性能、稳定的平台,无需管理即可部署功能。与其他提供商一样,它也注意将其与 Google 目录中的其他服务集成,以补充已投入该生态系统的用户。
侧重点
Google Cloud Functions 专注于为通用无服务器应用程序提供平台。它没有高度专业化,主要旨在为应用程序开发人员提供一个可靠的目标和平台,用于在 Google 云中部署无服务器函数。
功能
除了标准的无服务器功能,Google Cloud Functions 还提供了一些差异化的功能
- 分布式跟踪和调试:旨在与 Google 的 Cloud Trace 和 Cloud Debugger 工具良好配合。
- 集成 HTTP 端点:Google Cloud Functions 开箱即用,带有完整的 HTTP 端点管理功能。
语言支持
截至撰写本文时,Google Cloud Functions 支持以下原生语言运行时
- Node.js:8、10、12、14、16
- Python:3.7、3.8、3.9
- Go:1.11、1.13、1.16
- Java:11
- .Net Core:3.1
- Ruby:2.6、2.7
- PHP:7.4
与其他提供商一样,Google Cloud Functions 也允许您指定自定义运行时以获得更广泛的语言支持。
成熟度
Google Cloud Functions 自推出以来已经有时间成熟和稳定。总的来说,您可以期望它提供与其他 GCP 服务相当的稳定性。Google 的产品似乎比其他云提供商的解决方案稍显滞后,但仍然代表了一个坚实的实现和部署无服务器代码的可靠场所。
价格
运行 Google Cloud Functions 的成本与其他提供商类似:按资源使用量和执行次数计算。总的来说,这最终与 Amazon 和 Microsoft 的产品价格大致相同。
使用 Google Cloud Functions 需要注意的一点是,函数本身存储在 Google Container Registry 中,客户必须为此付费。因此,除了执行成本之外,在 Google 生态系统中上传和存储函数还需要付费。
限制
Google Cloud Functions 对平台上执行的操作有以下限制和配额
- 每个区域的函数数量:1000 个
- 部署大小:源代码压缩后 100 MB,源代码加模块未压缩后 500 MB
- HTTP 请求大小:10 MB
- HTTP 响应大小:10 MB
- 函数内存:8192 MB
- 函数超时:540 秒
- 函数并发:3000
- 函数调用速率:每秒 1000 次
总结
Google Cloud Functions 是无服务器市场中一个有竞争力的产品,非常适合通用工作负载,特别是如果您已经利用了 GCP 的其他产品。与其他大型云提供商一样,它与它们的其他服务紧密集成,因此配置函数以响应其他产品事件或在函数中调用其他服务非常简单。
像微软一样,谷歌似乎仍然在无服务器领域追随亚马逊的脚步。8 GB 的函数可用内存配额比我们目前看过的其他主要云提供商要低得多,这对于某些工作负载可能是一个因素。然而,总的来说,Google Cloud Functions 是一个用于通用无服务器部署的优秀平台。
Cloudflare Workers
概述
- 发布时间 2018
- 侧重点: 边缘和高性能计算。
- 语言支持: 可编译为 JavaScript 和兼容 WASM 的语言。
- 成熟度: 较新
- 定价: 按调用次数和持续时间计费。提供不同计划。
一般描述
Cloudflare Workers是 Cloudflare 提供的一种无服务器选项,它将函数即服务模型与边缘计算相结合。Cloudflare Workers 于 2018 年发布,考虑到他们更多的是一家网络工具公司而不是通用云提供商,他们决定从不同的角度解决问题。
Cloudflare Workers 能够以较低的成本为开发人员提供高性能,这得益于其实现细节和一些自我施加的限制。如果您的应用程序符合 Cloudflare Workers 的范式,那么它是向客户端提供低延迟响应的绝佳选择。
您可以在Prisma 文档中了解如何部署使用 Prisma 将每个请求保存到 MongoDB 数据库以供以后检查的 Cloudflare Worker。
侧重点
与通用云提供商提供的无服务器解决方案不同,Cloudflare Workers 的产品范围要狭窄得多。Cloudflare workers 主要关注通过将函数部署到尽可能靠近客户端的位置来实现高性能、低延迟执行。
它们之所以能够实现高性能,不仅在于其高度分布的部署位置,还在于它们执行的环境。Cloudflare Workers 直接使用 Chrome V8 执行函数,而不是通过 Node.js 或其他运行时。这有助于提供更快的性能,并避免一些常见的无服务器问题,例如冷启动问题,因为代码可以直接执行,而不是由运行时执行。
功能
由于 Cloudflare Workers 提供了不同的无服务器方法,因此它具有与传统云平台不同的功能集
- 更快的执行支持:Cloudflare Workers 直接在 V8 上快速执行,而不是在传统的 JavaScript 运行时环境(如 Node.js)中。
- 更低的延迟:由于无服务器函数在全球 200 多个地点进行全球分布式部署,因此客户端延迟通常会显著降低。
- 天然沙盒化:在 V8 上运行的优势之一是函数之间自动隔离,而无需在更高层进行隔离。
- 使用熟悉的 API:Cloudflare Workers 模仿渐进式 Web 应用程序中使用的 JavaScript Service Workers。它们的 API 尽可能使用相同的模式。
语言支持
由于其 Chrome V8 运行时,Cloudflare Workers 必须用网络友好型语言编写或编译。支持的语言包括
- JavaScript
- TypeScript
- WebAssembly (WASM) 可编译语言,如
- Rust
- C
- Cobol
- 可编译为 JavaScript 的语言,如
- Kotlin
- Dart
- Python
- Scala
- Reason/OCaml
- Perl
- PHP
- F#
成熟度
Cloudflare Workers 是一种相对较新的产品,尚未拥有像主要云提供商那样庞大的生态系统。然而,其性能和执行模型吸引了许多开发团队。Cloudflare 反过来也通过增加对更多语言的支持和开发详尽的文档来帮助开发人员了解 Cloudflare Workers 采用的概念模型以及如何使用该平台编写和部署函数。
价格
Cloudflare Workers 的收费基于请求数量和每个请求的持续时间。收费金额取决于您的 Worker 是“非绑定”计划还是“绑定”计划的一部分。
绑定计划包括每月固定数量的请求,并限制每个请求的持续时间。而非绑定计划则没有执行持续时间的限制,但会根据请求数量和执行时间收费。
Cloudflare Workers 的运行成本通常低于其更传统的对应产品。V8 执行模型允许一台机器托管比其他运行时环境更多的隔离函数。这种增加的密度使 Cloudflare 能够以相同的硬件处理更大的容量,因此他们收取的费用也较低。
限制
Cloudflare workers 对其使用有以下限制或配额
- HTTP 请求大小:取决于您的整体 Cloudflare 计划(免费和专业版为 100 MB,商业版为 200 MB,企业版为 500 MB)
- 函数内存:128 MB
- 函数持续时间:绑定计划 50 毫秒 CPU 时间,非绑定计划按时间收费,最长 30 秒
- 函数调用速率:无限制
- 部署大小:压缩后 1 MB
您可能已经注意到,Cloudflare Workers 的预期执行时间和资源使用量与之前的解决方案大相径庭。这应该为哪种工作负载最适合 Cloudflare 的环境提供了线索。
还需牢记 Cloudflare Workers 独特实现带来的一些限制。一个重要的限制是它们无法建立 TCP 连接,这意味着数据库连接和其他外部连接可能会很困难或不可能。Cloudflare 提供了一些其他产品(Workers KV:键值存储,R2:对象存储,Durable 对象:用于维护状态的对象)旨在填补其自身目录中的这些空白,但可能不适合您的用例。
V8 运行时的另一个固有限制是 Node.js 标准库不可用,这限制了您可以使用的库函数类型。如果您计划编写依赖 Node.js 标准库的函数,请记住这一点。
总结
Cloudflare Workers 因其低延迟交付和高性能执行环境而成为许多项目极具吸引力的解决方案。该平台专门设计用于在边缘快速执行小型、专注的函数。
虽然 Cloudflare Workers 可能不是所有类型无服务器的最佳解决方案,但对于主要使用 JavaScript 或 TypeScript 并已具备渐进式 Web 应用程序基础知识经验的用户来说,它们是理想的解决方案。熟悉开发体验、轻松部署和可扩展的高性能执行环境使其成为许多项目的绝佳选择。
Netlify Functions
概述
- 发布时间 2018
- 侧重点: Web 应用程序集成。
- 语言支持: 狭窄
- 成熟度: 较新
- 定价: 按调用次数和持续时间计费。提供不同等级。
一般描述
Netlify Functions是 Netlify 提供的一种无服务器产品,Netlify 是一个 Web 应用程序构建和部署平台。Functions 产品于 2018 年发布,实际上是在 AWS Lambda 之上构建的增值服务,旨在简化将无服务器功能集成到 Netlify 生态系统中的过程。
虽然由于其定位与其他产品有所不同,但 Netlify Functions 之所以有趣,是因为它将无服务器功能集成到专注于应用程序交付的统一生态系统中的方式。
您可以轻松地将使用 Prisma 构建的 Node.JS 应用程序部署到 Netlify。本部署指南更详细地介绍了该过程。
侧重点
Netlify Functions 专注于帮助开发人员轻松部署 Web 应用程序。它没有将无服务器产品定位为通用工具,而是将 AWS Lambda 作为一种手段,以简化构建和部署过程。
对于符合 Netlify 专长领域的项目,Functions 功能可以帮助加速其工作流程和迭代周期。然而,对于超出该范围的项目,其他解决方案可能是一个更好的选择。
功能
Netlify Functions 主要专注于将无服务器能力集成到您的 Web 应用程序中。其功能集围绕该用例展开
- 与您的应用程序一起部署函数:Netlify Functions 可以与它们集成的应用程序一起开发和管理。
- 预览和回滚功能:您可以在部署到实时环境之前预览和测试函数,并在出现任何问题时回滚。
- A/B 测试:您可以运行 A/B 测试,比较前端应用程序代码和无服务器函数中的更改。
语言支持
Netlify 的语言支持非常有限,因为 Netlify 进一步将 AWS Lambda 提供的选项限制为其愿意支持的应用程序管理平台子集。
函数可以用以下语言编写
- JavaScript
- TypeScript
- Go
成熟度
Netlify Functions 是一种相对较新的产品,但受益于 AWS Lambda 带来的成熟度。实际的无服务器执行由 Amazon 处理,Amazon 已被证明稳定可靠。
然而,粘合功能以及与 Netlify 其他应用程序构建和部署功能的集成由 Netlify 自己运行。由于 Netlify 基本上扮演着 AWS Lambda 客户的角色,其无服务器产品的可靠性应该与您认为其产品目录其余部分的可靠性相当。
价格
Netlify Functions 的计费方式根据发生的请求调用次数以及执行持续时间。
为了简化定价理解,Netlify 使用分层系统来计算成本和限制。这些层与 Netlify 为其平台提供的计划相交,这使得可以相对独立地选择您的通用平台级别和无服务器级别。
就其无服务器产品而言,它们提供的层级有
- 级别 0:免费,但功能有限。可与 Starter(免费)或 Pro(每月每用户 19 美元)Netlify 计划一起使用。
- 级别 1:每月每站点额外收费 25 美元。可与 Starter(免费)或 Pro(每月每用户 19 美元)Netlify 计划一起使用。
- 级别 2:包含在 Netlify 通用平台的商业或企业计划中。
限制
与无服务器功能相关的阈值直接与您的 Netlify 计划级别和 Netlify Functions 层级挂钩。以下限制适用
- 每月请求:级别 0 为 125,000 次,级别 1 为 200 万次,级别 2 无限
- 每月运行时间:级别 0 为 100 小时,级别 1 为 1,000 小时,级别 2 无限
- 访问后台(异步)函数:通过 Netlify Pro 或更高版本账户可用
- 函数超时:同步函数 10 秒,后台(异步)函数 15 分钟
总结
Netlify Functions 是在一个更大的应用程序管理平台中利用无服务器功能的绝佳选择。虽然它在 Netlify 平台之外不可用或无用,但它与构建和部署生命周期管理其余部分的紧密集成使其成为一个有价值的选择。
Netlify Functions 并不旨在成为一个通用的无服务器解决方案。相反,它平滑了将 AWS Lambda 纳入开发工作流程的一些粗糙之处。如果您有兴趣使用无服务器来增强您的 Web 项目,Netlify 是一个很好的选择,可以使其直观且简单。
Vercel Functions
概述
- 发布时间 2016
- 侧重点: Web 应用程序集成
- 语言支持: 广泛
- 成熟度: 较新
- 定价: 与平台捆绑
一般描述
Vercel Functions是另一个旨在简化 Web 应用程序开发人员无服务器体验的产品。与 Netlify Functions 类似,Vercel Functions 是一个整体平台的一部分,专注于改善 Web 应用程序开发和交付体验。
Vercel Functions 分为两种:Serverless Functions,其执行方式与常规无服务器服务类似;以及 Edge Functions,它们部署在 Vercel 的边缘网络并由其运行。这种灵活性使您可以根据每个函数最适合的部署类型进行选择。
侧重点
Vercel Functions 完全专注于改善现代 Web 应用程序的开发、部署和交付体验。其产品与 Vercel 的其他功能紧密集成,为这些工作流程创造了良好的体验。
这种侧重点意味着 Vercel Functions 旨在更轻松地在 Web 应用程序中使用无服务器,因此如果您的项目属于该类别,它会非常有用。该平台可帮助您实现此功能,以添加功能并提高性能。
功能
与 Vercel Functions 相关的功能与 Vercel 产品的其余部分密切相关。这些功能包括
- 两种函数类型:无服务器和边缘函数允许您为每个函数选择最合适的选项。
- 一流的 Next.js 支持:Vercel 负责 Next.js 开发,并致力于提供出色的 Next.js 体验。
- 随应用程序部署函数:Vercel Functions 可以与它们集成的应用程序一起开发和管理。
- 快速执行:Vercel 的边缘函数使用 V8 运行时,以提高执行性能,优于更重量级的运行时。
语言支持
Vercel Functions 可以执行多种语言。官方支持以下语言
- Node.js:12.x、14.x
- Go:1.16,可通过
go.mod文件配置其他替代方案 - Python:3.6
- Ruby:2.7.x、2.5.x
社区还补充了以下内容
- Bash:GNU 版本 4
- Deno:任何受支持的标签
- PHP:8.0.3
- Rust
成熟度
评估 Vercel Functions 的成熟度稍微有些复杂,因为它在无服务器函数和边缘函数之间存在差异。
Vercel 的无服务器函数运行在 AWS Lambda 上,类似于 Netlify 封装该功能的方式。在这种情况下,Lambda 的稳定性是 Vercel 自身可靠性的资产。
Vercel 的边缘函数是一种较新的产品,似乎不使用 Amazon Lambda 的基础设施。相反,它直接在 V8 运行时上运行,类似于 Cloudflare Workers。由于边缘函数仍处于测试阶段,它们可能被认为不如无服务器函数稳定,并且更容易发生变化。
价格
然而,与目前所有其他提供商不同,Vercel 的无服务器产品完全捆绑在其常规产品中。它没有单独的无服务器产品价格。
话虽如此,Vercel 的定价计划包括
- Hobby:非商业网站免费
- Pro:每位成员每月 20 美元
- Enterprise:根据客户定制计划
限制
Vercel 的上限和限制在一定程度上继承自 AWS Lambda 的无服务器函数。这些限制包括
- 无服务器函数执行:Hobby 版 100 GB-小时,Pro 版 1,000 GB-小时,企业版自定义执行级别
- 无服务器函数执行超时:Hobby 版 5 秒,Pro 版 15 秒,企业版 30 秒
- 无服务器函数调用:无限制
- 边缘函数每日调用:Hobby 版 100,000 次,Pro 版 500,000 次,企业版 500 万次
- 无服务器函数部署大小:压缩后 50 MB,未压缩后 250 MB
- 无服务器函数内存:Hobby 版 1024 MB,Pro 版 3008 MB
- 无服务器函数请求或响应正文:5 MB
总结
Vercel Functions 是使用 Vercel 平台的 Web 应用开发者的一个良好解决方案。无服务器功能与平台紧密集成,并与 Next.js 框架协同开发以确保兼容性。
对于需要为 Next.js 应用程序提供无服务器功能的用户,Vercel 是一个显而易见的选择。对于其他 Web 应用程序开发者,Vercel Functions 和 Vercel 平台的其余部分可以帮助您管理无服务器需求和应用程序生命周期管理。
无服务器计算邻近:无服务器数据库
虽然我们已经尝试涵盖无服务器计算领域中一些最常见和有趣的提供商,但还有其他相关的服务也值得一提。在本节中,我们将简要介绍一些可能补充您的无服务器计算需求的无服务器数据库产品。
您可以在我们的“什么是无服务器?”文章中阅读有关无服务器数据库如何工作的更多信息。
Amazon DynamoDB 和 Aurora Serverless
亚马逊根据您的需求提供了一些无服务器数据库服务。
亚马逊的DynamoDB是一个 NoSQL 无服务器数据库解决方案,可以根据接收到的请求量进行扩展和缩减。它充当键值存储,能够非常快速地响应和扩展。
对于面向 SQL 的工作负载,亚马逊提供了Aurora Serverless,这是一个无服务器关系型数据库解决方案,它根据需求扩展数据处理单元。
Microsoft Cosmos DB Serverless 和 Azure SQL Serverless
微软同样为无服务器数据库提供了一些选项。
Microsoft Cosmos DB Serverless 是其 NoSQL Cosmos 数据库的无服务器层。它提供与几种不同 NoSQL 技术兼容的多模型操作。
对于关系数据,微软还提供了Azure SQL Serverless。这是其托管 SQL 数据库服务的无服务器层,可根据传入请求自动扩展。
Google Firestore
谷歌的无服务器数据库产品是Firestore。Firestore 是一个 NoSQL 文档数据库,旨在自动匹配其接收到的查询所需的处理。它专注于成为一个“设置即忘”的文档存储选项,让您可以在开发和生产过程中轻松连接应用程序。
PlanetScale
PlanetScale 是一个与 MySQL 兼容的无服务器数据库平台,构建在 Vitess 之上,Vitess 是一个为 Kubernetes 环境中的扩展而构建的关系型数据库实现。PlanetScale 能够提供版本化数据分支、无阻塞模式更改以及其他高级功能,并提供易于部署的工具。
了解更多关于 Prisma 和 Planetscale 如何协同工作。
MongoDB Atlas Serverless
MongoDB Atlas 是 MongoDB 的托管多云版本。他们现在提供MongoDB Atlas Serverless,作为按照无服务器模型与 MongoDB 数据库交互的一种方式。其托管数据库的无服务器版本提供了无缝的扩展体验,以适应高度可变和不频繁的工作负载,同时仅按使用的资源收费。
CockroachDB Serverless
CockroachDB Serverless 是 CockroachDB 新推出的一款产品,旨在通过无服务器功能增强其灵活的 SQL 数据库。该数据库将根据用户需求自动扩展和缩减。
Fauna
Fauna 提供无服务器事务数据库实例,旨在与现代应用程序在各种基于云的环境中协同工作。Fauna 提供基于 API 的数据操作,其作用更像是实用工具,而不是您需要管理的基础设施。这种模型完美契合您已经用来构建应用程序的无服务器范例。
Neon
Neon 是一个完全托管的无服务器 PostgreSQL。Neon 将存储和计算分离,以提供现代开发者功能,例如无服务器、分支、无限制存储等。
值得关注的新选项
最后,我们将介绍一些您可能希望在未来关注的工具和服务。它们刚刚起步,但有潜力帮助许多无服务器项目。
Deno Deploy
Deno Deploy 是 Deno 推出的一项新的无服务器计算服务。与 Cloudflare Workers 类似,Deno Deploy 允许您将代码部署到运行 Chrome V8 的边缘服务器。由于这种运行时选择,它具有与 Cloudflare Workers 相同的许多优点和限制(高密度和性能,不支持打开 TCP 连接或使用完整的 Node.js 库)。
Deno Deploy 希望通过使用与 Deno CLI 相同的技术为您提供统一的开发体验。Deno Deploy 目前处于测试阶段,因此值得关注其当前进展并经常查看。
Prisma Accelerate
Prisma Accelerate 是一款旨在简化无服务器环境中数据库连接的工具。由于无服务器提供商用于执行函数的实例本质上是短暂的,如果同时有太多函数实例处于活动状态,很容易耗尽任何后端数据库的连接池。
Prisma Accelerate 通过充当数据库的中间件来解决这个问题。无服务器实例可以连接到 Prisma Accelerate,它会自动管理连接池,以避免由于资源争用而导致的无服务器调用失败或延迟。
总结
为了总结我们已经介绍的无服务器产品,我们将一些详细信息提炼到下表中,以便一目了然地进行比较。我们将只包括无服务器计算选项,以避免混淆。
| 产品 | 重点 | 语言支持 | 推荐用法 | 附加评论 |
|---|---|---|---|---|
| AWS Lambda | 通用函数 | Node.js、Python、Ruby、Java、Go、.Net、自定义运行时 | 在您的技术栈中任何地方需要无服务器功能的情况,特别是如果已经在使用 AWS。 | AWS Lambda 是最成熟的产品。它定期推出新功能,并且有像 Lambda@Edge 这样的变体,专注于填补额外的利基市场。 |
| Microsoft Azure Functions | 通用函数 | .Net、Node.js、Java、PowerShell、Python、自定义运行时 | 在您的技术栈中任何地方需要无服务器功能的情况,特别是如果已经在使用 Azure。 | 如果您的技术以 Microsoft 为中心,Microsoft Azure Functions 很有意义,但它在功能方面往往落后于 AWS Lambda。 |
| Google Cloud Functions | 通用函数 | Node.js、Python、Go、Java、.Net、Ruby、PHP、自定义运行时 | 在您的技术栈中任何地方需要无服务器功能的情况,特别是如果已经在使用 GCP。 | 如果您已经在使用 GCP,Google Cloud Functions 是一个不错的选择,但它比其他一些通用提供商有更多限制。 |
| Cloudflare Workers | 基于性能的边缘函数 | JavaScript、TypeScript、WASM 可编译语言(Rust、C、COBOL)、可编译为 JavaScript 的语言(Kotlin、Dart、Python、Scala、OCaml、Perl、PHP、F#) | 高性能边缘计算,特别是如果使用 JavaScript 或 TypeScript。 | CloudFlare Workers 通过专注于边缘交付和使用 V8 隔离与Deno Deploy不同于其他通用提供商。如果您的无服务器工作流符合这种执行模型,Cloudflare Workers 能够以更低的成本提供更好的性能。 |
| Netlify Functions | Web 应用函数 | JavaScript、TypeScript、Go | Web 应用、JAM 栈站点、无头 CMS。 | Netlify 通过将无服务器功能集成到完整的应用程序构建和部署管理中,为 AWS Lambda 增加了价值。如果您的无服务器需求与该用例匹配,Netlify 是在一个地方管理所有内容的良好选择。 |
| Vercel Functions | Web 应用函数 | Node.js、Go、Python、Ruby、Bash、Deno、PHP、Rust | Web 应用、JAM 栈站点、无头 CMS。 | 如果您需要无服务器来增强您的 Web 应用程序部署,Vercel 是一个不错的选择。如果您的应用程序是用 Next.js 构建的,这一点尤其正确,因为集成肯定会非常出色。 |
请查看Prisma Data Platform,在一个地方管理您的所有应用程序数据。

