Deep Dive de Projeto: Encurtador de URLs + Pastebin
Nesta lição, vamos praticar como responder a uma pergunta clássica de entrevista: construir um "encurtador de URLs" (um serviço que pega um endereço web longo e devolve um curto, como o bit.ly). Vamos falar em termos simples sobre como o serviço recebe requisições (uma API — a forma como programas c
System Design (planear como construir um software grande que funciona) é como planear uma cidade: estradas que movem o tráfego, armazéns para armazenamento, semáforos que administram a carga, e equipas de manutenção que consertam problemas — para que a cidade continue funcionando bem mesmo durante o horário de pico mais intenso.
- Aprofundamento clássico
- A pergunta clássica praticada nesta lição: projetar um "encurtador de URLs" como o bit.ly. Vamos percorrer como as requisições chegam (a API), como os dados são armazenados (o schema — o formato da tabela), como o código curto é criado (ID generation), como aceleramos as coisas com memória rápida (um cache), e como crescemos para muitos utilizadores (escala).
- Trade-off
- Um trade-off é uma escolha deliberada entre duas coisas boas quando você não pode ter as duas por completo — como escolher entre rápido e barato. Sempre há um preço, e em uma entrevista você diz isso em voz alta ao entrevistador ou à entrevistadora.
- Métrica operacional
- Um número que mostra se a decisão realmente funciona para utilizadores reais (em produção — o sistema em operação). Por exemplo: latência (quanto tempo leva para obter uma resposta), taxa de erro (a proporção de requisições que falham), atraso de fila (quanto trabalho se acumulou esperando na fila), ou taxa de acerto do cache (com que frequência a memória rápida já tinha a resposta).