청사진에는 Cymbal Bank라는 샘플 애플리케이션이 포함되어 있습니다. Cymbal Bank는 컨테이너화된 애플리케이션에 장려되는 권장사항을 보여줍니다. 사용자는 Cymbal Bank 애플리케이션을 이용하여 로그인 계정을 만들고, 자신의 계정에 로그인하고, 거래 내역을 확인하고, 입금하고, 다른 사용자의 계정으로 송금할 수 있습니다. Cymbal Bank 서비스는 REST API 및 gRPC API를 통해 서로 연결되는 컨테이너로 실행됩니다.
다음은 청사진 개발자 플랫폼에 배포된 Cymbal Bank 애플리케이션을 도식화한 다이어그램입니다.
각 애플리케이션은 네트워크 서비스이기도 합니다. 프런트엔드 애플리케이션만 GKE Gateway Controller를 통해 클러스터에 노출됩니다. 모든 애플리케이션은 Anthos 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개 마이크로서비스로 구성됩니다.
각 마이크로서비스는 API를 소유한 테넌트 내의 애플리케이션에 매핑됩니다.
다음 표에서는 Cymbal Bank의 팀, 팀 범위, Fleet 네임스페이스, 마이크로서비스의 매핑을 설명합니다. 이 매핑에는 Cymbal Bank가 세 개의 개별 애플리케이션 운영자 팀에서 개발되었다고 가정합니다. 팀들은 다양한 서비스를 관리합니다. 각 팀에는 팀 범위가 할당됩니다.
Team | 팀 범위 | Fleet 네임스페이스 | 애플리케이션 - 마이크로서비스 | Kubernetes 서비스 계정 |
---|---|---|---|---|
프런트엔드팀 |
|
|
|
|
거래팀 |
|
|
|
|
|
||||
|
||||
계정팀 |
|
|
|
|
|
Cymbal Bank 데이터베이스 구조
Cymbal Bank 데이터베이스는 PostgreSQL용 AlloyDB를 사용하여 배포됩니다. 데이터베이스는 한 리전의 고가용성 기본 인스턴스와 여러 영역의 중복 노드로 구성되며, 재해 복구를 위해 리전 간 복제본이 사용됩니다. Cymbal Bank는 IAM 데이터베이스 인증을 사용하여 서비스가 데이터베이스에 액세스하도록 허용합니다. 데이터베이스는 CMEK를 사용하여 암호화됩니다. 두 가지 PostgreSQL 데이터베이스(트랜잭션의 경우 ledger-db
, 사용자 계정의 경우 accounts-db
)가 사용됩니다.
다음 단계
- BeyondProd 보안 원칙을 청사진에 매핑(이 시리즈의 다음 문서) 읽어보기