Desafio Globo

Este repositório exemplifica a solução de um sistema de votação do paredão do BBB onde é possível adicionar 2 ou mais integrantes em uma votação, permitindo que os telespectadores possam escolher um para eliminar.

Foi escolhido usar uma estrutura de repositórios monorepo por se tratar de um desafio, visto que simplifica o compartilhamento, os projetos estão organizados seguindo os diretórios:

  • api: Projeto backend desenvolvido em Ruby on Rails

  • client: Projeto frontend desenvolvido em React usando Typescript

  • infra: Arquivos de benchmarks, docker e docker-compose


Dependências

  • docker
  • docker-compose

Como rodar os projetos

Para criar as imagens do docker rode os comandos

cd infra
make build

Então, para rodar os projetos, basta rodar

docker-compose up

# ou 

docker-compose up -d

Agora basta acessar no navegador http://localhost


estes comandos foram testados no macos e no linux, porém devem funcionar no windows também


Rotas das aplicações

Benchmarks

No estado atual da aplicação, em ambiente de desenvolvimento, foi constatado que a aplicação consegue suportar até 160 requests/s

wrk -t10 -c100 -d10s -s benchmark.lua http://127.0.0.1:3000/votes
Running 10s test @ http://127.0.0.1:3000/votes
  10 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    80.63ms   74.25ms 897.53ms   90.31%
    Req/Sec   143.31     33.67   250.00     71.10%
  14339 requests in 10.06s, 5.51MB read
Requests/sec:   1424.99
Transfer/sec:    560.81KB

Mais benchmarks no diretório infra


Funcionalidades

  • Gestão de usuários via api

  • Gestão de brothers via api

  • Gestão de paredões via api

  • Cadastro de novo usuário

  • Votação nos paredões

  • Visualização e estatisticas dos paredões como produção

  • Encerrar votação como produção

  • Métricas da api no grafana


Para o futuro

  • Melhorar o dashboard do grafana coletando novas métricas
  • Melhorar as métricas adicionando a votação como uma futura métrica
  • Testes para frontend
  • Melhorar a autorização
  • Melhorar cobertura dos testes