Arquitetura Monolítica em Camadas

Na arquitetura monolítica em camadas todo o código é dividido em camadas empilhadas. Cada camada presta serviços para a camada de cima. As aplicações para web são formadas por 3 ou 4 camadas.

Arquitetura em 3 camadas

Camada 1 : cliente ou de apresentação

Esta camada contém o código que é executado pelo programa cliente (o browser) e, portanto, fornece serviços (via página HTML) para o usuário.

Camada 2 : lógica ou de negócios

Esta camada contém o código que implementa as regras de negócio da aplicação. O algoritmo básico é o seguinte:

  1. Obter a solicitação (juntamente com os dados pertinentes) enviada pela camada 1. Tipicamente isso é feito analisando-se a requisição HTTP.
  2. Executar o que foi solicitado. Frequentemente isso implica também em solicitar para a camada 3 que dados sejam lidos e/ou gravados.
  3. Montar e enviar uma resposta para a camada 1. Tipicamente isso significa criar uma página HTML para ser incluída na resposta HTTP.

Camada 3 : dados ou persistência

Esta camada é responsável pelo armazenamento permanente dos dados. Tipicamente essa tarefa é realizada em cooperação com um banco de dados. Frequentemente o modelo de dados da camada 2 é diferente do modelo do banco de dados. O exemplo típico é a aplicação utilizar o modelo orientado a objetos e o banco utilizar o modelo relacional (como os bancos MySQL, Oracle, Postgres, etc). É precio então definir um Mapeamento Objeto-Relacional que permite a conversão dos dados de um modelo para outro.

Arquitetura em 4 camadas

Nesta arquitetura a camada 2 é separada em duas camadas. Aplicações Java EE são exemplo típico desta arquitetura.

Camada 1 : cliente ou de apresentação

Esta camada contém o código que é executado pelo programa cliente (o browser) e, portanto, fornece serviços (via página HTML) para o usuário.

Camada 2 : web

Esta camada é responsável por atender as solicitações enviadas pela camada 1 e gerar a resposta que será enviada de volta. Isso quer dizer que os algoritmos desta camada estão diretamente relacionados com a interface com o usuário.

É nesta camada que são definidas as páginas HTML da aplicação.

Camada 3 : lógica ou de negócios

Esta camada contém o código que implementa as regras de negócio da aplicação. O algoritmo básico é o seguinte:

  1. Executar o que foi solicitado pela camada 2. Frequentemente isso implica também em solicitar para a camada 4 que dados sejam lidos e/ou gravados.
  2. Enviar os dados gerados nesta camada para a camada 2.

A camada 3 não deve conter nenhum código que esteja relacionado com a interface com o usuário. Por exemplo, no código não deveria haver nenhuma referência explícita ou implícita aos protocolos HTTP e Websocket, ao conceito de página HTML ou aos formatos JSON ou XML.

Camada 3 : persistência

Esta camada é responsável pelo armazenamento permanente dos dados. Tipicamente essa tarefa é realizada em cooperação com um banco de dados. Frequentemente o modelo de dados da camada 2 é diferente do modelo do banco de dados. O exemplo típico é a aplicação utilizar o modelo orientado a objetos e o banco utilizar o modelo relacional (como os bancos MySQL, Oracle, Postgres, etc). É precio então definir um Mapeamento Objeto-Relacional que permite a conversão dos dados de um modelo para outro.

Diagrama de uma arquitetura em 4 camadas

A figura abaixo mostra um diagrama típico da arquitetura em 4 camadas.

Camadas, Computadores e Programas

Para que uma aplicação cuja arquitetura está organizada em quatro camadas possa ser executada, incluindo aí o banco de dados, é importante determinar quantos programas e quantos computadores estão envolvidos.

Não há única resposta pois há vários cenários possíveis. A seguir são descritos os cenários mais comuns.

Cenário A : 2 computadores e 3 programas

Neste cenário a aplicação está organizada assim:

  • computador 1:
    • contendo o programa navegador (browser) para executar o código da camada cliente.
  • computador 2:

    • contendo o programa servidor para executar as camadas web, de negócios e de persistência;
    • contendo o programa SGBD (Sistema Gerenciador de Bases de Dados).

    É fácil perceber que neste cenário o lado servidor da aplicação, incluindo o banco de dados, está todo concentrado em um único computador. Isso pode ser ruim porque a máquina pode não dar conta da quantidade de processamento que precisa realizar e também porque se houver alguma falha de hardware toda a aplicação ficará indisponível.

Cenário B : 3 computadores e 3 programas

Neste cenário a aplicação está organizada assim:

  • computador 1:
    • contendo o programa navegador (browser) para executar o código da camada cliente.
  • computador 2:
    • contendo o programa servidor para executar as camadas web, de negócios e de persistência;
  • computador 3:
    • contendo o programa SGBD (Sistema Gerenciador de Bases de Dados).

O cenário B reconhece que em algumas aplicações o uso de banco de dados pode ser o fator predominante em termos de carga de processamento, especialmente se o volume de dados for muito grande e/ou as consultas forem bastante complexas.

Algumas aplicações tem a sua principal carga de processamento relacionada à manipulação dos dados enviados pela camada cliente. O processamento de uma imagem, por exemplo, pode demandar algoritmos sofisticados que monopolizam os recursos do computador.

Cenário C : 3 computadores e 4 programas

Neste cenário a aplicação está organizada assim:

  • computador 1:
    • contendo o programa navegador (browser) para executar o código da camada cliente.
  • computador 2:
    • contendo o programa servidor de requisições HTTP ou Websocket para executar a camada web
    • contendo o programa servidor de aplicação para executar as camadas de negócios e de persistência;
  • computador 3:
    • contendo o programa SGBD (Sistema Gerenciador de Bases de Dados).

A separação da camada web em um programa próprio é a abordagem utilizada em aplicações JEE. A camada web é processada pelo programa chamado servlet container (por exemplo o Tomcat e o Jetty).

Cenário D : 4 computadores e 4 programas

Neste cenário a aplicação está organizada assim:

  • computador 1:
    • contendo o programa navegador (browser) para executar o código da camada cliente.
  • computador 2:
    • contendo o programa servidor de requisições HTTP ou Websocket para executar a camada web
  • computador 3:
    • contendo o programa servidor de aplicação para executar as camadas de negócios e de persistência;
  • computador 4:
    • contendo o programa SGBD (Sistema Gerenciador de Bases de Dados).

A utilização de dois computadores para executar a camada web e as camadas de negócios e de persistência também é indicada para as aplicações JEE.

O princípio fundamental deste cenário é que cada camada tem uma finalidade própria e seu funcionamento não deveria ser afetado pelos algoritmos que estão sendo executados ao mesmo tempo nas outras camadas. É preciso lembrar que em aplicações para web o mais comum é haver muitos usuários usando a aplicação ao mesmo tempo.

Latência e Taxa de Transferência

Para qualquer aplicação o conceito de velocidade é sempre importante. Quanto mais rápido melhor.

A velocidade pode ser medida pela taxa de transferência (throughput) em que os dados são transmitidos. Quanto maior a quantidade de dados enviadas por unidade de tempo maior será a taxa de transferência.

A velocidade também pode ser medida pela latência (latency) que é o tempo que demora entre o momento em que foi feita uma solicitação de dados e o momento que esses dados começam a chegar.

Ambos os critérios, taxa de transferência e latência, influenciam a percepção que o usuário tem sobre a usabilidade de uma aplicação.

A organização de uma aplicação em camadas traz benefícios tanto do ponto de vista da Engenharia de Software (qualidade do código advindo da modularidade) quanto da sua velocidade. Tanto a latência (por exemplo, tempo que um usuário tem que esperar para começar a receber a página solicitada) quando a taxa de transferência (quantidade de usuários atendidos por unidade de tempo) são melhoradas. Estes dois fatores justificam o aumento da complexidade que a arquitetura em cadamadas trás para o desenvolvedor.

Leitura Sugerida
Modelo em 3 camadas
Post: Arquiteturas em 2-3-4-n camadas

results matching ""

    No results matching ""