阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

63 個專案實戰,寫出作品集,讓面試官眼前一亮!

立即開始免費試讀!

每當有人使用無伺服器來建構一個簡單的後端時,我內心的一個容器就會消亡。

「無伺服器」承諾簡單性、可擴充性和零維護。實際上,它會給你時間限制、供應商鎖定、意外帳單以及偽裝成便利的複雜性。您最終將 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

  • 輕量級內部工具

  • 概念驗證

  • 真正需要快速擴大和縮小規模的東西

如果您的工作負載確實是間歇性的和無狀態的,並且您希望無需任何操作工作,那麼無伺服器就可以發揮作用。

但對於真正的應用程式呢?你會碰壁的。而建造這堵牆需要耗費金錢、時間和腦細胞。


容器萬歲

容器為您提供:

  • 可移植性

  • 控制

  • 簡單

  • 透明度

  • 靈活性

您可以部署一個容器,也可以部署十個。縮放它們。監視他們。保持狀態。執行後台作業。使用您自己的資料庫。無需重寫程式碼即可移動提供者。

您就會真正了解您的系統是如何運作的。


TL;DR

從理論上來說,無伺服器很酷。

事實上,它是:

  • 不透明

  • 價格過高

  • 過於複雜

  • 被過度炒作

在你陷入困境之前,先問問自己:

“這只是一個容器嗎?”

答案可能是肯定的。如果是的話——從那裡開始你就可以省去很多痛苦。


被無伺服器燒傷了嗎?

在評論中寫下你的恐怖故事。意外帳單、中斷的工作流程、YAML 噩夢——我想聽到這一切。

我們不要再把簡單的事情複雜化了。

乾杯,

Jonas, sliplane.io共同創辦人


原文出處:https://dev.to/code42cate/serverless-is-a-scam-5fc0

按讚的人:

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。

阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

63 個專案實戰,寫出作品集,讓面試官眼前一亮!

立即開始免費試讀!