Skip to content

Framework

Victor Arnaud edited this page Jun 23, 2017 · 9 revisions

Contextualização sobre o 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.


Nicho de aplicação


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.


Descrição Arquitetural


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.


Referências