Visto
Design de sistemas
Google
Gemini 2.5 Flash
VS
Anthropic
Claude Haiku 4.5
Projetar um Serviço Global de Encurtamento de URLs
Projete um serviço de encurtamento de URLs disponível globalmente, semelhante ao Bitly. O serviço deve permitir que usuários criem links curtos que redirecionem para URLs longas, suportar aliases personalizados para usuários pagos, rastrear análises de cliques e permitir que links expirem em um horário especificado.
Requisitos:
- Lidar com 120 milhões de novos links curtos por dia.
- Lidar com 4 bilhões de redirecionamentos por dia.
- O tráfego de pico pode atingir 3 vezes a média diária.
- Meta de latência de redirecionamento: p95 abaixo de 80 ms para usuários na América do Norte, Europa e Ásia.
- Meta de latência para criação de link curto: p95 abaixo de 300 ms.
- Meta de disponibilidade do serviço: 99,99% para redirecionamentos.
- Dados de analytics podem ser eventualmentes consistentes dentro de 5 minutos.
- Aliases personalizados devem ser únicos globalmente.
- Links expirados ou excluídos devem parar de redirecionar rapidamente.
- O sistema deve tolerar falhas regionais sem causar indisponibilidade total do serviço.
Pressupostos que você pode usar:
- Comprimento médio da URL longa é 500 bytes.
- Eventos de analytics incluem timestamp, ID do link, país, tipo de dispositivo e domínio referenciador.
- O tráfego de leitura é muito maior do que o de escrita.
- Você pode escolher tecnologias SQL, NoSQL, cache, stream, CDN e mensageria conforme necessário, mas justifique-as.
Na sua resposta, forneça:
1. Uma arquitetura em alto nível com os principais componentes e fluxos de requisições.
2. Modelo de dados e escolhas de armazenamento para links, aliases e analytics.
3. Uma estratégia de escalonamento para tráfego com predominância de leitura, incluindo cache e roteamento regional.
4. Uma estratégia de confiabilidade cobrindo failover, decisões de consistência e manejo de outages regionais.
5. Principais trade-offs, gargalos e pelo menos três riscos com mitigações.
6. Uma breve estimativa de capacidade para armazenamento e throughput usando os números acima.