← 所有工作經歷

案例研究 06 · 架構與設計

多國 GCP 基礎設施架構

設計多國 GCP 架構,將全域控制功能與各國執行環境分離,並在選定的非正式區域分階段部署 Terraform 基礎設施。

架構設計並逐步實作 · 尚未完整驗證導入範圍
GCPGKEAlloyDBVPCTerraformPostgreSQLRedis

工程挑戰

現有 GCP 正式環境架構圖列出了主要服務,卻沒有清楚界定幾個營運邊界:交易是否可能同步依賴全域設定、哪些服務應使用公開或私有入口,以及各國的網路、資料與發布故障要如何隔離。同時,各區域測試環境的實際資源與 Terraform state 並不完全一致。這項工作要將邏輯服務圖整理成可供維運檢視的目標架構,並清楚區分建議的邊界與已實際部署的基礎設施。

架構與設計

  • 將目前正式環境拓樸與多國目標架構分開呈現,標示既有、提議與模擬元件,避免圖面讓人誤以為尚未驗證的環境已經部署。
  • 讓全域控制平面負責身分、設定管理與發布、版本發布協調及共用分析。國家或租戶路由由 Edge 根據快取對應資料處理;POS、訂單與公開 API 的交易不應同步查詢全域設定 API 或資料庫。
  • 將每個國家規劃為獨立故障域,具備自己的專案、VPC、私有 GKE 叢集、區域資料庫、快取、儲存、密鑰及可觀測性邊界。這是目標隔離模型,不代表目前每個測試環境都已有獨立專案與 VPC。
  • 依信任層級與通訊協定拆分入口:Web、API 與 webhook 使用公開 L7;Console 與維運使用私有或受 IAP 保護的入口;POS 或裝置訊息使用專用 L4 路徑。
  • 以版本化設定包、CDC 或匯出/匯入快照非同步發布參照設定,讓各國服務讀取本地資料。FDW 與實體化檢視表的更新不應進入應用程式請求路徑;其跨區資料庫依賴應視為過渡期風險。
  • 透過各國與各環境的發布通道逐步推廣不可變產物,並一起追蹤應用程式映像、部署 manifest/基礎設施版本與設定版本,搭配各國的核准和回復流程。
  • 在目標拓樸標示多可用區部署、資料庫故障切換、回復與降級模式;RTO/RPO 和詳細復原行為則明確列為仍待驗證的項目。
目標架構:控制、流量與各國執行環境邊界
  1. 01正式環境基準與共用依賴
  2. 02全域身分、設定與發布控制
  3. 03依快取國別對應資料進行 Edge 路由
  4. 04公開 L7 · 私有維運 · 專用裝置入口
  5. 05私有國別執行環境與區域資料服務
  6. 06非同步版本化設定與本地快照
  7. 07各國發布、可觀測性、回復與降級模式

實作內容

  • 檢視 GCP 正式環境架構圖與相關設計文件,將目前狀態與提議的全域控制平面、各國執行平面分開整理。
  • 更新多國 draw.io 拓樸與配套說明,讓請求路徑、入口類型、區域資源責任、非同步設定發布、發布通道及降級模式都能被檢視。
  • 將 Terraform 結構整理為共用網路與區域範圍,並明確記錄 remote state 合約,讓區域 plan 或 apply 前能先檢查資源依賴與管理責任。
  • 以唯讀 GCP 資源盤點比對多個非正式環境的 Terraform state 與 plan;提出變更前,先分類哪些資源已納管、已存在但未納管、設定不完整或尚未建立。
  • 為一個選定的非正式區域環境套用並檢查基礎網路、身分、儲存/映像倉庫與運算資源;GKE 叢集也進入 RUNNING 狀態。
  • 區域進階入口與負載平衡器仍停留在 Terraform 宣告與 plan,沒有納入已驗證的 apply 範圍。
  • 在標準化檢視中保留各環境專屬的資源識別資訊與擁有者。若雲端實際資源與 Terraform 不同,先匯入或校正 state,再檢視精確的 plan,而不是為了名稱一致就替換資源。
  • 將既有 FDW 與實體化檢視表參照資料路徑記錄為背景同步機制,並指出仍存在跨區資料庫依賴;紀錄沒有證明此路徑已被完整運作的非同步發布服務取代。

營運排查與安全邊界

  • 無狀態、多可用區的 API 層不代表整個全域控制平面沒有單點。全域資料庫、身分服務、路由/設定發布、DNS 與跨區連線都需要各自的復原設計。
  • 邏輯上的國家分組本身不是隔離邊界。應分別驗證專案與 VPC 擁有權、私有叢集存取、IAM、密鑰、資料服務、發布權限、監控與告警。
  • 全域到各國的設定發布不應成為交易流量的同步依賴。使用本地快照與快取路由,可以讓國家環境在控制平面不可用時,繼續使用最後一份有效設定。
  • FDW 實體化檢視表可讓應用程式讀取本地資料,但更新仍依賴全域資料庫、資料庫憑證與跨區連線;這些依賴必須納入復原模型。
  • 所有 Terraform backend 完成初始化並協調既有資源前,Terraform state 還不是完整的雲端資源清單。對部分納管的環境 Apply 前,必須交叉比對 state、plan 與雲端 API。

驗證與影響

  • 獨立的多國 draw.io 檔案及基礎設施主圖中的對應頁面,在目標架構更新後都通過結構檢查;另整理了元件與關係清單供檢視。
  • 有 Terraform 格式、驗證與部分區域 plan 的紀錄;其中一個非正式區域基礎環境完成 Apply 與檢查,GKE 叢集回報 RUNNING。
  • 比對雲端資源與 Terraform 後發現各區域就緒程度不一:有些基礎設施已存在、有些資源尚未納入已初始化的 Terraform state,另有部分入口或國別服務仍未 Apply。
  • 檢視結果確認,目標架構不能描述成正式環境已完成部署:沒有證據顯示已完成各國流量切換、所有環境收斂,或跨區域復原演練。

限制與後續工作

  • 每國一個專案與 VPC 的故障域是目標設計;既有測試範圍仍有共用基礎設施,尚不能證明各國已完全隔離。
  • 非同步設定發布、入口分流、完整的各國發布通道與降級行為,仍屬架構邊界,尚未全面驗證為正式環境能力。
  • 設計文件仍保留 FDW 與實體化檢視表同步;沒有證據顯示已完成遷移至版本化非同步快照或其他解耦傳輸方式。
  • 進階入口 plan 尚未 Apply;紀錄也未證明所有國家專案與 Terraform backend 已收斂,或已完成多國正式環境流量切換。
  • 全域與各國的高可用及災難復原,仍需明確設計並驗證 SSO 與資料庫故障切換、備份/PITR、DNS 切換、RTO/RPO、國家級故障與降級演練。Canary 推廣、回復條件及各國可觀測性/稽核檢視也待端到端驗證。