本章比較「不管伺服器」的兩條路線:Lambda(事件驅動、15 分鐘限制)與容器化(ECS / EKS 搭配 Fargate)。再加上 API Gateway 作為入口、Step Functions 串接多步驟流程,構成現代 Serverless 架構的核心組件。
🧱 白話:API = 餐廳的服務生+菜單(客戶端照文件下單,不用管廚房怎麼做菜),API Gateway 就是「統一收單的門面」:驗證誰能點餐、限流(超量回 429)、管版本,再把單子轉給後面的 Lambda/EC2。API 與 REST 的地基見 基礎篇 ch08 API 與非同步。
🧱 容器 vs VM 的完整比較(共用公寓房間 vs 獨立套房)與 Fargate 在「抽象階梯」上的定位,見 基礎篇 ch05 虛擬化與容器。
先快速補一下背景知識:容器(Container)是把應用程式跟它需要的所有依賴(函式庫、環境設定)打包成一個獨立、可攜帶的執行單位,最有名的實作是 Docker——比起傳統直接在伺服器上跑程式,容器的好處是「在我電腦上跑得動」的環境差異問題大幅減少,因為打包好的東西到哪台機器都長一樣。當你的服務由幾十、幾百個容器組成,就需要一個「編排(Orchestration)」系統來自動決定容器要放哪台機器、掛了要不要重啟、流量怎麼分配——Kubernetes(K8s)是目前業界最主流的容器編排系統,而 AWS 提供了兩種選擇來跑容器:自家的 ECS,或托管版的 Kubernetes(EKS)。
AWS Step Functions(工作流程編排):
其他重要 Serverless 服務:
| 特性 | Lambda | Fargate(ECS/EKS) | EC2 |
|---|---|---|---|
| 伺服器管理 | 完全不管(連容器都不用) | 不管主機,容器映像自理 | 主機 + OS 全部自管 |
| 你要負責什麼 | 函式程式碼、記憶體/timeout、IAM Role、觸發來源 | 容器映像(含 OS 套件與 CVE 修補)、Task 定義、VPC/Security Group | 以上全部 + 主機 OS 修補、叢集容量規劃 |
| 誰負責擴縮 | AWS 自動依請求數(你只設併發上限) | 自己設 Service Auto Scaling(挑指標、訂閾值) | 自己設 ASG,還要顧叢集有沒有空位 |
| 最長執行時間 | 15 分鐘 | 無限制 | 無限制 |
| 計費方式 | 按請求數 + 執行時間 | 按 CPU + 記憶體使用量 | 按小時(開機就收費) |
| Cold Start | 有(可用 Provisioned 解決) | 容器啟動時間 | 無(已在運行) |
| 適合 | 事件驅動、短期任務 | 長期運行的容器服務 | 需要完整控制的應用 |
| 維度 | ECS | EKS |
|---|---|---|
| 複雜度 | 較低(AWS 原生,上手快) | 較高(K8s 學習曲線陡) |
| 適合團隊 | AWS 原生、不熟 K8s | 已有 K8s 經驗、跨雲需求 |
| Fargate 支援 | ✅ | ✅ |
| 生態系統 | AWS 深度整合 | K8s 豐富的開源生態 |
| 費用 | 低(無控制平面費) | 有 EKS 控制平面費(每小時 $0.10) |
| 類型 | 協定 | 費用 | 特性 | 適合 |
|---|---|---|---|---|
| REST API | HTTP/HTTPS | 較高 | 功能最完整(API Keys、WAF、Cache) | 需要完整 API 管理功能 |
| HTTP API | HTTP/HTTPS | 比 REST 便宜 70% | 延遲低、輕量、OIDC/OAuth2 整合 | Lambda 代理、簡單 API |
| WebSocket API | WebSocket | 中 | 雙向即時通訊 | 聊天室、即時遊戲、即時更新 |
點擊卡片翻面查看答案,共 5 張。