Enfoque em uma solução back-end para o desafio proposto dentro das regras de negócio atribuidas no repositório de zanfranceschi.
As limitações de configuração pertinentes ao hardware no escopo da solução, 1.5 GPU e 3GB de memória RAM.
O evento já ocorreu, é apenas levado em consideração o aprendizado e a experiência.
Visto que existem restrições de hardware, é necessário a aplicação de um banco de dados que escale verticalmente. Deste modo, usualmente, os banco de dados SQL são úteis para esta abordagem. Assim, foi-se escolhido o postgreSQL para configurar connection pools, talvez cache in-memory e outras soluções que viabilizem a perfomance. Aplicarei estas técnicas on-demand até que o resultado satisfaça, no mínimo, a média dos participantes da edição, contudo, tentarei passá-los. Artigo sobre escalonamento de banco de dados: https://azure.microsoft.com/pt-br/resources/cloud-computing-dictionary/scaling-out-vs-scaling-up
Baixei o repositório da rinha back-end que está no link abaixo "INSTRUÇÕES DO PROJETO" e rodei os testes gatling configurados em scala. Assim, torna-se possível melhorar a perfomance técnica até atingir a meta objetivada. Pelo menos 50k de pessoas. https://docs.gatling.io/
Além disso, estarei usualmente testando a perfomance do banco de dados utilizando o pgbench, uma CLI do postgress que retorna o status do banco. https://www.postgresql.org/docs/10/pgbench.html
Portanto, conseguirei visualizar as necessidades e o atual estado do banco de dados até atingir o resultado desejado.
Para entender quais métodos podem ser aplicados para que alcançe uma boa perfomance no banco de dados. Artigo sobre perfomance de banco de dados: https://stackoverflow.blog/2020/10/14/improve-database-performance-with-connection-pooling/
Estarei utilizando o prisma ORM para comunicação com o banco de dados, desta forma, todas as técnicas de perfomance e tudo mais relacionado ao banco de dados pode ser visualizado
neste link: https://www.prisma.io/docs/orm/overview
Estatística perfomance banco de dados rodando sem restrições de hardware (Ryzen 5 5600X - 6 núcleos e 12 threads e 32gb de ram)
Estatística perfomance banco de dados rodando com restrições de hardware container (CPU 0.75, 1.5gb de ram)
Até este breve momento, não utilizei nenhuma técnica para escalar o banco de dados, não refatorei, não modifiquei o docker-compose para aumentar/diminuir hardware dos serviços, nem mexi em alguma propriedade do nginx.