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 테넌트

테넌트 간의 구분을 제공하기 위해 개발자 플랫폼의 각 테넌트에는 한 개의 팀 범위와 한 개 이상의 Fleet 네임스페이스가 있습니다. 테넌트는 네임스페이스를 공유하지 않습니다. Cymbal Bank를 배포하려면 각 테넌트에 하나의 네임스페이스만 있으면 됩니다. 더 복잡한 시나리오에서는 테넌트에 여러 네임스페이스가 있을 수 있습니다.

Cymbal Bank가 개발자 플랫폼에 배포되는 방식을 설명하기 위해 이 예에서는 중점 분야가 서로 다른 세 개의 개별 애플리케이션 개발팀이 있다고 가정합니다. Terraform은 각 팀별로 다음과 같은 개발자 플랫폼 테넌트를 만듭니다.

  • frontend 테넌트: 웹사이트 및 모바일 애플리케이션 백엔드에 중점을 둔 개발팀입니다.
  • accounts 테넌트: 고객 데이터에 중점을 둔 개발팀입니다.
  • transactions 테넌트: 거래 서비스를 관리하는 팀입니다.

Cymbal Bank 앱

Cymbal Bank 애플리케이션은 frontend, ledgerwriter, balancereader, transactionhistory, userservice, contacts의 6개 마이크로서비스로 구성됩니다. 각 마이크로서비스는 이를 소유한 테넌트 내 애플리케이션에 매핑됩니다.

다음 표에서는 Cymbal Bank의 팀, 팀 범위, Fleet 네임스페이스, 마이크로서비스 매핑을 설명합니다. 이 매핑에는 Cymbal Bank가 세 개의 개별 애플리케이션 운영자 팀에서 개발되었다고 가정합니다. 팀들은 다양한 서비스를 관리합니다. 각 팀에는 팀 범위가 할당됩니다.

팀 범위 Fleet 네임스페이스 애플리케이션 - 마이크로서비스 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 데이터베이스는 PostgreSQL용 AlloyDB를 사용하여 배포됩니다. 데이터베이스는 한 리전의 고가용성 기본 인스턴스와 여러 영역의 중복 노드로 구성되며, 재해 복구를 위해 리전 간 복제본이 사용됩니다. Cymbal Bank는 IAM 데이터베이스 인증을 사용하여 서비스가 데이터베이스에 액세스하도록 허용합니다. 데이터베이스는 CMEK를 사용하여 암호화됩니다. 거래용 ledger-db 및 사용자 계정용 accounts-db라는 두 가지 PostgreSQL 데이터베이스가 사용됩니다.

다음 단계