DEV Community

Guilherme Manzano
Guilherme Manzano

Posted on

18 1

Padrões e Estilos de Arquitetura de Software

Arquitetura é um conjunto de partes que compõem o sistema e o ambiente em que está inserido, suas responsabilidades e seus relacionamentos.

Image description

Estilos e Padrões Arquiteturais de Software

Os sistemas seguem um estilo de organização estrutural, ou seja, são como "templates" para arquiteturas concretas que expressam uma organização estrutural, apresentando um conjunto pré-definidos de subsistemas e suas responsabilidades.

Um padrão arquitetural é uma solução que já foi estudada, testada e documentada de um problema recorrente. O modelo ajuda na tomada de decisões do projeto de software, como qual será sua utilidade e as funções e relacionamentos de cada subsistema, ou seja, é quem define a estrutura fundamental do programa.

Segue um resumo dos principais estilos e padrões de arquitetura de software:

  • Camadas: estrutura aplicações que podem ser decompostas em grupos de subtarefas hierarquicamente. Cada camada oferece serviço à camada acima dela, e serve como cliente da camada inferior. Suas vantagens são: permite particionar problemas complexos em uma sequência de passos incrementais; mudanças em uma camada afetam, no máximo, duas camadas adjacentes; permite projetos baseados em níveis crescentes de abstrações; suas desvantagens são: é difícil encontrar níveis corretos de abstração; nem todos os sistemas são facilmente estruturas em forma de camadas. Exemplo: Modelo OSI;

  • Cliente-Servidor: é baseado em programas servidores (aguarda mensagens, executa serviços e retorna resultados) e programas clientes (estabelece conexão, envia mensagens para servidor, aguarda mensagens de resposta). Vantagens: utilização dos recursos do servidor; escalabilidade; aumentando a capacidade computacional do servidor; Desvantagens: aumenta a complexidade e os custos de comunicação;

  • Tubos e filtros: divide a tarefa entre várias etapas de processamento sequencial, pois a saída de uma etapa é a entrada da etapa seguinte. Cada etapa de processamento é implementada pelo filtro, que consome e entrega os dados de forma incremental, em vez de todos os dados de uma só vez. O fluxo de dados é implementado pelos tubos. Exemplo: compilador; Vantagens: flexibilidade na troca de filtros e recombinação; eficiência em processamento em paralelo; vários filtros consumindo e produzindo dados em paralelos. Desvantagens: gerenciamento de erros e ausência de um estado global compartilhado;

  • Micro serviços: refere-se a um estilo de arquitetura para construção de software que decompõe o domínio de negócio em pequenos blocos, transaccionalmente consistentes e com contexto próprio;

  • Publish-Subscriber: é um modelo de comunicação assíncrono e fracamente acoplado, no qual uma aplicação gera eventos que serão processados por outras aplicações que tiverem interesse nele;

  • Representational State Transfer (REST): é um estilo de arquitetura utilizado para fornecer padrões entre sistemas de computador na web, facilitando a comunicação entre os mesmos. Neste estilo, a implementação do cliente e do servidor pode ser feita de forma independente, sem que um conheça o outro. A grande vantagem é que isso permite que o código de um dos lados pode ser alterado sem afetar o outro;

  • Arquitetura Orientada a Serviços (SOA): é um tipo de design de software que torna os componentes reutilizáveis, utilizando interfaces de serviços como uma linguagem de comunicação em uma rede. Ou seja, o SOA integra os componentes de software que foram implementados e são mantidos separadamente, permitindo que eles se comuniquem e trabalhem juntos para formar aplicações que funcionam em sistemas diferentes;

  • Model-View-Controller: neste estilo a aplicação é dividida em 3 camadas - Model (contém as funcionalidades principais e os dados), View (camada de exibição dos dados aos usuários), Controller (liga a model e a view, trafegando os dados entre as camadas). Vantagens: organização clara das abstrações, permite múltiplas views em um mesmo modelo e as views são sincronizadas. Desvantagens: aumenta a complexidade;

  • Broker: estrutura sistemas distribuídos que precisam interagir através de invocação remota de serviços (desacopla servidores de clientes e coordena a comunicação entre componentes). Exemplo: serviços de busca. Vantagens: transparência de localização dos serviços, flexibilidade, portabilidade. Desvantagens: sobrecarga de processamento;

  • Arquitetura Orientada a Eventos: é um método de desenvolvimento de software para criar aplicações que se comunicam ou se integram de forma assíncrona com outras aplicações e sistemas através de eventos. Ela é composta por produtores de eventos (enviam as mensagens), canais de eventos e seus consumidores (consomem as mensagens). A utilização de canais de eventos como intermediário permite que os produtores sejam dissociados dos consumidores, permitindo assim, que eles possam agir independentemente uns dos outros (o que possibilita maior escalabilidade e tolerância a falhas). Além disso, a organização de aplicações envolvendo eventos também permite que o código seja executado de forma assíncrona e automática, sem interação do usuário;

  • CQRS (Comand and Query Responsibility Segregation): este padrão é sobre separar a responsabilidade e escrita e leitura de seus dados. A ideia é segregar as responsabilidades da aplicação em Command (operações que modificam o estado dos dados na aplicação) e Query (operações que recuperam informações dos dados na aplicação);

Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay