O que é arquitetura de três camadas?
A arquitetura de três camadas, que separa os aplicativos em três camadas de computação lógica e física, é a arquitetura de software predominante para aplicativos tradicionais de cliente-servidor.
Plano de fundo azul e preto
O que é arquitetura de três camadas?

A arquitetura de três camadas (tiers) é uma arquitetura de aplicativo de software estabelecida  que organiza aplicativos em três camadas de computação física e lógica: a camada de apresentação ou a interface com o usuário; a camada do aplicativo, na qual os dados são processados; e a camada de dados, na qual os dados associados ao aplicativo são armazenados e gerenciados.

O principal benefício da arquitetura de três camadas é que devido ao fato de cada camada executar sua própria infraestrutura, cada camada pode ser desenvolvida simultaneamente por uma equipe de desenvolvimento separada e pode ser atualizada ou ajustada conforme necessário sem impactar as outras camadas.

Por décadas, a arquitetura de três camadas era a arquitetura predominante para aplicativos de cliente-servidor. Atualmente, a maioria dos aplicativos de três camadas são alvos para a modernização, usando tecnologias nativas de cloud, como contêineres e microsserviços, e para a migração para a cloud.

As três camadas em detalhe

Camada de apresentação

A camada de apresentação é a interface com o usuário e a camada de comunicação do aplicativo, na qual o usuário final interage com o aplicativo. Sua principal finalidade é exibir e coletar informações do usuário. Essa camada de nível superior pode ser executada em um navegador da web, como um aplicativo para desktop ou em uma interface gráfica com o usuário (GUI), por exemplo. As camadas de apresentação da web são geralmente desenvolvidos usando HTML, CSS e JavaScript. Os aplicativos para desktop podem ser escritos em diversas linguagens, dependendo da plataforma.

Camada do aplicativo

A camada do aplicativo, também conhecida como a camada lógica ou a camada do meio, é a parte central do aplicativo. Nessa camada, as informações coletadas na camada de apresentação são processadas, algumas vezes em relação a outras informações da camada de dados, usando a lógica de negócios que é um conjunto específico de regras de negócios. A camada do aplicativo pode também incluir, excluir ou modificar os dados da camada de dados. 

A camada do aplicativo é geralmente desenvolvida usando Python, Java, Perl, PHP ou Ruby e se comunica com a camada de dados usando chamadas de  API . 

Camada de dados

A camada de dados, por vezes chamada de camada de banco de dados, camada de acesso a dados ou back-end, é na qual as informações processadas pelo aplicativo são armazenadas e gerenciadas. Este pode ser um  sistema de gerenciamento de banco de dados  relacional , como  PostgreSQL, MySQL, MariaDB, Oracle, DB2, Informix ou Microsoft SQL Server ou em um servidor de banco de dados  NoSQL , como Cassandra,  CouchDB  ou  MongoDB

Em um aplicativo de três camadas, toda a comunicação passa pela camada do aplicativo. A camada de apresentação e a camada de dados não podem se comunicar diretamente entre si.

Camada (tier) vs. nível (layer)

Em discussões de arquitetura de três camadas,  nível  é frequentemente usado de forma intercambiável e equivocadamente  pela  camada, como um 'nível de apresentação' ou 'nível lógico de negócios'. 

Elas não são a mesma coisa. Um 'nível (layer)' refere-se a uma divisão funcional do software, mas uma 'camada (tier)' refere-se a uma divisão funcional do software que é executada em infraestrutura separada das outras divisões. O aplicativo Contatos em seu telefone, por exemplo, é um aplicativo de  três níveis , mas um  aplicativo de camada única  , porque os três níveis são executados em seu telefone.

A diferença é importante, porque níveis não podem oferecer os mesmos benefícios que as camadas.

Benefícios da arquitetura de três camadas (tiers)

Novamente, o principal benefício da arquitetura de três camadas é a separação lógica e física da funcionalidade. Cada camada pode ser executada em um sistema operacional e plataforma de servidor diferentes, por exemplo, servidor da web, servidor de aplicativos, servidor de banco de dados, que mais atende aos seus requisitos funcionais. E cada camada é executada em pelo menos um hardware de servidor dedicado ou servidor virtual, por isso os serviços de cada camada podem ser customizados e otimizados sem impactar as outras camadas. 

Outros benefícios (em comparação com a arquitetura de duas camadas ou de camada única)  incluem:

  • Desenvolvimento mais rápido: uma vez que todas as camadas podem ser desenvolvidas simultaneamente por diferentes equipes, uma organização pode lançar o aplicativo no mercado mais rapidamente e os programadores podem usar as linguagens e ferramentas mais recentes e melhores para cada camada.

  • Escalabilidade melhorada: qualquer camada pode ser dimensionada independentemente das outras conforme necessário.

  • Maior confiabilidade: uma indisponibilidade em uma camada é menos propensa a impactar a disponibilidade ou o desempenho das outras camadas.

  • Segurança aprimorada: uma vez que a camada de apresentação e a camada de dados não podem se comunicar diretamente, uma camada do aplicativo bem projetada pode ter a função de uma espécie de firewall interno, impedindo injeções SQL e outros exploradores de vulnerabilidade mal-intencionados.
Aplicativo de três camadas no desenvolvimento da web

No desenvolvimento da web, as camadas possuem nomes diferentes,  mas desempenham funções semelhantes:

  • O servidor da web  é a camada de apresentação e fornece a interface com o usuário. Esta geralmente é uma página da web ou website, como um site de comércio eletrônico em que o usuário inclui produtos ao carrinho de compras, inclui detalhes de pagamento ou cria uma conta. O conteúdo pode ser estático ou dinâmico e geralmente é desenvolvido usando HTML, CSS e Javascript.

  • O servidor de aplicativos  corresponde à camada do meio, hospedando a lógica de negócios usada para processar entradas do usuário. Para continuar o exemplo do comércio eletrônico, esta é a camada que consulta o banco de dados do inventário para retornar a disponibilidade do produto ou inclui detalhes a um perfil de cliente. Esse nível (layer) foi muitas vezes desenvolvido usando Python, Ruby ou PHP e executa uma estrutura, como Django, Rails, Symphony ou ASP.NET, por exemplo.

  • O servidor de banco de dados  é a camada de dados ou back-end de um aplicativo da web. Ele é executado em software de gerenciamento de banco de dados, como MySQL, Oracle, DB2 ou PostgreSQL, por exemplo.
Outras arquiteturas multicamada

Ao mesmo tempo que a arquitetura de três camadas é facilmente a arquitetura de aplicativos multicamada mais amplamente adotada, há outras que podem ser encontradas em seu trabalho ou em sua pesquisa.

Arquitetura de duas camadas 

A arquitetura de duas camadas é a arquitetura de cliente-servidor original, composta por uma camada de apresentação e uma camada de dados. A lógica de negócios reside na camada de apresentação, na camada de dados ou em ambas. Na arquitetura de duas camadas, a camada de apresentação, ou seja, aquela em contato com o usuário final, possui acesso direto à camada de dados e a lógica de negócios é normalmente limitada. Um simples aplicativo de gerenciamento de contatos, em que os usuários podem inserir e recuperar dados de contato, é um exemplo de um aplicativo de duas camadas. 

Arquitetura de n-camadas

Arquitetura n-camadas, também chamada de arquitetura multicamada,  refere-se a  qualquer  arquitetura de aplicativos com mais de uma camada. Mas aplicativos com mais de três níveis são raros, pois níveis adicionais oferecem poucos benefícios e podem deixar o aplicativo mais lento, mais difícil de gerenciar e mais caro de ser executado. Como resultado, a arquitetura de n-camadas e a arquitetura multicamada são geralmente sinônimas da arquitetura de três camadas.

Soluções relacionadas
IBM Cloud Paks®

Migre mais rapidamente para a cloud com as soluções IBM® Cloud Pak integradas, abertas, conteinerizadas e certificadas pela IBM que são executadas no software Red Hat OpenShift.

Conheça o IBM Cloud Paks
IBM® Cloud for VMware Solutions

Modernize perfeitamente suas cargas de trabalho e aplicativos VMware com a IBM Cloud.

Conheça as soluções IBM® Cloud for VMware
IBM® Cloud Pak for Applications

Modernize e desenvolva novos aplicativos, reduza os custos e maximize o ROI.

Conheça o IBM® Cloud Pak for Applications
Recursos O que é a modernização de aplicativos?

Descubra o que é a modernização de aplicativos, os benefícios e desafios comuns e como começar a usar.

O que é um banco de dados relacional?

Descubra como os bancos de dados relacionais funcionam e como eles se comparam a outras opções de armazenamento de dados.

O que é o desenvolvimento nativo de cloud?

Conheça os aplicativos nativos de cloud e saiba como eles promovem a inovação e a velocidade em sua empresa.

Dê o próximo passo

A IBM® Cloud oferece produtos e serviços para ajudar você a modernizar seus aplicativos de três camadas existentes em sua jornada para a cloud.Se você precisar de assistência com estratégia, processos ou recursos, ou assistência completa de serviços, saiba como a IBM pode ajudar com a modernização de aplicativos.Comece usando o middleware conteinerizado que pode ser executado em qualquer cloud, tudo em pacote no IBM Cloud Paks®.

Saiba mais sobre o IBM Cloud Paks®