完整無伺服器應用
🔥 Vibe Prompt
「架構一個無伺服器 SaaS 應用:認證、API、資料庫、檔案上傳、非同步處理、監控。」
系統架構
CloudFront(SPA 託管)
↓
Cognito(認證:OAuth, MFA)
↓
API Gateway HTTP API
↓
Lambda(商業邏輯)
↓
DynamoDB + S3 + EventBridge
↓
Step Functions(工作流程)
↓
SES(郵件)+ SNS(推播)
基礎設施即程式碼
# 50 行搞定無伺服器架構
module "serverless" {
source = "terraform-aws-modules/lambda/aws"
functions = {
api = {
handler = "index.handler"
runtime = "nodejs20.x"
source_path = "./src/api"
environment_variables = {
TABLE_NAME = "orders"
BUCKET_NAME = "uploads"
}
}
worker = {
handler = "index.handler"
runtime = "python3.12"
source_path = "./src/worker"
timeout = 300
memory_size = 1024
}
}
api_gateway = {
protocol = "HTTP"
cors = { allow_origins = ["https://app.example.com"] }
}
}
module "dynamodb" {
source = "terraform-aws-modules/dynamodb-table/aws"
tables = {
orders = {
hash_key = "PK"
range_key = "SK"
billing_mode = "PAY_PER_REQUEST"
}
}
}
監控與可觀測性
CloudWatch → 儀表板 + 警報 + 日誌
↓
X-Ray(分散式追蹤)
↓
EventBridge → PagerDuty(值班)
無伺服器課程完成!🎉
- ✅ Lambda
- ✅ API Gateway
- ✅ DynamoDB & EventBridge
- ✅ Step Functions
- ✅ 完整 SaaS 應用
費用估算
| 服務 | 每月(1 萬使用者) | |------|-------------------| | Lambda | $2-5 | | API Gateway | $3 | | DynamoDB | $5-10 | | CloudFront | $1 | | Cognito | $0(免費用戶) | | 總計 | $10-20 |
Serverless 的取捨:什麼時候不要用?
Serverless 不是萬靈丹。做為課程的最後一章,我必須誠實告訴你它的限制:
| 場景 | 為什麼不適合 Serverless | |:----|:----------------------| | 穩定、高流量的批次處理 | 預留容量的 EC2 或 ECS 成本更低 | | GPU / ML 訓練 | Lambda 沒有 GPU,Timeout 15 分鐘 | | WebSocket 長連線遊戲 | API Gateway WebSocket 有連線數限制 | | 需要特定作業系統或 Kernel 模組 | Lambda 執行環境是唯讀的 | | 極低延遲需求(<10ms) | 冷啟動無法完全消除 | | 既有大型單體系統 | rewrtie 成本遠大於 Serverless 節省的利益 |
如果你的專案落在上半部,Serverless 是絕佳選擇。如果在下半部,傳統架構可能更適合。
為什麼要學這些?
這堂課的目標不是讓你成為 AWS 認證架構師,而是讓你能夠獨立開發一個完整的 SaaS 應用,從認證、API、資料庫、檔案上傳到非同步處理全部自己掌握。這些技能對於接案、創業、或內部工具開發都非常實用。
從這裡可以去哪裡?
完成這堂課後,你已經有能力建立 production-ready 的 Serverless 應用了。接下來可以探索:
- AWS CDK 進階:用程式碼管理基礎設施 + 自動化測試
- Event-Driven Architecture:EventBridge Pipes、Saga Pattern
- Observability:OpenTelemetry + Grafana + Loki 取代 CloudWatch
- Multi-Region:Global Tables + Route53 做災難備援
- 微服務拆分:將單體 Serverless 應用拆分為多個獨立服務
最重要的是——找一個真實的專案來實作。最好的學習方式永遠是把所學用在真正需要的地方。