[Pitch] Criei um encurtador de links focado em alta performance com API para automação (em produção e precisando de feedback)
Oi, pessoal!
Meu nome é Gabriel, e recentemente decidi tratar uma dor que percebi em encurtadores de links existentes: além de serem à base de assinaturas, a maioria limita recursos por tier, têm rate limits muito restritos, ou cobram valores desproporcionais assim que seu uso começa a escalar, e nenhuma (até onde eu sei) implementa o modelo pay-as-you-go.
Penso que tudo isso prejudica tanto quem está começando quanto quem precisa de escala/alto volume sem perder velocidade, e quem tem uso sazonal desse tipo de ferramenta.
Também vi que é perfeitamente possível providenciar todos os recursos premium desse tipo de ferramente para todos, e cobrar apenas em cima do ganho real do usuário, e não da possibilidade de uso, e ainda favorecer o mercado nacional.
Pensando nisso, depois de ver outros projetos de encurtadores (incluindo alguns que apareceram por aqui), decidi construir meu próprio encurtador de links focado em devs, automação e alto volume.
O projeto acabou de subir em produção, e ainda estou no clássico "projeto no ar mas zero usuários", então resolvi postar aqui no TabNews para pedir feedback!

Como foi construído (Stack)
A ideia principal da arquitetura foi focar em baixa latência de redirecionamento e facilidade de integração via API:
- Frontend: Vue 3 (Tailwind)
- Backend: Rust (Axum)
- DB/Cache: Redis (com
HyperLogLogpara analytics em tempo real) e PostgreSQL (comTimescaleDBpara armazenar analytics a longo prazo) - Infra: Backend na Magalu Cloud (servidores em São Paulo) e frontend na Cloudflare Pages (rápido e com uma segurança incrível)
Um pouquinho da arquitetura
Sem entrar muito nos detalhes para ser breve. Mas posso falar mais a fundo se quiserem!
Processamento de redirects
Usar o PostgreSQL diretamente para todos os redirects sería o mais intuitivo, mas também geraria um gargalo gigante rapidamente, afinal todo esse processamento precisa acontecer:
- Usuário acessa um redirect
/xyz - Token existe? Se sim:
- Workspace do token tem créditos de click? Se sim:
- Debita 1 crédito de click
- Salva os metadados do click no espaço de analytics
- Redireciona o usuário
E tudo isso precisa acontecer em poucos milissegundos, de maneira assíncrona, para não travar outros acessos simultâneos.
Pra isso acontecer, usamos um cache (via Redis) dos redirects, seus workspaces, e os créditos de cada workspaces. Esses dados são persistidos depois no PostgreSQL.
Também implementei alguns scripts em Lua pra garantir que várias operações simultâneas não entrassem em colisão.
Já para as métricas, em cada acesso adicionamos os dados no próprio Redis, para serem consumidos/processados em lote depois.
Analytics em tempo real
Um conjunto reduzido de dados de cada acesso são imediatamente adicionados em um bucket do Redis (via HyperLogLog), de onde são consumidos os dados mais recentes, para acompanhar em tempo real.
O HyperLogLog é um algoritmo probabilístico usado para contar a quantidade de elementos únicos (cardinalidade) em conjuntos de dados massivos.
Os dados completos são então adicionados em um Redis Stream, para que um outro serviço consumidor, que "escuta" esse Redis Stream, salve dados em lote no TimescaleDB.
O TimescaleDB é uma extensão de código aberto para o PostgreSQL projetada especificamente para armazenar, gerenciar e analisar dados de séries temporais.
Para a geolocalização, uso o dbip-city-lite.mmdb localmente para fazer consultas rápidas de estado e cidade a partir do IP. Não é o mais poderoso do mercado, mas vi que atende suficientemente bem para esse caso de uso.
Acho importante falar também que, apesar de contabilizar acessos únicos e usar geolocalização, o IP dos acessos não é salvo no BD! Na verdade, é gerada uma hash de visitante único a partir do IP e do device usado.
Esses pontos chave permitiram uma arquitetura facilmente escalável, muito performática, e com um consumo de RAM/CPU extremamente baixo.
O que a ferramenta entrega hoje
- Workspaces: Os links são todos agregados por workspaces, que podem ser em número ilimitado, com links ilimitados e membros ilimitados!
- API REST: Via API keys, para quem quiser integrar nos seus projetos.
- Analytics em tempo real: Acompanhamento de cliques, referrers, geolocalização e ranking, tudo em tempo real.
- Pay-as-you-go: Você só paga pelo seu crescimento real, sem assinaturas.
- Nada expira: Links, workspaces, etc. não expiram. Você compra créditos de cliques, que vão sendo gastos à medida em que pessoas de fato clicam nos seus links.
Como você pode ajudar?
O produto já está funcional e pronto para uso em produção, mas preciso validar o estresse real, a usabilidade da ferramenta, o que posso ajustar ou implementar, etc.
Se você encurta links, ou trabalha em algum projeto que consome APIs de encurtamento ou dispara links em massa, ficaria muito grato se você testasse: volink.dev
Documentação da API: volink.dev/docs
Toda crítica construtiva, bug report ou sugestão de arquitetura/código é mais que bem-vinda!
Agradeço muito, um grande abraço!
Fonte: https://volink.dev/