Deep Dive de Projeto: Chat, Notificações e Feed
Nesta lição, vamos praticar como responder a perguntas de entrevista como: construir um chat, um feed (a lista de atualizações dos seus amigos, como nas redes sociais), e notificações (as mensagens que aparecem no seu celular). Vamos falar em termos simples sobre fanout (espalhar a mesma atualização
System Design (planejar como construir um software grande que funciona) é como planejar uma cidade: estradas que movem o tráfego, armazéns para armazenamento, semáforos que administram a carga, e equipes de manutenção que consertam problemas — para que a cidade continue funcionando bem mesmo durante o horário de pico mais intenso.
- Sistemas em tempo real e feed
- A pergunta clássica praticada nesta lição: projetar sistemas em tempo real — chat, um feed (a lista de atualizações dos amigos), e notificações. Vamos percorrer fanout (espalhar uma atualização para muitas pessoas de uma vez), ordering (a ordem em que as mensagens aparecem), delivery guarantees (garantir que uma mensagem chegou), e push (enviar um alerta para o celular).
- 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 usuários 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).