Cymbal Bank 應用程式架構

Last reviewed 2024-12-13 UTC

範本包含名為「Cymbal Bank」的範例應用程式。Cymbal Bank 示範了容器化應用程式建議採用的最佳做法。Cymbal Bank 應用程式可讓使用者建立登入帳戶、登入帳戶、查看交易記錄、存款,以及將款項轉帳至其他使用者的帳戶。Cymbal Bank 服務會以容器形式執行,並透過 REST APIgRPC API 彼此連結。

下圖顯示部署在藍圖開發人員平台上的 Cymbal Bank 應用程式。

Cymbal Bank 架構。

每個應用程式也是網路服務。只有前端應用程式會透過 GKE Gateway 控制器向外部叢集公開。所有應用程式都會透過 Cloud Service Mesh 以分散式服務的形式執行。

如要進一步瞭解 Cymbal Bank 應用程式所包含的服務,請參閱 GitHub 上的 Cymbal Bank 存放區

Cymbal Bank 租戶

為提供租用戶間的區隔,開發人員平台中的每個租用戶都有一個團隊範圍和至少一個車隊命名空間。租用戶絕不會共用命名空間。如要部署 Cymbal Bank,每個用戶群只需要一個命名空間。在更複雜的情況下,租用戶可以有幾個命名空間。

為了說明 Cymbal Bank 如何在開發人員平台上部署,這個範例假設有三個不同的應用程式開發團隊,各自專注於不同的領域。Terraform 會為每個團隊建立下列開發人員平台租用戶:

  • frontend 租用戶:專注於網站和行動應用程式後端的開發團隊。
  • accounts 租用戶:專注於顧客資料的開發團隊。
  • ledger 租用戶:管理分錄服務的團隊。

Cymbal Bank 應用程式

Cymbal Bank 應用程式由六個微服務組成:frontend, ledgerwriter, balancereader, transactionhistory, userservicecontacts。每項微服務都會對應至擁有該微服務的租用戶中的應用程式。

下表說明 Cymbal Bank 的團隊、團隊範圍、車隊命名空間和微服務對應項目。為了進行這項對應,這個範例假設 Cymbal Bank 是由三個個別應用程式操作員團隊開發。團隊管理的服務數量各有不同。每個團隊都會指派一個團隊範圍。

團隊 團隊範圍 機群命名空間 應用程式 - 微服務 Kubernetes 服務帳戶

前端團隊

frontend

frontend

frontend

ksa-frontend

Ledger 團隊

ledger

ledger

ledgerwriter

ksa-ledgerwriter

balancereader

ksa-balancereader

transactionhistory

ksa-transactionhistory

帳戶團隊

accounts

accounts

userservice

ksa-userservice

contacts

ksa-contacts

Cymbal Bank 資料庫結構

Cymbal Bank 資料庫是使用 PostgreSQL 適用的 AlloyDB 部署。資料庫會在一個區域中設定高可用性的主要執行個體,並在不同區域中設有備援節點,跨區域備用資源則用於災難復原。Cymbal Bank 使用 IAM 資料庫驗證功能,允許服務存取資料庫。資料庫會使用 CMEK 加密。系統會使用兩個 PostgreSQL 資料庫:ledger-db 用於分錄帳,accounts-db 用於使用者帳戶。

後續步驟