DEV Community

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

Posted on

2

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

Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

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

Okay