Introdução - Arquiteturas multicamada sem servidor da AWS com o Amazon API Gateway e o AWS Lambda

Introdução

A aplicação multicamadas (três camadas, n camadas e assim por diante) tem sido um padrão de arquitetura fundamental por décadas e continua sendo um padrão popular para aplicações voltadas para o usuário. Embora a linguagem usada para descrever uma arquitetura de várias camadas varie, uma aplicação de várias camadas geralmente consiste nos seguintes componentes:

  • Camada de apresentação: componente com o qual o usuário interage diretamente (por exemplo, páginas da Web e interfaces de usuário de aplicativos móveis).

  • Camada lógica: código necessário para converter ações do usuário para a funcionalidade da aplicação (por exemplo, operações de banco de dados CRUD e processamento de dados).

  • Camada de dados: mídia de armazenamento (por exemplo, bancos de dados, armazenamentos de objetos, caches e sistemas de arquivos) que contêm os dados relevantes para a aplicação.

O padrão de arquitetura multicamadas fornece um framework geral para garantir que os componentes de aplicações desacoplados e escaláveis de forma independente possam ser desenvolvidos, gerenciados e mantidos separadamente (geralmente por equipes distintas).

Como consequência desse padrão em que a rede (uma camada deve fazer uma chamada de rede para interagir com outra camada) atua como o limite entre as camadas, o desenvolvimento de uma aplicação de várias camadas geralmente requer a criação de muitos componentes de aplicação semelhantes. Alguns desses componentes incluem:

  • Um código que define uma fila de mensagens para a comunicação entre camadas

  • Um código que define uma interface de programa da aplicação (API) e um modelo de dados

  • Um código relacionado à segurança que garante o acesso adequado à aplicação

Todos esses exemplos podem ser considerados componentes “padronizados” que, embora necessários em aplicações de várias camadas, não variam muito em sua implementação de uma aplicação para outra.

A AWS oferece vários serviços que permitem a criação de aplicações multicamadas sem servidor, simplificando bastante o processo de implantação dessas aplicações na produção e removendo a sobrecarga associada ao gerenciamento tradicional de servidores. O Amazon API Gateway, um serviço para criar e gerenciar APIs, e o AWS Lambda, um serviço para executar funções de código arbitrárias, podem ser usados juntos para simplificar a criação de aplicações robustas de várias camadas.

A integração do Amazon API Gateway com o AWS Lambda permite que funções de código definidas pelo usuário sejam iniciadas diretamente por meio de solicitações HTTPS. Independentemente do volume de solicitações, o API Gateway e o Lambda escalam automaticamente para atender às necessidades da aplicação (consulte Cotas do API Gateway do Amazon API Gateway e notas importantes para obter informações de escalabilidade). Ao combinar esses dois serviços, é possível criar uma camada que possibilita a você escrever apenas o código relevante para a aplicação, sem precisar se concentrar em vários outros aspectos indiferenciados da implementação de uma arquitetura de várias camadas, como arquitetura para alta disponibilidade, gravação de SDKs de cliente, gerenciamento do sistema operacional (SO) e do servidor, escalabilidade e implementação de um mecanismo de autorização do cliente.

O API Gateway e o Lambda permitem a criação de uma camada lógica sem servidor. Dependendo dos requisitos da aplicação, a AWS também oferece opções para criar uma camada de apresentação sem servidor (por exemplo, com o Amazon CloudFront e o Amazon Simple Storage Service) e uma camada de dados (por exemplo, com o Amazon Aurora e o Amazon DynamoDB).

Este whitepaper aborda o exemplo mais comum de uma arquitetura de várias camadas, a aplicação Web de três camadas. No entanto, esse padrão de várias camadas pode ser aplicado muito além de uma aplicação Web típica de três camadas.