Skip to content

Latest commit

 

History

History
 
 

lucassperez-go-crebito

Submissão para Rinha de Backend, Segunda Edição: 2024/Q1 - Controle de Concorrência

logo nginx


logo golang


logo postgres

Lucas Perez

Submissão feita com:

  • Nginx como load balancer
  • Go para api com o driver pgx/v4 para interagir com o banco de dados
  • Postgres como banco de dados
  • Repositório da API

Contato

Github

Teste Gatling

(Imagem) Estatísticas do teste com gatling, 2024/02/23.

Comentários

Resolvi participar porque estou querendo aprender mais sobre Go.
É minha primeira vez fazendo um projetinho na linguagem fora o de algum tutorial/livro, então também quis explorar coisas como criar e aplicar um middleware além de tentar criar uma estrutura de diretórios/arquivos/pacotes que pudesse fazer sentido para organizar a aplicação.
Minha ideia era usar somente a biblioteca padrão, principalmente com as mudanças no serverMux padrão que vieram com a versão 1.22.0 da linguagem. A única lib externa que acabei usando mesmo foi o driver pro postgres.
Obrigado, Leandro Proença, por mostrar a Rinha (:

Estratégia

Minha ideia foi usar um lock pessimista na tabela clientes, usando o sql FOR NO KEY UPDATE quando feito o select para pegar o saldo do cliente.