Serverless
是什麼
想像一盞人體感應燈:沒人時它一直熄著,有人經過時才為他點亮,然後自己關掉——你既不用去按開關,也不必為它整夜亮著而付費。就是這樣工作的。你只編寫一個個獨立的函式,雲服務商僅在有事件觸發它們時才執行——一個 請求(一次 Web 請求,就是你瀏覽器發出的那種)、一次檔案上傳、一個定時器。底層仍然有伺服器,但你永遠看不到也無需管理它們。你只為程式碼實際執行的時間付費,往往精確到毫秒。
優勢
- 無需預配、打補丁或維持伺服器執行。
- 自動從零擴充套件到數千個併發執行例項。
- 按使用量計費;空閒程式碼不產生費用。
- 與雲事件(佇列、儲存、資料庫)乾淨地整合。
- 非常適合突發或不可預測的流量。
權衡取捨
- 冷啟動:最近沒有執行過的函式可能需要額外時間來喚醒。
- 執行時間限制(通常為幾分鐘)使其無法處理長時間任務。
- 在極高且穩定的流量下,相比一臺普通伺服器,成本可能讓你吃驚。
- 本地測試和除錯比普通應用更棘手。
- 廠商鎖定——各服務商的事件模型和 各不相同。
何時使用
對於流量不均勻、又不想費心照看基礎設施的 API(應用程式程式設計介面——其他軟體為了與你的應用互動而呼叫的端點)、webhook、定時任務和事件驅動型任務,選擇 serverless。它特別適合作為雲服務之間的膠水程式碼。
與 vibe coding 的契合度
Serverless 與 AI 主導的開發配合得很好,因為工作單元是一個單一、自包含的函式——便於 agent 生成、測試和部署。AWS SAM、Serverless Framework 和 Vercel 等框架讓 AI 可以在一個配置檔案中定義函式、它的觸發器以及許可權。建議:要求 agent 明確設定合理的超時時間和記憶體大小,並儘量精簡依賴——更少的包意味著更小的打包體積和更快的冷啟動。
# serverless.yml — AWS Lambda 函式
service: my-api
provider:
name: aws
runtime: nodejs20.x
timeout: 10
functions:
hello:
handler: handler.hello
events:
- httpApi:
path: /hello
method: get
# 部署整個棧
npx serverless deploy