Skip to content

mvellasco/fiber

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fiber

Fiber é uma aplicação modesta(mas com fibra) feita em Python 🐍, usando Falcon como framework web, Pony ORM, e o banco de dados Postgres.

A aplicação roda utilizando o Python 3.10.

Detalhes e a Rinha de Backend

O desafio que o software se propõe a resolver, é tema da Rinha de Backend. Em poucas palavras, a idéia da rinha é explorar um tópico específico relacionado ao backend de aplicações. Nessa edição, o problema foi concorrência, com múltiplas instâncias do projeto acessando um banco de dados e tendo que aplicar as regras de negócio de forma consistente.

A proposta

Para resolver esse problema, a principal técnica utilizada é a de isolation levels, daqui em diante, livremente traduzida para "nível(eis) de isolamento". Uma técnica de controle de concorrência¹, que consiste em definir em qual ponto de uma transação será possível enxergar as mudanças no banco de dados sendo executadas por transações concorrentes¹. O nível nível de isolamento escolhido foi o READ COMMITED, padrão do PostgreSQL, que permite uma transação visualizar as mudanças ocorridas antes dela começar. Apesar de não ser o "nível de isolamento" mais seguro, é bastante eficaz e permite maior concorrência do que o nível SERIALIZABLE(maior dos 4 níveis de isolamento) por exemplo.

Em suma, o trabalho pesado é feito no banco de dados, que implementa a técnica descrita acima deixando a API apenas com os compromissos de: validar os dados em requisições, controlar o fluxo de dados, e executar ações específicas para leitura e escrita de dados, além de processar e responder à requisições HTTP.

Notas:

¹ - O uso dos termos concorrência e concorrentes, vem de uma tradução livre do termo "concurrency", que signica simultainedade. A escolha desse termo, é para evidênciar a natureza do problema.

Resultados Finais

obs: a cobra vai fumar 🐍 🚬 obs2: seja o que deus quiser, se ficar entre os 50-100 primeiros já ta bom demais.

resultados-graficos resultados-graficos

About

Rinha de Backend Q1 2024

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published