22 de Julho de 2025
Backpressure interno sem fila infinita que esconde saturação
Quando o backend responde a saturação só acumulando fila, ele para de controlar carga e passa apenas a adiar o colapso.
Andrews Ribeiro
Founder & Engineer
3 min Intermediario Sistemas
O problema
Fila costuma parecer resposta elegante para tudo.
Chegou pico?
- põe fila
- aumenta buffer
- deixa processar depois
O problema é que isso só funciona quando o desbalanceamento é curto e controlado.
Quando a produção segue mais rápida que o consumo, a fila não resolve.
Ela só empurra a saturação para mais tarde.
Modelo mental
Backpressure é o jeito do sistema dizer:
“não cabe mais neste ritmo”
Sem isso, o produtor continua aceitando ou emitindo trabalho como se nada tivesse mudado.
E o consumidor vira um ponto de acúmulo silencioso.
Na prática, backpressure pode significar:
- reduzir vazão
- bloquear envio
- aplicar quota
- atrasar produção
- recusar novas entradas
O importante é que exista reação visível à saturação.
Exemplo simples
Imagine um módulo que publica eventos internos mais rápido do que o consumidor consegue enriquecer e persistir.
Sem backpressure, o que acontece?
- backlog cresce
- latência explode
- retry entra junto
- replay fica mais caro
No começo ninguém percebe, porque nada caiu.
Só que o sistema já saiu do modo saudável e entrou no modo “dívida correndo”.
O erro comum
O erro comum é confundir desacoplamento com capacidade infinita.
Fila ajuda a desacoplar tempo.
Não cria throughput mágico.
Outro erro comum é olhar só para disponibilidade da fila:
- “não perdeu mensagem”
Mas ignorar:
- tempo de espera
- backlog acumulado
- idade do item
- efeito em cascata no resto do sistema
Se a fila está sempre aceitando, mas o atraso real ficou impraticável, a arquitetura já está te enganando.
O que normalmente ajuda
Normalmente ajuda explicitar:
- profundidade aceitável de backlog
- latência máxima aceitável na fila
- ritmo máximo de produção
- comportamento quando o limite for atingido
Na prática, isso costuma aparecer como:
- quota por produtor
- pausa controlada
- shed de trabalho menos importante
- limitação por tenant ou workload
O ponto não é eliminar fila.
É impedir que ela vire esconderijo de saturação.
Como um senior pensa
Quem já operou sistema em backlog crônico costuma perguntar:
- o backlog está amortecendo pico curto ou acumulando problema permanente?
- quem sente primeiro quando o consumidor satura?
- a produção desacelera ou segue fingindo normalidade?
- o sistema sabe distinguir atraso tolerável de fila mentirosa?
Essa conversa é muito melhor do que só pedir “mais workers”.
Ângulo de entrevista
Esse tema aparece em backend, filas, streaming e escalabilidade.
O entrevistador quer ver se você entende:
- que fila não substitui controle de capacidade
- que backlog também é métrica de saúde
- que produtor precisa reagir quando o downstream não aguenta
Resposta forte costuma soar assim:
“Eu não trataria fila como throughput infinito. Definiria sinais claros de saturação e faria o produtor desacelerar, priorizar ou recusar quando o backlog saísse da janela aceitável. Sem backpressure, a fila só mascara o problema.”
Takeaway direto
Fila sem backpressure não controla carga.
Só adia a dor.
Resumo rápido
O que vale manter na cabeça
- Fila não elimina saturação; só muda onde ela aparece.
- Backpressure é o mecanismo que faz o produtor sentir que o consumidor não aguenta mais.
- Fila infinita demais costuma esconder problema de capacidade, prioridade ou ritmo de consumo.
- Sistema saudável prefere desacelerar ou recusar cedo a deixar o acúmulo mentir por horas.
Checklist de pratica
Use isto ao responder
- Quando o consumidor satura, o produtor percebe isso ou continua despejando trabalho?
- Minha fila está amortecendo pico curto ou escondendo incapacidade estrutural?
- Tenho limite explícito de backlog, latência ou profundidade de fila?
- Consigo explicar o que acontece quando a produção supera o consumo por muito tempo?
Você concluiu este artigo
Compartilhar esta página
Copie o link manualmente no campo abaixo.