Skip to content

wrspada02/rinha-backend

Repository files navigation

Objetivo

Enfoque em uma solução back-end para o desafio proposto dentro das regras de negócio atribuidas no repositório de zanfranceschi.

O que será aprendido

As limitações de configuração pertinentes ao hardware no escopo da solução, 1.5 GPU e 3GB de memória RAM.

Observações

O evento já ocorreu, é apenas levado em consideração o aprendizado e a experiência.

Por que utilizar o postgreSQL?

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

Como testar a perfomance?

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.

Artigo stackoverflow sobre perfomance de banco de dados

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/

Docs sobre o Prisma ORM, utilizado neste repositório

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

Instruções gerais

INSTRUÇÕES DO PROJETO

Perfomance banco de dados

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) image

Estatística perfomance banco de dados rodando com restrições de hardware container (CPU 0.75, 1.5gb de ram) image

Feedback gatling

First gatling test

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.

Comum test

image

image

Stress test

image

image

Contagem pessoas

Participantes da rinha

image

Minha perfomance

image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published