Você sabe o que é mensageria?

BLOG

Serviços de Mensageria

26 de August de 2022

Mensageria é um conceito definido por sistemas distribuídos que se comunicam por meio de troca de mensagens (evento), sendo estas mensagens gerenciadas por um Message Broker (servidor/módulo de mensagens).

O que é um Message Broker?

Um Message Broker nada mais é que um servidor de mensagens, responsável por garantir que a mensagem seja enfileirada, garantindo que ela fique lá enquanto necessário até que algum usuário/cliente a retire de lá.

Em outras palavras, é como se fosse uma caixa de correio e as mensagens são as cartas que serão depositadas (publicadas) ali e retiradas (consumidas) por alguém que tenha interesse em ler essas cartas.

Síncrona ou assíncrona?

No atual cenário de arquitetura de software, existem pelo menos 2 paradigmas comuns para resolver a comunicação entre diferentes serviços: síncrona e assíncrona. A primeira forma de comunicação pode ser implementada utilizando o modelo mais comum de chamadas entre serviços que é a troca de requisições HTTP. A segunda, por sua vez, é mais frequentemente implementada utilizando brokers de mensageria.

Ambos padrões de comunicação apresentam seus prós e contras – e é sobre esses tradeoffs que a gente vai falar um pouquinho aqui.

Comunicação síncrona: modelo HTTP convencional

O protocolo HTTP está entre nós há décadas e, portanto, no mundo do desenvolvimento de software, já é amplamente conhecido e é basicamente a peça fundamental para o acesso a todo tipo de conteúdo na internet.

Vantagens:

  • Facilidade de implementação
  • Atende bem grande parte dos cenários de comunicação entre serviços que não demandam uma alta taxa de concorrência
  • Possui um universo vasto de documentação, bibliotecas e exemplos para se inspirar e implementar

Desvantagens:

  • De maneira geral, não é um modelo que escala para altos níveis de concorrência ( > 1K TPS, por exemplo)
  • Exige implementação de retentativas por parte de quem envia uma requisição
  • Por padrão, é síncrono, logo, caso haja degradação do lado que recebe a comunicação, o fluxo todo pode ser interrompido

Comunicação assíncrona: utilizando eventos e mensageria

Neste modelo, entra em cena uma estrutura independente das aplicações: os brokers de mensageria.

Esse tipo de middleware oferece estruturas de comunicação e dados que permitem que diferentes serviços conversem entre si de forma assíncrona, segura, replicada e altamente tolerante a falhas.

Vantagens:

Pra ficarem mais claras as vantagens deste modelo, vamos ao exemplo prático. A imagem abaixo representa a comunicação via mensagem ponto a ponto entre a Aplicação A e a Aplicação B, sendo a Aplicação B responsável em obter a mensagem enfileirada no Message Broker , enviando para a API Rest do sistema parceiro.

Toda a lógica de comunicação com a API Rest fica na Aplicação B. Desta forma não há um acoplamento direto entre Aplicação A e B.

Podemos ver algumas novas nomenclaturas. Vamos agora esclarecer cada uma delas:

Event: um evento é a mensagem em si. Pode ser um JSON, XML ou qualquer tipo de formato em bytes.

Producer: é a aplicação que envia uma mensagem para uma queue do Message Broker.

Queue: é uma fila que recebe as mensagens geradas por um producer. As mensagens ficarão dentro da fila até que alguma aplicação consumidora (consumer) retire a mensagem da fila.

Consumer: é a aplicação que consumirá as mensagens que estão presentes na fila.

Exchange: você não viu nada sobre exchange na imagem, mas tenha certeza que isso é muito importante e que de certa forma ela está lá. Nesse momento, você apenas tem que entender que o exchange é um roteador. Fará sentido mais adiante, nos exemplos que este artigo apresentará. Só para adiantar, há quatros tipos de exchanges: direct, fanout, topic e headers. Cada uma delas possui sua importância e definição de funcionamento. Citaremos exemplos práticos, para melhor compreender.

AMQP: Advanced Message Queuing Protocol é um protocolo especifico para comunicação baseada em mensagens. Não é uma regra, embora atualmente os principais message brokers implementam este protocolo.

No exemplo acima, a aplicação A não precisa se preocupar se a aplicação B vai estar disponível no momento em que ela enviar o evento.

Os eventos gerados podem ser persistidos em disco pelo Message Broker. Isso é opcional e você define no momento da criação da queue, mas, com certeza, você vai configurar para que isso aconteça, afinal você não quer que nenhuma mensagem seja perdida caso o Message Broker seja reiniciado.

Caso o consumer não consiga confirmar a leitura da mensagem (ack) a mesma continuará enfileirada até que em outro momento consiga confirmar a leitura.

Baixo acoplamento. A aplicação A nem sabe como a aplicação B foi desenvolvida, se foi com C#, JavaScript, Ruby ou seja lá qual for a linguagem. A única responsabilidade da aplicação A é comunicar que houve um evento e que o mesmo deve ser integrado quando possível.

Desvantagens:

Um dos principais contras desse tipo de arquitetura é justamente a entrada de novos componentes de infraestrutura, como servidores e storage para atender o cluster de mensageria e, como consequência, o custo do seu projeto pode ter um incremento que precisa ser considerado.

Qual escolher?

Hoje existem várias alternativas para implementar em sua empresa. Vamos falar de alguns.

Com dezenas de milhares de usuários, o RabbitMQ é um dos corretores de mensagens de código aberto mais populares. Do T-Mobile ao Runtastic, o RabbitMQ é usado mundialmente em pequenas startups e grandes empresas.

O RabbitMQ é leve e fácil de implantar no local e na nuvem. Ele suporta vários protocolos de mensagens. O RabbitMQ pode ser implantado em configurações distribuídas e federadas para atender aos requisitos de alta escala e alta disponibilidade.

O RabbitMQ é executado em muitos sistemas operacionais e ambientes de nuvem e fornece uma ampla variedade de ferramentas de desenvolvedor para as linguagens mais populares.

Recursos

 

Somente o IBM® MQ protege seus negócios contra dados incorretos e erros de aplicativo com entrega de mensagens exatamente uma vez.

Este permite a conexão de aplicativos e micros serviços em datacenters privados, em ambientes híbridos ou multi nuvem e na borda de sua empresa. Ao contrário de seus concorrentes, o IBM MQ nunca perderá uma mensagem ou entregará uma mensagem mais de uma vez.

É possível também se conectar a diversos sistemas com suporte para enfileiramento de mensagens, eventos ou PubSub e transações. Uma equipe dedicada do IBM MQ está disponível para ajudá-lo, juntamente com uma grande comunidade de usuários.

Recursos

 

 

O Apache Kafka é uma plataforma de streaming de eventos distribuídos de código aberto usada por milhares de empresas para pipelines de dados de alto desempenho, análise de streaming, integração de dados e aplicativos de missão crítica.

Permite o suporte a casos de uso de missão crítica com pedidos garantidos, perda zero de mensagens e processamento eficiente exatamente uma vez.

Milhares de organizações usam Kafka, de gigantes da internet a fabricantes de automóveis e bolsas de valores. Mais de 5 milhões de downloads únicos vitalícios.

Kafka é um dos cinco projetos mais ativos da Apache Software Foundation, com centenas de encontros ao redor do mundo. Além também de possuir uma documentação rica, treinamento online, tutoriais guiados, vídeos, projetos de amostra, Stack Overflow, etc.

Recursos

 

O FioranoMQ integra diversos sistemas de TI de forma transparente e segura, melhorando a eficiência operacional, a agilidade dos negócios e o desempenho.

Com suporte abrangente para comunicação, conectividade e transformação baseadas em padrões, o servidor FioranoMQ JMS minimiza as dependências proprietárias. Ele fornece um poderoso backbone de comunicação que pode ser estendido facilmente, permitindo a entrega em tempo real de dados abrangendo vários aplicativos, plataformas, parceiros e clientes.

Fiorano é o middleware de mensagens escolhido para apoiar operações de missão crítica para líderes globais em todo o mundo, oferecendo uma nova geração de solução de alto desempenho e baixa latência para a empresa digital.

Recursos

 

Conclusão

Apresentamos nesse artigo o que são os serviços de mensageria, os principais do mercado, seus prós e contras. Vimos que são conceitos distintos, mas ainda assim muito próximos. Agora a decisão é com você, se precisa ou se vai usar em sua empresa!

Referências

https://www.rabbitmq.com/

https://www.ibm.com/products/mq

https://kafka.apache.org/

https://www.fiorano.com/products/fiorano_mq

https://imasters.com.br/devsecops/mensageria-nao-e-um-bicho-de-7-cabecas

https://www.dinamize.com.br/blog/por-que-voce-deveria-utilizar-mensageria-na-aplicacao/

 

 

Compartilhe

Subscribe
Notify of
guest

2 Comentários
Mais velho
Novos Mais votados
Inline Feedbacks
View all comments
Dinho Paiva
1 ano atrás

Ótimo conteúdo, parabéns.

Subscribe to our Newsletter

Receive tips on technology, innovation, and other inspirations.

2
0
Would love your thoughts, please comment.x