Serviço distribuído de banco.
- Daniel Omiya - 41995449 (aka @gwyddie)
Pensando em fornecer uma maior autonomia a cada um dos serviços, nenhum deles compartilham código entre si. Cada um dos três serviços está segregado em um dos diretórios a seguir.
O setup para realização de testes foi feito usando 6 instâncias de t2.micro
da AWS, sendo elas:
- 1 máquina para o serviço de dados
- 1 máquina para o serviço de autenticação
- 3 máquinas para o serviço de negócio
- 1 máquina para o balanceador de carga (front-end com
nginx
)
Nesse cenário, o balanceador de carga distribui as requisições no path /business/
entre os servidores de negócio e, no path /auth/
, para o servidor de autenticação.
Todos os clientes precisam de um token para interagir com o sistema, para isso, foi criado um serviço de auth
, que gera um JWT, assim podendo ser autenticado pelos demais serviços. Abaixo, a obtenção desse token a partir do balanceador de carga.
Conferência do saldo de uma conta (já com o token obtido no processo anterior).
Realizando uma transferência entre contas.
Tentativa de realizar uma transferência sem possuir fundos o bastante para tal.
Realizando a operação de saque.
Tentando realizar o saque sem possuir fundos o bastante para tal.
Realizando a operação de depósito.
Exemplo da saída de logs do servidor de dados.
Status do nginx
e logs gerados pelo balanceador de carga.
- melhoria nos logs no servidor de negócio
- persistir em arquivos os dados do servidor de dados
- adição de testes unitários a todos os serviços
- parametrizar o serviço de
auth
para remover os "códigos chumbados" - fazer o serviço de
auth
consultar o serviço de dados antes de criar novos tokens - front-end com HTML/CSS (?)
That's all, folks!