© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Heitor Vital, Arquiteto de Soluções - AWS Brasil
Cristiano Camilo, Gerente de Arquitetura - CVC
Junho 2016
Construindo APIs com Amazon API
Gateway e AWS Lambda
AWS
Lambda
AWS Lambda
Serverless, event-driven compute service
microservice sem servidores
Benefícios
EVENT-DRIVEN SCALESERVERLESS SUBSECOND BILLING
Como Funciona
1. Upload do código
2. Configure evento e
permissões
3. Lambda executa em
resposta a eventos
4. Pague somente quando
a fução for executada
Integrações
Lambda
Backend
SNS
Cognito
Kinesis
Dynamo
S3
SDK
Mobile, Alexa
…
API Gateway
SES
CloudWatch
CloudFormation
AWS Config
Scheduled events
Pontos de Atenção
Controle de Permissão Stateless
Logging e Monitoramento
Casos de Uso - Tumbnail
Casos de Uso - ETL
Casos de Uso – Segurança
AWS
Lambda
Demo
Limites
 Resource Limits
 Duração máxima: 5 minutos
 Heap máxima: 1.5 GB
 Armazenamento temporário ("/tmp"): 512 MB
 Número máximo de processos/threads : 1.024
 Tamanho máximo do pacote da aplicação (zip/jar): 50 MB
Estendendo AWS Lambda
 Use o /tmp como cache
 Rode qualquer executável (independente de linguagem)
 Use plugins do Grunt e Jenkins para deploys
 Slack + Lambda
 JAWS: The Server-less Application Framework
Amazon API Gateway
Proliferação de APIs
O número de APIs publicadas está crescendo rapidamente
2418
10302
0
2000
4000
6000
8000
10000
12000
jun/05
nov/05
abr/06
set/06
fev/07
jul/07
dez/07
mai/08
out/08
mar/09
ago/09
jan/10
jun/10
nov/10
abr/11
set/11
fev/12
jul/12
dez/12
mai/13
out/13
* Dados do ProgrammableWeb
Na AWS, nós rodamos muitas APIs
…Com o passar do tempo, nós aprendemos algumas lições
Seu feedback
Gerenciar múltiplas versões e estágios de uma API é difícil.
Seu feedback
Gerenciar múltiplas versões e estágios de uma API é difícil.
Monitorar acessos de desenvolvedores terceiros consome tempo.
Seu feedback
Gerenciar múltiplas versões e estágios de uma API é difícil.
Monitorar acessos de desenvolvedores terceiros consome tempo.
Autorizar acessos é desafiador.
Seu feedback
Gerenciar múltiplas versões e estágios de uma API é difícil.
Monitorar acessos de desenvolvedores terceiros consome tempo.
Autorizar acessos é desafiador.
Picos de tráfego geram um peso operacional.
Seu feedback
Gerenciar múltiplas versões e estágios de uma API é difícil.
Monitorar acessos de desenvolvedores terceiros consome tempo.
Autorizar acessos é desafiador.
Picos de tráfego geram um peso operacional.
E se eu não quiser nenhum servidor?
Amazon API Gateway
Hospede múltiplas versões e ambientes das suas APIs
Crie e distribua chaves de API para desenvolvedores
Beneficie-se da Sigv4/JTW/OAuth para autorizar acesso às APIs
Controle e monitore requisições para proteger o backend, Cache ..
Use AWS Lambda!
Fluxo de uma chamada API
Internet
Mobile
apps
Websites
Serviços
API
Gateway
Funções
AWS
Lambda
AWS
API
Gateway
cache
Endpoints
na Amazon
Qualquer outro
endpoint
acessível
Amazon
CloudWatc
h
Configuração da API
Você pode criar APIs
Definir recursos da API
Definir métodos para o recurso
• Métodos são recurso + HTTP verb
Pet Store
/pets
/pets/{petId}
• GET
• POST
• PUT
Deploy da API
Configuração da API pode ser implantado em
um ambiente (stage)
Stages são ambientes diferentes; por exemplo:
• Dev (e.g., example.com/dev)
• Beta (e.g., example.com/beta)
• Prod (e.g., example.com/prod)
Pet Store
dev
beta
gamma
prod
Gerencie múltiplos ambientes e versões de sua
API
API 1 (v1)
Stage (dev)
Stage (prod)
API 2 (v2)
Stage (dev)
Custom domain names
• Você pode configurar custom domain names
• Forneça API Gateway com um certificado HTTPS
• Custom domain names podem ser apontados para um estágio da API
• Aponte para uma API e ambiente (stage)
• Beta (e.g., yourapi.com/beta)
• Prod (e.g., yourapi.com/prod)
Segurança – Sigv4
Call login API, no
authentication
required
Cliente API Gateway Backend
/login
AWS
Lambda
fn_login
User
accounts
database
Credentials
verified
Amazon Cognito
developer
authenticated
identities
Access and
secret key
/login
Receives
credentials to
sign API calls
Segurança – Custom Authorizer
Caching API responses
Requisição
•Procura pelo
item no cache
•Se encontrado,
retorna o item
Verifica as
configs de
controle
• Verifica
requests-per-
second rate
• Se acima,
return 429
Executa back-
end
Caching API responses
Você pode configurar a chave de cache e TTL da resposta
da API
Itens cacheados retornam sem chamar o backend
Um cache é dedicado para você, por estágio (stage)
0.5 GB a 237 GB de cache
API Gateway
Back end
GET - /sayHello
AWS
Lambda
fn_sayHello
/sayHello
{
“message” : “hello world”
}
<xml>
<message>
Hello world
</message>
</xml>
#set($root = $input.path('$'))
<xml>
<message>
$root.message
</message>
</xml>
Input/output transforms
Input/output transforms
Filtrar resultados de output
• Remover dados privados ou desnecessários
• Filtrar o tamanho do dataset para melhorar a performance da API
GET para POST
• Leia os query string parameters de sua requisição GET e crie um corpo para
fazer requisições POST para seu back end
JSON para XML
• Receba um input JSON e transforme-o em XML para seu back end
• Receba um JSON de uma função AWS Lambda e transforme-o para XML
Outras Funcionalidades
Mock Integration
Importador de Swagger
Gere SDKs a partir de sua Your APIs
Custom Domain / HTTPS
Client-Side SSL Authentication
Link lambda version
Amazon API Gateway
Demo
“Headline 1 – sobre resultados gerais do projeto”
• Maior rede exclusiva de turismo do
Brasil, contando com mais de 1000
lojas próprias
• Mais de 7 milhões de clientes
embarcados em 2015
• Marca “Top of Mind” no segmento de
Turismo
• 44 anos de experiência no Mercado
“Com a combinação dos
mecanismos da AWS
Api Gateway, Elastic
Cache e Lambda
pudemos desenhar uma
arquitetura escalável e
de rápida
implementação.”
Cristiano Camilo
O Desafio
• Substituir arquitetura atual por outra
mais escalável, suportando assim
picos de acesso mais naturalmente
• Prover um melhor tempo de resposta
para o usuário final, sem a latência
dos atuais fornecedores
• Padronizar as APIS expostas e
garantir segurança de acesso as
mesmas
Solução
Amazon API Gateway
Recapitulando
AWS Lambda
• Não há servidores para serem
gerenciados
• Escalabilidade contínua
• Medidor de sub-segundo
• Econômico e eficiente
• Desempenho em qualquer escala
• Monitore facilmente as atividades
das APIs
• Agilize o desenvolvimento de APIs
• Controles de segurança flexíveis
• Crie endpoints RESTful para
serviços existentes
• Execute suas APIs sem servidores
Construindo APIs com Amazon API Gateway e AWS Lambda

Construindo APIs com Amazon API Gateway e AWS Lambda

  • 1.
    © 2016, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Heitor Vital, Arquiteto de Soluções - AWS Brasil Cristiano Camilo, Gerente de Arquitetura - CVC Junho 2016 Construindo APIs com Amazon API Gateway e AWS Lambda
  • 2.
  • 3.
    AWS Lambda Serverless, event-drivencompute service microservice sem servidores
  • 4.
  • 5.
    Como Funciona 1. Uploaddo código 2. Configure evento e permissões 3. Lambda executa em resposta a eventos 4. Pague somente quando a fução for executada
  • 6.
  • 7.
    Pontos de Atenção Controlede Permissão Stateless Logging e Monitoramento
  • 8.
    Casos de Uso- Tumbnail
  • 9.
  • 10.
    Casos de Uso– Segurança
  • 11.
  • 12.
    Limites  Resource Limits Duração máxima: 5 minutos  Heap máxima: 1.5 GB  Armazenamento temporário ("/tmp"): 512 MB  Número máximo de processos/threads : 1.024  Tamanho máximo do pacote da aplicação (zip/jar): 50 MB
  • 13.
    Estendendo AWS Lambda Use o /tmp como cache  Rode qualquer executável (independente de linguagem)  Use plugins do Grunt e Jenkins para deploys  Slack + Lambda  JAWS: The Server-less Application Framework
  • 14.
  • 15.
    Proliferação de APIs Onúmero de APIs publicadas está crescendo rapidamente 2418 10302 0 2000 4000 6000 8000 10000 12000 jun/05 nov/05 abr/06 set/06 fev/07 jul/07 dez/07 mai/08 out/08 mar/09 ago/09 jan/10 jun/10 nov/10 abr/11 set/11 fev/12 jul/12 dez/12 mai/13 out/13 * Dados do ProgrammableWeb
  • 16.
    Na AWS, nósrodamos muitas APIs …Com o passar do tempo, nós aprendemos algumas lições
  • 17.
    Seu feedback Gerenciar múltiplasversões e estágios de uma API é difícil.
  • 18.
    Seu feedback Gerenciar múltiplasversões e estágios de uma API é difícil. Monitorar acessos de desenvolvedores terceiros consome tempo.
  • 19.
    Seu feedback Gerenciar múltiplasversões e estágios de uma API é difícil. Monitorar acessos de desenvolvedores terceiros consome tempo. Autorizar acessos é desafiador.
  • 20.
    Seu feedback Gerenciar múltiplasversões e estágios de uma API é difícil. Monitorar acessos de desenvolvedores terceiros consome tempo. Autorizar acessos é desafiador. Picos de tráfego geram um peso operacional.
  • 21.
    Seu feedback Gerenciar múltiplasversões e estágios de uma API é difícil. Monitorar acessos de desenvolvedores terceiros consome tempo. Autorizar acessos é desafiador. Picos de tráfego geram um peso operacional. E se eu não quiser nenhum servidor?
  • 22.
    Amazon API Gateway Hospedemúltiplas versões e ambientes das suas APIs Crie e distribua chaves de API para desenvolvedores Beneficie-se da Sigv4/JTW/OAuth para autorizar acesso às APIs Controle e monitore requisições para proteger o backend, Cache .. Use AWS Lambda!
  • 23.
    Fluxo de umachamada API Internet Mobile apps Websites Serviços API Gateway Funções AWS Lambda AWS API Gateway cache Endpoints na Amazon Qualquer outro endpoint acessível Amazon CloudWatc h
  • 24.
    Configuração da API Vocêpode criar APIs Definir recursos da API Definir métodos para o recurso • Métodos são recurso + HTTP verb Pet Store /pets /pets/{petId} • GET • POST • PUT
  • 25.
    Deploy da API Configuraçãoda API pode ser implantado em um ambiente (stage) Stages são ambientes diferentes; por exemplo: • Dev (e.g., example.com/dev) • Beta (e.g., example.com/beta) • Prod (e.g., example.com/prod) Pet Store dev beta gamma prod
  • 26.
    Gerencie múltiplos ambientese versões de sua API API 1 (v1) Stage (dev) Stage (prod) API 2 (v2) Stage (dev)
  • 27.
    Custom domain names •Você pode configurar custom domain names • Forneça API Gateway com um certificado HTTPS • Custom domain names podem ser apontados para um estágio da API • Aponte para uma API e ambiente (stage) • Beta (e.g., yourapi.com/beta) • Prod (e.g., yourapi.com/prod)
  • 28.
    Segurança – Sigv4 Calllogin API, no authentication required Cliente API Gateway Backend /login AWS Lambda fn_login User accounts database Credentials verified Amazon Cognito developer authenticated identities Access and secret key /login Receives credentials to sign API calls
  • 29.
  • 30.
    Caching API responses Requisição •Procurapelo item no cache •Se encontrado, retorna o item Verifica as configs de controle • Verifica requests-per- second rate • Se acima, return 429 Executa back- end
  • 31.
    Caching API responses Vocêpode configurar a chave de cache e TTL da resposta da API Itens cacheados retornam sem chamar o backend Um cache é dedicado para você, por estágio (stage) 0.5 GB a 237 GB de cache
  • 32.
    API Gateway Back end GET- /sayHello AWS Lambda fn_sayHello /sayHello { “message” : “hello world” } <xml> <message> Hello world </message> </xml> #set($root = $input.path('$')) <xml> <message> $root.message </message> </xml> Input/output transforms
  • 33.
    Input/output transforms Filtrar resultadosde output • Remover dados privados ou desnecessários • Filtrar o tamanho do dataset para melhorar a performance da API GET para POST • Leia os query string parameters de sua requisição GET e crie um corpo para fazer requisições POST para seu back end JSON para XML • Receba um input JSON e transforme-o em XML para seu back end • Receba um JSON de uma função AWS Lambda e transforme-o para XML
  • 34.
    Outras Funcionalidades Mock Integration Importadorde Swagger Gere SDKs a partir de sua Your APIs Custom Domain / HTTPS Client-Side SSL Authentication Link lambda version
  • 35.
  • 36.
    “Headline 1 –sobre resultados gerais do projeto” • Maior rede exclusiva de turismo do Brasil, contando com mais de 1000 lojas próprias • Mais de 7 milhões de clientes embarcados em 2015 • Marca “Top of Mind” no segmento de Turismo • 44 anos de experiência no Mercado “Com a combinação dos mecanismos da AWS Api Gateway, Elastic Cache e Lambda pudemos desenhar uma arquitetura escalável e de rápida implementação.” Cristiano Camilo
  • 37.
    O Desafio • Substituirarquitetura atual por outra mais escalável, suportando assim picos de acesso mais naturalmente • Prover um melhor tempo de resposta para o usuário final, sem a latência dos atuais fornecedores • Padronizar as APIS expostas e garantir segurança de acesso as mesmas
  • 38.
  • 39.
    Amazon API Gateway Recapitulando AWSLambda • Não há servidores para serem gerenciados • Escalabilidade contínua • Medidor de sub-segundo • Econômico e eficiente • Desempenho em qualquer escala • Monitore facilmente as atividades das APIs • Agilize o desenvolvimento de APIs • Controles de segurança flexíveis • Crie endpoints RESTful para serviços existentes • Execute suas APIs sem servidores