Skip to content

Estilos e Padrões Arquiteturais - Parte 4

1. Versionamento

Versão Data Descrição Autor(es)
1.0 22/03/2022 Abertura do documento Vitor Lamego
1.1 22/03/222 Adição do resultado dos estudos Vitor Lamego
1.1.1 28/03/222 Revisão por pares João Moura e Brenno

2. Introdução

Conforme conteúdo estudado na disciplina, o assunto de "Estilos e Padrões Arquiteturais" foi dividido em algumas partes para melhor divisão e compreensão. Sendo assim, esse documento é responsável pela documentação dos assuntos vistos na última parte, sendo apresentado o estilo arquitetural orientado a eventos e orientado a serviços.

3. Estilo Arquitetural Orientado a Eventos

Durante a disciplina, foi definido que a arquitetura de software é responsável por padronizar a estrutura que será implementada em um determinado software. Sabendo disso, iremos abordar alguns pontos importantes relacionados ao Estilo Arquitetural Orientado a Eventos. Para isso, é importante entender que um evento é tudo aquilo que representa uma mudança significativa no estado do software em questão, podendo ter uma origem interna, algum clique por parte do usuário, ou externa com alguma informação recebida do servidor [1]. A principal diferença entre um evento e uma entrada qualquer é que o evento está fora de controle do processo que o manipula. [2]

Portanto, a arquitetura orientada a eventos acaba sendo voltada para o design de aplicações, e hoje em dia esse estilo de arquitetura pode ser implementado facilmente por qualquer framework que esteja sendo utilizado para o projeto. Para a efetiva implementação do estilo em questão é fundamental a presença de alguns componentes que lidam com a captura de evento, comunicação, processamento e persistência, sendo detalhado mais a frente a importância de cada um dentro dessa arquitetura. [1]

De forma básica, o seu funcionamento consiste em um evento ser publicado em um determinado barramento ou alguma fila e os serviços que possuem interesse nesse determinado evento consomem e reagem [3]. Para isso, existem dois diferentes modelos de eventos que são bastante utilizados, e que serão detalhados a seguir:

  1. Pub/Sub: Assim que um evento é recebido, ele é enviado para todos os assinantes, naquele momento, daquele determinado evento.
  2. Streaming de Eventos: Os eventos ficam armazenados em um registro, sendo assim os consumidores não precisam se inscrever naquele determinado evento, podendo acessar os registros armazenados e reagir a qualquer evento que já tenha ocorrido a qualquer momento.

Os padrões Observer e State, incluídos no grupo de padrões GoF's Comportamentais são exemplos de utilização do padrão arquitetural orientado a eventos. Mais detalhes sobre esses padrões podem ser encontrados no documento de GoFs Comportamentais.

Pontos Positivos

A partir das explicações dadas e dos estudos feitos, pode-se perceber que existem algumas vantagens na utilização desse determinado estilo arquitetural no projeto. Alguns dos benefícios serão listados a seguir:

  1. Baixo acoplamento: Os produtores de evento não sabem que os consumidores estão detectando os eventos e muito menos o que está sendo feito como resposta
  2. Capacidade de adaptação: A mudança de estados pode ser muito bem controlada a partir do consumo de eventos na aplicação, podendo ser feita tomadas de decisões em tempo real.
  3. Escalabilidade: A sua evolução acaba sendo uma tarefa muito simples, além de fornecer uma capacidade de resposta muito melhor para o projeto, aumentando a escalabilidade.

4. Estilo Arquitetural Orientado a Serviços

Antes de falarmos sobre a arquitetura orientada a serviços, é bom entendermos o que seria um serviço. Portanto, serviço é uma unidade ou conjunto de funcionalidades de um software independente, sendo desenvolvida para executar uma tarefa específica.

O estilo arquitetural orientado a serviços consiste em um tipo de design em que os componentes são reutilizáveis a partir do uso de algumas interfaces de serviços com uma linguagem de comunicação comum em uma rede [4]. Foi a partir dessa nova arquitetura de software que as empresas conseguiram ter um acesso mais democrático e viável a servidores remotos que estão fora da própria organização, além de permitir que as empresas e organizações tornem acessíveis as suas informações para outros programas a partir da publicação de uma interface de WebService [2]. Resumidamente, a arquitetura orientada a serviços integra componentes de software que foram implantados e mantidos separadamente, permitindo que trabalhem juntos para formar aplicações que funcionam em sistemas diferentes [4].

Falando um pouco mais sobre o funcionamento do estilo arquitetural orientado a serviços, a comunicação entre serviços é feita por um sistema de "baixo acomplamento" o que permite que a conexão entre os seus componentes seja mais simples por não possuírem dependência entre si, o que também permite a reutilização desses mesmos serviços em outros projetos. Antigamente, a cada projeto que se fazia necessário a utilização de serviços era feito um processo complexo de conexão da aplicação que incluía vários processos e fases que davam certo trabalho, também conhecido como modelo monolítico.

Pontos Positivos

Alguns pontos positivos da utilização desse estilo de arquitetura em comparação ao estilo monolítico são:

  1. Flexibilidade: Como comentado anteriormente, a reutilização dos serviços permite a criação de novas aplicações de maneira muito mais rápida
  2. Fácil manutenção: Os serviços são independentes, portanto é possível realizar atualizações e modificações sem comprometer outros serviços
  3. Disponibilidade: os recursos estão disponíveis para todos.

5. Referências

[1] RedHat. O que é uma arquitetura orientada por eventos. RedHat - Arquitetura Orientada a Eventos. Acesso em: 22 mar. 2022.

[2] SERRANO, Milene. Arquitetura e Desenho de Software. AULA - ESTILOS E PADRÕES ARQUITETURAIS IV. Acesso em: 22 mar. 2022.

[3] Medium. EDA - Arquitetura Orietada a Eventos. Medium - Arquitetura Orientada a Eventos. Acesso em: 22 mar. 2022.

[4] RedHat. O que é arquitetura orientada a serviços (SOA)?. RedHat - Arquitetura Orientada a Serviços. Acesso em: 22 mar. 2022.