danielomiya / distr-bank-webservice

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

distr-bank-webservice

Serviço distribuído de banco.

Contribuidor

  • Daniel Omiya - 41995449 (aka @gwyddie)

Serviços

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.

Arquitetura implementada

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.

Telas do sistema em execuçã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.

Processo de autenticação

Conferência do saldo de uma conta (já com o token obtido no processo anterior).

Obtenção do saldo de uma conta

Realizando uma transferência entre contas.

Realizando a operação de transferência

Tentativa de realizar uma transferência sem possuir fundos o bastante para tal.

Realizando uma transferência sem fundos

Realizando a operação de saque.

Realizando a operação de saque

Tentando realizar o saque sem possuir fundos o bastante para tal.

Realizando a operação de saque sem fundos

Realizando a operação de depósito.

Realizando a operação de depósito

Exemplo da saída de logs do servidor de dados.

Logs do servidor de dados

Outras telas

Status do nginx e logs gerados pelo balanceador de carga.

Nginx status

TO DO

  • 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!

About

License:GNU General Public License v3.0


Languages

Language:Python 99.8%Language:Shell 0.2%