3 Padrões de Arquitetura de Software Simplificados e Exemplificados
Vinicius Savegnago
Posted on February 10, 2023
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:
- 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.
- View:
- Responsável por exibir os dados para o usuário. Fornece a interface do usuário e recebe entradas do usuário.
- Controller:
- Fica entre os componentes Model e View. Recebe entradas do usuário da View, processa essas entradas e atualiza o Model de acordo.
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:
- Model:
- A biblioteca de música, incluindo as músicas, playlists e metadados. Armazena e manipula os dados.
- 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.
- 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.
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:
- Serviço de autenticação de usuário:
- Responsável por gerenciar o login e autenticação dos usuários.
- 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.
- 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.
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:
- Formatação do texto
- Verificação ortográfica
- 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
Posted on February 10, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
September 17, 2024
May 8, 2024