Você está em uma entrevista técnica e o entrevistador faz uma pergunta profunda sobre arquitetura.
Eles disseram:
“Como você desenharia um sistema multi-região para 50 milhões de eventos por segundo, sem perder dados, mantendo ordenação por usuário e p99 abaixo de 200ms?”
Diga isso:
Eu começaria separando ingestão, durabilidade e serving. Usaria um log particionado por userId para preservar ordenação local, replicação assíncrona entre regiões com quorum dentro da região primária e retenção de 30 dias em storage barato para replay. Durante partições, priorizaria disponibilidade de ingestão com escrita local e reconciliação posterior, assumindo consistência eventual nas visões agregadas. Para o p99, manteria materializações incrementais por janela em memória e snapshots frequentes, deixando correções tardias passarem por um fluxo de backfill idempotente.