8 de Julho de 2025
Fan-out interno sem acoplamento temporal demais
Quando um evento interno dispara muitos consumidores e todos passam a depender da mesma cadência, o sistema parece desacoplado mas envelhece preso no tempo.
Andrews Ribeiro
Founder & Engineer
3 min Intermediario Sistemas
O problema
Fan-out interno costuma parecer sofisticado:
- um evento acontece
- vários consumidores reagem
- cada um cuida do seu pedaço
Em muitos casos, isso é ótimo.
O problema aparece quando os consumidores começam a assumir:
- mesma ordem
- mesma velocidade
- mesma disponibilidade
- mesmo timing de atualização
Aí o sistema parece desacoplado no desenho e continua acoplado no relógio.
Modelo mental
Acoplamento temporal é quando um componente depende não só do outro existir, mas de ele reagir no momento esperado.
No fan-out interno, isso aparece quando:
- um consumidor espera que outro já tenha atualizado algo
- o produto exige consistência instantânea de todos os lados
- retry e atraso começam a quebrar suposição escondida
Evento interno não deveria carregar coreografia invisível.
Exemplo simples
Imagine um evento OrderPaid.
Ele dispara:
- atualização de estoque
- emissão fiscal
- analytics
- notificação
Se analytics atrasar, tudo bem.
Se notificação atrasar, talvez tudo bem também.
Mas se a tela operacional depende da atualização de estoque no mesmo instante e ninguém explicitou isso, você criou um acoplamento temporal escondido.
Nesse caso, talvez parte do fluxo não devesse ter saído do caminho principal ainda.
O erro comum
O erro comum é chamar qualquer pub/sub interno de arquitetura desacoplada.
Nem sempre é.
Às vezes o evento só empurrou o problema para depois.
Outro erro comum é deixar vários consumidores derivarem estado crítico sem decidir:
- quem é opcional
- quem é prioritário
- quem pode atrasar
- quem precisa de proteção operacional
O que normalmente ajuda
Normalmente ajuda classificar os consumidores em grupos:
- caminho crítico
- reação importante, mas assíncrona
- observação ou analytics
Essa separação evita tratar tudo como se tivesse a mesma urgência.
Também ajuda definir:
- o que pode atrasar
- o que precisa de isolamento
- o que merece fila ou worker próprio
- o que ainda deveria ficar mais perto da mutação principal
Como um senior pensa
Quem já viu fan-out virar bagunça costuma perguntar:
- quais consumidores realmente precisam reagir rápido?
- quem está assumindo ordem ou timing que ninguém garantiu?
- se um assinante travar, isso atrapalha só ele ou o ecossistema inteiro?
- esse desacoplamento é real ou só visual?
Essas perguntas evitam muita arquitetura bonita e frágil.
Ângulo de entrevista
Esse tema aparece em eventos internos, sistemas assíncronos, arquitetura modular e system design.
O entrevistador quer ver se você entende:
- que fan-out amplia capacidade de reação, mas não apaga dependência temporal
- que nem todo consumidor precisa da mesma urgência
- que acoplamento pode migrar do código para o tempo
Resposta forte costuma soar assim:
“Eu usaria fan-out quando os consumidores puderem reagir de forma realmente independente. Se vários lados precisarem da mesma cadência temporal, eu trataria isso como sinal de que parte do fluxo ainda é mais próxima do caminho principal ou precisa de isolamento operacional explícito.”
Takeaway direto
Fan-out interno ajuda muito.
Mas não transforma dependência temporal em independência só porque agora existe fila no meio.
Resumo rápido
O que vale manter na cabeça
- Fan-out não é desacoplamento automático; ele só muda onde o acoplamento aparece.
- Quando consumidor depende da mesma cadência temporal do produtor, o acoplamento continua existindo.
- Evento interno bom permite reação independente, não coreografia implícita.
- Se todo mundo precisa reagir no mesmo segundo, talvez o problema não seja de fan-out e sim de fluxo principal.
Checklist de pratica
Use isto ao responder
- Os consumidores desse fan-out realmente podem reagir em tempos diferentes?
- Algum módulo está assumindo que outro já consumiu o evento quando ele ainda pode estar atrasado?
- Se um consumidor ficar lento, o resto do sistema continua saudável?
- Estou usando fan-out por clareza ou para esconder dependência que continuou síncrona?
Você concluiu este artigo
Compartilhar esta página
Copie o link manualmente no campo abaixo.