Matheus Castiglioni

Arquitetura em Camadas

Dando continuidade na série sobre estilos de arquitetura, nesse post iremos falar sobre o estilo de arquitetura em camadas.

Caso você tenha perdido os posts anteriores, dê uma olhada em:

Arquitetura em camadas

O estilo de arquitetura em camadas (layered architecture e também conhecida como n-tiered architecture, onde N é o número de camadas) é um dos mais conhecidos. Esse estilo é de fato um padrão para a maioria das aplicações e serviços, isso porque o mesmo trata-se de um estilo muito simples, familiar e de baixo custo para implementação.

Também é um jeito natural de se desenvolver aplicações ou serviços devido à lei de Conway.

Topologia

A topologia desse estilo de arquitetura pode ser representada da seguinte forma:

Topologia do estilo de arquitetura em camadas

Existem outras variações dessa topologia (por exemplo com uma camada de serviços ou agrupamentos de camadas em módulos), ou seja, mais ou menos camadas existirão. Porém, essas quatros comumente estão presentes em aplicações ou serviços por aí.

Cada camada tem uma função e responsabilidade específica dentro da arquitetura, por exemplo:

Cada camada forma uma abstração em volta da sua necessidade e trabalho à ser realizado dentro de uma requisição em particular. Além disso, barreiras devem existir de forma implícita entre elas, ou seja, a camada de apresentação não deveria saber ou se preocupar em como recuperar informações de um cliente ou produto (o mesmo aplica-se para as demais camadas presentes na arquitetura).

Além disso é muito importante definir o fluxo de cada camada, ou seja, quais estão abertas ou fechadas.

Exemplo das camadas fechadas

Nesse exemplo acima todas as camadas estão fechadas, mas, o que isso quer dizer? Dizer que uma camada está aberta ou fechada refere-se em informar se o fluxo pode ou não pular tal camada dentro do fluxo da requisição, sendo assim, camadas fechadas devem processar as requisições através da sua ordem hierarquica.

Exemplo de fluxo em camadas fechadas

Repare que nesse exemplo acima como todas as camadas estão fechadas o fluxo deve ocorrer exatamenta na forma em que elas foram definidas e posicionadas hierarquicamente, ou seja:

  1. A camada de apresentação fala com a camada de negócio
  2. A camada de negócio fala com a camada de persistência
  3. A camada de persistência fala com a camada do bando de dados

Exemplo de fluxo em camadas abertas

Já nesse outro exemplo acima podemos ver uma variação com uma nova camada, a camada de serviço. E também como a camada de serviço está marcada como aberta, isso quer dizer que a mesma não é obrigatória em todas as requisições ou fluxos, dessa forma:

  1. A camada de apresentação fala com a camada de negócio
  2. A camada de negócio fala com a camada de serviço ou persistência
  3. A camada de serviço fala com a camada de persistência
  4. A camada de persistência fala com a camada do bando de dados

Avaliações das características arquiteturais

Cada estilo de arquitetura possuí uma série de características arquiteturais, um estilo favorece uma característica A e desfavorece uma característica B. Outro estilo favorece B e desfavorece A, etc… Já falamos sobre tais características arquiteturais.

Para que não seja necessário avaliar todas as possibilidades vamos emprestar a tabela de avaliações citada em Fundamentos da arquitetura de sistemas (existem várias outras características não cobertas pela tabela) onde vamos avaliar algumas essenciais e principais.

No meu ponto de vista dei as seguintes notas para cada característica (troquei as estrelas por números de 0 à 5):

Características arquiteturaisAvaliação (0-5)
Tipo de particionamentoTécnico
Numéro de quantas1
Deploiabilidade1
Elasticidade1
Evolução1
Tolerança à falhas1
Modularidade1
Custo geral5
Performance2
Confiabilidade2
Escalabilidade1
Simplicidade5
Testabilidade3

Obs: Não se preocupe com “tipo de particionamento” e “número de quantas”, iremos ver mais sobre ambos em post’s futuros.

Conclusão

Nesse post demos continuidade na série sobre estilos arquiteturais e falamos sobre o estilo de arquitetura em camadas (layered architecture).

Os posts serão mais focados em teoria, ou seja, irão apresentar e trazer os conceitos. Se você quer algo mais prático fique de olho no meu canal do Youtube onde os estilos de arquiteturas serão implementados na prática.

Abraços, até a próxima.

Matheus Castiglioni

Matheus Castiglioni

Apaixonado pelo mundo dos códigos e um eterno estudante, gosto de aprender e saber um pouco de tudo, aquela curiosidade de saber como tudo funciona, tento compartilhar o máximo de conhecimentos adquiridos e ajudar todos aqueles que sou capaz.

comments powered by Disqus