无服务器模式是个骗局。
每当有人选择使用无服务器架构来构建简单的后端时,我内心的容器就会崩溃。
“无服务器”承诺简单易用、可扩展且无需维护。但实际上,它却会带来时间限制、供应商锁定、意外账单以及伪装成便利的复杂性。最终,你不得不拼凑各种 SaaS 服务,才能实现 Docker 容器开箱即用的功能。
让我来详细解释一下——并预先说明可能出现的反驳观点。
什么是无服务器?
无服务器架构意味着你将各个功能部署到云平台,云平台会负责资源调配、扩展和执行。你无需管理服务器——只需将代码上传即可。
至少,这是我们的梦想。
你实际会得到以下内容:
- 严格的运行时限制(例如,AWS Lambda 上的最大执行时间为 15 分钟)
- 运行之间零状态保留
- 冷启动(除非您额外付费并“预热”您的功能)
- 不透明调试
- 厂商特有的特性和配置
- 大量YAML
如果你想做任何稍微复杂一点的事情——长时间运行的任务、后台处理、持久连接、文件上传——它很快就会崩溃。
容器:简洁、强大、乏味(褒义上的乏味)
你知道什么方法有效吗?
一个容器。
- 启动很快
- 跑遍任何地方
- 保持状态(只需添加一个 Docker 卷!)
- 没有任意的时间限制
- 你可以附加调试器,使用你喜欢的运行时环境,并在本地或生产环境中运行——无需任何特殊技巧或规则
例子:
docker run -v my-data:/data my-app
Boom——有状态工作负载,可在您的笔记本电脑、VPS 或边缘节点上运行。
无厂商锁定。无隐藏费用。无需为了迎合他人的限制而重写应用程序。
无服务器定价:旨在让你感到困惑
无服务器定价是一种不正当的定价模式。
- 每次调用都需要付费
- 内存使用量
- 每执行时长
- 每GB传输量
- 按地区
- 每个被访问的秘密(是的,真的)
定价页面有五层之多,充斥着诸如此类的自造术语:
- 已配置并发单元
- GB秒
- 请求层级 1/2/3
更糟糕的是,直到收到账单,你才知道自己要付多少钱。
带宽价格尤其过高。2025年出口流量竟然要0.55 美元/GB ?为什么?
相比之下,每月 5 美元的 VPS 价格固定且可预测,还能提供完全控制权。容器技术完胜。
“但是无服务器架构可以扩展!”
当然可以——理论上是这样。但那又怎样呢?为了你那只有4个用户的应用吗?
大多数应用并不需要“无限扩展性”。它们需要的是:
- 可预测性
- 可观测性
- 合理的资源限制
- 一个可用的开发/测试环境
你知道什么最适合做这件事吗?容器。
水平扩展非常简单(这就是 Docker Swarm):
replicas: 5
或者把它放在负载均衡器后面。这样既能获得可扩展性,又能控制代码——而无需将应用程序重写成一堆互不相连的函数。
无状态设计 = 人工问题
无服务器架构强制实现无状态化。这意味着:
- 没有内存缓存
- 没有临时文件
- 没有粘滞会话
- 没有长期的联系
所以现在你需要:
- 外部数据库
- 分布式缓存
- 文件存储桶
- 活动巴士
- 用于协调状态机的状态机
突然间,你“简单”的无服务器应用程序依赖于六个 SaaS 平台(每个平台都有自己的计费方式、API 和故障模式)。
与此同时,在一个容器中:
- 你可以将缓存存储在内存中
- 写入磁盘(Docker 卷)
- 保持会话
- 跑多久都行
你知道——就像一个正常的程序一样。
“但我不想管理服务器!”
好的,你不必这么做。
有些工具可以让你无需通过 SSH 连接到任何设备即可使用基于容器的平台:
- Sliplane(厚颜无耻的广告)
- 铁路
- 酷乐
- 如今,即使只是在 VPS 上使用 Docker + systemd,也不需要太多管理!
你仍然可以获得基于 Git 的部署、回滚、日志、指标——但你可以决定事情如何运行,而且你实际上可以了解系统。
“无服务器更便宜!”
是吗?
或许,每天可以念诵五次。但当你:
- 保持稳定的流量
- 需要更多内存
- 实际计算
- 传输数据
成本飙升。而且由于平台将所有东西都抽象化了,所以你几乎无法进行任何优化。
与此同时,集装箱:
- 在廉价硬件上全天候运行
- 可以与存储或缓存共置
- 易于进行基准测试和调优
- 不要按毫秒收费
无服务器架构何时真正适用
好吧,公平地说——无服务器架构有其适用的领域:
- 事件驱动函数(例如,图像大小调整)
- 不经常执行的任务或网络钩子
- 轻型内工具
- 概念验证
- 真正需要快速扩展和缩减规模的事物
如果您的工作负载确实是间歇性的、无状态的,并且您希望零运维投入,那么无服务器架构可能适合您。
但对于真正的应用程序来说呢?你会遇到瓶颈。而这个瓶颈会让你损失金钱、时间和精力。
集装箱万岁!
容器能给你带来:
- 可移植性
- 控制
- 简单
- 透明度
- 灵活性
您可以部署一个容器,也可以部署十个。您可以扩展容器,监控容器,维护容器状态,运行后台作业,使用您自己的数据库,无需重写代码即可迁移数据库提供商。
这样你就能真正了解你的系统是如何运作的。
太长不看
无服务器架构很酷——理论上是这样。
实际上,情况是:
- 不透明
- 价格过高
- 过于复杂
- 被过度炒作
在你上当之前,先问问自己:
“这会不会只是一个容器?”
答案很可能是肯定的。如果是这样——从那里开始,你就能省去很多麻烦。
Serverless 架构让你吃过亏吗?
请在评论区分享你的恐怖经历。意外账单、崩溃的工作流程、YAML 噩梦——我都想听听。
别把简单的事情复杂化了。
干杯,
Jonas, sliplane.io的联合创始人
文章来源:https://dev.to/code42cate/serverless-is-a-scam-5fc0