Esta é uma API simples de banco construída com Fiber (Go), utilizando o modelo CSP (Communicating Sequential Processes) para lidar com operações de depósito e saque de maneira concorrente e segura. A API também inclui um endpoint para consultar o saldo atual.
- Go
- Fiber
- Goroutines e Channels (CSP)
- Mutex para controle de concorrência
- Hey para testes de estresse
-
Clone o repositório:
git clone https://github.com/alextavella/go-csp.git bank-api cd bank-api -
Instale as dependências:
go mod tidy
-
Suba a aplicação com o Docker Compose:
docker-compose up --build
-
Verifique se a API está rodando:
curl http://localhost:3000/balance
-
Instale as dependências:
go mod tidy
Execute a aplicação com o comando:
go run cmd/api/main.goA API estará disponível em: http://localhost:3000
POST /deposit
Realiza um depósito na conta.
Payload:
{
"amount": 100
}Resposta:
{
"status": "success",
"message": "Deposit successful"
}POST /withdraw
Realiza um saque da conta.
Payload:
{
"amount": 50
}Resposta:
{
"status": "success",
"message": "Withdraw attempted"
}GET /balance
Retorna o saldo atual da conta.
Resposta:
{
"balance": 1000
}A ferramenta hey foi utilizada para realizar testes de estresse na API.
go install github.com/rakyll/hey@latesthey -n 10000 -c 100 -m POST -H "Content-Type: application/json" -d '{"amount": 10}' http://localhost:3000/deposithey -n 10000 -c 100 -m POST -H "Content-Type: application/json" -d '{"amount": 5}' http://localhost:3000/withdrawEste projeto está licenciado sob a MIT License.