O blog da AWS

Criando Aplicações com Uso Intensivo de Memória com AWS Lambda Managed Instances

Por Guy Haddad, Arquiteto de Soluções Sênior na Amazon Web Service e Mythili Annamalai Sekar, Arquiteto de Soluções Sênior na Amazon Web Services. 

Criar aplicações com uso intensivo de memória com AWS Lambda ficou mais fácil. AWS Lambda Managed Instances oferece até 32 GB de memória—3x mais do que o AWS Lambda padrão—mantendo a experiência Serverless familiar. Aplicações modernas exigem cada vez mais recursos substanciais de memória para processar grandes conjuntos de dados, realizar análises complexas e entregar insights em tempo real para casos de uso como análise em memória, inferência de modelos de Machine Learning (ML) e busca semântica em tempo real. AWS Lambda Managed Instances oferece um modelo de programação Serverless familiar, combinado com a flexibilidade de escolher os tipos de instância Amazon EC2 subjacentes, dando aos desenvolvedores acesso a grandes configurações de memória.

Nesta publicação, você vai ver como o AWS Lambda Managed Instances viabiliza cargas de trabalho com uso intensivo de memória que antes eram difíceis de executar em ambientes Serverless, usando como exemplo prático uma aplicação de análise de clientes baseada em IA. Você vai ver economias de até 33% em comparação com o Lambda padrão para cargas de trabalho previsíveis, sem a sobrecarga operacional de gerenciar instâncias EC2.

Entendendo o AWS Lambda Managed Instances

O AWS Lambda Managed Instances executa suas funções AWS Lambda nos tipos de instância Amazon EC2 de sua escolha, na sua conta, incluindo Graviton4 e tipos de instância otimizados para memória. A AWS gerencia o ciclo de vida da infraestrutura subjacente, incluindo provisionamento, escalabilidade, aplicação de patches e roteamento, enquanto você aproveita as vantagens de preços do Amazon EC2, como Savings Plans e Reserved Instances.

Os principais benefícios incluem:

  • Seleção flexível de instâncias: Escolha entre famílias de instâncias otimizadas para computação (C), de uso geral (M) e otimizadas para memória (R)
  • Proporções memória-CPU configuráveis: Otimize a alocação de recursos para sua carga de trabalho
  • Invocações multi-concorrentes: Um ambiente de execução processa múltiplas invocações simultaneamente, melhorando a utilização para aplicações com uso intensivo de I/O
  • Escalabilidade dinâmica: As instâncias escalam com base na utilização de CPU, sem cold starts

O AWS Lambda Managed Instances é mais indicado para cargas de trabalho de alto volume e previsíveis que se beneficiam de capacidade de computação sustentada e configurações de memória maiores.

Cargas de Trabalho com Uso Intensivo de Memória Funcionam Melhor com AWS Lambda Managed Instances

Esta publicação se concentra em uma das capacidades mais poderosas do AWS Lambda Managed Instances: executar cargas de trabalho com uso intensivo de memória que exigem mais do que os 10 GB de memória e o limite de ZIP de 250 MB do AWS Lambda padrão. Veja os casos de uso em que o AWS Lambda Managed Instances ajuda:

  • Análise em Memória — Carregue gigabytes de dados estruturados na memória durante a inicialização e responda a consultas analíticas em submilissegundos ao longo de milhares de invocações
  • Inferência de Modelos ML — Mantenha grandes pesos de modelos na memória entre invocações para inferência consistente e de baixa latência sem um endpoint dedicado.
  • Busca Semântica em Tempo Real — Crie busca de similaridade vetorial sobre grandes índices de embeddings mantidos inteiramente na memória, viabilizando consultas em linguagem natural sobre milhões de registros sem um banco de dados vetorial externo.
  • Processamento de Grafos — Mantenha grandes estruturas de grafos na memória para algoritmos de travessia que exigem acesso ao grafo completo de uma vez.
  • Computação Científica e Numérica — Execute simulações, métodos de Monte Carlo e operações com matrizes grandes que exigem memória de trabalho substancial e se beneficiam de famílias de instâncias Amazon EC2 otimizadas para memória.
  • Geração de Relatórios em Grande Escala — Agregue e transforme conjuntos de dados de múltiplos gigabytes na memória para gerar relatórios complexos ou dashboards sob demanda, sem passar por armazenamento intermediário.

Caso de Uso: Análise de Clientes Baseada em IA com AWS Lambda Managed Instances

Para demonstrar o poder do AWS Lambda Managed Instances para aplicações com uso intensivo de memória, construímos uma aplicação de análise de clientes baseada em IA que combina processamento de dados em memória com busca semântica baseada em ML. A aplicação carrega na memória 1 milhão de registros comportamentais de clientes (sessões, compras, padrões de navegação) de um arquivo Parquet no S3 em um Pandas DataFrame e um cache de embeddings consumindo 200 MB, e então responde a consultas analíticas:

  1. Análise de Clientes — Análise detalhada do comportamento individual do cliente: pontuações de engajamento, taxas de conversão, padrões de compra e segmentos de clientes gerados por IA
  2. Busca Semântica — Consultas em linguagem natural com FastEmbed (sentence-transformers/all-MiniLM-L6-v2) que encontram clientes similares usando similaridade vetorial
  3. Análise de Coorte — Segmentação em tempo real por dispositivo, país, faixa etária com métricas agregadas

Visão Geral da Arquitetura

Nossa aplicação de análise de clientes baseada em IA demonstra isso na prática: 1 milhão de registros na memória (200 MB), um modelo compacto de transformador de sentenças para busca semântica, desempenho de consulta em subsegundos e nenhuma infraestrutura para gerenciar. A solução usa uma arquitetura Serverless simples:

  • Dados de transações de clientes (formato Parquet) são armazenados no Amazon S3
  • O Amazon Cognito User Pool autentica usuários e emite tokens JWT para acesso à API
  • O Amazon API Gateway roteia solicitações com validação de autorizador Cognito, limitação de taxa (5 solicitações/segundo, burst 10), rastreamento X-Ray e registro de acesso
  • A função AWS Lambda com AWS Lambda Managed Instances carrega todo o conjunto de dados (200 MB) e o modelo all-MiniLM-L6-v2 (900 MB) na memória durante a inicialização, ao mesmo tempo que gera o cache de embeddings em threads. Esta etapa pode consumir cerca de 14 GB da memória alocada, excedendo o limite de 10 GB do AWS Lambda padrão
  • Consultas analíticas são executadas contra os dados em memória usando o modelo
  • Os resultados são retornados em milissegundos para análise interativa

Implantar a Aplicação

As etapas a seguir orientam você na implantação da aplicação na AWS usando o AWS Serverless Application Model (SAM). O processo de implantação empacota o código da sua função Lambda, faz upload de artefatos para o Amazon S3 e provisiona todos os recursos AWS necessários, incluindo funções Lambda, funções IAM e qualquer rede VPC configurada via AWS CloudFormation.

Pré-requisitos

Certifique-se de ter as seguintes ferramentas instaladas:

  • AWS CLI configurado com credenciais
  • SAM CLI instalado
  • Python 3.13+ instalado localmente
  • Docker ou Finch (necessário para builds de container)
  • Conta AWS com permissões apropriadas
  • Uma VPC com pelo menos 2 sub-redes (em diferentes Zonas de Disponibilidade) e um grupo de segurança — necessário para o Capacity Provider do Lambda Managed Instances
  • Regiões suportadas: Verifique AWS Capabilities by Region para regiões suportadas

Começando

O código-fonte completo para esta aplicação está disponível em nosso repositório GitHub. Para implantá-lo você mesmo, siga as etapas a seguir e consulte as instruções completas de implantação hospedadas no GitHub.

  1. Clone o repositório

git clone https://github.com/aws-samples/sample-lambda-managed-instances-analytics.git

  1. Navegue até a pasta do projeto

cd sample-lambda-managed-instances-analytics

chmod +x setup-data.sh deploy-lambda.sh

  1. Gere dados de amostra e faça upload para o S3

./setup-data.sh

Este script criará um bucket S3 (se necessário), gerará 1 milhão de linhas de dados de amostra e fará upload dos dados para o S3.

  1. Construa e implante a função Lambda

./deploy-lambda.sh

Este script criará a imagem de container com FastEmbed, enviará para o ECR e implantará a função Lambda junto com o Capacity Provider, o API Gateway e o Cognito User Pool. Após a implantação, o script gera automaticamente a configuração de autenticação da UI e solicita que você crie um usuário de teste.

Executar a Aplicação

  1. Inicie a UI

A aplicação inclui uma UI simples baseada em HTML por meio da qual você pode testar a função AWS Lambda usando o Amazon API Gateway:

cd ui && python3 -m http.server 8000

  1. Abra seu navegador em http://localhost:8000 e clique em ‘Sign In’ para autenticar via Cognito com o nome de usuário e senha que você criou durante a implantação
  2. Insira a URL do seu endpoint de API. Teste a conexão e clique em System Info.

Testar a Aplicação

a. Análise de Clientes — Insira um ou mais IDs de usuário para obter mais informações sobre o comportamento do cliente: pontuações de engajamento, taxas de conversão, padrões de compra e segmentos de clientes gerados por IA

b. Busca Semântica – Insira consultas em linguagem natural como “listar clientes de alto valor dos EUA” na Busca Semântica e confira os resultados. Note que a resposta é muito rápida, pois os dados analíticos e os modelos FastEmbed são carregados na memória durante a fase de inicialização

c. Análise de Coorte — Insira os parâmetros da consulta para obter segmentação em tempo real por dispositivo, país e faixa etária com métricas agregadas

Observabilidade

O AWS Lambda Managed Instances publica métricas no Amazon CloudWatch automaticamente, dando visibilidade sobre o desempenho da função e a utilização de capacidade. Monitore InitDuration para acompanhar o tempo de carregamento do conjunto de dados e do modelo na inicialização, MaxMemoryUsed para verificar que seus dados cabem na memória configurada e ProvisionedConcurrencySpilloverInvocations para detectar quando a capacidade do AWS Lambda Managed Instances está saturada.

Ative o AWS Lambda Insights para métricas aprimoradas por invocação, incluindo tempo de CPU e utilização de memória ao longo do tempo. Use o Amazon CloudWatch Log Insights para consultar entradas de log INIT_START, INIT_END e REPORT para detalhes de inicialização e memória por invocação.

O Que Torna Isso Melhor com AWS Lambda Managed Instances

Sem o AWS Lambda Managed Instances, criar esta mesma aplicação exigiria uma destas alternativas:

  • Opção A: EC2 com auto-scaling — Controle total, responsabilidade total: aplicação de patches, políticas de escalabilidade, balanceamento de carga e pipelines de implantação — tudo por sua conta.
  • Opção B: Redesenhar para Lambda padrão — Trocar dados em memória por um banco de dados externo e substituir o modelo ML por um endpoint do Amazon SageMaker. Mais latência, mais custo, mais complexidade.

Com o AWS Lambda Managed Instances, você escreve uma única função AWS Lambda, define um Capacity Provider e implanta com SAM. O AWS Lambda gerencia as instâncias Amazon EC2, escalabilidade e ciclo de vida, dando a você a memória que precisa com a simplicidade operacional que você quer. A abordagem em memória elimina latência de rede e I/O de disco, entregando tempos de resposta consistentes abaixo de 200 ms para análises complexas.

Considerações de Custo

O AWS Lambda Managed Instances usa preços baseados no Amazon EC2 com uma taxa de gerenciamento. Para cargas de trabalho previsíveis, você pode aproveitar os Amazon EC2 Savings Plans ou Reserved Instances para reduzir custos significativamente.

Exemplo de comparação de custos (us-east-1, 32 GB de memória, 1M invocações/mês):

  • AWS Lambda (padrão): ~$267/mês (preço sob demanda)
  • AWS Lambda Managed Instances: ~$180/mês (com Compute Savings Plan de 1 ano)
  • Economia: redução de 33%

Os benefícios de custo aumentam com configurações de memória mais altas e cargas de trabalho sustentadas que aproveitam os descontos de preços do Amazon EC2.

Melhores Práticas

Com base na experiência de criar esta solução, estas são as principais recomendações:

  • Dimensionamento de memória: Comece com o tamanho do seu conjunto de dados mais 50% de margem para processamento. Monitore as métricas do Amazon CloudWatch para otimizar.
  • Estratégia de inicialização: Carregue grandes conjuntos de dados durante a fase de inicialização para diluir o custo entre múltiplas invocações.
  • Configuração de concorrência: Defina PerExecutionEnvironmentMaxConcurrency com base nas características de I/O da sua carga de trabalho. Valores mais altos funcionam bem para análises vinculadas a I/O.
  • Formato de dados: Use formatos colunares como Parquet para uso eficiente de memória e carregamento rápido.
  • Monitoramento: Acompanhe a duração de inicialização, a utilização de memória e a latência de invocação no Amazon CloudWatch para identificar oportunidades de otimização.

Limpeza

Quando terminar de explorar a solução, remova todos os recursos provisionados para evitar cobranças contínuas. Para os comandos de limpeza e etapas detalhadas, consulte o README.md do projeto no repositório GitHub.

Conclusão

O AWS Lambda Managed Instances abre uma nova classe de aplicações Serverless que suportam pacotes de camadas AWS Lambda maiores e mais memória. Cargas de trabalho com uso intensivo de memória — análise em memória, inferência ML, processamento de grafos, computação científica — agora podem ser executadas com a simplicidade do AWS Lambda e os recursos do Amazon EC2. O exemplo de análise de clientes demonstra como o processamento em memória com AWS Lambda Managed Instances oferece melhorias de desempenho em relação a consultas tradicionais de banco de dados, mantendo benefícios Serverless como escalabilidade automática e preços de pagamento por uso.

Pronto para começar? Explore a documentação do AWS Lambda Managed Instances e tente construir sua própria aplicação Serverless com uso intensivo de memória. Você pode encontrar o código completo para este exemplo no GitHub.

Este conteúdo foi traduzido da publicação original, que pode ser encontrada aqui.

Biografia do Autores

Guy Haddad é um Arquiteto de Soluções Sênior na Amazon Web Services.
Mythili Annamalai Sekar  é uma Arquiteto de Soluções Sênior na Amazon Web Services. 

Biografia do tradutores

Daniel Abib é Arquiteto de Soluções Sênior e Especialista em Amazon Bedrock na AWS, com mais de 25 anos trabalhando com gerenciamento de projetos, arquiteturas de soluções escaláveis, desenvolvimento de sistemas e CI/CD, microsserviços, arquitetura Serverless & Containers e especialização em Machine Learning. Ele trabalha apoiando Startups, ajudando-os em sua jornada para a nuvem.

https://www.linkedin.com/in/danielabib/

Rodrigo Peres é Arquiteto de Soluções na AWS, com mais de 20 anos de experiência trabalhando com arquitetura de soluções, desenvolvimento de sistemas e modernização de sistemas legados.