Escalonamento e controles de concorrência

Aplicações Serverless com AWS Lambda

Claudio Canales

Senior DevOps Engineer

Escala em uma imagem

  • Mais demanda -> mais execuções paralelas.
  • Cada execução usa um ambiente.
  • Concorrência = execuções acontecendo agora.

Pico de demanda -> mais ambientes

Aplicações Serverless com AWS Lambda

O que é concorrência?

  • Uma invocação = uma unidade de trabalho.
  • Concorrência = quantas rodam agora.
  • Se 10 estão rodando, concorrência = 10.

Invocações em paralelo

Aplicações Serverless com AWS Lambda

Estimando a concorrência necessária

  • Regra prática: concurrency = rps * duration.
  • Reduza a duração para reduzir a concorrência.
  • Use isso para dimensionar limites com segurança.

Fórmula de concorrência

Aplicações Serverless com AWS Lambda

Exemplo: 50 rps em 200 ms

  • 200 ms = 0,2 segundo.
  • 50 * 0,2 = 10 execuções simultâneas.
  • Código mais rápido = menos paralelismo.

Exemplo de cálculo de concorrência

Aplicações Serverless com AWS Lambda

Limites: pool da conta vs fatia da função

  • A concorrência é limitada no nível da conta.
  • Reserve parte do pool para uma função crítica.
  • As demais funções compartilham o restante.

Pool de concorrência da conta

Aplicações Serverless com AWS Lambda

Concorrência reservada: teto rígido

  • Uma válvula de segurança.
  • Limita o trabalho em paralelo.
  • Acima do teto, as invocações sofrem throttle.
  • Uma função barulhenta não esgota a capacidade.

Teto de concorrência reservada

Aplicações Serverless com AWS Lambda

Throttling: como aparece

  • O Lambda aplica throttle no limite de concorrência.
  • O chamador não recebe execução normal.
  • Você vê throttles no monitoramento.

Sinais de throttling

Aplicações Serverless com AWS Lambda

Concorrência provisionada: capacidade aquecida

  • Um pool de ambientes pré-inicializados.
  • Geralmente atrás de um alias.
  • As requisições começam mais rápido.

Pool aquecido de concorrência provisionada

Aplicações Serverless com AWS Lambda

Cold start vs provisionada

Cold start

  • Um atraso de inicialização único.
  • A primeira requisição paga o custo de setup.

Provisionada

  • Trabalho de init feito antes.
  • A primeira requisição não paga o setup.

Linha do tempo: cold vs provisionada

Aplicações Serverless com AWS Lambda

Reservada vs provisionada (problemas diferentes)

  • Reservada controla carga.
  • Provisionada controla a latência de startup.
  • Muitas funções em produção usam ambas.

Comparação: reservada vs provisionada

Aplicações Serverless com AWS Lambda

Proteger sistemas a jusante

  • O banco aguenta só um número de conexões.
  • Um teto de concorrência evita isso.
  • Um pico de tráfego pode virar indisponibilidade.

Teto de concorrência protege o banco

Aplicações Serverless com AWS Lambda

Rajadas vs tráfego estável

  • Rajadas criam muitos ambientes paralelos.
  • Handlers lentos mantêm a concorrência alta.
  • Tetos suavizam o pico.
  • Reduzir a duração também é estratégia de escala.

Tráfego em rajada vs estável

Aplicações Serverless com AWS Lambda

Falhas e retries aumentam a carga

  • Retries podem amplificar o tráfego.
  • Limites de concorrência reduzem o impacto.
  • Um loop de falha pode sobrecarregar dependências.

Retries multiplicam a carga

Aplicações Serverless com AWS Lambda

Um fluxo simples de tuning

  • Comece medindo.
  • Defina teto quando surgir throttle ou pressão.
  • Adicione capacidade provisionada quando cold starts afetarem a latência.

Medir -> limitar -> pré-aquecer

Aplicações Serverless com AWS Lambda

Pontos-chave

  • Concorrência ajuda a pensar em escala.
  • Estime: rps * duration.
  • Reservada limita carga; monitore throttles.
  • Provisionada reduz a latência de cold start.

Principais pontos sobre concorrência

Aplicações Serverless com AWS Lambda

Vamos praticar!

Aplicações Serverless com AWS Lambda

Preparing Video For Download...