Arquitetura do aplicativo Cymbal Bank

Last reviewed 2024-04-19 UTC

O blueprint inclui um aplicativo de exemplo chamado Cymbal Bank. O Cymbal Bank demonstra as práticas recomendadas para aplicativos conteinerizados. O aplicativo Cymbal Bank permite que os usuários criem contas de login, façam login nessas contas, consultem o histórico de transações, façam depósitos e transfiram dinheiro para contas de outros usuários. Os serviços do Cymbal Bank são executados como contêineres que se conectam entre si por APIs REST e APIs gRPC.

O diagrama a seguir mostra o aplicativo Cymbal Bank implantado na plataforma para desenvolvedores do blueprint.

Arquitetura do Cymbal Bank.

Cada aplicativo também é um serviço de rede. Somente o aplicativo de front-end é exposto ao cluster de modo externo, por meio do GKE Gateway Controller. Com o Anthos Service Mesh, todos os aplicativos são executados como serviços distribuídos.

Para mais informações sobre os serviços incluídos no aplicativo Cymbal Bank, consulte o repositório do Cymbal Bank no GitHub.

Locatários do Cymbal Bank

Para que haja separação entre os locatários, cada um deles na plataforma para desenvolvedores tem um escopo de equipe e pelo menos um namespace de frota. Eles nunca compartilham um namespace. Para implantar o Cymbal Bank, cada locatário precisa apenas de um namespace. Em cenários mais complexos, um locatário pode ter vários namespaces.

Para ilustrar como o Cymbal Bank é implantado na plataforma para desenvolvedores, este exemplo supõe que havia três equipes de desenvolvimento de aplicativos distintas com diferentes áreas de foco. O Terraform cria o seguinte locatário da plataforma para desenvolvedores para cada uma dessas equipes:

  • Locatário frontend: uma equipe de desenvolvimento focada em back-ends de sites e aplicativos para dispositivos móveis.
  • Locatário accounts: uma equipe de desenvolvimento focada nos dados do cliente.
  • Locatário transactions: uma equipe que gerencia os serviços de transação.

Apps do Cymbal Bank

O aplicativo Cymbal Bank consiste em seis microsserviços: frontend, ledgerwriter, balancereader, transactionhistory, userservice e contacts. Cada microsserviço é mapeado para um aplicativo no locatário a que pertence.

A tabela a seguir descreve o mapeamento das equipes, o escopo das equipes, o namespace da frota e os microsserviços do Cymbal Bank. Para o propósito desse mapeamento, este exemplo pressupõe que o Cymbal Bank é desenvolvido por três equipes distintas de operadores de aplicativos. As equipes gerenciam um número variável de serviços. Cada equipe recebe um escopo de equipe.

Equipe Escopo da equipe Namespace da frota Aplicativo: microsserviço Conta de serviço do Kubernetes

Equipe de front-end

frontend

frontend

frontend

ksa-frontend

Equipe de transações

transactions

transactions

ledgerwriter

ksa-ledgerwriter

balancereader

ksa-balancereader

transactionhistory

ksa-transactionhistory

Equipe de contas

accounts

accounts

userservice

ksa-userservice

contacts

ksa-contacts

Estrutura do banco de dados do Cymbal Bank

Os bancos de dados do Cymbal Bank são implantados usando o AlloyDB para PostgreSQL. Os bancos de dados são configurados com uma instância primária altamente disponível em uma região com nós redundantes em zonas diferentes, e as réplicas entre regiões são usadas para a recuperação de desastres. O Cymbal Bank usa a autenticação de banco de dados do IAM para permitir que os serviços acessem os bancos de dados. Os bancos de dados são criptografados usando CMEK. Dois bancos de dados PostgreSQL são usados: ledger-db para transações e accounts-db para contas de usuário.

A seguir