AWS

AWS Lambda

Serverless

Introdução ao AWS Lambda – Parte 2

17 Aug 2021 Postado por Filipe Soares

Esse artigo é uma continuação da série sobre a AWS Lambda, o qual abordará sobre aspectos mais técnicos de uma função Lambda, como a sua arquitetura geral e, principalmente, sobre o funcionamento detalhado do ciclo de vida de sua execução.

Arquitetura do Lambda:

Antes de adentrar o ciclo de vida de uma função Lambda, é necessário compreender a sua arquitetura geral, conforme ilustrada na figura abaixo. A arquitetura do Lambda é composta por quatro principais módulos: Integrations, Control Plane, Elastic Container Registry (ECR) e Execution Environment. Esses módulos são brevemente explicados na sequência.

Arquitetura do Lambda
  • Integrations: refere-se aos gatilhos que podem ser integrados ao Lambda. Assim que um gatilho é acionado, a fase de Init (descrita no tópico anterior) é iniciada.
  • Control Plane: corresponde ao controle fornecido aos usuários para executar operações no Lambda (por exemplo, criação de função, atualização do código da função, entre outros), integrar com outros serviços (por exemplo, S3) e gerenciamento das configurações do Lambda (uso de memória, tempo limite de execução). Esse controle pode ser feito via console da AWS ou via API.
  • Elastic Container Registry (ECR): no caso de funções Lambdas implementadas a partir de imagens de contêiner (assunto que será abordado no próximo artigo dessa série), o ECR funciona como um repositório de armazenamento para controle de versão de tais imagens.
  • Execution Environment: representa o ambiente de execução, destacando o contêiner no qual a função é de fato executada. No caso de Lambdas construídos utilizando imagens, o contêiner do ambiente será criado usando como base tais imagens. Esse módulo é a base do ciclo de vida apresentado anteriormente.

Como funciona o ciclo de vida do Lambda:

Após entender melhor sobre os principais módulos que compõem o Lambda, este tópico explicará como funciona o seu ciclo de vida. Sucintamente, tal ciclo é composto por três principais fases: 1) Init; 2) Invoke; 3) Shutdown. A figura abaixo ilustra esse ciclo e os detalhes de cada uma delas são descritos na sequência.

Ciclo de Vida do Lambda
  • Init: essa fase é responsável por gerar ou descongelar um ambiente de execução com os recursos configurados pelo usuário, preparando o que for necessário antes de executar a função. A fase Init pode ser dividida em 3 etapas:
    • Extension Init: inicializa as extensões configuradas para a função Lambda. Tais extensões permitem integrar mais facilmente o Lambda com ferramentas de monitoramento e segurança.
    • Runtime Init: executa o código de configuração da função, gerenciando as variáveis de ambiente e os eventos de invocação.
    • Function Init: executa o código de inicialização da função (denominado código estático). Este código é frequentemente usado para, por exemplo, importar dependências e inicializar conexões com outros serviços.
  • Invoke: essa fase tem a função de executar todo o código da função Lambda dentro do tempo de execução configurado. Caso o tempo limite seja alcançado ou haja alguma falha durante a execução da função, o ambiente de execução é resetado. É importante destacar que se houver alguma outra invocação durante esse período de reset da função Lambda, a fase de Init será executada para configurar o ambiente novamente. Por outro lado, em caso de sucesso da execução da função Lambda, o ambiente de execução é apenas congelado para ser reaproveitado em caso de novas invocações.
  • Shutdown: essa fase tem a responsabilidade de desligar e remover o ambiente de execução. Ela é acionada se a função Lambda não receber nenhuma chamada por um período de tempo. O desligamento do ambiente de execução é composto por duas etapas, Runtime Shutdown e Extension Shutdown, responsáveis por limpar e finalizar as configurações e extensões Lambda. Ao final, o ambiente de execução é excluído.

Conclusão:

Esse artigo apresentou uma arquitetura simplificada dos módulos que compõem o Lambda, assim como o seu ciclo de vida como um todo. O próximo artigo irá abordar sobre a construção de funções Lambdas a partir de imagens de contêiner, apresentando os principais conceitos envolvidos e a razão de adotar essa prática. Além disso, o módulo ECR também será explicado em mais detalhes.

Tags:

AWS

AWS Lambda

Serverless

Últimas

Assine a newsletter e fique por dentro das novidades