AWS

AWS Lambda

Serverless

Introdução ao AWS Lambda – Parte 1

14 Jul 2021 Postado por Filipe Soares

O AWS Lambda é hoje um dos muito serviços relevantes oferecidos pela AWS devido a sua eficiência de custos, escalabilidade e simplicidade de integração com outras aplicações. Essa é a primeira parte de uma série de artigos a respeito desse serviço. Aqui será abordado sobre o que é o AWS Lambda, como ele funciona, os seus benefícios, além de um exemplo prático da criação de uma função Lambda simples.

O que é o AWS Lambda?

O AWS Lambda é um serviço de alta disponibilidade com uma infraestrutura de computação baseada no modelo serverless. Isto significa que o usuário não precisa se preocupar em gerenciar servidores para executar e provisionar seus códigos, pois a própria AWS fica responsável por cuidar de toda a administração dos recursos computacionais, manutenção dos servidores e pela escalabilidade das funções geradas. A sua natureza é uma Função como um Serviço (Function as a Service – FaaS), ou seja, o Lambda apenas executa tarefas quando necessário. Dessa forma, a cobrança pelo serviço é realizada pelo tempo de computação utilizado pelo usuário. Por fim, é possível integrar as funções Lambda com outros serviços da AWS facilmente, uma vez que incorpora o conceito de arquitetura orientada a eventos.

Como funciona? 

Pode-se pensar numa função Lambda como um carro alugado. Quem aluga o carro não precisa se preocupar em realizar manutenção periodicamente ou mesmo em escolher os melhores acessórios para ele. Apenas o utiliza por um tempo limitado e o devolve em boas condições à locadora. Analogamente, não é necessário se preocupar em gerenciar uma máquina EC2, por exemplo, para disponibilizar funções Lambdas. O usuário somente fica responsável por escrever o código e, no máximo, indicar algumas restrições para o bom funcionamento da função (por exemplo, a quantidade de memória RAM). Daí em diante, a AWS fica responsável por provisionar os recursos necessários para que a função seja executada adequadamente sempre que requisitada.

Principais Funcionalidades

  • Editor de código interno.
  • Configuração de variáveis de ambiente.
  • Configuração de recursos como Memória RAM e Tempo de Processamento (máximo de 15 minutos).
  • Gerenciamento de Permissões (por exemplo, acesso a outros serviços da AWS, como o S3).
  • Gerenciamento de concorrência (invocação assíncrona das funções).
  • Monitoramento automático (logs gerados a cada execução de uma função).
  • Criação de Gatilhos e Destinos. Gatilhos são eventos que disparam uma função (por exemplo, a criação de um novo arquivo no S3). Destinos são representados por serviços da AWS ligados a uma função Lambda, sendo invocados assim que tal função terminar sua execução.

Vantagens x Desvantagens

Vantagens: 

  • Modelo Serverless. Não é necessário gerenciar servidores para disponibilizar as funções. Também conta com escalabilidade contínua.
  • Processamento em paralelo das funções. Cada requisição é processada individualmente.
  • Facilita a construção de arquiteturas de microsserviços (cada componente atua de maneira independente).
  • Provê segurança para acesso de outros serviços (como o S3).
  • Preço. Cobra apenas pelo tempo e recursos utilizados.
  • Oferece suporte a variados tipos de linguagens de programação (C#, Go, Java, Node, Python, etc).

Desvantagens

  • Tempo de execução máximo de 15 minutos. Isto significa que o Lambda não é adequado para tarefas complexas as quais demandam mais tempo para serem executadas,
  • Limitação dos recursos computacionais. Para algumas cargas de trabalho, como a computação de alto desempenho, o Lambda não é uma boa alternativa.
  • Manipulação de arquivos. O Lambda não funciona muito bem para manipular arquivos muito grandes por não ter acesso a um disco permanente (ele conta apenas com uma partição de 500MB para trabalhar com arquivos).

Exemplo (Hands-on)

Criação de uma função Lambda (a partir do zero): 

Visão geral da função criada:

Seta 1: configuração das variáveis de ambiente, o seu tempo de execução e etc.

Seta 2: editor de código.

Seta 3: configuração de um Gatilho para ativar automaticamente a função.

É possível adicionar um Gatilho a partir de vários serviços da AWS:

Um exemplo de Gatilho pode ser representado pelo evento de criação de um arquivo zip em um Bucket S3. No exemplo abaixo, a função seria ativada sempre que um arquivo zip fosse criado no diretório test/ do bucket rlp-backtesting-data:

Após a criação do Gatilho, também pode-se ligar a função Lambda um Destino. O Destino, por exemplo, pode ser uma outra função Lambda que será ativada após a execução da função atual. Dessa forma, a sua saída será repassada para a função Lambda Destino.

Conseguimos configurar esse Destino da seguinte maneira (a função test será invocada automaticamente após a finalização da função atual):

Dessa maneira temos a criação da função Lambda junto com seu Gatilho e Destino.

Conclusão

Esse texto apresentou os principais conceitos relacionado ao AWS Lambda, as suas principais funcionalidades, vantagens e desvantagens. De maneira geral, o Lambda deve ser considerado como uma alternativa para o modelo serverless devido a sua praticidade e simplicidade, mas é necessário levar em conta as suas restrições para verificar se é uma boa solução de fato para o contexto abordado. Destaca-se que sua interface amigável facilita o desenvolvimento de soluções orientadas a eventos. Por fim, o próximo artigo apresentará as melhores práticas para a criação e disponibilização de funções Lambdas por meio de imagens de contêiner. 

Agradecimento

Time de Produtos/RLP.

Referências:

https://faun.pub/in-depth-aws-lambda-overview-1eeb4580696b

https://docs.aws.amazon.com/pt_br/lambda/latest/dg/welcome.html

https://aws.amazon.com/pt/lambda/features/

https://www.treinaweb.com.br/blog/o-que-e-aws-lambda

https://blog.mandic.com.br/artigos/aws-lambda-seu-site-agora-pode-ser-executado-sem-servidor/

https://www.youtube.com/watch?v=INHw_T8BMbc

https://www.youtube.com/watch?v=sleq1f2cMrw

https://serverless-stack.com/chapters/pt/what-is-aws-lambda.html

https://scalait.com/2020/06/10/serverless-os-pros-e-contras/

Tags:

AWS

AWS Lambda

Serverless

Últimas

Assine a newsletter e fique por dentro das novidades