AWS 服務系列(八):進階架構設計與最佳實踐
前言
歡迎來到「AWS 服務系列」的最終章。在前面的七篇文章中,我們從基礎的運算、儲存、網路,一路探討到訊息佇列、DevOps 以及監控系統。掌握單一服務的使用是基礎,但作為一名資深的後端工程師或架構師,真正的挑戰在於如何將這些服務組合成一個高可用 (High Availability)、高容錯 (Fault Tolerance)、安全且成本效益最佳化的系統。
本篇文章將整合前面所學,深入探討 AWS 上的進階架構設計模式,包括災難復原 (DR) 策略、成本優化技巧,以及 AWS Well-Architected Framework 的核心精神。
高可用性 (High Availability) 與容錯設計
高可用性是指系統在長時間內保持正常運作的能力。在 AWS 上,實現 HA 的核心原則是消除單點故障 (Single Point of Failure, SPOF)。
1. Multi-AZ 架構 (多可用區)
這是最基礎的 HA 策略。永遠不要將所有的資源部署在同一個 Availability Zone (AZ)。
- 運算層:使用 Auto Scaling Group (ASG) 跨多個 AZ 部署 EC2 實例。
- 資料庫層:使用 RDS Multi-AZ 部署,當主節點故障時自動 Failover 到備用節點。
- 負載平衡:Application Load Balancer (ALB) 會自動偵測實例健康狀況,並將流量導向健康的 AZ。
2. Multi-Region 架構 (多區域)
對於全球性業務或極高可用性需求的系統,單一 Region 的 HA 可能不足夠(例如整個 Region 發生大規模斷網)。這時需要考慮跨 Region 部署。
Active-Passive (主備模式)
平時流量只進入主 Region,當主 Region 發生災難時,透過 Route53 將流量切換到備用 Region。
Active-Active (雙活模式)
兩個 Region 同時服務流量,通常搭配 DynamoDB Global Tables 或 Aurora Global Database 來解決資料同步問題。
graph TB
subgraph "Region A (Active)"
ALB1[ALB] --> ASG1[EC2 Auto Scaling]
ASG1 --> DB1[(RDS Primary)]
end
subgraph "Region B (Active/Passive)"
ALB2[ALB] --> ASG2[EC2 Auto Scaling]
ASG2 --> DB2[(RDS Replica)]
end
User((User)) --> R53{Route 53}
R53 -->|Primary| ALB1
R53 -->|Failover| ALB2
DB1 -.->|Replication| DB2
災難復原 (Disaster Recovery, DR)
DR 策略的選擇取決於兩個關鍵指標:
- RTO (Recovery Time Objective):災難發生後,系統需要多久才能恢復服務?(可容忍的停機時間)
- RPO (Recovery Point Objective):災難發生後,系統會遺失多久的資料?(可容忍的資料遺失量)
AWS 定義了四種常見的 DR 策略,成本與恢復速度成正比:
1. Backup and Restore (備份與還原)
- 機制:定期將資料備份到 S3 或跨 Region 複製 Snapshot。災難發生時,從備份還原基礎設施和資料。
- 特點:成本最低,RTO/RPO 最長(可能數小時至數天)。
- 適用:非關鍵業務、開發環境。
2. Pilot Light (長明燈)
- 機制:在備用 Region 部署核心資料庫(通常是 Read Replica),但不啟動應用伺服器(或只保留極小規模)。災難發生時,啟動應用伺服器並擴展。
- 特點:成本較低,RTO 較快(數十分鐘)。
- 適用:需要較快恢復但預算有限的場景。
3. Warm Standby (暖備援)
- 機制:在備用 Region 運行一個縮小版的完整環境(包含 DB 和 App Server)。平時可以處理少量流量或僅作測試。災難發生時,迅速擴展 (Scale Out) 以承接全部流量。
- 特點:成本中等,RTO 快(數分鐘)。
- 適用:關鍵業務系統。
4. Multi-Site Active/Active (多點雙活)
- 機制:多個 Region 同時運作並分擔流量。
- 特點:成本最高,RTO 接近零。
- 適用:金融交易、核心支付系統等不允許停機的場景。
成本優化 (Cost Optimization)
雲端雖然靈活,但若不加管理,帳單可能會非常驚人。
1. 運算資源優化
- Right Sizing:透過 CloudWatch Metrics 分析 CPU/RAM 使用率,選擇最合適的實例大小。
- Spot Instances:對於可中斷的任務(如批次處理、CI/CD Worker),使用 Spot Instances 可節省高達 90% 的成本。
- Savings Plans / Reserved Instances (RI):對於長期穩定的負載(如資料庫、核心 API Server),承諾使用 1 年或 3 年可獲得顯著折扣。
2. 儲存成本優化 (S3 Lifecycle)
善用 S3 的生命週期策略,將不常存取的資料自動轉移到更便宜的儲存層級。
1 | # S3 Lifecycle Configuration 概念示例 |
3. 資料傳輸費用
- 避免跨 Region 的大量資料傳輸。
- 使用 CloudFront 作為 CDN,因為 CloudFront 的 Data Transfer Out 通常比直接從 EC2/S3 輸出便宜,且能提升速度。
- 使用 VPC Endpoints (Interface/Gateway) 讓流量走 AWS 內網,避免經過 NAT Gateway 產生的處理費用。
AWS Well-Architected Framework
AWS 官方提出的架構設計六大支柱,是檢視系統架構是否健全的最佳標準:
卓越營運 (Operational Excellence):
- 關注系統的運行監控、自動化部署、以及從失敗中學習改進的流程。
- 關鍵實踐:IaC (Infrastructure as Code)、CI/CD、完善的日誌與監控。
安全性 (Security):
- 保護資料、系統和資產,並利用雲端技術提升安全性。
- 關鍵實踐:IAM 最小權限原則、資料加密 (KMS)、網路隔離 (VPC/Security Groups)。
可靠性 (Reliability):
- 系統從基礎設施或服務故障中恢復的能力,以及動態獲取資源以滿足需求的能力。
- 關鍵實踐:Multi-AZ、Auto Scaling、自動備份、混沌工程 (Chaos Engineering)。
效能效率 (Performance Efficiency):
- 有效率地使用運算資源以滿足系統需求,並隨著需求變化和技術演進保持效率。
- 關鍵實踐:Serverless 架構、選擇正確的資料庫類型、使用 CloudFront 加速。
成本優化 (Cost Optimization):
- 避免不必要的開銷。
- 關鍵實踐:使用 Spot Instances、監控預算 (AWS Budgets)、定期檢視資源使用率。
永續性 (Sustainability):
- 最小化雲端工作負載對環境的影響。
- 關鍵實踐:最大化資源利用率、使用 Graviton (ARM) 處理器(效能更好且更省電)。
系列總結與學習建議
恭喜你完成了這八篇的 AWS 服務系列之旅!我們從最基礎的 EC2 和 S3 開始,建立了自己的 VPC 網路,連接了 RDS 資料庫,透過 SQS/SNS 實現了解耦,利用 CodePipeline 達成了自動化部署,最後學會了如何監控系統並設計高可用的架構。
給後端工程師的建議
- 動手實作:雲端技術是「做」出來的,不是「看」出來的。利用 AWS Free Tier,親手搭建一個完整的 Web 應用架構。
- 考取證照:準備 AWS Certified Solutions Architect - Associate (SAA) 證照是系統化學習 AWS 最好的路徑。它會強迫你理解各個服務之間的關聯。
- 關注 IaC:不要只會用 Console 點擊。學習 Terraform 或 AWS CDK,將你的架構程式碼化,這才是現代 DevOps 的標準。
- 保持好奇心:AWS 每年都會推出數百項新功能(特別是在 re:Invent 大會期間)。保持對新技術的敏感度,思考它們如何能解決你當前的問題。
希望這個系列能成為你雲端架構之路的堅實基石。如果你有任何問題或想深入探討的主題,歡迎在下方留言或與我聯繫。
Happy Cloud Computing! ☁️











