Pular para o conteúdo principal

Message Bus

Descrição​

O Message Bus é uma arquitetura de integração em que várias aplicações existentes, heterogêneas, cooperam por meio de uma infraestrutura comum de mensageria, permanecendo desacopladas. Novas aplicações entram e antigas saem sem que o restante precise mudar.

A analogia é o barramento de hardware de um computador, que liga processador, memória e periféricos. Aqui, o barramento é o middleware que liga aplicações, com mensagens bem mais granulares que as operações de leitura e escrita de baixo nível do hardware.

O padrão combina três elementos: uma infraestrutura de comunicação comum (canais, roteadores, canais de publicação e assinatura), adaptadores que ligam cada sistema ao barramento e traduzem seus dados, e uma estrutura comum de comandos e formatos que permite aos participantes pedir operações uns aos outros.

Problemas que resolve​

  • Sistemas existentes, de plataformas e linguagens diferentes, precisam compartilhar dados e responder de forma unificada a pedidos de negócio.
  • Adicionar ou remover aplicações não deve interromper as demais.
  • Sem formatos e comandos comuns, cada par de sistemas precisa de sua própria integração ponto a ponto.
  • Algumas interações têm um destinatário, outras precisam alcançar vários.

Quando usar​

  • Há um portfólio de aplicações que devem colaborar de forma flexível e evoluir de forma independente.
  • A empresa quer um vocabulário comum de comandos e dados entre sistemas.
  • Espera-se incluir novos participantes com frequência.

Quando evitar​

  • Poucas aplicações com integração estável, em que ligações diretas bastam.
  • Quando não há disposição para manter um modelo de dados e comandos compartilhado, pois o barramento perde o sentido.
  • Quando o barramento viraria ponto único de falha e de contenção sem a devida alta disponibilidade.

Trade-offs​

GanhoCusto / Risco
Aplicações desacopladas, que entram e saem sem impacto nas demaisInfraestrutura central a operar e escalar
Menos integrações ponto a pontoExige consenso sobre formatos e comandos comuns
Reuso de adaptadores e canaisBarramento pode virar gargalo ou ponto único de falha
Cooperação entre tecnologias heterogêneasGovernança e versionamento do modelo compartilhado
  • Modelo canônico: o formato comum é o que mantém o acoplamento baixo, mas precisa ser administrado.
  • Roteamento: roteadores e canais por tipo de dado direcionam cada mensagem ao endpoint certo.
  • Disponibilidade: o barramento deve ser redundante, pois muitas aplicações dependem dele.

Diagrama​

Cada aplicação se liga ao barramento por um adaptador, e o barramento oferece canais e roteamento comuns para que elas colaborem sem se conhecer.

Padrões relacionados​

Referência​