DEV Community

Cover image for 3 Padrões de Arquitetura de Software Simplificados e Exemplificados
Vinicius Savegnago
Vinicius Savegnago

Posted on

3 Padrões de Arquitetura de Software Simplificados e Exemplificados

Como já abordado no post anterior, Arquitetura de Software é um aspecto crítico do desenvolvimento de software que envolve a definição da estrutura geral de um sistema para atender aos requisitos e restrições do problema a ser resolvido. Diversas vezes esses problemas são muito parecidos, fazendo assim possível aplicar determinados tipos de arquitetura existentes.

Hoje eu trago três padrões comuns de arquitetura de software, criados e utilizados para servir um propósito específico.

1. Model-View-Controller (MVC)

O MVC oferece uma clara separação de preocupações, o que torna o código mais fácil de entender, manter e modificar. Este padrão é amplamente utilizado no desenvolvimento de aplicativos desktop e web.

Este padrão separa a aplicação em três componentes principais:

  1. Model:
    • Os dados e a lógica de negócios da aplicação. Armazena e manipula dados e define as regras para como os dados podem ser usados.
  2. View:
    • Responsável por exibir os dados para o usuário. Fornece a interface do usuário e recebe entradas do usuário.
  3. Controller:
    • Fica entre os componentes Model e View. Recebe entradas do usuário da View, processa essas entradas e atualiza o Model de acordo.

Image description

Vantagens

  • Separação de preocupações, dividindo a aplicação em três componentes distintos.
  • A apresentação de dados é separada das regras de negócio e do controle.

Desvantagens

  • Pode se tornar complexo quando aplicado a aplicações grandes e complexas.
  • Pode haver um forte acoplamento entre os componentes, o que pode tornar a aplicação mais difícil de manter e modificar.

Exemplo em um cenário real

Uma aplicação de player de música:

  1. Model:
    • A biblioteca de música, incluindo as músicas, playlists e metadados. Armazena e manipula os dados.
  2. View:
    • A interface do usuário do player de música, incluindo playlists, capas de álbuns e informações sobre a música. Exibe os dados para o usuário e recebe entradas do usuário, como tocar, pausar, pular e embaralhar.
  3. Controller:
    • O código que manipula as entradas do usuário, como tocar, pausar, pular e embaralhar, e atualiza o Model.

2. Arquitetura de Micro-serviços

Projetada para grandes aplicações de software, quebradas em pequenos serviços independentes que se comunicam entre si por uma rede. Cada micro-serviço é responsável por uma função específica, como autenticação de usuários, gerenciamento de catálogo de produtos ou gerenciamento de pedidos.

Image description

Vantagens

  • É possível escalar individualmente cada serviço, de acordo com as necessidades, sem afetar o funcionamento dos outros serviços.
  • Cada serviço pode ser desenvolvido, implantado e atualizado independentemente, o que facilita a manutenção e evolução da aplicação.
  • Se um serviço falhar, isso não afetará o funcionamento dos outros serviços, o que aumenta a disponibilidade e robustez da aplicação.

Desvantagens

  • O gerenciamento e integração de vários serviços pode ser complexo e desafiador.
  • A comunicação entre serviços através de uma rede pode resultar em latência e impactar o desempenho da aplicação.

Exemplo em um cenário real

Uma aplicação de e-commerce:

  1. Serviço de autenticação de usuário:
    • Responsável por gerenciar o login e autenticação dos usuários.
  2. Serviço de catálogo de produtos:
    • Gerencia a listagem de produtos disponíveis para compra, incluindo informações sobre preços, estoques e descrições.
  3. Serviço de gerenciamento de pedidos:
    • Responsável por gerenciar o processamento de pedidos, incluindo pagamentos, envios e atualizações do estoque.

3. Arquitetura Pipe-Filter

Um modelo que divide a aplicação em pequenos componentes conectados entre si, como tubos e filtros. Cada componente é responsável por realizar uma tarefa específica, como transformar ou filtrar dados. Os dados são passados de um componente para o outro em uma sequência, como se estivessem passando de um tubo para o outro.

Image description

Vantagens

  • Permite que os componentes sejam adicionados ou removidos facilmente, permitindo que a aplicação cresça de acordo com as necessidades de processamento de dados.
  • Cada componente é projetado para ser reutilizável, o que significa que ele pode ser facilmente reaproveitado em outras aplicações.
  • A separação clara dos componentes torna a aplicação mais fácil de manter e modificar.

Desvantagens

  • Pode se tornar complexa se aplicada a aplicações muito grandes e de alta complexidade.
  • O processamento em paralelo dos componentes pode resultar em latência, o que pode afetar a performance da aplicação.

Exemplo em um cenário real

Um editor de texto:

Os dados de entrada (texto bruto) são processados através de uma série de filtros, cada um responsável por realizar uma tarefa específica, sendo elas:

  1. Formatação do texto
  2. Verificação ortográfica
  3. Contagem de palavras

Cada filtro recebe o resultado do filtro anterior e produz uma saída para o próximo filtro até a saída final.

Finalizando...

Este foram três padrões comuns na arquitetura de software, trarei outros num futuro próximo.

Espero que isso ajude você de alguma maneira! 😄

Happy Coding!

Links úteis:
MVC
microservices
pipes-and-filters

Top comments (0)