Este repositório contém a minha implementação para a 3ª edição da Rinha de Backend.
O projeto consiste em um intermediário de pagamentos que se comunica com dois serviços de processamento de pagamentos (um principal e um de fallback), buscando sempre a menor taxa e lidando com a instabilidade dos serviços.
- Linguagem: Go
- Framework Web: Fiber
- Load Balancer: Nginx para distribuir a carga entre as duas instâncias da aplicação.
- Conteinerização: Docker e Docker Compose.
A solução é composta por:
- 2 instâncias da aplicação Go (
white-carijoeblack-carijo) que recebem as requisições de pagamento. - 1 instância do Nginx (
balancer) que atua como load balancer.
A aplicação utiliza uma fila em memória para processar os pagamentos de forma assíncrona. Para lidar com a instabilidade dos processadores de pagamento, foi implementado o padrão Circuit Breaker, que monitora a saúde dos serviços e evita chamadas para serviços que estão falhando.
-
Suba os processadores de pagamento: Antes de iniciar a aplicação, é necessário ter os serviços de processamento de pagamento da rinha rodando. Siga as instruções no repositório oficial da Rinha.
-
Inicie a aplicação: Com os processadores de pagamento no ar, execute o seguinte comando na raiz deste projeto:
docker-compose up -d
-
Execute o teste de carga:
k6 run challenge/rinha-test/rinha.js
Para mais detalhes sobre o desafio, regras e endpoints, consulte o arquivo INSTRUCOES.md no diretório challenge.
