cover

Serverless 不是銀彈,傳統伺服器也不是過時。這篇幫你判斷什麼場景用什麼架構,五分鐘搞定決策。

先講結論

  • 流量低或爆發性強 → Serverless(Lambda / Cloud Functions)
  • 流量穩定、高吞吐、需要長連線 → 傳統伺服器(EC2 / GCE)
  • 已有 Docker image、想要自動擴展 → CaaS(Cloud Run / Fargate)
  • 大多數生產環境 → 混合架構(核心 API 跑 Server,背景任務跑 Serverless)

沒有「最好的架構」,只有「最適合這個工作負載的架構」。


三種架構,各自的甜蜜點

傳統伺服器 — 完全控制的代價

EC2、GCE、VPS,你熟悉的那種「開一台機器,SSH 進去裝東西」。好處是完全控制——OS、網路、磁碟隨你搞。搭配 Reserved Instance,大規模穩定流量下成本很可預測。

但你得自己處理 OS patch、容量規劃、監控告警。凌晨三點沒流量,機器照樣在燒錢。擴展速度?新 instance 啟動通常要幾分鐘。

適合: 高吞吐 API、WebSocket/即時通訊、遊戲伺服器、ML 訓練、需要特定 OS 設定的合規場景。

Serverless — 只管 code,其他不管

上傳一個 function,平台負責一切。沒有請求就不收錢,從 0 到幾千個並行實例自動擴展。開發速度快到飛起,特別適合快速原型驗證。

但 Cold Start 是真的痛(後面會詳細講)。Lambda 最長跑 15 分鐘、function 之間不共享記憶體、本地開發體驗不太好、vendor lock-in 很深。

適合: Webhook handler、排程任務、S3 檔案觸發處理、低流量 API、MVP 原型。

CaaS — 兩者之間的甜蜜點

Cloud Run、Fargate、Azure Container Apps。你給一個 Docker image,平台幫你跑和擴展。標準 Docker image 可攜性高,vendor lock-in 最低。Cloud Run 還能縮至零。

代價是你得自己建 Docker image 和 CI/CD pipeline,Cold Start 可能比 Lambda 更長(要拉整個 container)。

適合: 微服務、需要自訂 runtime、想避免 vendor lock-in、已經有 Docker image 的團隊。


成本交叉點:到底多少流量以後 Server 比較划算?

這是大家最想知道的。我用 Lambda(256MB、200ms/次)vs EC2(t3.medium $30/月)算給你看:

月請求數Lambda 月費EC2 月費贏家
10 萬~$0$30Lambda
100 萬~$0$30Lambda
1,000 萬~$18$30Lambda
5,000 萬~$110$30EC2
1 億~$223$30EC2

交叉點大約在 2,000-3,000 萬次請求/月。 低於這個數字,Lambda 幾乎免費;超過這個數字,EC2 的固定成本模型碾壓。

但這只是 Lambda 本身的費用。你有沒有算過 API Gateway 要 $3.50/百萬次?CloudWatch Logs 的儲存費?VPC 裡的 NAT Gateway?這些「隱藏成本」加起來,交叉點可能比你想的更早到來。


Vendor Lock-in:搬家有多痛?

架構鎖定程度搬家痛苦指數
LambdaEvent 格式、Layer、Extensions 都是 AWS 專屬
Cloud FunctionsGCP event 格式、Firestore/Pub/Sub 整合綁定
Cloud Run標準 Docker image + HTTP,幾乎無痛搬
EC2 / GCEVM 可搬,但 cloud SDK 有鎖定

降低鎖定的策略:用 Hexagonal Architecture 把業務邏輯跟雲端 SDK 解耦。handler 只做 event 轉換,核心邏輯包成獨立 package。或者直接用 Cloud Run——Docker image 走到哪都能跑。


場景速查表

你的服務是什麼?直接對照:

服務類型推薦架構為什麼
即時聊天Server需要 WebSocket 長連線
LINE Bot / WebhookServerlessevent-driven,低頻觸發
電商平台Server 或 CaaS穩定高流量、需要 session
圖片/影片處理Serverless非同步、突發流量
排程報表Serverless不需要 24 小時跑一台機器
ML 推論 APICaaS自訂 runtime、可能需要 GPU
串流服務Server高頻寬、長連線

看到規律了嗎?長連線/高流量/有狀態 → Server,事件驅動/突發/無狀態 → Serverless,容器化/自訂 Runtime → CaaS。

Cold Start 深入解析、混合部署架構、還有實際的 Lambda + Cloud Run 部署範例,我放在 下一篇


選架構就像選交通工具——通勤用腳踏車、長途開車、急事搭高鐵。沒有人會開高鐵去巷口買早餐。