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: