Ciclo de vida do evento: retries, DLQs e destinos

Aplicações Serverless com AWS Lambda

Claudio Canales

Senior DevOps Engineer

Ciclo de vida do evento: visão geral

  • A Lambda chama seu handler.
  • O handler ou tem sucesso ou falha.
  • Se falhar, retries e roteamento definem o próximo passo.

Fluxo do ciclo de vida do evento

Aplicações Serverless com AWS Lambda

Duas formas de a falha aparecer

Síncrono

  • O caller espera e recebe um erro.

Assíncrono

  • O caller é reconhecido primeiro.
  • A Lambda faz retries em segundo plano.
  • O tratamento de falha depende do modo de invocação.

Caminhos de falha: síncrono vs. assíncrono

Aplicações Serverless com AWS Lambda

Retries são normais

  • Retries são recurso, não bug.
  • Uma falha transitória pode dar certo na próxima.
  • Retries geram duplicatas; seu handler deve lidar com isso.

Analogia de rediscagem para retry

Aplicações Serverless com AWS Lambda

Retries ao longo do tempo

  • Retries recuperam falhas transitórias.
  • Mas o mesmo evento pode rodar várias vezes.
  • Idempotência e erros bem tratados são essenciais.

Linha do tempo de tentativas de retry

Aplicações Serverless com AWS Lambda

Quando retries são perigosos

  • Retries são arriscados quando o trabalho não é idempotente.
  • Ex.: cobrar um cartão, enviar um e-mail.
  • Use chaves de idempotência e updates seguros para evitar danos por duplicatas.

Objetivo da idempotência

Aplicações Serverless com AWS Lambda

DLQ (Dead-Letter Queue)

  • Um local seguro para eventos que falham mesmo após retries.
  • Geralmente uma fila SQS, o serviço gerenciado de filas da AWS.
  • Inspecione o payload, corrija o problema e reenvie.

Analogia de achados e perdidos da DLQ

Aplicações Serverless com AWS Lambda

DLQ vs. destinos

Analogia de achados e perdidos da DLQ

  • Captura eventos que falharam após retries.
  • Use para investigação.

Diagrama de roteamento com destinos

  • Roteiam resultados em sucesso ou falha.
  • Crie fluxos explícitos de sucesso e falha.
Aplicações Serverless com AWS Lambda

Destinos: rotas de sucesso e falha

  • Em sucesso, envie o resultado para onSuccess.
  • Em falha, envie detalhes para onFailure.
  • Isso deixa o próximo passo explícito.

Diagrama de roteamento com destinos

Aplicações Serverless com AWS Lambda

Ajustando a política de retry

  • Ajuste quantas vezes a Lambda faz retry.
  • Limite a idade do evento para evitar dados velhos.
  • Mais retries aumentam confiabilidade, mas também duplicatas e atraso.

Controles de política de retry

Aplicações Serverless com AWS Lambda

Idade máxima do evento: data de validade

  • Idade máxima do evento é uma política de expiração.
  • Se o evento está velho, processá-lo pode não valer a pena.
  • Trade-off: menos eventos atrasados, comportamento mais oportuno.

Analogia de expiração pela idade do evento

Aplicações Serverless com AWS Lambda

Observabilidade: onde olhar

  • Logs dizem o que aconteceu.
  • Métricas dizem com que frequência.
  • Alarmes ajudam a detectar picos rápido.

Logs vs. métricas

Aplicações Serverless com AWS Lambda

O que fazer com eventos que falharam

  • Inspecione o payload e o erro.
  • Corrija a causa raiz.
  • Reenvie o evento e monitore erros e throughput.

Ciclo de recuperação de eventos com falha

Aplicações Serverless com AWS Lambda

Pontos principais

  • Confiabilidade vem de retries, roteamento e observabilidade.
  • Erros síncronos chegam ao caller.
  • Erros assíncronos exigem retries mais DLQs ou destinos.
  • Isso mantém falhas visíveis.

Diagrama da fórmula de confiabilidade

Aplicações Serverless com AWS Lambda

Vamos praticar!

Aplicações Serverless com AWS Lambda

Preparing Video For Download...