Arquitetura da aplicação Cymbal Bank

Last reviewed 2024-12-13 UTC

O projeto inclui uma aplicação de exemplo denominada Cymbal Bank. O CymbalBank demonstra as práticas recomendadas para aplicações em contentores. A aplicação Cymbal Bank permite que os utilizadores criem contas de início de sessão, iniciem sessão na respetiva conta, vejam o histórico de transações, façam depósitos e transfiram dinheiro para as contas de outros utilizadores. Os serviços do Cymbal Bank são executados como contentores que se ligam entre si através de APIs REST e APIs gRPC.

O diagrama seguinte mostra a aplicação Cymbal Bank implementada na plataforma de programadores do blueprint.

Arquitetura do Cymbal Bank.

Cada aplicação também é um serviço de rede. Apenas a aplicação de front-end é exposta externamente ao cluster através do controlador do GKE Gateway. Todas as aplicações são executadas como serviços distribuídos através da utilização da Cloud Service Mesh.

Para mais informações acerca dos serviços incluídos na aplicação Cymbal Bank, consulte o repositório do Cymbal Bank no GitHub.

Inquilinos do Cymbal Bank

Para oferecer separação entre inquilinos, cada inquilino na plataforma do programador tem um âmbito da equipa e, pelo menos, um espaço de nomes da frota. Os inquilinos nunca partilham um espaço de nomes. Para implementar o Cymbal Bank, cada inquilino só precisa de um espaço de nomes. Em cenários mais complexos, um inquilino pode ter vários espaços de nomes.

Para ilustrar como o Cymbal Bank é implementado na plataforma de programadores, este exemplo pressupõe que existiam três equipas de programação de aplicações separadas com diferentes áreas de foco. O Terraform cria o seguinte inquilino da plataforma de programadores para cada uma dessas equipas:

  • frontend inquilino: uma equipa de desenvolvimento que se foca nos backends do Website e da aplicação para dispositivos móveis.
  • accounts inquilino: uma equipa de desenvolvimento focada nos dados de clientes.
  • ledger inquilino: uma equipa que gere os serviços de livro-razão.

Apps do Cymbal Bank

A aplicação Cymbal Bank consiste em seis microsserviços: frontend, ledgerwriter, balancereader, transactionhistory, userservice e contacts. Cada microsserviço é mapeado para uma aplicação no inquilino que o detém.

A tabela seguinte descreve o mapeamento das equipas, do âmbito da equipa, do espaço de nomes da frota e dos microsserviços para o Cymbal Bank. Para efeitos desta associação, este exemplo pressupõe que o Cymbal Bank é desenvolvido por três equipas de operador de aplicações separadas. As equipas gerem um número variável de serviços. É atribuído um âmbito de equipa a cada equipa.

ChromeOS Âmbito da equipa Espaço de nomes da Fleet Aplicação – Microserviço Conta de serviço do Kubernetes

Equipa de front-end

frontend

frontend

frontend

ksa-frontend

Equipa do Ledger

ledger

ledger

ledgerwriter

ksa-ledgerwriter

balancereader

ksa-balancereader

transactionhistory

ksa-transactionhistory

Equipa de contas

accounts

accounts

userservice

ksa-userservice

contacts

ksa-contacts

Estrutura da base de dados do Cymbal Bank

As bases de dados do Cymbal Bank são implementadas através do AlloyDB para PostgreSQL. As bases de dados estão configuradas com uma instância principal de alta disponibilidade numa região com nós redundantes em zonas diferentes, e são usadas réplicas entre regiões para recuperação de desastres. O Cymbal Bank usa a autenticação de base de dados do IAM para permitir que os serviços acedam às bases de dados. As bases de dados são encriptadas através de CMEK. São usadas duas bases de dados PostgreSQL: ledger-db para o livro-razão e accounts-db para as contas de utilizador.

O que se segue?