前陣子又聽到了 Serverless(無伺服器)架構這個酷東西,我第一次聽到 Serverless 應該是某年 Modern Web Conference 對岸講者的分享,想想還是簡單記錄一下。

Serverless 乍聽之下好像是「沒有伺服器」,但實際上伺服器並沒有消失,而是由雲端服務供應商(如 AWS、Google Cloud、Azure)負責管理。

我們只是不再需要手動設定、部署、監控這些伺服器,這些繁瑣的基礎建設交給他們來搞定,我們開發者就可以專注在寫程式碼上,開心寫邏輯,寫完就交給雲端去跑。

Serverless 是怎麼來的?

Serverless 架構的核心思想,是讓開發者不必管理伺服器,透過「功能即服務(Function as a Service,FaaS)」或「後端即服務(Backend as a Service,BaaS)」的形式來實作。

按照 AWS 說法:

「無伺服器架構是一種無須管理基礎設施即可建立和執行應用程式及服務的方法。您的應用程式仍然在伺服器上執行,但所有伺服器管理工作都由 AWS 完成。」

來源:https://aws.amazon.com/tw/lambda/serverless-architectures-learn-more/

那我們可以理解為:Serverless 是一種「運作在別人幫你管好的伺服器上」的架構模式。

這背後離不開兩個支柱:

  • BaaS(Backend as a Service):例如 Firebase 提供的 Authentication、Realtime Database、Cloud Storage 等服務,開發者只需呼叫 API,即可完成後端功能。
  • FaaS(Function as a Service):例如 AWS Lambda、Google Cloud Functions、Firebase Cloud Functions,讓你用單一函式處理任務,並且只有在事件觸發時才執行。

Firebase Cloud Functions 是一個 Serverless 案例

Cloud Functions for Firebase 是一種 serverless 框架,允許你在 Firebase 的生態系統中,以事件觸發或 HTTP 請求的方式,自動執行後端程式碼。

也就是說,你可以寫一小段 JavaScript 函式,指定「當使用者註冊時執行」,或「收到特定 HTTP 請求時執行」,Firebase 幫你負責部署、監控與擴展,開發者完全不用管伺服器怎麼跑、容量夠不夠、要不要升級等等問題。

這樣的好處,就是讓開發者可以更專注在功能實作,不再需要花費時間處理 DevOps 的瑣事。

Serverless 和 Jamstack 有什麼關係?

在介紹 Jamstack 架構時,也常常會聽到 Serverless 的概念。

Jamstack = JavaScript + API + Markup,是一種將前後端解耦、強調預渲染與 CDN 分發的網站架構模式。

在 Jamstack 裡面:

  • UI 可以透過 SSG(Static Site Generation)事先渲染成 HTML
  • 資料互動透過 API 呼叫,這些 API 可以由 Serverless Function 提供支援

這也就是為什麼 Guillermo Rauch(Next.js 與 Vercel 的 CEO)會說:

「Static is the new Dynamic.」

意思是,預先產生的靜態頁面,再透過 Serverless API 實現動態資料處理,變成新的網站開發常態。

值得注意的是:Serverless 不等於只託管靜態網頁。單純丟一份死板的 HTML 到 S3 或 GitHub Pages 上不叫 Serverless,Serverless 強調的是後端邏輯也「免維運」,不只是前端丟出去就沒事了。

Serverless 的優缺點

優點

  • 無需管理伺服器:不需要考慮佈建、監控、維運
  • 依事件啟動、節省資源:只在需要時才執行程式碼,省成本
  • 高擴展性:雲端自動橫向擴展,無痛因應流量高峰
  • 開發迭代快速:可將功能模組化,每個 function 獨立部署

缺點

  • 冷啟動延遲:首次呼叫 function 時,可能會因啟動時間稍慢
  • 除錯與監控不易:沒有完整的伺服器環境,問題排查可能較複雜
  • 供應商綁定(vendor lock-in):不同平台的 function 寫法不盡相同,移轉成本較高
  • 計費模式可能難以預估:根據執行次數與時間計費,若事件頻繁可能產生較高費用

Serverless 是不是繞了一圈又回來了?

有些人會問:「我們是不是又繞了一圈,最後還是跑在伺服器上?」這麼說其實也沒錯,只是「誰負責管伺服器」的角色變了。

傳統架構下,你要自己買機房、租主機、部署服務,出了問題還要自己 debug。

Serverless 架構下,你依賴 AWS、Google Cloud、Azure 等雲服務商,他們來負責這些繁瑣的事,你只要負責好你的 function。這也是 cloud native 與 serverless 的共通點:擁抱雲端,委外繁瑣,專注邏輯,快速交付。

總結

Serverless 架構並不是讓伺服器從此消失,而是讓伺服器的存在對開發者「不可見」。它是現代 Web 與雲端開發的重要一環,結合 FaaS 與 BaaS,提供極高的靈活性與擴展性。

從 Firebase Cloud Functions、AWS Lambda 到 Next.js 搭配 Vercel,Serverless 已經融入我們日常的開發流程。雖然它有冷啟動、監控不易等限制,但透過正確的架構規劃與測試策略,仍可大幅提升開發效率與維運體驗。