Skip to content

ec-ayrton/EncurtadorURL

Repository files navigation

Encurtador de URL

Um microsserviço focado em alta performance para encurtamento e redirecionamento de links.


📌 O Problema

Encurtadores tradicionais que utilizam algoritmos de hash (como MD5 ou SHA-256) sofrem com dois grandes problemas: strings muito longas para o link final e o risco real de colisão de dados (duas URLs diferentes gerarem o mesmo código curto). Além disso, consultar o banco de dados relacional a cada clique do usuário gera um gargalo massivo de processamento (I/O).

💡 A Solução

O sistema utiliza um algoritmo de conversão de base numérica (Base 62) acoplado aos IDs auto-incrementais do banco de dados. Como os IDs nunca se repetem, o risco de colisão é estritamente zero e o código gerado é o menor possível (ex: ID 125 vira cb).

🧠 Estratégia de Solução

Para garantir que o sistema aguente milhares de acessos simultâneos sem fritar o banco de dados, foi aplicada a estratégia de Cache-Aside (Lazy Loading) com o Redis:

  1. Na Escrita: A URL longa é salva no PostgreSQL, gera um ID, o codec converte o ID para Base 62 e salva o código no Redis com TTL (tempo de vida) de 3 dias.
  2. Na Leitura: Quando alguém clica no link curto, o sistema busca o código direto no Redis. Se encontrar (Cache Hit), o redirecionamento HTTP 302 ocorre em sub-milissegundos. O PostgreSQL só é acionado caso o dado não esteja no cache.

🛠️ Tecnologias Usadas

  • Java 21 & Spring Boot
  • Spring Data JPA (Persistência)
  • PostgreSQL (Banco de dados relacional primário)
  • Redis (Cache em memória de alta velocidade)
  • Lombok (Código limpo)
  • Docker & Docker Compose (Infraestrutura)

About

"Encurtador de URLs de alta performance e baixa latência. Implementação de algoritmo de codificação Base62 para geração de hashes únicos, com estratégia de cache em memória e persistência eficiente."

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors