O blog da AWS
Melhore a experiência de teste local para aplicativos Serverless com o LocalStack
Por Patrick Galvin, arquiteto de soluções especialista na Amazon Web Services e Debasis Rath, arquiteto de soluções especialista na Amazon Web Services.
Os aplicativos Serverless geralmente incluem vários serviços da AWS, como AWS Lambda, Amazon Simple Queue Service (Amazon SQS), Amazon EventBridge e Amazon DynamoDB. Embora as arquiteturas Serverless facilitem a criação de aplicativos que geralmente são simples de operar e escalar, testá-los exige etapas extras para os desenvolvedores. Recentemente, a AWS trouxe a você a capacidade de ajudar os desenvolvedores a depurar remotamente as funções do Lambda para acelerar o processo de desenvolvimento. Hoje, temos o prazer de anunciar novos recursos que simplificam ainda mais a experiência de teste local para funções Lambda e aplicativos Serverless por meio da integração com o LocalStack, um parceiro da AWS, no AWS Toolkit for Visual Studio Code.
Nesta publicação, mostraremos como você pode aprimorar sua experiência de teste local para aplicativos Serverless com o LocalStack usando o AWS Toolkit.
Desafios do desenvolvimento local Serverless
Ao criar aplicativos Serverless com ferramentas de infraestrutura como código (IaC), como o AWS Serverless Application Model (AWS SAM), os desenvolvedores geralmente enfrentam desafios durante testes de integração local de aplicativos que dependem de interações em vários serviços da AWS. Esses pontos de atrito diminuem o ciclo crítico de teste-depuração de código. Os desenvolvedores podem encontrar os seguintes obstáculos comuns:
- A validação baseada em nuvem retarda a iteração — Anteriormente, os desenvolvedores precisavam implantar modelos do AWS SAM na nuvem para testar mudanças, introduzindo atrasos nos ciclos de feedback. Pesquisas da AWS mostram que os desenvolvedores gastam um tempo considerável na implantação e nos testes, em vez de escrever código.
- A troca de contexto de ferramentas aumenta o atrito — os desenvolvedores alternam rotineiramente entre ambientes de desenvolvimento integrados (IDEs), interfaces de linha de comando (CLIs) e emuladores de recursos como o LocalStack, resultando em fluxos de trabalho fragmentados.
- A configuração manual aumenta a complexidade da configuração — o mapeamento de portas e as edições de código para testes de integração de serviços locais podem introduzir inconsistências entre ambientes locais e em nuvem.
- A depuração da integração de serviços é limitada — A solução de problemas de funções do Lambda no contexto das integrações de serviços da AWS, como DynamoDB, Amazon Simple Storage Service (Amazon S3) ou Amazon SQS, requer configuração manual, estendendo a duração dos esforços de solução de problemas.
Esses desafios afetam diretamente a produtividade do desenvolvedor e tornam complexos os testes locais de aplicativos integrados Serverless.
Visão geral da solução
A partir de hoje, a AWS ajuda a simplificar o desenvolvimento local Serverless integrando o LocalStack diretamente ao AWS Toolkit for VS Code. Essa integração ajuda os desenvolvedores a testar e depurar aplicativos Serverless, definidos usando ferramentas de IaC, como o AWS SAM, inteiramente em seu IDE. A experiência aprimorada de testes locais oferece quatro grandes melhorias:
- Experiência integrada do LocalStack — conecte-se ao LocalStack diretamente no VS Code e gerencie os recursos locais junto com os recursos da nuvem por meio de uma interface unificada.
- Interações de serviços emuladas — Teste localmente as funções do Lambda com suas interações com outros serviços da AWS, como Amazon SQS, DynamoDB e EventBridge.
- Depuração simplificada — Inicie sessões de depuração com o ambiente emulado LocalStack, com um único clique — sem necessidade de configurações manuais de portas ou alterações de código, simplificando o fluxo de trabalho de depuração.
- Fluxo de trabalho simplificado — implante, teste e depure aplicativos Serverless sem sair do IDE, evitando alternar o contexto entre as ferramentas.
Para configurar o LocalStack no VS Code (seja a versão gratuita com suporte para mais de 30 serviços principais, como Lambda, Amazon S3, DynamoDB, Amazon SQS e Amazon API Gateway, ou a versão Ultimate com mais de 110 serviços e recursos avançados de depuração), você precisa de ferramentas essenciais de desenvolvimento, incluindo Docker, AWS Command Line Interface (AWS CLI), AWS SAM CLI e seu IDE preferido, como o VS Code. Essa combinação permite testes completos de integração local dos serviços da AWS, incluindo funções Lambda, filas de mensagens, bancos de dados, arquiteturas orientadas por eventos e fluxos de trabalho Serverless, para que você possa desenvolver e testar toda a pilha de aplicativos da AWS localmente antes de implantá-la na nuvem.
Processo de configuração automatizado
O LocalStack é um emulador de serviços em nuvem que você pode usar para executar aplicativos da AWS localmente para testes e desenvolvimento. Para aprimorar seus recursos de teste locais, você pode instalar a extensão LocalStack VSCode diretamente do AWS Walkthrough no AWS Toolkit, que oferece um processo de configuração simplificado por meio de um assistente inteligente. Após a instalação, a extensão detecta automaticamente se o LocalStack está configurado em seu sistema e solicita que você execute o assistente de configuração por meio de uma notificação. Todo o processo é rápido e não requer configuração manual.
A extensão LocalStack tem um assistente de autenticação integrado, que simplifica o processo de conectar seu ambiente de desenvolvimento ao LocalStack. Durante a configuração, o assistente abre um fluxo de autenticação baseado em navegador e mantém uma conexão ativa até que a autenticação seja concluída. Depois de verificado, ele armazena com segurança o token de autenticação no arquivo ~/.localstack/auth.json, permitindo a comunicação entre seu ambiente local e os serviços LocalStack.
O assistente também verifica se os perfis LocalStack AWS CLI existem e, se não forem encontrados, os cria automaticamente atualizando os arquivos ~/.aws/config e ~/.aws/credentials com endpoints e credenciais específicos do LocalStack. Essa integração perfeita dos perfis da AWS aprimora o fluxo de trabalho de desenvolvimento, permitindo que os desenvolvedores alternem facilmente entre diferentes ambientes da AWS, incluindo a configuração local do LocalStack. Ao aproveitar esses perfis, os desenvolvedores podem facilmente direcionar seu AWS CLI ou SDK para o endpoint apropriado, seja uma conta real da AWS ou a instância LocalStack em execução em sua máquina. Essa configuração não apenas garante uma separação clara entre ambientes locais e em nuvem, mas também minimiza o risco de interferência entre ambientes. A criação automática desses perfis agiliza o processo de configuração, reduzindo os erros de configuração manual e economizando tempo valioso de desenvolvimento. O Visual Studio Code (VS Code) fornece feedback em tempo real durante toda a configuração. A barra de status exibe inicialmente um indicador de erro ou aviso quando o LocalStack não está configurado e, em seguida, passa para um estado normal ou conectado quando uma conexão bem-sucedida é estabelecida. Após a conclusão da configuração, você estará pronto para implantar, testar e depurar aplicativos Serverless localmente, sem configuração adicional. Essas configurações persistem nas sessões do VS Code, portanto, o processo de configuração é uma tarefa única. A figura a seguir ilustra o processo para iniciar e verificar o LocalStack a partir do VS Code.
Para saber mais, incluindo etapas de instalação, exemplos de configuração e orientação para solução de problemas, visite a documentação do LocalStack.
Teste um aplicativo Serverless
Para demonstrar os recursos aprimorados de testes locais, vamos explorar um padrão prático Serverless: criar e testar um sistema de processamento de pedidos orientado por eventos que integra o Lambda ao Amazon SQS, ao API Gateway e ao Amazon Simple Notification Service (Amazon SNS). O aplicativo processa pedidos por meio de um fluxo de trabalho orientado por eventos: os pedidos são enviados por meio do API Gateway para uma fila do SQS e processados por uma função Lambda, e o status é publicado no Amazon SNS para acionar notificações por e-mail do cliente.
Depois de configurar o LocalStack no VS Code, você pode testar todo o seu fluxo de trabalho Serverless sem implantar na nuvem:
- Implante localmente — Use o perfil LocalStack AWS para implantar seu aplicativo AWS SAM. O processo reflete a implantação na nuvem, mas tem como alvo os endpoints locais. Você pode usar o painel Application Builder para iniciar a implantação no ambiente LocalStack. A figura a seguir ilustra o processo de implantação de um exemplo de aplicativo Serverless.
- Depure a função Lambda implantada no LocalStack — Defina pontos de interrupção em sua função do Lambda e avance na execução usando o depurador integrado do VS Code. Com a extensão do AWS Toolkit, você pode invocar seu Lambda com um clique e inspecionar interações ao vivo entre serviços, tudo isso enquanto executa em um contêiner LocalStack em sua máquina. Essa configuração possibilita a depuração de seus aplicativos da AWS em um ambiente local controlado que imita a infraestrutura de nuvem, sem a necessidade de implantar serviços reais da AWS.
- Valide fluxos de ponta a ponta — Teste fluxos de trabalho completos, desde a ingestão de mensagens até o processamento e a notificação, confirmando que todas as integrações de serviços funcionam corretamente antes da implantação da nuvem.
Para uma demonstração técnica aprofundada dessa integração com o LocalStack, consulte este vídeo do youtube.
Melhores práticas para testes locais de funções do Lambda
Nesta seção, discutimos várias estratégias e melhores práticas para testes locais da função Lambda.
Otimizando seu fluxo de trabalho de desenvolvimento
Considere as seguintes estratégias para otimizar seu fluxo de trabalho de desenvolvimento:
- Comece com uma base sólida de testes — use a CLI do AWS SAM para realizar testes unitários que validem a lógica programática e comercial central de suas funções do Lambda. O isolamento precoce do comportamento da função ajuda a identificar erros lógicos antes de introduzir dependências externas.
- Estabeleça a paridade do ambiente logo no início do processo de desenvolvimento — Muitos problemas de produção resultam de discrepâncias entre ambientes locais e em nuvem. Use versões de serviço, configurações e estruturas de dados consistentes em todos os ambientes para confirmar se o que funciona localmente se comporta da mesma forma na produção.
- Adote o IaC desde o primeiro dia — Se você escolher o AWS SAM, o AWS CloudFormation ou outra estrutura de IaC, definir sua infraestrutura de aplicativos como código reduz o desvio de configuração e torna suas implantações reproduzíveis entre equipes e ambientes.
- Aplique uma estratégia de teste progressiva — siga uma pirâmide de testes estruturada que começa com testes unitários rápidos e isolados e se desenvolve até uma integração mais ampla e uma validação em nível de sistema. Essa abordagem em camadas ajuda você a detectar problemas mais cedo, quando é mais fácil e menos dispendioso corrigi-los, ao mesmo tempo em que fornece cobertura total de aplicativos.
Uma abordagem estratégica para testes
Os testes devem ser parte integrante do seu fluxo de trabalho de desenvolvimento Serverless, e não uma reflexão tardia. Equipes bem-sucedidas implementam estratégias de teste em camadas que usam ambientes locais e em nuvem para encontrar um equilíbrio entre velocidade e precisão:
- Comece com testes unitários que se concentram na lógica de funções isoladas. Use ferramentas como o AWS SAM CLI, o AWS Toolkit for VS Code e as extensões LocalStack para executar e depurar funções localmente.
- Após a validação, prossiga com o teste de integração local usando o LocalStack para confirmar como suas funções do Lambda interagem com serviços como Amazon SQS, DynamoDB e Amazon SNS. Esses testes geralmente são concluídos em minutos e detectam a maioria dos problemas de integração de serviços antes que eles cheguem à produção.
- Após o teste local, valide seu aplicativo no ambiente real da AWS. Os testes na nuvem ajudam a revelar problemas que não estão presentes na emulação local, como incompatibilidades de permissões do AWS Identity and Access Management (IAM), desafios de rede da Amazon Virtual Private Cloud (Amazon VPC) ou nuances específicas do serviço, como a simultaneidade do Lambda. Para solucionar problemas no ambiente de nuvem, você também pode depurar remotamente suas funções do Lambda usando o AWS Toolkit for VS Code.
- Finalmente, realize testes de desempenho na AWS para avaliar como seu aplicativo lida com o tráfego do mundo real. Esses testes de execução mais longa ajudam a validar o comportamento de escalabilidade e a resiliência do sistema sob carga.
O resultado são aplicativos de alta qualidade entregues mais rapidamente, com menos surpresas de produção e implantações mais confiáveis.
Considerações de segurança
Ao usar o LocalStack para desenvolvimento local, siga estas melhores práticas de segurança:
- Isole o ambiente local — Use a rede Docker para restringir o acesso ao LocalStack e vincular serviços ao localhost para evitar conexões externas.
- Use credenciais de espaço reservado — Use credenciais de teste (por exemplo, teste/teste) em vez de credenciais reais da AWS.
- Proteja seus dados — use conjuntos de dados sintéticos ou anônimos em vez de dados de produção e limpe regularmente os armazenamentos de dados locais para reduzir os riscos.
Quando usar o local versus teste de nuvem
Embora os testes locais ofereçam vantagens significativas, é importante entender quando usá-los versus testar na nuvem. A tabela a seguir lista os possíveis casos de uso de cada estratégia.
Testing Scenario | Local Testing | Cloud Testing | Reason |
Validação da lógica da função | ✓ | Feedback rápido para a lógica de negócios principal | |
Teste de integração de serviços | ✓ | Validação rápida das interações de serviços da AWS | |
Iteração rápida durante o desenvolvimento | ✓ | Feedback imediato sem sobrecarga de implantação | |
Ambientes de desenvolvimento sensíveis ao custo | ✓ | Minimiza os custos dos recursos de nuvem durante o desenvolvimento | |
Cenários de desenvolvimento offline | ✓ | Não é necessária conectividade com a Internet | |
Teste de desempenho e escalabilidade | ✓ | Requer uma infraestrutura real da AWS para obter resultados precisos | |
Validação de permissão do IAM | ✓ | O LocalStack não replica totalmente o comportamento do IAM | |
Cenários de rede VPC | ✓ | As configurações de rede não podem ser emuladas com precisão | |
Teste de carga semelhante ao de produção | ✓ | Métricas reais de desempenho disponíveis somente na AWS | |
Validação final antes da implantação | ✓ | Oferece suporte à compatibilidade com o ambiente real da AWS |
Conclusão
Nesta publicação, discutimos como simplificar os testes locais para aplicativos Serverless da AWS usando o LocalStack e o AWS Toolkit for VS Code. Ao executar e depurar aplicativos Serverless diretamente em seu IDE, você pode reduzir a alternância de contexto, testar integrações complexas localmente e detectar problemas mais cedo, sem precisar implantar na nuvem.
Também mostramos como aplicar estratégias de teste progressivas que combinam emulação local com validação em nuvem, otimizam os custos de desenvolvimento e criam fluxos de trabalho orientados por eventos com confiança. Esses aprimoramentos levam a ciclos de teste mais rápidos, menores custos de desenvolvimento e implantações de maior qualidade, tudo isso sem deixar de manter o controle total do seu ambiente de desenvolvimento.
Tem perguntas ou comentários sobre esta postagem? Conecte-se conosco no blog de computação da AWS ou faça parte da comunidade de desenvolvedores da AWS.
Este conteúdo foi traduzido da postagem original do blog, que pode ser encontrada aqui.
Autores
![]() |
Patrick Galvin é um arquiteto de soluções especialista na Amazon Web Services |
![]() |
Debasis Rath é um arquiteto de soluções especialista na Amazon Web Services |
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. |
![]() |
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. |