Você está na página 1de 20

Arquiteturas Multicamadas

Sem Servidor da AWS


Como usar o Amazon API Gateway e o AWS Lambda

Novembro de 2015
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

2015, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos


reservados.

Avisos
Este documento fornecido apenas para fins informativos. Ele relaciona as atuais
ofertas de produtos e prticas da AWS a contar da data de emisso deste
documento, que esto sujeitas a alteraes sem aviso prvio. Os clientes so
responsveis por fazer sua prpria avaliao independente das informaes neste
documento e de qualquer uso dos produtos ou servios da AWS, cada um dos quais
fornecido no estado em que se encontra, sem garantia de qualquer tipo,
expressa ou implcita. Este documento no cria quaisquer garantias,
representaes, compromissos contratuais, condies ou seguros da AWS, suas
afiliadas, fornecedores ou licenciadores. As responsabilidades e obrigaes da AWS
em relao aos seus clientes so controladas por acordos da AWS, e este
documento no integra nem modifica qualquer acordo entre a AWS e seus clientes.

Pgina 2 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

Sumrio
Resumo 3
Introduo 4
Viso geral da arquitetura de trs camadas 5
A camada lgica sem servidor 6
Amazon API Gateway 7
AWS Lambda 10
A camada de dados 13
A camada de apresentao 15
Amostra dos padres de arquitetura 15
Back-end mvel 16
Site hospedado do Amazon S3 17
Ambiente de microsservios 18
Concluso 19
Colaboradores 19
Observaes 20

Resumo
Este whitepaper mostra a voc como inovaes da Amazon Web Services (AWS)
podem mudar a forma como voc projeta arquiteturas multicamadas para
padres populares, como microsservios, back-ends mveis e sites pblicos.
Arquitetos e desenvolvedores j podem usar um padro de implementao que
inclui Amazon API Gateway e AWS Lambda para reduzir os ciclos de
desenvolvimento e operaes necessrios para criar e gerenciar
operacionalmente aplicaes multicamadas.

Pgina 3 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

Introduo
A aplicao multicamadas (trs camadas, n camadas, etc.) um padro
arquitetural bsico h dcadas. O padro multicamadas fornece boas diretrizes
para voc seguir, garantindo componentes de aplicaes desacoplados
e escalveis que podem receber gerenciamento e manuteno separados (muitas
vezes por equipes distintas). Aplicaes multicamadas costumam ser construdas
usando uma abordagem SOA (service-oriented architecture, arquitetura
orientada a servios) em relao ao uso de servios da web. Nessa abordagem,
a rede age como a ligao entre camadas. No entanto, existem vrios aspectos
indiferenciados da criao de uma nova camada de servios da web como parte
da sua aplicao. Boa parte do cdigo escrito dentro de uma aplicao web
multicamadas resultado direto do padro em si. Entre os exemplos esto um
cdigo que integra uma camada a outra, um cdigo que define uma API e um
modelo de dados que as camadas usam para se entenderem entre si, bem como
cdigo relacionado segurana que garante que os pontos de integrao de
camadas no sejam expostos de forma indesejada.

O Amazon API Gateway1, um servio para criao e gerenciamento de APIs,


e o AWS Lambda2, um servio para executar funes de cdigo arbitrrias,
podem ser usados em conjunto para simplificar a criao de robustas aplicaes
multicamadas.

A integrao do Amazon API Gateway com o AWS Lambda permite que funes
de cdigo definidas pelo usurio sejam acionadas diretamente via solicitao de
HTTPS definida pelo usurio. Independentemente do volume de solicitao
exigido, tanto o API Gateway quanto o Lambda sero automaticamente
dimensionados para dar conta exata das necessidades da sua aplicao. Quando
combinados, voc pode criar uma camada para sua aplicao que lhe permita
escrever o cdigo que importa para sua aplicao e no se concentrar em vrios
outros aspectos indiferenciadores da implementao de uma arquitetura
multicamadas como criao de arquitetura para alta disponibilidade, criao de
SDKs do cliente, gerenciamento de servidor/sistema operacional (SO),
escalabilidade e implementao de um mecanismo de autorizao de cliente.

Pgina 4 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

Mais recentemente, a AWS anunciou a capacidade de criar funes Lambda


executadas dentro da sua Amazon Virtual Private Cloud (Amazon VPC)3. Esse
recurso amplia os benefcios da combinao do API Gateway com o Lambda,
incluindo diversos casos de uso nos quais a privacidade de rede exigida. Por
exemplo, quando voc precisa integrar seu servio da web a um banco de dados
relacional que contm informaes confidenciais. A integrao do Lambda e da
Amazon VPC expandiu indiretamente os recursos do Amazon API Gateway, pois
fornece aos desenvolvedores a capacidade de definir o prprio conjunto de APIs
HTTPS acessveis pela Internet perante um back-end que continua privado
e protegido como parte da Amazon VPC. possvel observar os benefcios desse
poderoso padro entre cada camada de uma arquitetura multicamadas. Este
whitepaper se concentra no exemplo mais conhecido da arquitetura
multicamadas: a aplicao web de trs camadas. No entanto, voc pode utilizar
esse padro multicamadas muito alm da aplicao web tpica de trs camadas.

Viso geral da arquitetura de trs camadas


A arquitetura de trs camadas um padro popular para aplicaes voltadas para
o usurio. As camadas que formam essa arquitetura incluem a camada de
apresentao, a camada lgica e a camada de dados. A camada de
apresentao representa o componente com o qual os usurios interagem
diretamente (como pgina da web, interface da aplicao mvel, etc.). A camada
lgica contm o cdigo necessrio para converter as aes do usurio feitas na
camada de apresentao em funcionalidades que orientam o comportamento da
aplicao. A camada de dados formada por mdia de armazenamento (bancos
de dados, depsito de objetos, caches, sistemas de arquivos, etc.) que mantm os
dados relevantes aplicao. A Figura 1 mostra um exemplo de uma aplicao
simples de trs camadas.

Pgina 5 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

Figura 1: Padro de arquitetura para uma aplicao simples de trs camadas

Existem vrios recursos excelentes online nos quais voc pode aprender mais
sobre o padro geral de arquitetura de trs camadas. Este whitepaper se
concentra em um padro de implementao especfico para essa arquitetura
usando o Amazon API Gateway e o AWS Lambda.

A camada lgica sem servidor


A camada lgica da arquitetura de trs camadas representa o crebro da sua
aplicao. por isso que integrar o Amazon API Gateway e o AWS Lambda para
formar sua camada lgica pode ser to revolucionrio. Os recursos dos dois
servios lhe permitem construir uma aplicao de produo sem servidor
altamente disponvel, escalvel e segura. Sua aplicao poderia usar milhares de
servidores, mas, ao usar esse padro, voc no precisar gerenciar nenhum. Alm
disso, usando esses servios gerenciados juntos, voc ganha os seguintes benefcios:

Nenhum sistema operacional para escolher, proteger, corrigir ou gerenciar.

Nenhum servio para corrigir o tamanho, monitorar ou expandir.

Nenhum risco aos seus custos pelo superprovisionamento.

Nenhum risco ao seu desempenho pelo subprovisionamento.

Alm disso, existem recursos especficos em cada servio que beneficiam


o padro de arquitetura multicamadas.

Pgina 6 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

Amazon API Gateway


O Amazon API Gateway um servio totalmente gerenciado para definir,
implementar e manter APIs. Os clientes se integram com APIs usando
solicitaes HTTPS padro. Sua aplicabilidade a uma arquitetura multicamadas
orientada a servios evidente. No entanto, ele tem recursos e qualidades
especficos que o tornam uma presena poderosa para sua camada lgica.

Integrao com o AWS Lambda


O Amazon API Gateway fornece sua aplicao uma forma simples (solicitaes
HTTPS) de aproveitar diretamente a inovao do AWS Lambda. O API Gateway
a ponte que conecta sua camada de apresentao com as funes escritas no
AWS Lambda. Depois de definir o relacionamento cliente/servidor usando sua
API, o contedo da solicitao HTTPS do cliente passado funo do Lambda
para execuo. Os contedos incluem metadados da solicitao, cabealhos da
solicitao e corpo da solicitao.

Desempenho estvel da API em todo o mundo


Cada implantao do Amazon API Gateway abrange uma distribuio do Amazon
CloudFront4. O Amazon CloudFront um servio da web de entrega de contedo
que usa a rede global da Amazon de pontos de presena como pontos de conexo
para clientes que se integram sua API. Isso ajuda a diminuir a latncia do
tempo de resposta total da sua API. Com o uso de vrios pontos de presena em
todo o mundo, o Amazon CloudFront tambm lhe fornece recursos para
combater os cenrios de ataque DDoS (distributed denial of service, ataques
distribudos de negao de servio). Para obter mais informaes, leia
o whitepaper AWS Best Practices for Combatting DDoS Attacks5 (Melhores
prticas da AWS para combater ataques DDoS).

Voc pode melhorar o desempenho de solicitaes especficas da API usando


o Amazon API Gateway para armazenar respostas em um cache de memria
opcional. Isso no s proporciona benefcios de desempenho para solicitaes
repetidas de API como tambm reduz execues de back-end, que podem reduzir
o custo geral.

Pgina 7 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

Incentivo inovao
O trabalho de desenvolvimento necessrio para construir qualquer aplicao
nova um investimento. Voc precisa justificar isso a fim de iniciar o projeto. Ao
reduzir a quantidade de investimento necessria para as tarefas de
desenvolvimento e o tempo, voc fica livre para mais experimentos e para inovar
com mais liberdade.

Para vrias aplicaes multicamadas baseadas em servios da web, a camada de


apresentao facilmente fragmentada entre os usurios (dispositivos mveis
independentes, navegadores da web, etc.). Esses usurios tambm no costumam
estar geograficamente limitados. Uma camada lgica desacoplada, no entanto,
no fisicamente fragmentada pelos usurios. Todos os usurios dependem da
mesma infraestrutura executada na sua camada lgica, o que amplia
a importncia da infraestrutura. Muitas vezes se prope pegar atalhos ao
implementar inicialmente sua camada lgica ("no precisamos instrumentar as
mtricas no lanamento"; "o uso inicial ser baixo, vamos nos preocupar com
a escalao depois"; etc.) como mecanismo para entregar uma nova aplicao
com mais rapidez. Isso pode acarretar dbito tcnico e risco operacional quando
voc tem de implantar essas alteraes a uma aplicao que j est sendo
executada na produo. O Amazon API Gateway permite que voc pegue atalhos
e entregue mais rapidamente, porque o servio j os implementou para voc.

O tempo de vida global de uma aplicao pode ser desconhecido ou sabidamente


curto. Criar um business case para uma nova aplicao multicamadas pode ser
difcil por esses motivos. Pode ficar mais fcil quando seu ponto inicial j inclui
os recursos gerenciados fornecidos pelo Amazon API Gateway e voc s comea
a incorrer custos de infraestrutura depois de os APIs comearem a receber
solicitaes. Para obter mais informaes, consulte Definio de preo do
Amazon API Gateway.6

Pgina 8 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

Iterao rpida, agilidade mantida


Com novas aplicaes, a base de usurios ainda pode ser mal definida (tamanho,
padres de uso, etc.). A camada lgica deve manter a agilidade enquanto a base
de usurios toma forma. Sua aplicao e seus negcios devem ser capazes de
mudar e acomodar a mudana de expectativas dos primeiros adotantes.
O Amazon API Gateway reduz o nmero de ciclos de desenvolvimento
necessrios para levar uma API da concepo implantao. O Amazon API
Gateway fornece a capacidade de criar Mock Integrations7, que lhe permitem
gerar respostas de API diretamente do API Gateway com o qual as aplicaes
clientes podem desenvolver enquanto, paralelamente, a lgica completa de back-
end desenvolvida. Esse benefcio se aplica no s na primeira implantao da
API, mas tambm depois de a empresa decidir que a aplicao (e a API existente)
precisam mudar rapidamente em resposta aos seus usurios. O API Gateway
e o AWS Lambda habilitam versionamento, de forma que a funcionalidade e as
dependncias de cliente existentes possam continuar intactas, enquanto novas
funcionalidades so liberadas como uma verso independente de API/funo.

Segurana
Implementar a camada lgica de uma aplicao web pblica de trs camadas
como um servio da web eleva imediatamente o tpico de segurana. A aplicao
precisa garantir que somente clientes autorizados tenham acesso camada lgica
(que exposta sobre a rede). O Amazon API Gateway aborda o tpico de
segurana por formas que podem lhe dar a certeza de que o back-end seguro.
Para controle de acesso, no confie em fornecer s aplicaes do cliente strings de
chave de API estticas; elas podem ser extradas dos clientes e usadas em outros
lugares. Voc pode aproveitar diversas formas como o Amazon API Gateway
contribui para proteger a camada lgica:

Todas as solicitaes das suas APIs podem ser feitas via HTTPS, de forma
a habilitar a criptografia em trnsito.

As funes do seu AWS Lambda podem restringir o acesso, de forma que


exista um relacionamento de confiana somente entre uma API em
particular dentro do Amazon API Gateway e uma funo particular no AWS
Lambda. No haver outra forma de invocar essa funo do Lambda,
exceto ao usar a API pela qual voc optou a exposio dela.

Pgina 9 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

O Amazon API Gateway permite gerar SDKs de clientes a serem integrados


com suas APIs. Esse SDK tambm gerencia a assinatura de solicitaes
quando as APIs exigem autenticao. Essas credenciais da API usadas no
lado do cliente para autenticao so diretamente passadas para a funo
do AWS Lambda onde poder ocorrer mais autenticao dentro do
cdigo que voc tem e grava, se necessrio.

Cada combinao de recurso/mtodo que voc cria como parte da API


recebe seu prprio Nome de Recurso da Amazon (ARN), que pode ser
verificado nas polticas do AWS Identity and Access Management (IAM)8.

Isso significa que suas APIs so tratadas como cidads de primeira classe,
junto com outras APIs de propriedade da AWS. As polticas do IAM podem
ser granularizadas; elas podem fazer referncia a recursos/mtodos
especficos de uma API criada usando o Amazon API Gateway.
O acesso API regido pelas polticas do IAM que voc cria fora do
contexto do cdigo de aplicao. Isso significa que voc no precisa
escrever nenhum cdigo para ser conscientizado ou aplicar esses nveis de
acesso. O cdigo no pode conter bugs nem ser explorado, caso no exista.
Autorizar os clientes a usarem a autorizao AWS Signature verso 4
(SigV4)9 e as polticas do IAM para acesso API permite que essas
mesmas credenciais restrinjam ou permitam acesso a outros servios
e recursos da AWS conforme o necessrio (por exemplo, buckets do
Amazon S3 ou tabelas do Amazon DynamoDB).

AWS Lambda
No seu cerne, o AWS Lambda permite cdigo arbitrrio gravado em qualquer
uma das linguagens compatveis (Node, baseada em JVM e Python, desde
novembro de 2015) para ser disparado em resposta a um evento. Esse evento
pode ser um dos vrios disparos programticos que a AWS disponibiliza,
chamados de origem do evento (veja as origens do evento atualmente
compatveis aqui10). Vrios casos de uso populares para o AWS Lambda giram em
torno de workflows de processamento de dados orientados por eventos, como
processamento de arquivos armazenados no Amazon Simple Storage Service
(Amazon S3)11 ou streaming de registros de dados do Amazon Kinesis12.

Pgina 10 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

Quando usada em conjunto com o Amazon API Gateway, uma funo do AWS
Lambda pode existir dentro do contexto de um servio da web tpico, e pode ser
disparada diretamente por uma solicitao HTTPS. O Amazon API Gateway age
como porta da frente da sua camada lgica, mas agora voc precisa executar
a lgica por trs dessas APIs. a onde entra o AWS Lambda.

Sua lgica de negcios vai aqui


O AWS Lambda permite escrever funes de cdigo, chamadas handlers, que
sero executadas quando disparadas por um evento. Por exemplo, voc pode
gravar um handler que ser disparado quando ocorrer um evento como uma
solicitao de HTTPS na sua API. O Lambda lhe permite criar handlers modulares
no seu nvel de granularidade escolhido (um por API e um por mtodo de API) que
pode ser atualizado, invocado e alterado de forma independente. O handler ento
fica livre para entrar em contato com outras dependncias que tem (como outras
funes que voc carregou com seu cdigo, bibliotecas, binrios nativos ou at
mesmo servios da web externos). O Lambda lhe permite criar um pacote com
todas as dependncias necessrias na sua definio de funo durante a criao.
Ao criar sua funo, voc especifica qual mtodo dentro do pacote de implantao
agir como handler da solicitao. Voc tem a liberdade de reutilizar o mesmo
pacote de implantao para vrias definies de funo do Lambda; cada funo do
Lambda pode ter um handler nico dentro do mesmo pacote de implantao. No
padro de arquitetura multicamadas sem servidor, cada uma das APIs criadas no
Amazon API Gateway se integrar a uma funo do Lambda (e o handler dentro
dela) que executa a lgica de negcios necessria.

Integrao com a Amazon VPC


O AWS Lambda, o cerne da sua camada lgica, ser o componente diretamente
integrado camada de dados. Como a camada de dados muitas vezes contm
informaes confidenciais de negcios ou usurio, a camada de dados deve ser
bem protegida. Para os servios da AWS com os quais voc pode fazer
a integrao de uma funo do Lambda, voc pode gerenciar o controle de acesso
usando polticas da IAM. Entre esses servios esto Amazon S3, Amazon
DynamoDB, Amazon Kinesis, Amazon Simple Queue Service (Amazon SQS),
Amazon Simple Notification Service (Amazon SNS), outras funes do AWS
Lambda e muito mais. No entanto, voc pode ter um componente que rege seu
prprio controle de acesso, como um banco de dados relacional. Com
componentes como esse, voc poderia conquistar mais segurana ao implement-
los dentro de um ambiente de rede privada uma Amazon Virtual Private Cloud
(Amazon VPC)13.

Pgina 11 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

Figura 2: Padro arquitetnico usando uma VPC

O uso de uma VPC significa que os bancos de dados e outras mdias de


armazenamento das quais sua lgica de negcios dependem podem ficar
inacessveis pela Internet. A VPC tambm garante que a nica forma de interagir
com os seus dados pela Internet ser por APIs que voc definiu e funo do
cdigo do Lambda que voc escreveu.

Segurana
Para executar uma funo do Lambda, ela deve ser disparada por um evento ou
servio com permisso para tal via poltica do IAM. possvel criar uma funo
do Lambda que no possa ser executada de jeito nenhum a menos que invocada
por uma solicitao do API Gateway definida por voc. Seu cdigo s ser
processado como parte do seu caso de uso vlido, definido pela API criada.

Cada funo do Lambda em si assume um papel no IAM, uma capacidade que


precisa ser concedida por um relacionamento de confiana do IAM. O papel do
IAM define os outros servios/recursos da AWS com os quais sua funo do
Lambda poder interagir (como uma tabela do Amazon DynamoDB ou um
bucket do Amazon S3). Os servios aos quais sua funo tem acesso sero
definidos e controlados de fora da funo em si. algo sutil, mas poderoso.
O cdigo escrito por voc pode ficar livre do armazenamento ou da recuperao
de credenciais da AWS: isso significa que voc no precisa usar hardcoding nas
teclas da API nem escrever cdigo para recuper-los e armazen-los na memria.
A habilitao da funo do Lambda para acessar os servios aos quais tem
permisso, conforme definido pela funo do IAM, gerenciada por voc e pelo
servio em si.

Pgina 12 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

A camada de dados
Ao usar o AWS Lambda como sua camada lgica, voc ganha uma srie de opes
de armazenamento fsico de dados para sua camada de dados. Essas opes se
encaixam em duas amplas categorias: Armazenamentos de dados hospedados em
Amazon VPC e armazenamentos de dados habilitados por IAM. O AWS Lambda
tem a capacidade de se integrar com segurana aos dois.

Armazenamentos de dados hospedados em Amazon VPC


A integrao do AWS Lambda com a Amazon VPC permite que as funes se
integrem com diversas tecnologias de armazenamento fsico de dados de forma
privada e segura.

Amazon RDS14

Use qualquer um dos mecanismos que o Amazon Relational Database Service


(Amazon RDS) disponibiliza. Conecte-se ao Amazon RDS diretamente pelo
cdigo escrito no Lambda, da mesma forma como faria fora do Lambda, mas
com a vantagem da integrao simples com AWS Key Management Service
(AWS KMS) para criptografia de credencial ao banco de dados.

Amazon ElastiCache15

Integre suas funes do Lambda com um cache de memria gerenciada


para incrementar o desempenho da aplicao.

Amazon RedShift16

Voc pode construir funes que fazem uma consulta segura a um data
warehouse corporativo com o objetivo de criar relatrios e painis ou
recuperar resultados de consultas ad-hoc.

Servio da web privado hospedado por Amazon Elastic Compute Cloud


(Amazon EC2)17

Voc pode ter aplicaes existentes executadas como servio da web


privadamente dentro de uma VPC. Faa solicitaes de HTTP sobre a rede
de VPC com lgica privada a partir de uma funo do Lambda.

Pgina 13 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

Armazenamentos de dados habilitados por IAM


Como o AWS Lambda integrado ao IAM, ele pode usar o IAM para garantir a
integrao com qualquer servio da AWS que possa ser aproveitado diretamente
usando as APIs da AWS.

Amazon DynamoDB18

O Amazon DynamoDB o banco de dados NoSQL de escalabilidade infinita


da AWS. Pense no Amazon DynamoDB quando voc quiser recuperar
registros de dados (400 KB ou menos, no momento de redao deste
documento) com desempenho de milissegundo de nico dgito,
independentemente da escala. Usando o controle de acesso granularizado do
Amazon DynamoDB, suas funes do Lambda podem seguir as melhores
prticas de menos privilgios ao consultar dados especficos no DynamoDB.

Amazon S319

O Amazon Simple Storage Service (Amazon S3) fornece armazenamento de


objetos na escala da Internet. O Amazon S3 projetado para durabilidade
de 99,999999999% dos objetos, ento pense em us-lo quando sua
aplicao precisar de um armazenamento barato e resiliente. Alm disso,
como o Amazon S3 projetado para at 99,99% de disponibilidade dos
objetos ao longo de um ano, pense em us-lo quando sua aplicao exigir
armazenamento altamente disponvel. Objetos armazenados no Amazon S3
(arquivos, imagens, logs, qualquer dado binrio) podem ser acessados
diretamente via HTTP. As funes do Lambda podem se comunicar com
segurana com o Amazon S3 via endpoints virtuais privados, e os dados
dentro do S3 podem ser restringidos somente poltica do IAM associada
funo do Lambda.

Amazon Elasticsearch Service20

O Amazon Elasticsearch Service (Amazon ES) a verso gerenciada do


conhecido mecanismo de pesquisa e analtica, o Elasticsearch. O Amazon
ES fornece o provisionamento gerenciado de clusters, deteco de falha
e substituio de ns; voc pode restringir o acesso API do Amazon ES
usando polticas de IAM.

Pgina 14 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

A camada de apresentao
O Amazon API Gateway abre uma variedade de possibilidades de camada de
apresentao. Uma API HTTPS acessvel por Internet pode ser consumida por
qualquer cliente capaz de comunicao HTTPS. A lista a seguir contm exemplos
comuns cujo uso voc deveria considerar para a camada de apresentao da sua
aplicao:

Aplicao para celular: Alm de se integrar a uma lgica de negcios


personalizada via Amazon API Gateway e AWS Lambda, voc poderia usar
o Amazon Cognito21 como mecanismo para criar e gerenciar identidades de
usurio.

Contedo de site esttico (como arquivos armazenados no Amazon S3):


Voc pode habilitar as APIs do Amazon API Gateway para serem
compatveis com CORS (cross-origin resource sharing, compartilhamento
de recursos de origem cruzada). Com isso, os navegadores da web invocam
diretamente suas APIs de dentro das pginas da web estticas.

Qualquer outro dispositivo cliente habilitado para HTTPS: Vrios


dispositivos conectados so capazes de se comunicar via HTTPS. No h
nada exclusivo nem proprietrio em relao forma como os clientes se
comunicam com as APIs criadas usando Amazon API Gateway; HTTPS
puro. No so necessrios softwares nem licenas especficos de cliente.

Amostra dos padres de arquitetura


Voc pode implementar os seguintes padres populares de arquitetura usando
o Amazon API Gateway e o AWS Lambda como a cola que forma sua camada
lgica. Por exemplo, usaremos somente os servios da AWS que no exigem que
os usurios gerenciem a prpria infraestrutura.

Pgina 15 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

Back-end mvel

Figura 3: Padro de arquitetura para um back-end mvel

Camada de apresentao: Uma aplicao mvel executada no


smartphone de cada usurio.

Camada lgica: Amazon API Gateway e AWS Lambda. A camada lgica


tem distribuio global pelo Amazon CloudFront, criado como parte de
cada API do Amazon API Gateway. Um conjunto de funes do Lambda
pode ser especfico de gerenciamento e autenticao de identidade do
usurio/dispositivo e gerenciado pelo Amazon Cognito, que proporciona
integrao com IAM para credenciais temporrias de acesso do usurio,
bem como com conhecidos provedores de identidade terceirizados. Outras
funes do Lambda so capazes de definir a lgica de negcios central do
back-end mvel.

Pgina 16 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

Camada de dados: Os vrios servios de armazenamento fsico de dados


podem ser aproveitados conforme o necessrio; as opes j foram
apresentadas aqui neste documento.

Site hospedado do Amazon S3

Figura 4: Padro arquitetural para um site esttico hospedado no Amazon S3

Camada de apresentao: Contedo de site esttico armazenado no


Amazon S3 e distribudo pelo Amazon CloudFront. A hospedagem de
contedo de site esttico no Amazon S3 uma alternativa com boa relao
custo-benefcio ao armazenamento de contedo em uma infraestrutura
baseada em servidor. No entanto, para um site conter recursos avanados,
o contedo esttico precisa se integrar a um back-end dinmico.

Camada lgica: Amazon API Gateway e AWS Lambda. O contedo web


esttico hospedado em Amazon S3 pode se integrar diretamente com
o Amazon API Gateway, que pode ser compatvel com CORS.

Pgina 17 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

Camada de dados: Os vrios servios de armazenamento fsico de dados


podem ser aproveitados conforme o necessrio. Essas opes j foram
apresentadas aqui neste documento.

Ambiente de microsservios

Figura 5: Padro arquitetnico para um ambiente de microsservios

O padro arquitetnico de Microsservios no est ligado tpica arquitetura


de trs camadas abrangida neste whitepaper. Na arquitetura de microsservios,
existe um desacoplamento macio dos componentes de software, de forma que os
benefcios da arquitetura multicamadas sejam ampliados. Uma API criada com
Amazon API Gateway, e funes subsequentemente executadas pelo AWS
Lambda, tudo que voc precisa para construir um microsservio. Sua equipe
tem a liberdade de usar esses servios para desacoplar e fragmentar seu ambiente
at o nvel de granularidade desejado.

Pgina 18 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

No geral, o ambiente de microsservios pode introduzir as seguintes dificuldades:


custos indiretos repetidos pela criao de cada novo microsservio, problemas com
a otimizao da densidade/utilizao do servidor, complexidade da execuo de
mltiplas verses de mltiplos microsservios simultaneamente e proliferao de
requisitos de cdigo do lado do cliente para se integrar a vrios servios separados.

No entanto, ao criar microsservios usando o padro sem servidor da AWS, esses


problemas ficam mais fceis de se resolver e, em alguns casos, simplesmente
desaparecem. O padro de microsservios da AWS diminui a barreira para
criao de cada microsservio subsequente (o Amazon API Gateway leva em
conta at a clonagem de APIs existentes). A otimizao da utilizao do servidor
no mais relevante com este padro. Tanto o API Gateway quanto o Lambda
permitem recursos de versionamento mais simples. Por fim, o Amazon API
Gateway fornece SDKs de clientes gerados programaticamente em diversas
linguagens conhecidas, de forma a reduzir os custos indiretos de integrao.

Concluso
O padro da arquitetura multicamadas incentiva as melhores prticas da criao
de componentes de aplicaes fceis de manter, desacoplados e escalveis.
Quando voc cria uma camada lgica na qual a integrao ocorre via Amazon API
Gateway e a computao ocorre dentro do AWS Lambda, voc est prestes a se
dar conta dessas metas, ao mesmo tempo reduzindo a quantidade de esforo para
alcan-las. Juntos, esses servios fornecem um front-end de API HTTPS para
seus clientes e um ambiente seguro dentro da VPC para executar a lgica de
negcios. Isso lhe permite aproveitar os vrios cenrios populares nos quais
possvel usar esses servios gerenciados em vez de gerenciar sozinho
a infraestrutura tpica baseada em servidor.

Colaboradores
As seguintes organizaes e pessoas contriburam para este documento:

Andrew Baird, arquiteto de solues da AWS

Stefano Buliani, gerente snior de produto, Tecnologia, servios mveis da AWS

Vyom Nagrani, gerente snior de produto, servios mveis da AWS

Ajay Nair, gerente snior de produto, servios mveis da AWS

Pgina 19 de 20
Amazon Web Services Arquiteturas Multicamadas Sem Servidor da AWS Novembro de 2015

Observaes

1 http://aws.amazon.com/api-gateway/
2 http://aws.amazon.com/lambda/
3 https://aws.amazon.com/vpc/
4 https://aws.amazon.com/cloudfront/
5 https://d0.awsstatic.com/whitepapers/DDoS_White_Paper_June2015.pdf
6 https://aws.amazon.com/api-gateway/pricing/
7 http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-mock-
integration.html
8 http://aws.amazon.com/iam/
9 http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html
10 http://docs.aws.amazon.com/lambda/latest/dg/intro-core-
components.html#intro-core-components-event-sources
11 https://aws.amazon.com/s3/
12 https://aws.amazon.com/kinesis/
13 https://aws.amazon.com/vpc/
14 https://aws.amazon.com/rds/
15 https://aws.amazon.com/elasticache/
16 https://aws.amazon.com/redshift/
17 https://aws.amazon.com/ec2/
18 https://aws.amazon.com/dynamodb/
19 https://aws.amazon.com/s3/storage-classes/
20 https://aws.amazon.com/elasticsearch-service/
21 https://aws.amazon.com/cognito/

Pgina 20 de 20