Concorrência, limitação e concorrência reservada
Entenda como o Lambda escala de forma concorrente, defina concorrência reservada para proteger serviços downstream e trate erros de limitação.
Concorrência, limitação e concorrência reservada é uma aula grátis de Cloud & IT Cert Prep no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
Como o Lambda escala simultaneamente
O Lambda escala executando várias execuções simultâneas da sua função — uma para cada evento simultâneo. Quando 100 solicitações chegam ao mesmo tempo, o Lambda executa 100 instâncias paralelas da sua função. A AWS gerencia automaticamente a infraestrutura subjacente. O limite de simultaneidade no nível da conta é de 1.000 execuções simultâneas por Região por padrão (um limite flexível que pode ser aumentado por meio de uma solicitação de cota de serviço).
Cálculo da simultaneidade
A simultaneidade é calculada da seguinte forma: Simultaneidade = solicitações por segundo × duração média em segundos. Se sua função processa 500 solicitações por segundo e cada uma leva 0,2 segundo, você precisa de 100 execuções simultâneas. Entender essa fórmula ajuda a prever se os limites da sua conta são suficientes e se você precisa solicitar aumentos de cota antes de um evento de alto tráfego.
# Example concurrency calculation
# RPS = 500, avg_duration = 0.2s
# Concurrency = 500 * 0.2 = 100
# To check current concurrency limits:
aws lambda get-account-settingsLimitação: o que acontece quando os limites são atingidos
Quando o Lambda recebe mais solicitações do que o limite de simultaneidade permite, ele limita o excesso. Para invocações síncronas (por exemplo, pelo API Gateway), as solicitações limitadas recebem imediatamente um 429 TooManyRequestsException, que deve ser tratado pelo chamador. Para invocações assíncronas (por exemplo, eventos do S3), o Lambda coloca os eventos em uma fila e tenta novamente por até 6 horas antes de enviá-los para uma fila de mensagens não entregues.
Explicação da simultaneidade reservada
A simultaneidade reservada garante um número específico de execuções simultâneas para determinada função, reservando-as do grupo da conta. Ela tem duas finalidades: (1) garantir capacidade — a função sempre terá esse número de execuções disponíveis, mesmo que outras funções estejam consumindo a cota da conta; (2) limitar a simultaneidade — a função nunca poderá exceder o número reservado, protegendo as dependências posteriores contra sobrecarga.
# Reserve 100 concurrent executions for a critical function
aws lambda put-function-concurrency \
--function-name 'CriticalProcessor' \
--reserved-concurrent-executions 100Proteção de serviços posteriores com simultaneidade reservada
Um cenário importante de prova: uma função do Lambda grava em um banco de dados RDS que tem um limite de 50 conexões. Sem controles de simultaneidade, o Lambda poderia escalar para centenas de execuções simultâneas e esgotar todas as conexões do banco de dados, causando erros em todas as funções. Definir a simultaneidade reservada como 40 garante que o Lambda nunca exceda 40 conexões simultâneas com o banco de dados, protegendo a instância do RDS. Esse é um padrão crítico para qualquer função do Lambda que chame um serviço com limite de conexões.
Simultaneidade provisionada para eliminar inicializações a frio
A simultaneidade provisionada pré-inicializa um número especificado de ambientes de execução do Lambda para que estejam prontos para responder imediatamente, sem uma inicialização a frio. Isso é essencial para APIs sensíveis à latência, nas quais até mesmo uma inicialização a frio de 100 ms é inaceitável. Você paga uma tarifa por hora pela simultaneidade provisionada mesmo quando esses ambientes estão ociosos; portanto, combine-a com o Auto Scaling para ajustar os níveis provisionados com base nos padrões de tráfego previstos.
aws lambda put-provisioned-concurrency-config \
--function-name 'LatencySensitiveAPI' \
--qualifier 'prod' \
--provisioned-concurrent-executions 50Simultaneidade reservada versus provisionada
Esses recursos costumam ser confundidos, mas têm finalidades diferentes. A simultaneidade reservada limita e garante a alocação de capacidade do grupo da conta; ela não elimina as inicializações a frio. A simultaneidade provisionada mantém os ambientes de execução aquecidos para eliminar as inicializações a frio; ela não impede que outras funções usem o mesmo grupo. Use a simultaneidade reservada para limitar o fluxo; use a simultaneidade provisionada para melhorar a latência. Ambas podem ser usadas juntas na mesma função.
Limites de explosão e escalabilidade inicial
O Lambda não escala instantaneamente até a simultaneidade máxima. Existe um limite de explosão no nível da conta (taxa de escalabilidade inicial) que varia por Região — normalmente, uma explosão inicial de 3.000 execuções, seguida de 500 execuções adicionais por minuto até que o limite seja atingido. Para aplicações que preveem picos repentinos e massivos (tráfego viral e vendas relâmpago), use a simultaneidade provisionada para pré-aquecer ambientes suficientes, evitando que o limite de explosão cause limitações durante o aumento inicial.
Métricas de simultaneidade do Lambda no CloudWatch
Monitore a simultaneidade do Lambda com estas métricas essenciais do CloudWatch:
- ConcurrentExecutions: número atual de instâncias em execução
- Throttles: quantidade de invocações limitadas (deve ser zero em um sistema saudável)
- UnreservedConcurrentExecutions: grupo não reservado no nível da conta
- ProvisionedConcurrencyUtilization: quanto da capacidade provisionada está em uso
Configure alarmes em Throttles para receber notificações antes que a limitação afete os usuários finais.
aws cloudwatch put-metric-alarm \
--alarm-name 'LambdaThrottlesAlert' \
--metric-name Throttles \
--namespace AWS/Lambda \
--dimensions Name=FunctionName,Value=MyFunction \
--statistic Sum \
--period 60 \
--threshold 1 \
--comparison-operator GreaterThanOrEqualToThreshold \
--evaluation-periods 1Tratamento de limitações no código da aplicação
Ao projetar sistemas que invocam o Lambda de forma síncrona (API Gateway e chamadas diretas pelo SDK), implemente recuo exponencial com aleatoriedade no chamador. Os SDKs da AWS têm lógica integrada de novas tentativas, mas, para funções do Lambda expostas pelo API Gateway, você deve tratar as respostas 429 na aplicação cliente. Para o Lambda acionado pelo SQS, o próprio serviço SQS trata as novas tentativas; defina adequadamente o número máximo de recebimentos na fila de origem e configure uma DLQ para as novas tentativas esgotadas.
Simultaneidade e acionadores baseados em fluxos
Para Kinesis Data Streams e Streams do DynamoDB, a simultaneidade do Lambda é limitada pelo número de (Kinesis) ou partições (DynamoDB). Cada fragmento/partição é processado exatamente por uma execução simultânea do Lambda. Se você tiver 10 fragmentos do Kinesis, o Lambda executará até 10 execuções simultâneas para esse acionador. Isso significa que os problemas de limitação com acionadores baseados em fluxos geralmente são resolvidos aumentando a quantidade de fragmentos, em vez de aumentar os limites de simultaneidade.
Verificação rápida
Teste sua compreensão dos conceitos do AWS Solutions Architect (SAA-C03) apresentados nesta lição.
Recapitulação da lição
Nesta lição, você aprendeu que a simultaneidade reservada garante e limita as execuções simultâneas de uma função para proteger serviços posteriores e assegurar a disponibilidade; a simultaneidade provisionada pré-inicializa ambientes para eliminar inicializações a frio em cargas de trabalho sensíveis à latência; e a limitação se manifesta como erros 429 em invocações síncronas e novas tentativas enfileiradas em invocações assíncronas — monitore-a com a métrica Throttles do CloudWatch. A seguir, exploraremos as camadas do Lambda e os pacotes de implantação para gerenciar grandes dependências.
Perguntas Frequentes
A aula “Concorrência, limitação e concorrência reservada” é grátis?
Sim — o texto completo de “Concorrência, limitação e concorrência reservada” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
O que vou aprender em “Concorrência, limitação e concorrência reservada”?
Entenda como o Lambda escala de forma concorrente, defina concorrência reservada para proteger serviços downstream e trate erros de limitação. Você pratica Cloud & IT Cert Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cloud & IT Cert Prep?
Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Concorrência, limitação e concorrência reservada”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cloud & IT Cert Prep?
Sim. Cada aula de Cloud & IT Cert Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Funções do Lambda: ambientes de execução, acionadores e manipuladores
- Concorrência, limitação e concorrência reservada
- Camadas do Lambda e pacotes de implantação
- Lambda@Edge e padrões orientados a eventos