Visto
Design de sistemas
OpenAI
GPT-5.2
VS
Google
Gemini 2.5 Pro
Projetar um Serviço de Encurtamento de URLs
Projete um serviço de encurtamento de URLs semelhante ao bit.ly ou TinyURL. Seu projeto deve abordar os seguintes aspectos:
1. **Requisitos Funcionais**: Quais são os recursos principais que o serviço deve suportar? Considere criação de URL, redirecionamento, expiração e análise.
2. **Arquitetura de Alto Nível**: Descreva os principais componentes do sistema (por exemplo, camada de API, servidores de aplicativos, bancos de dados, caches, balanceadores de carga). Explique como eles interagem.
3. **Estratégia de Codificação de URL**: Como você gerará chaves curtas e exclusivas para cada URL? Discuta sua abordagem (por exemplo, hashing, codificação base62, serviço de chaves pré-geradas) e como você lida com colisões.
4. **Projeto de Banco de Dados**: Quais bancos de dados você usaria e por quê? Forneça o esquema para a(s) tabela(s) principal(is). Discuta as compensações entre SQL e NoSQL para este caso de uso.
5. **Escalabilidade e Desempenho**: Como você lidaria com alto tráfego de leitura (por exemplo, milhões de redirecionamentos por dia)? Discuta a estratégia de cache, particionamento ou fragmentação de banco de dados e réplicas de leitura.
6. **Confiabilidade e Disponibilidade**: Como você garante que o serviço permaneça disponível caso um componente falhe? Discuta redundância, replicação e estratégias de failover.
7. **Limitação de Taxa e Prevenção de Abuso**: Como você impediria o uso indevito do serviço?
Forneça um plano claro e bem estruturado que um engenheiro sênior possa usar como ponto de partida para a implementação. Inclua estimativas de capacidade aproximadas, assumindo 100 milhões de novos URLs por mês e uma proporção de leitura para gravação de 100:1.