每當有人使用無伺服器來建構一個簡單的後端時,我內心的一個容器就會消亡。
「無伺服器」承諾簡單性、可擴充性和零維護。實際上,它會給你時間限制、供應商鎖定、意外帳單以及偽裝成便利的複雜性。您最終將 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 連接任何東西:
滑行飛機(無恥的插件)
鐵路
Coolify
如今,即使只是 VPS 上的 Docker + systemd 也不需要太多管理!
您仍然可以獲得基於 Git 的部署、回滾、日誌、指標——但您可以決定事情如何執行,並且可以真正了解系統。
是嗎?
也許,每天進行 5 次呼叫。但此刻你:
擁有穩定的流量
需要更多內存
進行實際計算
傳輸資料
...成本飆升。而且你無法進行太多優化,因為平台將一切都抽象化了。
同時,容器:
在廉價硬體上全程執行
可以與儲存或快取共置
易於基準測試和調整
不按毫秒收費
好吧,公平地說——無伺服器有其優勢:
事件驅動函數(例如,影像大小調整)
不頻繁的任務或 webhook
輕量級內部工具
概念驗證
真正需要快速擴大和縮小規模的東西
如果您的工作負載確實是間歇性的和無狀態的,並且您希望無需任何操作工作,那麼無伺服器就可以發揮作用。
但對於真正的應用程式呢?你會碰壁的。而建造這堵牆需要耗費金錢、時間和腦細胞。
容器為您提供:
可移植性
控制
簡單
透明度
靈活性
您可以部署一個容器,也可以部署十個。縮放它們。監視他們。保持狀態。執行後台作業。使用您自己的資料庫。無需重寫程式碼即可移動提供者。
您就會真正了解您的系統是如何運作的。
從理論上來說,無伺服器很酷。
事實上,它是:
不透明
價格過高
過於複雜
被過度炒作
在你陷入困境之前,先問問自己:
“這只是一個容器嗎?”
答案可能是肯定的。如果是的話——從那裡開始你就可以省去很多痛苦。
在評論中寫下你的恐怖故事。意外帳單、中斷的工作流程、YAML 噩夢——我想聽到這一切。
我們不要再把簡單的事情複雜化了。
乾杯,
Jonas, sliplane.io共同創辦人