O backend deste projeto foi desenvolvido com foco em simplicidade, baixo custo e escalabilidade, simulando um cenário real de produção.
A API é responsável por criar e resolver URLs encurtadas, seguindo um modelo stateless, onde todo o estado da aplicação fica fora do servidor. Isso facilita escalar, manter e evoluir o sistema sem dependência de instâncias específicas.
O cliente envia uma URL longa
A API valida os dados e gera um identificador curto
A relação entre URL curta → URL original é armazenada no Redis
Quando a URL curta é acessada:
A API consulta o Redis
Retorna um redirect HTTP 302 se existir
Retorna 404 se não existir ou tiver expirado
Simples, rápido e eficiente.
A aplicação roda em Google Cloud Run, utilizando containers Docker.
Por que Cloud Run?
Escala automaticamente conforme o tráfego
Quando não há requisições, nenhuma instância fica ativa
Reduz custo sem abrir mão de performance
A aplicação é empacotada em um container Docker, garantindo consistência entre ambiente local e produção.
O deploy é totalmente automatizado usando GitHub Actions.
A cada push na branch master:
-
A imagem Docker é buildada
-
Publicada no Artifact Registry
-
Um novo deploy é feito automaticamente no Cloud Run
Isso elimina deploy manual e reduz risco de erro humano.
O armazenamento das URLs é feito com Upstash Redis (serverless).
Baixa latência
Modelo chave → valor ideal para esse caso
URLs possuem TTL de 30 dias, evitando crescimento infinito da base
Nenhum dado sensível fica no código — tudo é configurado via variáveis de ambiente.
A API está disponível via domínio próprio:
O domínio foi configurado via DNS e integrado ao Cloud Run, permitindo URLs curtas e profissionais sem depender da URL padrão do provedor.
Escala automática conforme demanda
Sem tráfego = custo praticamente zero
Limites definidos para evitar gastos inesperados:
1 vCPU
256MB de memória
Máximo de 3 instâncias
Cloud Run em vez de VM → menos manutenção
Backend stateless → fácil de escalar
Redis serverless → performance sem complexidade
CI/CD desde o início → fluxo profissional
Docker → previsibilidade no deploy
Este projeto é open-source. Sinta-se livre para usar, modificar e distribuir.
Matheus Graciki
- GitHub: @MatheusGraciki
Para reportar bugs ou sugerir funcionalidades, abra uma issue no repositório GitHub.1