Latência e Throughput: Quem Realmente Está Te Atrapalhando?

Sabe quando você sente que a sua aplicação tá “pesada”, travando ou demorando pra responder — e fica aquela dúvida se o problema tá no tempo de resposta ou na quantidade de requisições simultâneas?

Pois é… você não tá sozinho. Essa dúvida entre latência e throughput é mais comum do que parece — e entender a diferença entre os dois é fundamental pra conseguir otimizar sua arquitetura de forma estratégica.

Não entender essas duas métricas — isoladamente e em conjunto — faz com que muitas decisões arquiteturais críticas sejam negligenciadas. E o pior: você até escala, mas carrega os problemas junto e a vezes o custo fica super alto. Em sistemas modernos, não dá pra crescer sem dominar o comportamento de latência e throughput.

Mas afinal, o que é Latência?

Latência é o tempo que uma única chamada leva pra ser processada — do momento em que o cliente faz uma requisição até a resposta final. Medimos isso em milissegundos, segundos (em casos extremos), e usamos percentis como p95, p99 pra entender o comportamento nos piores cenários.

E o que é Throughput?

Já throughput é a quantidade de transações que o sistema consegue processar por segundo (ou por minuto, hora, etc). A famosa métrica TPS — transactions per second.

É importante entender que throughput e latência não competem entre si, mas se influenciam. Quanto maior o throughput, maior a chance da latência subir — e é aí que mora o caos quando não se tem controle e visibilidade sobre isso.

Reforçando…

Imagina uma rodovia:

  • Latência é o tempo que um carro leva pra atravessar o trajeto.
  • Throughput é quantos carros passam por minuto na pista.

Se a via estiver vazia, cada carro (requisição) passa pela via sem concorrência. Mas se estiver congestionada, o carro aguarda a liberação da via e a latência aumenta.

Se seu sistema tá lento, a pergunta real não é “o que tá travando”, mas sim:

“É uma única transação que está lenta ou são muitas chegando ao mesmo tempo?”

E a resposta disso vai definir como você vai atacar o problema.

Como Melhorar a Latência?

  1. Cache e CDN: Deixar os dados mais próximos do usuário. Em vez de buscar dados em servidores distantes, use cache local, Redis, Memcached, ou CDN para conteúdo estático.
  2. Evitar chamadas síncronas desnecessárias: Se o usuário não precisa esperar o processamento, envie a mensagem para uma fila e retorne uma resposta imediata. Isso alivia a pressão da latência.
  3. Banco de dados eficiente: Otimize queries, crie views materializadas e avalie cardinalidade. Pode ser que a lentidão esteja no banco.
  4. Eficiência de código (Big O): Analise a performance do seu algoritmo. Pequenas melhorias podem gerar grandes ganhos em tempo de execução.
  5. Reduzir hops de rede: Evite arquiteturas com muitos microsserviços em cascata ou que dependam de vários componentes em sequência. Cada “hop” adiciona tempo.

Como Melhorar o Throughput?

  1. Escalabilidade horizontal: Separe leitura de escrita, distribua carga entre instâncias. Adicionar mais nós geralmente ajuda no throughput.
  2. Processos assíncronos e paralelismo: Use filas e workers. Em vez de bloquear um endpoint esperando processamento, use workers em background para processar.
  3. Sharding e réplicas: Quando a carga está muito alta, divida os dados por conjunto de usuários ou crie réplicas para leitura.
  4. Batching: Ao invés de processar item por item (como em requisições REST repetidas), envie um lote de dados para processamento. Isso reduz o número de chamadas e melhora a eficiência.
  5. Balanceamento de carga inteligente: Não dependa apenas do round-robin padrão. Avalie algoritmos como least connections ou hash-based para distribuir melhor a carga.

Conclusão

Latência e throughput são conceitos diferentes, mas diretamente relacionados. Melhorar um sem comprometer o outro é uma arte na arquitetura.

Muitas vezes, ao analisar a arquitetura de uma aplicação ou as decisões documentadas em um ADR (Architecture Decision Record), fica claro como a confusão entre esses dois conceitos levou a soluções questionáveis. Já vi muitos casos onde a escolha foi aumentar o throughput achando que isso resolveria problemas de latência — o que raramente é verdade.

Exemplo: Em um projeto de e-commerce que acompanhei, a equipe decidiu aumentar a quantidade de instâncias do serviço de checkout, acreditando que isso reduziria o tempo de resposta. Resultado? A origem da lentidão estava em uma query não indexada no banco de dados, a latência continuou alta — e o custo da infraestrutura aumentou sem resolver o problema real.

Aguentar mais throughput não significa melhorar a latência. Cada métrica tem seu papel e precisa ser tratada com estratégias específicas.

E você, já teve algum caso que gostaria de compartilhar ? não deixe de mandar pra mim, quem sabe seu case não seja assunto para um próximo newsletter !!

🚨Se curtiu esse conteúdo e quer aprender mais sobre arquitetura de software em um nível bem mais aprofundado, venha fazer parte da Comunidade de Arquitetura Descomplicada (CaD)! Saiba mais em https://mugnos-it.com/cad/ 🚀🚨

<< SAIBA MAIS NA VERSAO DO VÍDEO >> : https://www.youtube.com/watch?v=dZRThlz20NU&t

Até a próxima!

guest
0 Comentários
Mais Velhos
Mais Novos Mais Votados
Inline Feedbacks
Veja todos comentários
0
Gostaria muito de saber sua opinião!x