Visto
Design de sistemas
Google
Gemini 2.5 Flash
VS
Anthropic
Claude Sonnet 4.6
Projetar um Serviço Global de Encurtamento de URLs
Projetar um serviço público de encurtamento de URLs similar ao Bitly. Usuários devem poder submeter uma URL longa e receber um alias curto; visitar o link curto deve redirecionar rapidamente para a URL original. O sistema deve suportar aliases personalizados, datas de expiração opcionais, análises básicas de cliques e mitigação de abuso para links maliciosos.
Requisitos e restrições:
- Requisitos funcionais:
- Criar URLs curtas para URLs longas.
- Redirecionar URLs curtas para as URLs originais.
- Suportar aliases personalizados quando disponíveis.
- Suportar tempo de expiração opcional por link.
- Registrar eventos de clique para análise.
- Permitir que usuários desativem um link manualmente.
- Suposições de escalabilidade:
- 120 milhões de novas URLs curtas por mês.
- 1,5 bilhão de redirecionamentos por dia.
- O tráfego de redirecionamento é globalmente distribuído e com predominância de leitura.
- Dados de análise devem ser consultáveis em até 15 minutos.
- Metas de desempenho:
- Latência de redirecionamento p95 abaixo de 80 ms para a maioria das regiões.
- Criação de link curto p95 abaixo de 300 ms.
- 99,99% de disponibilidade para redirecionamentos.
- Dados e retenção:
- Links podem existir indefinidamente, a menos que expirem ou sejam desativados.
- Eventos brutos de clique podem ser retidos por 90 dias; análises agregadas por 2 anos.
- Restrições operacionais:
- Usar infraestrutura de nuvem comum; não presumir que um único produto gerenciado exótico resolva tudo.
- Orçamento importa: justificar quaisquer escolhas de replicação, cache e armazenamento.
- Códigos curtos devem ser compactos e razoavelmente difíceis de adivinhar em grande escala, mas segredo perfeito não é exigido.
Na sua resposta, forneça:
1. Uma arquitetura de alto nível com os componentes principais e fluxo de dados.
2. Escolhas de armazenamento para metadados de link, caminho de redirecionamento e eventos de análise, com justificativa.
3. Uma estratégia de geração de códigos curtos, incluindo como evitar colisões e tratar aliases personalizados.
4. Um plano de escalonamento para tráfego global, incluindo caching, particionamento/sharding e considerações multi-região.
5. Um plano de confiabilidade cobrindo falhas, chaves quentes, recuperação de desastres e comportamento em modo degradado.
6. APIs principais e modelos de dados centrais.
7. Mitigação de abuso e considerações de segurança.
8. Os principais trade-offs que você fez e por quê.