trilha

System Design/01 - Fundamentos2 min

Latency vs Throughput

Perguntas-guia
  • Que problema isso resolve?
  • Quando usar / quando NÃO usar?
  • Qual o principal trade-off?
  • Como isso falha em produção?

Conceito

  • Latência: quanto tempo uma operação leva. Medida em ms. É a experiência de um pedido.
  • Throughput: quantas operações por unidade de tempo. Medida em req/s. É a capacidade do sistema.

A analogia clássica: uma rodovia. Latência é quanto tempo um carro leva de A a B. Throughput é quantos carros passam por hora. Uma rodovia com muitas faixas e limite baixo tem throughput alto e latência alta.

Por que a média mente

Latência nunca deve ser reportada como média. A distribuição é assimétrica de cauda longa, e a média esconde exatamente os usuários que estão sofrendo.

Métrica O que significa
p50 (mediana) Metade dos usuários teve isso ou menos
p95 / p99 Os 5% / 1% piores — onde mora a insatisfação
p99.9 Onde moram os clientes maiores (mais requisições = mais chance de cair na cauda)

Numa página que faz 100 chamadas internas, quase todo usuário encontra pelo menos uma resposta p99. Por isso a cauda importa mais do que parece.

A relação entre as duas

Pela Lei de Little: concorrência = throughput × latência.

Isso implica algo contra-intuitivo: à medida que a utilização se aproxima de 100%, a latência explode (cresce como 1/(1-utilização)). Um sistema a 90% de utilização tem latência ~10x maior que a 50%. Manter folga não é desperdício — é o que mantém a latência previsível.

Trade-offs

Otimizar throughput frequentemente piora latência, e vice-versa:

Técnica Throughput Latência
Batching ↑↑ ↓ (espera o lote encher)
Buffer maior
Processar imediatamente ↑↑
Paralelismo ↑ (até o gargalo)

Sistemas de análise otimizam throughput (batch, colunar, compressão). Sistemas interativos otimizam latência de cauda (cache, folga de capacidade, timeouts agressivos).

Exemplo prático

Um pipeline de dados processa 1 milhão de eventos/hora com latência de 5 minutos por evento (batch de 5 min). Aceitável — ninguém está esperando.

A mesma arquitetura numa API de checkout seria inaceitável: o throughput agregado é ótimo, e cada usuário espera 5 minutos. Mesmo número, requisito oposto.

Inversamente: reduzir o batch para 1 evento derruba a latência para milissegundos e corta o throughput pela metade, porque some a amortização do custo fixo por lote.

Relacionado


Parte de 01 - MOC Fundamentos · roadmap.sh/system-design

Buscar

Busca por título, seção e texto das notas