DEV Community

Cover image for Mensageria e o desconforto de não saber exatamente quando algo acontece
Maurilo Santos
Maurilo Santos

Posted on

Mensageria e o desconforto de não saber exatamente quando algo acontece

Mensageria raramente entra em um sistema por vontade estética. Ela aparece quando o modelo síncrono começa a ranger: tempos de resposta imprevisíveis, integrações frágeis, dependências demais para um fluxo que deveria ser simples. A promessa é conhecida e, de certa forma, verdadeira. Mensagens permitem que sistemas respirem melhor, que falhas não se espalhem tão rápido, que partes evoluam com mais autonomia.

O problema é que essa promessa costuma ser interpretada como uma forma de simplificar a vida. E mensageria não simplifica nada. Ela desloca a complexidade. O que antes estava explícito no fluxo de uma requisição passa a existir no tempo, nos contratos implícitos e nas suposições que ninguém escreveu em lugar nenhum.

Esse texto nasce dessa fricção. Do momento em que a teoria arquitetural encontra o comportamento real de um sistema rodando sob carga, com dados imperfeitos e pessoas tentando entender o que acabou de acontecer.

Quando o controle deixa de ser imediato

Em sistemas síncronos, existe uma sensação confortável de causalidade. Algo acontece porque alguém pediu. Se deu errado, o erro aparece ali, no mesmo contexto, geralmente com um stack trace apontando para algum lugar reconhecível. Mensageria rompe com essa linearidade. Publicar uma mensagem é, essencialmente, abrir mão da garantia de quando — ou se — o efeito esperado vai acontecer.

Esse detalhe muda tudo. A aplicação produtora pode estar “saudável”, o broker pode estar aceitando mensagens, e ainda assim o sistema, como um todo, pode estar parado do ponto de vista do negócio. A fila cresce silenciosamente, os consumidores ficam lentos, e o problema só se manifesta quando alguém olha para um indicador que nem sempre estava no radar.

O desconforto vem do fato de que sucesso técnico e sucesso funcional deixam de ser a mesma coisa. Confirmar que uma mensagem foi publicada não diz nada sobre o impacto real dela. Esse intervalo entre causa e efeito é onde mora a maior parte das surpresas em produção.

Acoplamento não some, ele muda de forma

Um dos argumentos mais repetidos a favor da mensageria é o desacoplamento. E ele existe, mas não do jeito que muita gente imagina. O acoplamento temporal diminui, mas o semântico cresce. Eventos viram contratos de longo prazo, mesmo quando ninguém os trata assim.

Na prática, isso significa que cada mensagem carrega decisões que vão durar mais do que o código que a publicou. Um campo adicionado por conveniência hoje pode se tornar uma dependência crítica amanhã. Um nome mal escolhido vira parte do vocabulário de vários serviços. E tudo isso acontece sem uma interface formal para deixar claro o que pode ou não mudar.

Com o tempo, surgem consumidores que ninguém lembra mais por que existem, mas que quebram silenciosamente quando algo muda. O produtor não conhece seus leitores, e essa ignorância, que parecia uma vantagem, vira um risco constante. O desacoplamento cobra disciplina em versionamento, algo que quase sempre começa tarde demais.

O preço real do reprocessamento

Reprocessar mensagens é frequentemente vendido como um benefício. E é, desde que o sistema tenha sido pensado para isso desde o início. Na vida real, o reprocessamento costuma ser o momento em que a arquitetura é colocada à prova.

Se um consumidor não é idempotente, reprocessar pode gerar efeitos colaterais difíceis de desfazer. Se mensagens não são rastreáveis, ninguém sabe exatamente o que será reexecutado. Se dados externos já mudaram, o resultado não será o mesmo da primeira vez. O que parecia um simples replay vira uma operação delicada, cheia de exceções e decisões manuais.

Esse é o ponto em que muitas equipes percebem que projetaram apenas o caminho feliz. Mensageria não respeita esse tipo de otimismo. Ela pressupõe falha, atraso e repetição como comportamentos normais, não como eventos raros.

Observabilidade deixa de ser opcional

Quando tudo acontece de forma assíncrona, observar o sistema exige mais do que logs espalhados. Cada mensagem precisa contar uma história mínima sobre si mesma: de onde veio, por onde passou, o que tentou fazer. Sem isso, qualquer incidente vira um quebra-cabeça montado a partir de fragmentos incompletos.

A ausência de visibilidade não quebra o sistema imediatamente, mas cobra um preço alto quando algo sai do esperado. O tempo de diagnóstico cresce de forma desproporcional, e a confiança no comportamento do sistema diminui. Em ambientes distribuídos, a falta de observabilidade não é apenas um problema técnico, é um problema operacional.

A ilusão de que a ferramenta resolve o desenho

Brokers são bons no que fazem: entregar mensagens. Eles não entendem domínio, não conhecem regras de negócio e não sabem o que é importante ou descartável. Ainda assim, é comum tratar a introdução de mensageria como uma solução arquitetural em si, quando na verdade ela apenas expõe decisões que já estavam lá.

Domínios mal definidos geram eventos genéricos demais ou específicos demais. Lógica de negócio começa a vazar para consumidores que não deveriam tomá-la. Com o tempo, a flexibilidade inicial se transforma em rigidez, porque qualquer mudança exige coordenar partes que não se comunicam diretamente.

O broker não cria problemas novos, mas torna os existentes mais difíceis de ignorar.

Conclusão

Mensageria funciona melhor quando é encarada como uma troca consciente. Você ganha resiliência e elasticidade, mas perde previsibilidade imediata. Ganha autonomia entre serviços, mas assume contratos mais duradouros e menos visíveis. Não é uma escolha errada, mas é uma escolha que exige maturidade técnica e organizacional.

Quando isso é entendido desde o início, mensageria deixa de ser uma fonte constante de surpresa e passa a ser apenas mais uma ferramenta poderosa, com limites claros. Quando não é, ela ensina do jeito mais caro possível: em produção, sob pressão, com pouca margem para erro.

Top comments (0)