Cymbal Bank のアプリケーション アーキテクチャ

Last reviewed 2024-04-19 UTC

このブループリントには、Cymbal Bank という名前のサンプル アプリケーションが含まれています。Cymbal Bank は、コンテナ化されたアプリケーションに推奨されるベスト プラクティスを示しています。Cymbal Bank アプリケーションを使用すると、ログイン アカウントの作成、アカウントへのログイン、取引履歴の確認、入金、他のユーザーの口座への送金を行えます。Cymbal Bank サービスは、REST APIgRPC API を介して相互に接続するコンテナとして動作します。

次の図は、ブループリントのデベロッパー プラットフォームにデプロイされる Cymbal Bank アプリケーションを示しています。

Cymbal Bank のアーキテクチャ。

各アプリケーションはネットワーク サービスでもあります。フロントエンド アプリケーションのみが、GKE Gateway Controller を介してクラスタ向けに外部に公開されます。すべてのアプリケーションは、Cloud Service Mesh を使用して分散サービスとして動作します。

Cymbal Bank アプリケーションに含まれるサービスの詳細については、GitHub の Cymbal Bank リポジトリをご覧ください。

Cymbal Bank のテナント

テナントを分離するために、デベロッパー プラットフォームの各テナントには 1 つのチームスコープと 1 つ以上のフリート名前空間があります。テナントが名前空間を共有することはありません。Cymbal Bank をデプロイするうえで各テナントに必要な名前空間は 1 つだけです。より複雑なシナリオでは、テナントが複数の名前空間を持つ場合があります。

この例では、Cymbal Bank がデベロッパー プラットフォームにどのようにデプロイされているかを説明するため、重点分野が異なる 3 つのアプリケーション開発チームが存在することを想定しています。Terraform は、チームごとに次のデベロッパー プラットフォーム テナントを作成します。

  • frontend テナント: ウェブサイトやモバイルアプリのバックエンドを担当する開発チーム。
  • accounts テナント: 顧客データを担当する開発チーム。
  • transactions テナント: トランザクション サービスを管理するチーム。

Cymbal Bank のアプリ

Cymbal Bank のアプリケーションは、frontend, ledgerwriter, balancereader, transactionhistory, userservicecontacts の 6 つのマイクロサービスで構成されています。各マイクロサービスは、その所有元のテナント内のアプリケーションにマッピングされます。

次の表に、Cymbal Bank のチーム、チームスコープ、フリートの名前空間、マイクロサービスの対応関係を示します。この対応関係の例では、Cymbal Bank が 3 つの別々のアプリケーション オペレータ チームによって開発されていることを想定しています。チームはさまざまな数のサービスを管理します。各チームにはチームスコープが割り当てられます。

チーム チームスコープ フリートの名前空間 アプリケーション - マイクロサービス Kubernetes サービス アカウント

フロントエンド チーム

frontend

frontend

frontend

ksa-frontend

トランザクション チーム

transactions

transactions

ledgerwriter

ksa-ledgerwriter

balancereader

ksa-balancereader

transactionhistory

ksa-transactionhistory

アカウント チーム

accounts

accounts

userservice

ksa-userservice

contacts

ksa-contacts

Cymbal Bank のデータベース構造

Cymbal Bank データベースは、AlloyDB for PostgreSQL を使用してデプロイされます。データベースは、異なるゾーンに冗長ノードがある 1 つのリージョン内の高可用性プライマリ インスタンスを使用して構成され、障害復旧のためクロスリージョン レプリカが使用されています。Cymbal Bank は、IAM データベース認証を使用して、サービスがデータベースにアクセスできるようにしています。データベースは CMEK を使用して暗号化されます。2 つの PostgreSQL データベース(トランザクション用の ledger-db とユーザー アカウント用の accounts-db)が使用されます。

次のステップ