Pular para o conteúdo

Encurtador de URL

Um encurtador de URL e um sistema que:

  • Recebe uma URL longa
  • Gera uma URL curta unica
  • Redireciona usuarios da URL curta para a original

Um framework util para entrevistas de system design e o FENCAFA:

  1. Funcional
  2. Escala
  3. Nao-funcional
  4. Componentes
  5. Arquitetura
  6. Fluxo
  7. Ajustes
  • Criar URL curta
  • Redirecionar URL
  • Metricas de acesso
  • Alta disponibilidade
  • Baixa latencia
  • Escalabilidade massiva
  • Consistencia eventual aceitavel

Voce deve pensar em:

  • Numero de URLs criadas por dia
  • Numero de redirecionamentos
  • Volume de armazenamento

Esse e um sistema read-heavy.

  1. Usuario envia URL longa
  2. Sistema gera codigo curto
  3. Salva o mapping short_code -> original_url
  4. O redirecionamento consulta esse mapping

Auto-increment + Base62

Simples e deterministico, mas previsivel.

Hash da URL

Pode colidir e dificulta controle.

ID distribuido

Escalavel e evita gargalo central.

Como a leitura domina o sistema, o gargalo principal costuma estar no redirecionamento.

  • Cache para reduzir latencia
  • CDN para distribuicao geografica
  • Banco distribuido com sharding por chave

Componentes principais:

  • API Service
  • Banco de dados
  • Cache
  • Load Balancer
  • Pipeline de analytics
  1. Recebe short URL
  2. Busca no cache
  3. Se der miss, consulta o banco
  4. Retorna redirect HTTP 301 ou 302
  1. Gera ID
  2. Salva mapping
  3. Atualiza cache
flowchart LR
User[User]
APIGW[API Gateway]
Shortener[Shortener Service]
DB[(Database)]
User -->|http://link-longo.com| APIGW
APIGW --> Shortener
Shortener --> DB
  • Cache invalidation
  • Hot keys
  • Consistencia eventual
  • Abuso e seguranca
  • Analytics em sistema separado
DecisaoTrade-off
Cache agressivoConsistencia
ID sequencialSeguranca
HashColisao
Banco unicoEscala
Banco distribuidoComplexidade
  • Sistema simples conceitualmente, dificil na escala
  • Leitura domina o sistema
  • Cache e essencial
  • Geracao de ID e critica

Voltar ao indice