-
Notifications
You must be signed in to change notification settings - Fork 0
Framework
É um framework desenvolvido em ruby que foi feito para intermediar a utilização de serviços do RabbitMQ de maneira rápida e fácil, serviços esses de comunicação entre componentes/serviços por meio de diferentes tipos de contexto de troca de mensagens, podendo ser simples, através de publish e subscribe entre outros, o framework encapsula a complexidade da comunicação para que o cliente possa utiliza-la sem se preocupar com sua implementação ou como ela funciona.
Muitas aplicações web iniciam suas vidas como projetos únicos que podem ser contidos em uma única pasta de projeto e um único repositório git que, inicialmente, facilita o desenvolvimento, teste e escala. Esse padrão é comumente conhecido como uma aplicação monolítica.
Em suma, quando as aplicações são muito grandes e complexas, essas aplicações monolíticas geralmente são substituídas após uma arquitetura de microserviço, que decompõe aplicativos grandes em aplicações menores, desacopladas, minimalistas e especializadas que são projetadas para fazer uma coisa bem.
Um dos principais desafios que enfrentamos ao desenvolver uma aplicação usando o paradigma do microservices é como vamos distribuir e comunicar esses microservices. O RabbitMQ pode solucionar esse problema já que ele conecta e dimensiona microserviços.
Cada microservice tem a responsabilidade de fazer uma tarefa simples e retornar o resultado ao sistema de mensagens subjacente para que outro microservice continue no trabalho.
A comunicação entre os microservices é feita através de filas RabbitMQ.[3]
O framework proposto Pigeon tem como finalidade facilitar a utilização dos tipos de comunicação suportados pelo RabbitMQ para que o usuário possa de maneira rápida escolher o tipo de comunicação e usa-lo sem se preocupar com a implementação do mesmo. Isso irá facilitar comunicação entre microserviços.
A arquitetura utilizada foi orientado a arquitetura distribuida na qual se utiliza de um mediador intermediando o processo de comunicação para que o cliente utilize de um serviço do RabbitMQ de maneira fácil e rápida.
Temos como hot spots os tipos de contexto de troca de mensagens podendo ser simples ou de publish e subscribe podendo futuramente ser extendido para novos tipos de comunicação. O principal padrão de projeto utilizado foi o command que controlar as chamadas a um determinado componente, modelando cada requisição como um objeto. Permitir que as operações possam ser desfeitas, enfileiradas ou registradas através de comandos. A ideia do Command é abstrair um comando que deve ser executado, pois não é possível executá-lo naquele momento (pois precisamos por em uma fila ou coisa do tipo) algo que se encaixa perfeitamente com o contexto do RabbitMQ.
Além dos hot spots que são genéricos, adaptáveis e normalmente são classea abstratas, no nosso caso a classe Message, temos também alguns frozen spots que são fixos e normalmente é o core da aplicação, tornando o projeto uma caixa cinza.
- 1: Ruby
- 2: RabbitMQ
- 3: Microservice