AWS Lambda

Publicado por Alan em

Escrito por Alan Ferreira e Diogo Alexandria.

O que é? Pra que serve?  

AWS Lambda é uma plataforma serverless orientada a eventos providas pela Amazon onde podemos escrever funções que serão executadas quando um evento específico acontecer. Os eventos podem ser disparados de diversas maneiras dentro da AWS, integrando outros serviços oferecidos pela plataforma, mas o Lambda também possui algumas integrações com ferramentas fora da AWS, como o MongoDB e Auth0. E mais a frente será falado sobre o básico para que vocês possam criar suas próprias funções! 

Mas porque usar esse recurso? 

As funções lambdas não são balas de prata, mas sim podem facilitar muito a vida dos integrantes da equipe de desenvolvimento para algumas simples soluções e da maneira certa escalar para solucionar problemas complexos. As vantagens que essa solução traz é que não temos que nos preocupar muito com a infraestrutura em que as funções vão rodar, a segurança, a manutenção e a escalabilidade dos recursos quão forem necessárias para manter sua aplicação 100% ficam todos a cargo da AWS. O foco de todo tempo e esforço estarão apenas em resolver o problema que gerou a necessidade do desenvolvimento de código. Outra grande vantagem é o custo! E falaremos sobre isso já, já. 

Opiniões pessoais e experiência sobre essa tecnologia: 

“Minha Experiência com Lambda começa com um projeto da Garagem onde precisávamos processar dados colocados no S3. Fizemos uma função lambda disparada pelo evento de um bucket e funcionou muito bem. O Lambda é muito conveniente, poupa bastante tempo de desenvolvimento por ser serverless e é muito eficiente para tarefas simples e que exigem pouco processamento de dados.” 

– Alan Ferreira

“Quando apresentado ao termo lambda e serverless, confesso que não me deixou confortável no primeiro momento por soar como uma tecnologia muito confusa e distante, mas não se assuste com esses nomes. A palavra serverless que soa como sem servidores, na verdade é uma pegadinha. Ela não quer dizer diretamente sem servidores, apenas que você não vai se preocupar com servidores em que seu código estará rodando. Poder ver uma entrega ser feita muito rápida usando o lambda e depois poder trabalhar em uma palestra e um post sobre esse tema, só me faz crer que essa tecnologia tem bastante pra evoluir e para auxiliar no futuro do desenvolvimento de software. “ 

– Diogo Alexandria

Pricing 

Com o AWS Lambda, você paga apenas o que usar, o que é uma grande vantagem da plataforma, já que pra maioria das aplicações, o custo será praticamente zero… ou literalmente zero, já que o Lambda possui um nível gratuito de 1 milhão de solicitações gratuitas por mês e 400.000 GB/segundos de tempo de computação por mês. Isto é, enquanto esse limite não for atingido, a plataforma será gratuita. (Com cuidado e monitoramento, já que normalmente ao criar um lambda, se cria junto um log group no AWS CloudWatch, que é pago). 

 
 
                                       Preço 
Solicitações 0,20 USD por 1 milhão de solicitações 
Duração 0,0000166667 USD por cada GB/segundo 
Tabela de precificação do AWS Lambda

O preço pela Duração depende da quantidade de memória que você aloca à sua função. Você pode alocar qualquer quantidade de memória à sua função entre 128 MB e 3008 MB, em incrementos de 64 MB. A tabela abaixo contém alguns exemplos do preço por 100ms associados a diferentes tamanhos de memória.  

Memória (MB) Preço por 100 ms (USD) 
128 0,0000002083 USD 
512 0,0000008333 USD 
1.024 0,0000016667 USD 
1.536 0,0000025000 USD 
2.048 0,0000033333 USD 
3.008 0,0000048958 USD 
Tabela de precificação do Lambda por memória(MB)

Para mais informações e simulações, basta entrar no site oficial aqui

Como usar? 

Bom, primeiro você precisa de uma conta na AWS. Depois disso, basta procurar no console por Lambda

Após encontrar o lambda, você deve ver sua lista de funções Lambda, caso não tenha uma, basta clicar em   e você deve ver uma tela como essa:

Aqui você pode escolher o nome da função, a runtime da função e a função de execução da função lambda (eu sei que parece confuso, calma). 

Uma função de execução ou role, caso esteja com o console em inglês, é onde você vai dar as permissões necessárias para sua função Lambda poder manipular outros serviços da AWS. Você pode manipular suas roles no serviço IAM dentro do console da AWS. 

Após ter criado sua função lambda, você precisa de um gatilho. 

Gatilho/Trigger é o evento que vai iniciar sua função lambda, ele pode ser dado por diversas fontes de evento da AWS (exemplos: CodeCommit, S3, SNS, SES, DynamoDB) ou com outros serviços parceiros (exemplos: MongoDB, Auth0). 

Depois de ter sua função criada e seu gatilho configurado, basta construir seu código e sair pro abraço! 

Mas… antes, algumas coisas importantes para se saber: 

  • Ao criar uma função pelo console da AWS, ela virá com 3 segundos de tempo máximo de execução e o mínimo de memória possível. Talvez isso não seja o suficiente para sua aplicação, então basta alterar para o que você precisa, mas lembre-se, o custo do lambda é baseado pelo número de requisições, processamento utilizado e tempo de execução. 
  • Funções lambdas não possuem estado, então para guardar qualquer tipo de informação você vai precisar de um sistema de armazenamento a parte. 
  • Lembre-se que ao criar uma função lambda com a role padrão que a AWS cria, sua função está autorizada a armazenar logs no CloudWatch, e isso gera custos. 
  • Para construir códigos com dependências externas, você não vai poder usar o editor de código do Lambda, ao invés disso, você vai precisar compactar seu código com as dependências em um ZIP e fazer upload no seu lambda. Caso o ZIP ultrapasse 10mb, vai precisar armazená-lo em um bucket S3. 
  • O tempo máximo de execução de uma função lambda é de 15 minutos, então nada de longos processamentos.

É isso pessoal, explorem bastante as possibilidades e se divirtam!


1 comentário

Alvaro H. Beckerig · 07/05/2020 às 13:46

Sensacional! Parabéns pelo artigo! \o/

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: