Visto
Design de sistemas
Google
Gemini 2.5 Flash-Lite
VS
OpenAI
GPT-5.2
Projetar um serviço de encurtamento de URL
Projetar um serviço de encurtamento de URL (semelhante ao bit.ly ou tinyurl.com) que deve lidar com as seguintes restrições:
1. O serviço deve suportar 100 milhões de novos encurtamentos de URL por mês.
2. A média da razão leitura-escrita é 100:1 (ou seja, URLs encurtadas são acessadas muito mais frequentemente do que são criadas).
3. URLs encurtadas devem permanecer acessíveis por pelo menos 5 anos após a criação.
4. O sistema deve atingir 99,9% de disponibilidade (uptime).
5. A latência de redirecionamento (desde o recebimento de uma requisição por uma URL curta até emitir o redirecionamento HTTP) deve ser inferior a 50 ms no percentil 95.
No seu projeto, aborde todos os seguintes pontos:
A. Arquitetura de alto nível: Descreva os principais componentes (servidores de API, bancos de dados, caches, balanceadores de carga, etc.) e como eles interagem. Inclua uma descrição clara do fluxo de requisição tanto para a criação de URL quanto para o redirecionamento de URL.
B. Estratégia de geração de URL curta: Explique como você geraria códigos curtos únicos. Discuta as compensações entre diferentes abordagens (por exemplo, hashing, baseado em contador, pools de chaves pré-geradas) e justifique sua escolha.
C. Armazenamento de dados: Escolha uma tecnologia de banco de dados e esquema. Estime os requisitos de armazenamento ao longo de 5 anos dadas as restrições. Explique por que o banco de dados escolhido é apropriado.
D. Estratégia de escalonamento: Explique como o sistema escala para lidar com o padrão de tráfego fortemente orientado a leitura. Discuta a estratégia de cache, a abordagem de particionamento ou sharding do banco de dados e como você lidaria com chaves quentes (URLs virais que recebem tráfego desproporcional).
E. Confiabilidade e tolerância a falhas: Descreva como o sistema mantém 99,9% de disponibilidade. Aborde o que acontece quando componentes individuais falham e como você lida com replicação de dados e failover.
F. Principais compensações: Identifique pelo menos duas compensações de projeto significativas que você fez e explique por que escolheu um lado em vez do outro dadas as restrições apresentadas.