發生意外時,我的API應用停止運作,該怎麼辦

情境:

這家公司提供的天氣資料 API 過去一直部署在單一 AWS 區域,並使用Lambda+DynamoDB。某天,區域服務出現異常,API 短暫中斷,造成多家客戶的後端系統無法取得天氣資料,甚至影響到部分關鍵作業,例如物流派送、戶外工程排程等。

從上述的情境,可知道需要一套多區域備援架構,當某個 AWS 區域無法運作時,能夠自動切換到另一個健康的區域,並且資料依舊一致,使 API 持續對外提供服務,並且資料庫還要能夠持續的運作。

核心知識點:

跨區域的災難復原

因無法保證單一區域的服務可用性是100%的,最佳做法是做Global級別的DR,也就是複製系統到另一區域做備援,當某區域(或某地理位置)發生災難時,可確保系統仍可提供服務,如下圖所示

透過Route53導流使用者流量至正常運作的Recovery區域

Route53 Routing policy(路由政策)的主要功能

路由政策,會決定 Route 53 DNS 回應查詢的方式,最基本的是簡便路由政策,可指定特定資源至指定域名,並有多種Record可用。

路由政策名稱功能(簡述)用途/適用情境
簡便路由(Simple Routing)對單一資源(例如一部伺服器)做 DNS 回應。當網站或應用只有一個對外端點、不需要負載分流或地理智慧導向時。
容錯移轉路由(Failover Routing)為主–備架構設定:主資源健康時使用主,若主失效則切換到備用。高可用/災難復原時使用,例如主區域出問題時切到備區。
地理位置路由(Geolocation Routing)根據使用者所在地(大洲/國家)將流量導向特定資源。想提供地區化內容、或法律/合規要求不同地域用不同伺服器時。
地理位置鄰近性路由(Geoproximity Routing)根據資源與使用者的實體位置距離導流,並可設定「偏好值」(bias)調整流量分布。 在多區部署時,希望將較近使用者導向最近資源,或手動調整流量偏好。
延遲路由(Latency-Based Routing)根據對使用者的網路延遲來選擇回應的資源區域,選擇「延遲最低」的。 全球用戶基地,希望提升響應速度/使用者體驗。
以 IP 為基礎的路由(IP-Based Routing)根據查詢者的 IP 位址來決定流量導向。需要根據來源 IP 做特定處理或分流,例如內部網/特定地區IP。
多值回答路由(Multivalue Answer Routing)對單個查詢回傳最多 8 個健康記錄(如多個伺服器 IP)並隨機挑選,具備健康檢查功能。 類似簡易負載平衡、提升可用性,但不是完整 Load Balancer 的替代。
加權路由(Weighted Routing)將流量按你指定的比例(權重)導向多個資源。想做 A/B 測試、分流新版/舊版系統、漸進推出新功能時。

DynamoDB Global Tables 的主要功能
是一項完全託管的多區域、多活動資料庫功能,可為全球擴展的應用程式提供易於使用的資料複製和快速的本機讀寫效能。

1. 多區域資料自動同步(Multi-Region Replication)

2. 全球讀取與寫入(Active-Active 架構)

3. 區域故障自動容錯(Fault Tolerance)

4. 跨區一致性維護(Conflict Resolution)

5. 完全代管服務,無需額外維運(Fully Managed)

6. 與既有 DynamoDB API 完全相容

7. 自動擴展(Auto Scaling)

結論:

需要在第二個區域部署 API Gateway + Lambda ,因為 Lambda 無法直接跨區存取

Route 53 設定成 Failover record(主備架構),並啟用健康檢查(Primary 壞掉 → 自動切到 Secondary)

設定 DynamoDB Global Tables → 達成跨區資料一致性

綜上所述,這個情境在考驗的是災難復原(DR)的架構設計能力,主要透過DNS(Route53)完成流量切換,切換到另一個正常區域,在透過 DynamoDB 達成 Global 的資料一致性。

參考連結:

https://docs.aws.amazon.com/zh_tw/Route53/latest/DeveloperGuide/routing-policy.html

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html

https://docs.aws.amazon.com/drs/latest/userguide/failback-failover-region-region.html

如果想知道更多雲端新知,加入我們LINE@官方號

感謝您的填寫,將有專人與您聯繫