Um microsserviço focado em alta performance para encurtamento e redirecionamento de links.
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).
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).
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:
- 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.
- 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.
- 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)