建筑学

无服务器与容器:哪种架构适合您的 SaaS?

| 10 分钟阅读
带有发光连接灯的服务器机架

启动无服务器,根据数据提示迁移到容器。 无服务器发布时的成本为 0-20 美元/月,但如果用户数量达到 10 万,则可扩展至 500-5,000 美元/月。 容器的前期费用为 50-150 美元/月,但规模化后保持在 300-2,000 美元/月。 大多数 SaaS 产品的交叉点约为 10,000 个用户。

无服务器和容器解决不同的问题。 选择错误会导致您花费数月的返工时间。 一个在 Kubernetes 上启动的 SaaS 产品,当它有 50 个用户时,每月会在不需要的基础设施上消耗 2,000 美元。 一款无服务器启动并每秒处理 100K 请求的产品发现冷启动正在破坏其 P99 延迟。 扭转这两个错误的代价都很高。

本指南通过实际成本数字、具体权衡以及当今可应用于云架构的决策框架,详细介绍了无服务器与容器。

无服务器在实践中意味着什么

无服务器架构意味着您编写函数、部署它们,然后让云提供商处理服务器、扩展和可用性。 您不配置实例。 您不修补操作系统。 您不配置负载均衡器。

2026 年三个占主导地位的无服务器平台是AWS Lambda,维塞尔函数, 和Cloudflare 工人。 每个的工作原理都不同:

  • AWS Lambda在按需启动的隔离容器中运行代码。 您需要为每次调用付费(每 100 万个请求 0.20 美元)加上执行时间(每 GB 秒 0.0000166667 美元)。 冷启动范围从 100 毫秒到 3 秒不等,具体取决于运行时间和包大小。
  • 维塞尔函数为 AWS Lambda 提供了更好的开发人员体验。 部署发生在 git Push 上。 您可以获得每个分支的预览 URL。 免费套餐涵盖每月 10 万次函数调用。
  • Cloudflare 工人在边缘的 V8 隔离上运行,而不是在容器上运行。 冷启动时间低于 5 毫秒。 在每天 10 万个请求的免费套餐之后,您为每百万个请求支付 0.50 美元。

这三者的定价模式都是相同的:按使用量付费。 零流量意味着零成本。 这使得 SaaS 产品的无服务器在发布时颇具吸引力,因为流量不可预测且每一块钱都很重要。

容器在实践中意味着什么

Docker 容器将应用程序代码、运行时和依赖项打包到单个映像中,该映像在任何计算机上都以相同的方式运行。 您构建一次映像,将其推送到注册表,然后将其部署到任何您想要的地方。

容器编排是在生产中管理这些镜像的层。库伯内斯是占主导地位的编排平台,但它不是唯一的选择:

  • Docker + 单服务器适用于早期产品。 使用 Docker Compose 在每月 20 美元的 VPS 上运行容器。 没有编排开销。 您可以手动或使用简单的脚本来处理重新启动和部署。
  • AWS ECS / 谷歌云运行为您提供托管容器编排,而无需完全复杂的 Kubernetes。 您定义容器,设置扩展规则,平台会处理其余的事情。 Cloud Run 与无服务器一样按请求收费,但运行完整的容器。
  • Kubernetes(EKS、GKE、自托管)让您可以完全控制调度、网络和资源分配。 它需要专门的 DevOps 工程师或熟悉 YAML 清单、Helm 图表和入口控制器的团队。
  • Fly.io / 铁路提供了一个中间立场:使用简单的 CLI 部署 Docker 容器,实现自动扩展,并根据资源使用情况付费。 无需 Kubernetes 知识。

容器的成本模型与无服务器不同。 无论是否收到请求,您都需要为计算时间付费。 在 ECS 上 24/7 运行的容器每月费用为 30-150 美元,具体取决于 CPU 和内存分配。 但随着流量的增长,成本仍然是可预测的,而无服务器账单可能会随着流量的突然爆发而飙升。

无服务器与容器:比较

因素无服务器集装箱
低流量时的成本$0-$5/月。 按调用付费。$20-$150/月。 容器 24/7 运行。
高流量时的成本$500-$5,000+/月。 随着请求线性扩展。$200-$2,000/月。 固定计算、可预测的账单。
冷启动100ms-3s (Lambda),<5ms (Cloudflare Workers)没有任何。 容器保持温暖。
缩放自动、即时、多达数千个并发实例有规则的水平扩展。 启动新实例需要 30-90 秒。
调试难的。 分布式痕迹,没有生产环境的本地复制。更轻松。 通过 SSH 进入容器,使用相同的镜像在本地重现。
供应商锁定高的。 如果不重写,Lambda 代码不会移植到 Cloudflare Workers。低的。 Docker 镜像可以在任何地方运行。
团队技能要求低的。 编写函数,部署。 无需基础知识。中到高。 Docker 基础知识最少; Kubernetes 需要专门的专业知识。
部署复杂度简单的。 Git 推送或 CLI 部署。中等的。 构建镜像、推送到注册表、更新服务。 Kubernetes 添加 YAML 配置。

当无服务器获胜时

当您的工作负载是事件驱动的、流量不可预测并且您的团队希望零基础设施管理时,无服务器架构是正确的选择。

事件驱动的工作负载。处理 Stripe 支付事件的 Webhook 端点。 当用户上传文件时触发的图像缩放器。 数据库更改时触发的通知服务。 这些工作负载运行时间为几毫秒,发生不可预测,并且大部分时间处于闲置状态。 购买容器来等待这些事件是浪费钱的。

流量可变的 API。夜间每小时处理 100 个请求、工作时间每小时处理 10,000 个请求的 SaaS 产品受益于无服务器自动扩展。 您无需为安静的时间付费,也无需在繁忙的时间争先恐后地扩大规模。

想要零操作的初创公司。如果您的团队由两名创始人和一名设计师组成,那么花时间在 Docker 配置和 Kubernetes 清单上会占用构建功能的时间。 AWS Lambda 和 Vercel 让您可以通过 git Push 进行部署并专注于您的产品。

当容器获胜时

当您的工作负载运行时间较长、流量可预测或您的架构需要对资源进行细粒度控制时,Docker 容器是正确的选择。

长时间运行的进程。一种视频转码服务,每个作业处理文件需要 10-30 分钟。 将 2GB 模型加载到内存中的机器学习推理服务器。 保持持久连接的 WebSocket 服务器。 无服务器函数在 Lambda 上 15 分钟后超时(在其他平台上较少)。 只要您需要,容器就会运行。

可预测的交通模式。拥有 500 个企业用户的 B2B SaaS 产品在工作时间内产生稳定的流量。 集装箱成本保持在 100-300 美元/月不变。 Lambda 上的相同流量可能会花费 400-800 美元/月,因为您是按请求而不是按小时付费。

复杂的微服务。当您有 10 多个服务需要通过内部网络进行通信、共享数据库和维护持久连接时,容器编排可为您提供无服务器平台无法提供的服务发现、运行状况检查和网络策略。

GPU 工作负载。ML 模型训练、实时推理和图像/视频处理需要 GPU 访问。 AWS Lambda 不支持 GPU。 支持 GPU 的实例(ECS、GKE 或裸机)上的容器为您提供直接硬件访问。

混合方法:同时使用

2026 年大多数 SaaS 产品的最佳云架构并不是纯粹的无服务器或纯粹的容器化。 这是一个混合体。

API 层的无服务器。您的 REST 或 GraphQL API 可以处理可变流量,运行短暂的请求/响应周期,并从自动扩展中受益。 将其部署在 Vercel、Lambda 或 Cloudflare Workers 上。 启动成本:0 美元。

后台作业和工人的容器。您的电子邮件队列处理器、报告生成器、数据管道和 cron 作业作为 ECS、Fly.io 或简单 VPS 上的 Docker 容器运行。 这些工作负载连续运行,批量处理数据,并且不需要按请求扩展。 成本:单个工作容器每月 20-100 美元。

这种混合模式使您的基础设施费用在启动时保持在 50 美元/月以下,同时使您能够灵活地独立扩展各个组件。 您的 API 可扩展到 10,000 个并发用户,无需任何配置更改。 当队列深度增加时,您的后台工作人员可以通过添加更多容器副本来进行扩展。

不同规模的成本比较

实际数字比理论定价模型更重要。 以下是具有 API、数据库和后台作业处理的典型 SaaS 产品在三个增长阶段的无服务器与容器成本。

0-1,000 个用户:启动阶段

无服务器:$0-$20/月。 Vercel 的免费套餐涵盖您的 API。 Neon 或 Supabase 上的托管 Postgres 数据库的费用为 0-25 美元/月。 基础设施总额:每月 25 美元以下。

容器:$50-$150/月。 小型 ECS 任务或 Fly.io 实例运行您的 API(20-50 美元/月)。 托管数据库每月增加 25-50 美元。 后台工作人员每月另加 20-50 美元。

获胜者:无服务器。在这个阶段,你在产品开发上烧钱,而不是扩大规模。 基础设施上节省的每一美元都用于构建功能。

1,000-10,000个用户:成长期

无服务器:100-500 美元/月。 Lambda 调用呈线性扩展。 数据库成本增加至每月 50-200 美元。 您开始支付 Vercel Pro(20 美元/月)以获得更高的限额。

容器:$150-$400/月。 您的 API 容器可扩展到 2-3 个副本(60-150 美元/月)。 数据库成本是相同的。 后台工作人员可能需要第二个实例(40-100 美元/月)。

获胜者:取决于流量模式。如果您的流量激增(消费者应用程序),无服务器仍然会获胜。 如果您的流量稳定(B2B SaaS),容器会领先,因为您不再支付每个请求的费用。

10,000-100,000 个用户:规模阶段

无服务器:$500-$5,000/月。 请求量大时,Lambda 成本会快速增长。 Vercel Enterprise 定价开始生效。您开始达到并发限制,需要向 AWS 请求增加并发限制。

容器:$300-$2,000/月。 您的 API 在带有负载均衡器的 4-8 个容器副本上运行。 成本随着 CPU 和内存分配的增加而增加,而不是随着每个请求的增加而增加。 成本曲线变平,因为添加容器副本每秒可以处理数千个以上的请求。

获胜者:容器。在这种规模下,无服务器的按请求定价模型对您不利。 每秒处理 1,000 个请求的单个容器的成本为 50 美元/月。 Lambda 上相同的吞吐量每月花费 500 美元以上。

Savi 对大多数 SaaS 产品的建议

启动无服务器。 当数据告诉您时,将特定工作负载移至容器。

对于我们在 Savi 构建的 90% SaaS 产品,发布时的正确架构是:Vercel(无服务器)上的 Next.js + Neon 或 Supabase 上的托管 Postgres + Fly.io 或 Railway 上的单个后台工作容器。 基础设施总成本:0-50 美元/月。

此设置可处理 0-10,000 个用户,无需更改架构。 当您达到 10K 用户时,您就可以获得收入、使用数据以及可以识别的特定瓶颈。 然后,您将瓶颈(并且仅是瓶颈)移至容器中。 也许您的 API 端点生成 PDF 报告需要 30 秒,并且在 Lambda 上超时。 容器化该一个端点。 保持其他一切无服务器。

这种方法之所以有效,是因为它针对每个阶段最重要的约束进行了优化。 在启动时,您的限制是时间和金钱。 无服务器为您提供了两者。 在规模上,您的限制是成本效率和延迟。 容器为您提供了两者。

危险信号:当团队选择错误的架构时

在拥有 50 多个微服务或强制执行特定合规性要求之前,不要采用 Kubernetes。Kubernetes 是编排大规模分布式系统的强大工具。 这也是一项需要维护的全职工作。 一家拥有 3 项运行 Kubernetes 服务的初创公司每月需要支付 500-1,500 美元的托管集群成本,并每周花费 10-20 小时进行 DevOps 工作,而 Vercel 部署将消除这些工作。

当您的 Lambda 账单超过每月 1,000 美元时,不要保持无服务器状态。然后,在容器上运行数字。 您经常会发现,每月 200 美元的 3-4 个容器副本可以处理 Lambda 上花费 1,000 美元以上的相同负载。

不要根据 Netflix 或 Uber 使用的内容来选择云架构。这些公司拥有 500 多名工程师、专门的平台团队以及需要定制基础设施的流量。 您拥有 2,000 名用户和 3 名工程师的 SaaS 产品需要一个无聊、可预测的堆栈来快速交付功能。

不要将容器编排与 Docker 混淆。Docker 很简单。 您编写一个 Dockerfile、构建一个映像并运行它。 Kubernetes 很复杂。 它增加了网络、服务发现、秘密管理、入口控制器和陡峭的学习曲线。 您可以在没有 Kubernetes 的情况下使用 Docker。 大多数早期产品应该如此。

云架构的目标不是在白板上令人印象深刻。 这是为了保持您的产品运行、您的账单可预测以及您的团队交付功能,而不是与基础设施对抗。

常见问题

对于 SaaS 产品来说,无服务器比容器便宜吗?

发布时(0-1,000 个用户),无服务器成本为 0-20 美元/月,而容器为 50-150 美元/月。 在规模上(10,000-100,000 个用户),容器获胜:每月 300-2,000 美元,而无服务器则为 500-5,000 美元/月。 交叉点是大约 10,000 个用户,此时按请求定价开始对您不利。

什么是无服务器冷启动?它们重要吗?

当无服务器函数在空闲后启动时,就会发生冷启动。 AWS Lambda 冷启动范围从 100 毫秒到 3 秒不等,具体取决于运行时和包大小。 Cloudflare Workers 保持在 5 毫秒以下。 冷启动对于延迟敏感的 API 很重要,但对于 Webhook 处理或图像大小调整等事件驱动的工作负载则不然。

什么时候应该使用容器而不是无服务器?

将容器用于长时间运行的流程(视频转码、ML 推理)、可预测的流量模式(稳定使用的 B2B SaaS)、GPU 工作负载或具有 10 多个微服务的系统。 无服务器函数在 Lambda 上运行 15 分钟后超时。 只要您需要,容器就可以运行,并且在高、稳定的流量下成本更低。

我可以同时使用无服务器和容器吗?

是的,大多数成功的 SaaS 产品都是如此。 在无服务器(Vercel、Lambda)上运行您的 API,以 0 美元的启动成本进行自动扩展。 在 Fly.io 或 ECS 上以容器形式运行后台作业、队列和工作线程,每月费用为 20-100 美元。 这种混合方式使基础设施在启动时保持在每月 50 美元以下,同时独立扩展各个组件。

我的初创公司应该使用 Kubernetes 吗?

直到您拥有 50 多个微服务或特定的合规性要求。 Kubernetes 的托管集群费用为每月 500-1,500 美元,每周需要 10-20 小时进行 DevOps 工作。 拥有 3 项服务的初创公司应该使用更简单的选项,例如 Fly.io、Railway 或 Docker Compose(每月 20 美元的 VPS)。

相关阅读

需要有关云架构的帮助吗?

我们设计的基础设施会随着您的产品而扩展,而不是超前。 30分钟通话。

与我们的团队交谈

联系我们

开始对话

告诉我们你的项目。我们将在 24 小时内回复,提供清晰的方案、预估时间线和价格区间。

电子邮件

hello@savibm.com

总部位于

阿联酋和印度