Skip to content

Framework

Victor Arnaud edited this page Jun 25, 2017 · 2 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.[1]

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.

Temos como hot spots os tipos de contexto de troca de mensagens podendo ser simples, publish e subscribe, entre outros, podendo futuramente ser extendido para novos tipos de comunicação. O principal padrão de projeto utilizado foi o strategy, a ideia fundamental desse padrão é possibilitar facilmente a variação do algoritmo a ser utilizado na resolução de um problema, no nosso caso varia os tipos de comunicação.

Além dos hot spots que são genéricos, adaptáveis e normalmente são classea abstratas, no nosso caso a classe producerStrategy e consumerStrategy, temos também alguns frozen spots que são fixos e normalmente é o core da aplicação, por exemplo a classe connectionRabbitMQ, tornando o projeto uma caixa cinza.


Referências


Clone this wiki locally