O blog da AWS

Depuração de funções do Lambda com Snapstart ativado e ajuda do AWS X-Ray

Este post foi escrito por Rahul Popat (Arquiteto de Soluções Sênior) e Aneel Murari (Arquiteto de Soluções Sênior)

Hoje, o AWS X-Ray está anunciando o suporte para funções do AWS Lambda com SnapStart habilitado. O Lambda SnapStart é uma otimização de desempenho que melhora significativamente os tempos de inicialização a frio (cold start) de suas funções. Anunciado no AWS re:Invent 2022, esse recurso oferece tempos de inicialização de funções até 10 vezes mais rápidos para aplicativos Java sensíveis à latência, sem custo adicional e com o mínimo ou nenhuma alteração no código.

O X-Ray é um sistema de rastreamento distribuído que fornece uma visão completa do desempenho de um aplicativo. O X-Ray coleta dados sobre as solicitações que seu aplicativo atende e fornece ferramentas que você pode usar para obter informações sobre oportunidades de otimizações. Agora você pode usar o X-Ray para obter informações sobre as melhorias de desempenho de sua função Lambda com Snapstart habilitado.

Com o lançamento do recurso de hoje, ao ativar o rastreamento de raio-X para funções Lambda com Snapstart habilitado, você vê subsegmentos separados correspondentes às fases de restauração e invocação para a execução da função Lambda.

Como funciona o Lambda SnapStart?

Com o SnapStart, a inicialização da função é feita com antecedência quando você publica uma versão da função. O Lambda tira um snapshot criptografado do ambiente de execução inicializado e persiste o instantâneo em um cache em camadas para acesso de baixa latência.

Quando a função é invocada ou escalada pela primeira vez, o Lambda retoma novos ambientes de execução a partir do snapshot em cache em vez de inicializá-los do zero, melhorando a latência de inicialização. Isso resulta em tempos de inicialização reduzidos.

Rastreamento de raio-X antes do lançamento desse recurso

Usando um exemplo de um aplicativo Hello World escrito em Java, uma função Lambda é configurada com o SnapStart e executada pelo Amazon API Gateway:

Antes do lançamento de hoje, o X-Ray não era compatível com funções Lambda habilitadas para Snapstart. Portanto, se você tivesse ativado o rastreamento do X-Ray para o API Gateway, o rastreamento do X-Ray para o aplicativo de amostra ficaria assim:

O rastreamento mostra apenas a duração geral da chamada de serviço do Lambda. Você não tem uma visão da execução da sua função ou da divisão das diferentes fases do ciclo de vida da função Lambda.

Em seguida, ative o X-Ray para sua função Lambda e veja como você pode visualizar um detalhamento da duração total da execução da sua função.

Pré-requisitos para habilitar o X-Ray para a função Lambda habilitada para Snapstart

O SnapStart só é compatível com funções Lambda com Java 11 e runtimes gerenciados Java 17 recém-lançados. Você só pode habilitar o SnapStart para as versões publicadas da sua função Lambda. Depois de habilitar o SnapStart, o Lambda publica todas as versões subsequentes com snapshots. Você também pode criar um alias de função do Lambda, que aponta para a versão publicada da sua função do Lambda.

Certifique-se de que a função de execução da função Lambda tenha as permissões apropriadas para gravar no X-Ray.

Habilitando o AWS X-Ray para sua função Lambda com o SnapStart

Você pode habilitar o rastreamento de raios-X para sua função Lambda usando o AWS Management Console, a AWS Command Line Interface (AWS CLI), o AWS Serverless Application Model (AWS SAM), o modelo AWS CloudFormation ou por meio do AWS Cloud Deployment Kit (CDK).

Este blog mostra como você pode configurar por meio do AWS Management Console e do AWS SAM. Para obter mais informações sobre como habilitar o SnapStart e o X-Ray usando outros métodos, consulte o Guia do desenvolvedor do AWS Lambda.

Habilitando o SnapStart e o X-Ray por meio do AWS Management Console

Para habilitar a função SnapStart e X-Ray for Lambda por meio do AWS Management Console:

  1. Navegue até sua função Lambda.
  2. Na guia Configuração, escolha Editar e altere o valor do atributo SnapStart de Nenhum para PublishedVersions.
  3. Escolha Salvar.

Para habilitar o X-Ray por meio do AWS Management Console:

  1. Navegue até sua função Lambda.
  2. Na guia Configuração, role para baixo até o cartão Ferramentas de monitoramento e operações e escolha Editar.
  3. Em AWS X-Ray, habilite o rastreamento ativo.
  4. Escolha Salvar

Para publicar uma nova versão da função Lambda por meio do AWS Management Console:

  1. Navegue até sua função Lambda.
  2. Na guia Versão, escolha Publicar nova versão.
  3. Verifique se as versões publicadas são mostradas abaixo do SnapStart.
  4. Escolha Publicar.

Para criar um alias para uma versão publicada da sua função Lambda por meio do AWS Management Console:

  1. Navegue até sua função Lambda.
  2. Na guia Aliases, escolha Criar alias.
  3. Forneça um nome para um alias e selecione uma versão da sua função Lambda para a qual apontar o alias.
  4. Escolha Salvar.

Habilitando o SnapStart e o X-Ray via AWS SAM

Para habilitar o SnapStart e o X-Ray para a função Lambda via AWS SAM:

1. Ative as versões da função Lambda e crie um alias adicionando uma propriedade autopublishAliasno arquivo template.yaml. O AWS SAM publica automaticamente uma nova versão para cada nova implantação e atribui automaticamente o alias à versão recém-publicada.

Resources:
  my-function:
    type: AWS::Serverless::Function
    Properties:
      []
      AutoPublishAlias: live
YAML

2. Ative o SnapStart na função Lambda adicionando a propriedade SnapStart no arquivo template.yaml.

Resources: 
  my-function: 
    type: AWS::Serverless::Function 
    Properties: 
      [] 
      SnapStart:
       ApplyOn: PublishedVersions
YAML

3. Ative a função X-Ray for Lambda adicionando a propriedade Tracing no arquivo template.yaml.

Resources:
  my-function:
    type: AWS::Serverless::Function
    Properties:
      []
      Tracing: Active 
YAML

Você pode encontrar o modelo completo do AWS SAM para o exemplo anterior neste repositório do GitHub.

Usando o X-Ray para obter informações sobre o desempenho da função Lambda habilitada para Snapstart

Para demonstrar a integração do X-Ray para sua função Lambda com o SnapStart, você pode criar, implantar e testar o exemplo do aplicativo Hello World usando a CLI do AWS SAM. Para fazer isso, siga as instruções no arquivo README do projeto GitHub.

O resultado de construção e implantação com o AWS SAM tem a seguinte aparência:

Depois que seu aplicativo for implantado em sua conta da AWS, observe que o rastreamento SnapStart e X-Ray estão habilitados para sua função Lambda. Você também deve ver um alias `live` criado na versão publicada da sua função Lambda.

Você também deve ter uma API criada por meio do API Gateway, que aponta para o alias `live` da sua função Lambda como a integração de back-end.

Agora, invoque sua API por meio do comando `curl` ou de qualquer outro cliente HTTP. Certifique-se de substituir o URL pelo URL da sua própria API.

$ curl --location --request GET https://{rest-api-id}.execute-api.{region}.amazonaws.com/{stage}/hello

Navegue até o Amazon CloudWatch e, no mapa do serviço X-Ray, você verá uma representação visual dos dados de rastreamento gerados pelo seu aplicativo.

Em Traces, você pode ver os rastreamentos individuais, o código de resposta, o tempo de resposta, a duração e outras métricas úteis.

Selecione um ID de rastreamento para ver o detalhamento da duração total da sua chamada de API.

Agora você pode ver o rastreamento completo da invocação da função Lambda com o detalhamento do tempo gasto durante cada fase. Você pode ver a duração da restauração e a duração real da invocação separadamente.

A duração da restauração mostrada no rastreamento inclui o tempo necessário para que o Lambda restaure um snapshot na microVM, carregue o runtime (JVM) e execute qualquer gancho AfterRestore, se especificado em seu código. Observe que o processo de restauração de instantâneos pode incluir o tempo gasto em atividades fora da microVM. Esse tempo é relatado no subsegmento Restaurar. Você não é cobrado pelo tempo gasto fora da microVM para restaurar um snapshot.

Isso ajuda você a entender melhor a latência da execução da função do Lambda e permite identificar e solucionar problemas e erros de desempenho.

Conclusão

Esta postagem do blog mostra como você pode habilitar o AWS X-Ray para sua função Lambda habilitada com o SnapStart e medir o desempenho completo dessas funções usando o console X-Ray. Agora você pode ver um detalhamento completo do tempo de execução da sua função Lambda. Isso inclui a duração da restauração junto com a duração da invocação, o que pode ajudar você a entender os tempos de inicialização do aplicativo (partidas a frio), diagnosticar lentidão ou solucionar erros e tempos limite.

Para saber mais sobre o recurso Lambda SnapStart, visite o Guia do desenvolvedor do AWS Lambda.

Para obter mais recursos de aprendizado sem servidor, visite Serverless Land.

Este blog é uma tradução do blog original em inglês (link aqui).

Biografia do autor

Rahul Popat é arquiteto de soluções sênior na AWS
Aneel Murari é arquiteto de soluções sênior na AWS


Biografia do tradutor

Daniel Abib é arquiteto de soluções sênior 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 segurança. Ele trabalha apoiando clientes corporativos, ajudando-os em sua jornada para a nuvem.

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