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.
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 |
|
|
|
|
Equipa do Ledger |
|
|
|
|
|
||||
|
||||
Equipa de contas |
|
|
|
|
|
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?
- Leia acerca do mapeamento dos princípios de segurança BeyondProd para o plano (documento seguinte nesta série).