Ajuste de performance e técnicas de otimização

Aplicações Serverless com AWS Lambda

Claudio Canales

Senior DevOps Engineer

Performance = latência + custo

  • Você paga pelo tempo.
  • Otimizar performance também reduz custos.
  • Meça antes de otimizar.
  • Mude uma coisa por vez.

Cronômetro e custo

Aplicações Serverless com AWS Lambda

Onde o tempo é gasto

  • Inicialização.
  • Execução do handler.
  • Tempo esperando chamadas externas.

Init vs handler vs chamadas externas

Aplicações Serverless com AWS Lambda

Cold start vs warm start

Cold start

  • A Lambda precisa de um novo ambiente.

Warm start

  • Reaproveita um ambiente existente.
  • O handler roda com menos overhead.

Linha do tempo: cold vs warm

Aplicações Serverless com AWS Lambda

Trabalho no init vs no handler

  • Imports e setup global rodam no init.
  • Init pesado deixa cold starts mais lentos.
  • A duração do init aparece nas métricas.

Divisão entre init e handler

Aplicações Serverless com AWS Lambda

Reutilize clients entre invocações warm

  • Criar um client a cada invocação repete o custo.
  • Reaproveite quando o ambiente estiver warm.

Reuso de client global

Aplicações Serverless com AWS Lambda

Padrão: client fora do handler

import boto3
sts = boto3.client("sts")
def handler(event, context):
    return sts.get_caller_identity()

Client criado uma vez

Aplicações Serverless com AWS Lambda

Faça cache do que der

  • Guarde dados em memória.
  • Use /tmp para arquivos temporários pequenos.
  • Faça cache com cuidado e invalide quando preciso.

Cache em memória e /tmp

Aplicações Serverless com AWS Lambda

Mantenha dependências enxutas

  • Pacotes grandes demoram mais pra carregar.
  • Remova o que não usa.
  • Mantenha dependências no mínimo.

Pacote enxuto vs pesado

Aplicações Serverless com AWS Lambda

Faça logs com critério

  • Log demais gera custo e ruído.
  • Prefira mensagens pequenas e estruturadas.
  • Mantenha pesquisável; facilite trace e debug.

Volume de logs vs sinal

Aplicações Serverless com AWS Lambda

Reduza o overhead de chamadas externas

  • Chamadas a outros serviços são a parte mais lenta.
  • Reduza chamadas; processe em lote quando der.
  • Defina timeouts pra evitar travamentos.

Minimize chamadas externas

Aplicações Serverless com AWS Lambda

Memória também afeta a CPU

  • CPU escala com a memória.
  • Código CPU-bound pode terminar mais rápido.
  • Mais memória pode cortar duração e custo.
  • Teste pra achar o melhor valor.

Memória -> CPU -> runtime mais rápido

Aplicações Serverless com AWS Lambda

Encontre o ponto ideal de custo

  • A melhor memória minimiza o custo total.
  • A curva cai, depois achata ou sobe.
  • Refaça os testes após mudanças.

Curva de custo vs memória

Aplicações Serverless com AWS Lambda

Meça com o CloudWatch

  • Acompanhe Duration e Init duration.
  • Acompanhe erros e throttles.
  • Observe latências de cauda (p95, p99).

Métricas de performance no CloudWatch

Aplicações Serverless com AWS Lambda

Reduzindo cold starts

  • Enxugue o que roda no init.
  • Mantenha o pacote enxuto.
  • Reaproveite setups caros.
  • Considere ambientes provisionados.

Checklist para reduzir cold starts

Aplicações Serverless com AWS Lambda

Principais aprendizados

  • Saiba onde o tempo é gasto.
  • Reaproveite clients e faça cache com cuidado.
  • Memória muda CPU e duração.
  • Meça cada mudança.

Principais lições de performance

Aplicações Serverless com AWS Lambda

Vamos praticar!

Aplicações Serverless com AWS Lambda

Preparing Video For Download...