A arquitetura Serverless é celebrada por sua capacidade de escalabilidade automática sob demanda. No entanto, o problema do Cold Start (tempo de inicialização da instância de execução) e o delay de escalabilidade em picos abruptos de tráfego continuam sendo desafios reais em produção.
A introdução do escalonamento agendado nativo para o AWS Lambda via Amazon EventBridge Scheduler resolve essa questão. Agora é possível prever horários de pico e provisionar concorrência de forma granular, desativando-a logo após a janela de alta demanda.
Concorrência Provisionada Dinâmica
Antes desta funcionalidade, os desenvolvedores precisavam programar funções auxiliares complexas ou usar ferramentas de terceiros para ajustar a concorrência provisionada das funções Lambda. Agora, regras agendadas do EventBridge acionam diretamente a API do Lambda para configurar o limite de concorrência.
sequenceDiagram
participant Cron as EventBridge Scheduler
participant LambdaAPI as AWS Lambda API
participant Instances as Executores Lambda Warm
Cron->>LambdaAPI: PutProvisionedConcurrencyConfig (Concurrency = 100)
LambdaAPI->>Instances: Pré-inicializa 100 ambientes de execução
Note over Instances: Ambientes prontos e aquecidos
Instances->>Instances: Processa tráfego sem Cold Start
Cron->>LambdaAPI: DeleteProvisionedConcurrencyConfig (Horário pós-pico)
LambdaAPI->>Instances: Desaloca instâncias ociosas
Configuração no AWS SAM/CloudFormation
Abaixo está um trecho de código demonstrando como declarar o auto-scaling agendado no seu template de infraestrutura como código (IaC):
Resources:
MyLambdaFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs20.x
CodeUri: ./src
LambdaConcurrencySchedulerScaleUp:
Type: AWS::Scheduler::Schedule
Properties:
FlexibleTimeWindow:
Mode: "OFF"
ScheduleExpression: "cron(50 8 * * ? *)" # Seg-Sex às 08:50 UTC
Target:
Arn: !Sub "arn:aws:scheduler:::aws-sdk:lambda:putProvisionedConcurrencyConfig"
RoleArn: !GetAtt SchedulerRole.Arn
Input: !Sub |
{
"FunctionName": "${MyLambdaFunction}",
"Qualifier": "LIVE",
"ProvisionedConcurrentExecutions": 150
}
Estratégia de Custo-Benefício de Concorrência
Configurar concorrência provisionada incorretamente pode neutralizar a vantagem financeira do serverless. Veja um exemplo prático de cálculo financeiro abaixo:
| Cenário | Tempo Ativo | Concorrência | Custo Médio Estimado |
|---|---|---|---|
| Sem Provisionamento | Sob demanda | Dinâmica | Apenas tempo de execução real |
| Provisionamento Fixo (24/7) | 720h / mês | 150 instâncias | Elevado (paga-se pela ociosidade) |
| Provisionamento Agendado (Picos) | 4h / dia útil | 150 instâncias | Otimizado (economia de até ~75%) |
A chave para o sucesso é mapear o comportamento histórico de acessos (através do Amazon CloudWatch Metrics) e sincronizar a escala de subida para 10 a 15 minutos antes do pico real de tráfego da aplicação.