本文將介紹 AWS 上常見的架構模式,以及如何利用這些技術來架設應用程式(如 WordPress)和管理容器化應用(ECS 與 K8s)。


常見 AWS 架構模式

在 AWS 上構建應用程式時,根據需求不同,通常會採用以下幾種經典架構:

三層式 Web 架構 (3-Tier Web Architecture)

這是最傳統且穩定的架構,適用於需要高可用性 (High Availability) 和彈性擴展 (Auto Scaling) 的企業級應用。

3 tier arch
  • Presentation Tier (Web Tier): 使用 Application Load Balancer (ALB) 接收流量,並分發給後端的 EC2。
  • Logic Tier (App Tier): EC2 實例位於私有子網 (Private Subnet) 中,透過 Auto Scaling Group 根據負載自動增減機器數量。
  • Data Tier: 使用 Amazon RDS 作為關聯式資料庫,建議開啟 Multi-AZ 以實現異地備援。

無伺服器架構 (Serverless Architecture)

適用於事件驅動型應用、API 後端或間歇性流量的服務。優點是無需管理伺服器,且按執行次數計費。

serverless
  • API Gateway: 作為進入點,接收 HTTP 請求。
  • AWS Lambda: 執行業務邏輯,僅在請求進來時運行。
  • Amazon DynamoDB: NoSQL 資料庫,提供極致的擴展性。

微服務容器架構 (Container Architecture)

適用於現代化應用開發,利用容器技術 (Docker) 實現環境一致性和快速部署。

k8s
  • EKS (Elastic Kubernetes Service): AWS 託管的 K8s 控制平面。
  • Worker Nodes: 運行 Pods 的 EC2 或 Fargate 實例。

實戰:如何在 AWS 架設 WordPress

根據規模和技術能力,有三種主要方式可以架設 WordPress:

方案 A:快速入門 (Amazon Lightsail)

最簡單、最便宜的方案,適合個人部落格或小型網站。

  • 操作: 在 Lightsail 控制台選擇 “Create Instance” -> 選擇 “Apps + OS” -> 選擇 “WordPress”。
  • 優點: 一鍵安裝,包含伺服器、資料庫和網路設定,月費固定。

方案 B:標準彈性架構 (EC2 + RDS)

適合中型商業網站,需要更好的效能和彈性。

  • EC2: 啟動一台 EC2 (如 Amazon Linux 2023),安裝 Apache/Nginx 和 PHP。
  • RDS: 啟動一個 RDS (MySQL/MariaDB) 實例。
  • 連接: 修改 WordPress 的 wp-config.php,將資料庫主機指向 RDS Endpoint。
  • 優點: 資料庫與網頁伺服器分離,便於個別擴展和備份。

方案 C:高流量容器化架構 (ECS/Fargate)

適合大型流量、需要自動擴展的網站。

  • 將 WordPress 封裝成 Docker Image。
  • 將 Image 推送到 Amazon ECR (Elastic Container Registry)。
  • 使用 ECS (Elastic Container Service) 定義 Task Definition。
  • 設定 Service 使用 Fargate (無伺服器容器運算) 運行。
  • 掛載 EFS (Elastic File System) 來儲存 WordPress 的 wp-content (上傳的圖片等),實現多容器共享存儲。

深入解析:ECS 與 K8s (EKS)

在 AWS 上運行容器,主要有兩個選擇:

什麼是 ECS (Elastic Container Service)?

  • 定義: AWS 原生的容器調度服務。
  • 特點: 深度整合 AWS 服務 (ALB, IAM, CloudWatch),設定簡單,學習曲線低。
  • 適用場景: 已經熟悉 AWS 生態,希望快速部署容器化應用的團隊。

什麼是 K8s / EKS (Elastic Kubernetes Service)?

  • 定義: Kubernetes (K8s) 是開源的容器編排系統,EKS 是 AWS 的託管 K8s 服務。
  • 特點: 強大的社群支持,標準化的 API,避免供應商鎖定 (Vendor Lock-in)。架構如上圖所示,包含 Control Plane 和 Worker Nodes。
  • 適用場景: 多雲策略、需要複雜調度邏輯、或是已經在使用 K8s 的企業。

最佳架構實踐 (AWS Well-Architected)

設計架構時,應遵循 AWS Well-Architected Framework 的六大支柱:

卓越營運 (Operational Excellence)

  • 使用 IaC (Infrastructure as Code) 如 Terraform 或 CloudFormation 來管理架構。
  • 自動化部署 (CI/CD)。

安全性 (Security)

  • 最小權限原則: IAM User/Role 只給予必要的權限。
  • 資料加密: S3 Bucket 和 RDS 都應開啟加密。
  • 網路隔離: Database 放在 Private Subnet,只允許 App Server 存取。

可靠性 (Reliability)

  • Multi-AZ: 關鍵服務 (RDS, EC2 ASG) 應跨多個可用區部署。
  • 備份: 自動化 Snapshot 和備份策略。

效能效率 (Performance Efficiency)

  • 使用 CloudFront (CDN) 加速全球內容傳遞。
  • 選擇合適的 EC2 實例類型 (Compute/Memory Optimized)。

成本優化 (Cost Optimization)

  • 使用 Savings Plans 或 Reserved Instances 節省長期運算成本。
  • 對於非生產環境,設定自動開關機排程。

永續性 (Sustainability)

  • 最大化資源利用率,減少閒置資源,選擇較低碳足跡的區域。