28 de Julho de 2025
Request síncrono, job assíncrono ou evento: como decidir sem ritual
Nem tudo deve ficar no request principal, mas nem tudo precisa virar fila ou evento só porque o time aprendeu essas palavras.
Andrews Ribeiro
Founder & Engineer
4 min Intermediario Sistemas
O problema
Quando o time aprende fila, worker e evento, existe um risco engraçado:
de repente tudo parece problema de arquitetura distribuída.
Mas muito fluxo ainda devia ser só uma request bem feita.
E o contrário também acontece:
request web segurando:
- geração de relatório
- envio de lote
- integração lenta
- processamento pesado
até estourar timeout ou cansar usuário.
O problema não é gostar demais de síncrono ou assíncrono.
É escolher sem critério.
Modelo mental
Três perguntas costumam decidir bem:
- o usuário precisa do resultado agora?
- o trabalho é pesado, lento ou incerto demais para o caminho principal?
- outros fluxos precisam reagir a isso sem acoplamento direto?
Isso normalmente aponta para um dos três formatos:
- request síncrono
- job assíncrono
- evento
Quando request síncrono faz mais sentido
Request síncrono costuma ser melhor quando:
- o usuário precisa da resposta para seguir
- a operação é curta e previsível
- a falha precisa voltar imediatamente
- o sistema só faz sentido se confirmar aquilo na hora
Exemplos:
- autenticar login
- validar cupom e calcular total final
- criar recurso pequeno e devolver identificador
O ganho aqui é clareza.
Você evita transformar operação simples em saga desnecessária.
Quando job assíncrono entra melhor
Job assíncrono faz sentido quando:
- o trabalho demora demais
- pode falhar de forma transitória
- o usuário tolera acompanhar estado depois
- o throughput melhora tirando aquilo do request principal
Exemplos:
- exportar CSV
- processar mídia
- recalcular muita coisa
- importar arquivo grande
Mas mover para job não encerra a discussão.
Você também precisa responder:
- onde o estado do job fica?
- como o usuário acompanha progresso?
- o que acontece em retry?
- o que é falha final?
Quando evento realmente ajuda
Evento costuma entrar quando uma ação principal já aconteceu e outros fluxos podem reagir depois.
Exemplos:
- pedido pago
- usuário criado
- assinatura cancelada
A lógica é:
o fluxo principal confirma o fato, e outros consumidores reagem sem acoplamento direto.
Isso ajuda quando:
- existem múltiplos interessados
- nem todos precisam responder no mesmo request
- você quer reduzir dependência direta entre serviços ou módulos
Mas evento não é “job com nome chique”.
Ele muda contrato, observabilidade e forma de falha.
Um erro comum
Um erro comum é empilhar tudo:
- request recebe
- já publica evento
- já cria job
- já espera callback
tudo sem semântica clara.
Aí ninguém sabe mais:
- qual etapa é obrigatória
- qual é eventual
- qual é side effect
- qual é confirmação para o usuário
Arquitetura boa deixa isso explícito.
Exemplo simples
Imagine “finalizar compra”.
Parte síncrona:
- validar carrinho
- reservar estoque
- autorizar pagamento
- devolver confirmação do pedido
Parte assíncrona:
- gerar nota
- mandar email
- publicar analytics
Parte orientada a evento:
- “pedido confirmado” dispara reações em antifraude, CRM ou ERP
Se você tentar colocar tudo na request:
- a latência sobe
- a superfície de falha aumenta
Se jogar tudo em evento:
- o usuário perde confirmação clara
- o fluxo principal fica nebuloso
Como um senior pensa
Quem decide melhor não começa por tecnologia.
Começa por semântica:
- o que precisa estar pronto para o usuário confiar?
- o que pode acontecer depois?
- o que outras partes do sistema só precisam observar?
Em frase curta:
síncrono confirma, job processa, evento propaga
Não é sempre tão limpo.
Mas essa frase ajuda muito.
Ângulo de entrevista
Esse tema aparece bastante em system design, backend e product engineering.
O entrevistador normalmente quer ver se você sabe:
- justificar latência
- separar caminho crítico de side effect
- lidar com estado intermediário
- explicar por que evento ou fila ajudariam de verdade
Resposta forte costuma soar assim:
“Eu manteria síncrono só o que precisa confirmar valor para o usuário. O trabalho pesado ou tolerante a espera sairia para job, e eu usaria evento quando outros consumidores precisassem reagir sem acoplamento direto.”
Isso transmite julgamento.
Não ritual.
Resumo rápido
O que vale manter na cabeça
- Request síncrono serve quando o resultado precisa ser imediato e o custo cabe no caminho principal.
- Job assíncrono ajuda quando o trabalho é demorado, pesado ou tolera espera observável.
- Evento faz sentido quando outros fluxos podem reagir sem acoplar o caminho principal.
- O formato certo depende mais de latência, acoplamento e semântica do que de moda arquitetural.
Checklist de pratica
Use isto ao responder
- Consigo explicar por que esse fluxo precisa ser síncrono ou não?
- Se eu mover isso para job, sei como o usuário vai observar estado e resultado?
- Se eu publicar evento, sei quem depende dele e o que acontece se ele atrasar ou repetir?
- Consigo defender a escolha em entrevista sem cair em buzzword?
Você concluiu este artigo
Compartilhar esta página
Copie o link manualmente no campo abaixo.