O que é uma arquitetura de N camadas?

Concluído

Uma arquitetura de N camadas divide um aplicativo em camadas lógicas e camadas físicas. O N representa o número de camadas físicas em que o aplicativo é separado, o que geralmente se correlaciona com o número de camadas. Poderíamos ter uma arquitetura de duas camadas (cliente-servidor) ou até mesmo uma arquitetura de cinco camadas, embora seja comum e muitas vezes melhor manter o número de camadas em quatro ou menos.

Vamos falar sobre o que compõe as camadas.

O que são camadas?

As camadas separam logicamente o código do aplicativo que compõe um aplicativo. Cada camada tem uma responsabilidade específica, como tratamento de solicitações de usuários, execução da lógica de negócios ou o tratamento do armazenamento de dados.

Ao separar um aplicativo nessas camadas lógicas, tratamos cada camada independentemente. Essa separação torna os componentes do aplicativo modulares e nos permite uma manutenção mais fácil do aplicativo. Podemos otimizar o aplicativo para cada responsabilidade. A camada de tratamento de solicitações da Web se concentra na sua tarefa principal: tratamento de solicitações da Web. Ela não trata do armazenamento de dados nem da execução da lógica de negócios. Por outro lado, a camada de acesso a dados tem como foco a otimização da comunicação com o armazenamento de dados e desconsidera detalhes sobre como ela apresenta os dados ao usuário. Esse conceito de limitar o foco em recursos específicos é chamado de separação de preocupações.

Aqui está um diagrama que mostra as camadas em uma arquitetura comum de N camadas. Cada camada lida com um aspecto do aplicativo. A camada de negócios gerencia a comunicação entre a camada de interface do usuário e a camada de acesso a dados.

Visualization of layers.

O que são camadas?

As camadas representam a separação física das partes de seu aplicativo em recursos de computação separados. Em geral, cada camada física executa uma camada lógica do aplicativo.

Separar a arquitetura em camadas físicas proporciona vários benefícios:

  • Os componentes do aplicativo podem ser dimensionados separadamente adicionando recursos a cada camada.
  • O aplicativo pode ser mais resiliente com a adição de balanceamento de carga para detectar recursos com falha e redirecionar as solicitações para sistemas íntegros.
  • O aplicativo pode ser mais seguro pela restrição da comunicação de rede entre camadas e pela permissão apenas do acesso necessário.

A arquitetura determina que a comunicação entre camadas deve ser feita de cima para baixo. Cada camada pode se comunicar com a próxima abaixo dela, mas, em geral, não pode pular camadas. Esse design aprimora a segurança limitando a área da superfície exposta de uma camada.

Visualization of tiers.

A arquitetura de três camadas

De todas as arquiteturas de N camadas, a arquitetura de três camadas é a mais comum. As responsabilidades e os nomes de cada camada variam por aplicativo e negócios, mas um aplicativo de três camadas típico tem: uma camada de apresentação, um aplicativo ou camada intermediária e uma camada de dados. Essa arquitetura é o estilo de N camadas mais comum. No restante deste módulo, vamos referenciar um modelo de três camadas, com cada camada executando uma só camada do aplicativo e nos referir a elas como camadas.

Camada de apresentação

A camada de apresentação normalmente facilita as solicitações do usuário. Essas solicitações podem ser usuários acessando uma página da Web ou o acesso público ao seu aplicativo por meio de uma API exposta. O foco nessa camada está na experiência do usuário. Fornecendo elementos como uma interface intuitiva e garantindo uma comunicação segura entre o usuário final e o seu aplicativo.

Nesta camada você não está preocupado com os dados em si, à exceção de como eles são apresentados para o usuário. Normalmente, não ocorre nenhum processamento de dados ou acesso a dados nessa camada. Isso é responsabilidade das camadas inferiores.

Camada de aplicativo

A camada de aplicativo (também frequentemente chamada de camada intermediária) normalmente se concentra no tratamento da lógica de negócios do aplicativo. Isso pode ser o tratamento de um pedido de cliente, o acompanhamento de uma remessa ou a atualização do inventário com base nos materiais recebidos. Essa camada também é responsável pelas atividades CRUD (criar, ler, atualizar e excluir) na camada de dados. Esse também é um bom local para fazer chamadas para serviços dependentes, como APIs externas.

Essa camada não se preocupa com como as informações são apresentadas para o usuário, nem com como os dados são armazenados e recuperados. O foco está na lógica de negócios necessária para atender à solicitação que o aplicativo recebeu.

Camada de dados

Nessa camada, o foco está no armazenamento de dados. O armazenamento de dados em tabelas, arquivos ou outra mídia é responsabilidade dessa camada. Essa camada fornece uma interface (por exemplo, o T-SQL) para acessar os dados. Em uma arquitetura de três camadas, a camada de dados fornece acesso aos dados para a camada de aplicativo.

Essa camada não se concentra em como os dados são apresentados ao usuário, nem em qualquer lógica em torno dos dados. O uso de procedimentos armazenados pode ficar nessa camada, mas a maior parte da lógica referente aos dados deve ser tratada em uma camada mais alta.

Quando usar arquiteturas de N camadas

Agora que falamos sobre o que é uma arquitetura de N camadas, vamos descrever os casos de quando uma arquitetura desse estilo é usada. Considere uma arquitetura de N camadas para:

  • Aplicativos Web de pequeno a médio porte.
  • Migrar um aplicativo local para o Azure com o mínimo de refatoração.
  • Usar as habilidades, as funcionalidades e a experiência de desenvolvedores locais.

Os aplicativos Web são um bom caso de uso para arquiteturas desse estilo. Por causa da complexidade reduzida desse estilo de arquitetura e a frequente separação natural entre as responsabilidades em aplicativos Web, as arquiteturas de N camadas podem funcionar bem. Esses aplicativos podem ser voltados ao público ou aplicativos de linha de negócios usados internamente por uma organização. Para os aplicativos menores ou menos complexos, uma arquitetura de duas camadas (cliente/servidor) pode ser suficiente, com as camadas de apresentação e de aplicativo combinadas em vez de separadas.

Arquiteturas de N camadas são comuns em aplicativos locais tradicionais, portanto, é uma opção natural para migrar cargas de trabalho existentes para o Azure. Os aplicativos neste estilo geralmente são migrados para o Azure com o mínimo de refatoração ou modificações, simplificando a migração inicial. Uma vez no Azure, você pode aproveitar os serviços de PaaS (plataforma como serviço) para melhorar ainda mais seu aplicativo.

Como esse é um estilo de arquitetura comum, os engenheiros geralmente têm um nível de experiência e familiaridade mais alto com ele. Ao escolher essa arquitetura, você pode usar conjuntos de habilidades existentes para implantar aplicativos sem incrementar novos padrões de arquitetura.

Verificar seu conhecimento

1.

Você precisa atualizar um aplicativo de três camadas para integrá-lo a uma API de parceiro. Em qual camada essa funcionalidade deve ser adicionada?

2.

Em qual camada é aceitável para permitir acesso aos usuários?