- Banco de dados: Postgres, MySQL ou MongoDB
- O ambiente será limitado com 1.5 CPU e 550MB distribuídos entre todos os recursos (banco de dados, APIs, LB).
Projeto:
- api-transacoes: API com Spring Boot rodando em modo native.
- nginx: arquivo de configuração do Nginx.
- init.sql: script SQL para criação dos schemas e inserção dos cinco clientes.
flowchart TD
G(Stress Test - Gatling) -.-> LB(Load Balancer / porta 9999)
subgraph Sua Aplicação
LB -.-> API1(API - instância 01)
LB -.-> API2(API - instância 02)
API1 -.-> Db[(Database)]
API2 -.-> Db[(Database)]
end
Endpoints:
POST /clientes/[:id]/transacoes
: para efetuar uma transação de crédito ou débito.GET /clientes/[:id]/extrato
: para consultar o extrato do cliente.
Transação
Uma transação de débito não pode deixar o saldo do cliente mais negativo do que o limite disponível. Um cliente com limite de 10000 (R$ 100,00) pode ficar com saldo negativo de até -10000 (- R$ 100,00).
Payload para realizar uma transação:
tipo
: tipo da transação,c
para crédito ed
para débito;valor
: inteiro com o valor da transação em centavos;descricao
: string de até 10 caracteres com a descrição da transação.
O ID da pessoa precisa ser um número inteiro.
Retornos:
- Status 200: cliente existe e transação realizada, retornar o limite e o saldo atualizado.
- Status 404: cliente não encontrado pelo ID.
Consulta de Extrato
Retornos:
- Status 200: cliente existe, retornar o saldo e as últimas 10 transações.
- Status 404: cliente não encontrado pelo ID.
sh build_docker_native_image.sh