Azure Service Bus: Enviando mensagens na Nuvem
Neste artigo será apresentado o sistema de mensageria da plataforma de nuvem da Microsoft, o Azure Service Bus, que fornece um mecanismo seguro e escalável de processamento de mensagens e integração entre aplicações.
Um fato interessante sobre o desenvolvimento de aplicações é que em poucas ocasiões elas irão funcionar sozinhas e isoladas de outras aplicações.
E saber que a utilização de sistemas distribuídos está influenciando cada dia mais o norte do desenvolvimento de novas aplicações, e que mesmo nas aplicações legadas e monolíticas é necessário pensar em como será o reaproveitamento e a integração com essas novas aplicações. Logo a forma como será construída a integração pode interferir positivamente ou negativamente no resultado do projeto.
Historicamente existem algumas soluções já adotadas pelo mercado para realizar essas integrações, sendo elas: banco de dados compartilhado, transferência de arquivos, invocação remota de procedimento (RPC) e mensageria.
Cada uma dessas possui vantagens e desvantagens, este artigo é sobre a utilização de mensageria, mais especificamente sobre a funcionalidade do Microsoft Azure chamada Service Bus, que é um sistema genérico de mensagens desenvolvido pela Microsoft.
Atualmente, com a popularização dos dispositivos móveis e a famosa internet das coisas, muitos desenvolvedores estão começando a escrever suas aplicações distribuídas pensando em utilizar algum sistema com o foco em fila de mensagens e processamento assíncrono, e isto traz como benefício justamente a capacidade de escalabilidade horizontal e uma manutenção mais simples para o projeto, além da capacidade de dimensionar as cargas de trabalho mais facilmente, facilitando assim a construção de novos recursos.
Toda essa vantagem para a condução do projeto está em colocar uma camada intermediaria entre duas ou mais aplicações, na qual a primeira aplicação apenas cria uma mensagem e coloca na fila, fazendo com que a primeira aplicação não conheça o funcionamento interno e nem acompanhe o fluxo do processo da segunda aplicação.
A segunda aplicação é responsável pelo processamento da mensagem, e se for necessário responder de volta a primeira aplicação, é gerada outra mensagem com o resultado do processamento e esta é colocada em uma outra fila.
Benefícios da mensageria
Pode parecer confuso em um primeiro contato com essa abordagem, mas isso está alinhado com o que a computação em nuvem prega. Podemos ter, em um determinado instante, uma instância da aplicação A e cinco da aplicação B, e em outro instante três instâncias da aplicação A e dez da aplicação B.
As filas de mensagens atuam como laços com a função de amarrar essas aplicações. É possível identificar os seguintes benéficos dessa abordagem:
Baixo acoplamento: é extremamente complicado prever qual o escopo que o projeto irá adquirir. Porém com a introdução dessa camada intermediária entre as aplicações, e definindo uma interface comum para a comunicação, é possível estender essas aplicações de forma independente, sendo que a única premissa é obedecer à interface comum da mensagem.
Redundância: uma característica das filas de mensagens é a capacidade de manter a mensagem na fila até que ela seja processada. É possível que uma falha transiente impeça que a mensagem possa ser processada corretamente, sendo assim, é possível que o sistema de mensageria mantenha uma cópia da mensagem e tente novamente em um outro momento futuro.
Escalabilidade: sabendo que as mensagens estão armazenadas em um sistema intermediário, e se houver a necessidade de expandir a capacidade de vasão da fila, é muito simples adicionar uma nova instância de consumidor, fazendo com que mais mensagens sejam processadas em um menor espaço de tempo.
Sem a necessidade de mudar algum trecho de código, ou alterar algum arquivo de configuração, sendo simplesmente um processo de copiar a aplicação e subir em um novo processo.
Resiliência: a resiliência é a capacidade de resistir a momentos de falhas, e não deixar de entregar uma resposta ao usuário. Uma parte da aplicação pode falhar, mas isso não irá deixar toda a sua aplicação inoperante.
Esse cenário para as filas de mensagens seria o equivalente a dizer que se a aplicação B ficar indisponível, a aplicação A não será afetada, e as suas mensagens ficarão armazenadas na fila até que a aplicação B recupere o funcionamento normal, e como existe uma quantidade de mensagens anormal na fila, é possível criar novas instâncias da aplicação B, visando recuperar o tempo perdido com a indisponibilidade parcial da solução.
Garantia de ordenamento: em diversas ocasiões é necessário garantir que o processamento das mensagens obedeça a uma determinada ordem. E esse ordenamento é intrínseco ao sistema de fila.
Comunicação assíncrona: existem ocasiões em que é interessante definir um horário especifico para o processamento da mensagem. Por esse motivo as filas de mensagens permitem que sejam definidos os horários de processamento das mensagens, permitindo que seja colocada uma mensagem na fila e o seu processamento ser adiado para um outro momento futuro.
Service Bus
Service Bus é o segundo serviço de mensagens em fila liberado pelo time do Microsoft Azure, historicamente falando, sendo que além da fila essa plataforma oferece ainda tópicos, retransmissão, hubs de eventos e um outro tipo de namespace chamado hub de notificação que não está no escopo deste artigo.
Este serviço é rico em recursos e maduro o suficiente para prover um meio de desacoplamento de sistemas para troca de informações de forma independente.
O Service Bus pode ser hospedado no Microsoft Azure ou dentro da sua infraestrutura local." [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo