Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

api-fpc-rinha2025

Projeto da Rinha de Backend de 2025 construido em Free Pascal.

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

🥊 Rinha de Backend - 2025

Projeto desenvolvido para participar da Rinha de Backend 2025, utilizando Free Pascal.

🚀 Tecnologias Utilizadas

  • Linguagem: Free Pascal
  • Framework: mORMot2
  • Persistencia: Própria Memória Compartilhada

📄 Como Rodar

  1. Clone o repositório:
    bash
    git clone https://github.com/diogoloff/api-fpc-rinha2025

Dificuldades enfrentadas

Durante a Rinha, minha ideia inicial era utilizar Delphi com DataSnap e persistência em Firebird, mas acabei enfrentando limitações de processamento, especialmente relacionadas ao DataSnap. A tecnologia possui um sistema automático de escalonamento de workers conforme a carga aumenta, o que, a partir dos 40 segundos de teste elevava drasticamente o número de threads e consequentemente o consumo de CPU. Embora seja uma solução robusta, o perfil altamente limitado do desafio da Rinha tornou inviável seu uso nesse contexto. As mesmas colocações valem para o Horse, apesar de um pouco mais leve que o DataSnap

Quanto à persistência, criei um sistema em memória com inclusão e leitura de dados próprio. Avaliei o uso do Redis, mas para Delphi não existe nativo. Encontrei apenas uma biblioteca antiga no GitHub, compatível com uma versão desatualizada do Redis. Apesar de ter tentado integrá-la, enfrentei sérios problemas de concorrência e inconsistência nos dados. Diante disso, desenvolvi uma solução própria que se mostrou mais estável e eficiente para o desafio.

Além disto tive e ainda tenho dificuldades com NGINX, a aplicação rodando diretamente sem o load balancer apresenta desempenho superior mesmo com as 500vu do teste em uma unica instância, já com o NGINX o tempo de resposta cai de forma consideravel, infelizmente, é uma tecnologia que nunca utilizei e tive que aprender alguma coisa para este desafio, esta será uma tecnologia que irei começar estudar.