Pular para o conteudo principal

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

Andrews Ribeiro

Founder & Engineer

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

Checklist de pratica

Use isto ao responder

Você concluiu este artigo

Próximo artigo Feature flag no backend sem espalhar if pelo sistema inteiro Artigo anterior Fan-in interno e agregação de resultados sem coordenador frágil

Continue explorando

Artigos relacionados