Configurando o AWS Lambda para produção

Implantando Aplicações na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Funcionou no teste

  • A função passou em todos os testes
  • Em produção, ela sofre timeout e throttling
  • O código estava ok; a configuração não

Uma função serverless que passou nos testes, mas enfrenta dificuldades em produção, com ajustes nos controles de memória e timeout

Implantando Aplicações na AWS

Configurações do Lambda que importam em produção

Logotipo central do Lambda com quatro caixas de configuração de produção: Memory com controle que também escala CPU, Timeout com relógio, Ephemeral Storage e Concurrency mostrando instâncias paralelas

  • Memory: também escala CPU e rede
  • Timeout: segundos máximos antes de matar a função
  • Ephemeral storage: espaço temporário em /tmp
  • Concurrency: quantas rodam ao mesmo tempo
Implantando Aplicações na AWS

Dimensionamento de memória e o vínculo com a CPU

  • Mais memória = mais CPU proporcionalmente
  • Funções ligadas a CPU podem rodar mais rápido com mais memória
  • Duração menor pode significar menor custo
  • Dimensione testando, não no chute

Curva memória vs custo: duração cai acentuadamente com mais memória e depois estabiliza; custo total em formato de U com ponto ótimo destacado no meio

Implantando Aplicações na AWS

Concurrency: reservada vs provisionada


Concurrency reservada

  • Limita o máximo de execuções simultâneas
  • Protege sistemas a jusante e outras funções

Concurrency provisionada

  • Pré-aquece instâncias, sem cold start
  • Para funções sensíveis à latência e voltadas ao usuário
Implantando Aplicações na AWS

Empacotando configuração e código compartilhado

  • Environment variables: configuração por ambiente
  • Layers: compartilhe código e dependências entre funções
  • Extensions: rodam junto da função para ferramentas
  • Mantenha config fora do pacote de deploy

Opções de empacotamento do Lambda: environment variables com configuração externa, layers compartilhando bibliotecas entre funções e extensions rodando ao lado do handler para monitoramento ou segredos

Implantando Aplicações na AWS

Conectando o Lambda a uma VPC

Lambda conectado a uma VPC privada via ENIs em sub-redes privadas, security group controlando o acesso de saída e um NAT gateway fornecendo conectividade à internet

  • Conecte o Lambda a sub-redes privadas para recursos internos
  • O Lambda cria ENIs na sua VPC
  • Security groups controlam o que ele pode acessar
  • Precisa de NAT ou endpoint da VPC para acesso externo
Implantando Aplicações na AWS

Tratando falhas com destinos e DLQs

  • Invocações assíncronas tentam novamente automaticamente em caso de falha
  • Lambda Destinations: roteia onSuccess e onFailure
  • Dead-letter queue: captura eventos que nunca têm sucesso
  • Nunca descarte silenciosamente um evento com falha

Tratamento de falhas assíncronas no Lambda: loop de tentativas levando a Lambda Destinations com ramificações onSuccess e onFailure, e uma dead-letter queue capturando eventos que esgotam todas as tentativas

Implantando Aplicações na AWS

Vamos praticar!

Implantando Aplicações na AWS

Preparing Video For Download...