DEV Community

Gustavo Rodrigues
Gustavo Rodrigues

Posted on

AWS Lambda: do Zero ao Deploy [Parte 1]

Realmente nesse mundo de tecnologia nós precisamos estar constantemente nos atualizando de novas ferramentas e hoje estou aqui para tirar (ou tentar tirar) algumas duvidas que você ainda possa ter sobre AWS Lambda, bora lá? 😬

A AWS Lambda é um serviço de computação serverless, então ele permite que você execute código sem precisar se preocupar com a infraestrutura que irá executa-lo. Você simplesmente carrega seu código e a AWS executa automaticamente o código em resposta a eventos, como uma solicitação da API, uma atualização de banco de dados ou uma mensagem de fila.
Com a Lambda, você pode criar aplicativos escaláveis e altamente disponíveis sem precisar gerenciar servidores ou provisionar capacidade. É uma solução econômica e eficiente para muitos casos de uso de computação em nuvem.

Como nem tudo são flores 🌻 e nem balas de prata, precisamos balancear a nossa cabeça com vantagens e desvantagens do Lambda.

Vantagens das Lambdas na AWS

As Lambdas oferecem muitas vantagens para desenvolvedores e empresas que desejam aproveitar ao máximo a computação serverless na AWS. Algumas das vantagens mais significativas incluem:

  • Escala automática: As Lambdas podem escalar automaticamente para atender a demandas variáveis de tráfego (como já foi pontuado 😛).
  • Pagamento sob demanda: Você só paga pelo tempo que sua função é executada e pelo número de solicitações que ela processa. Isso significa que você não precisa pagar por capacidade ociosa ou antecipar a demanda futura.
  • Flexibilidade: As Lambdas são compatíveis com algumas linguagens de programação e podem ser integradas a vários serviços da AWS. Isso permite que você crie aplicativos altamente flexíveis e personalizados.
  • Fácil gerenciamento: A AWS gerencia automaticamente a infraestrutura necessária para executar suas funções. Então você não precisa se preocupar com o gerenciamento de servidores ou com a instalação e configuração de software. Aqui vale um contraponto rapido que apesar da AWS cuidar de muitos pontos sobre infraestrutura ainda temos algumas configurações a fazer1.
  • Tempo de resposta rápido: As Lambdas são executadas em milissegundos e podem ser configuradas para responder rapidamente a eventos em tempo real.

Desvantagens das Lambdas na AWS

Embora as Lambdas tenham muitas vantagens, elas também apresentam algumas desvantagens que os desenvolvedores precisam levar em consideração. Algumas das desvantagens mais significativas incluem:

  • Limitações de tempo de execução: As Lambdas têm limitações de tempo de execução que variam de acordo com a linguagem de programação utilizada. Isso pode limitar a complexidade e o tempo de execução das funções.
  • Limitações de tamanho do pacote: As Lambdas têm limitações no tamanho do pacote do deploy que pode ser carregado para sua execução. Isso pode limitar a complexidade e o tamanho dos aplicativos.
  • Cold Starts: As Lambdas têm um tempo de inicialização chamado "cold start" que ocorre quando uma função é invocada pela primeira vez ou após um período de inatividade. Esse ponto eu vou precisar detalhar melhor logo abaixo.
  • Dependência da AWS: As Lambdas são executadas em um ambiente gerenciado pela AWS, o que pode limitar a flexibilidade e o controle do desenvolvedor.

ColdStart nas Lambdas

O Cold Start do Lambda em cada linguagem suportada pode variar bastante. Como já mencionado, esse é o tempo que leva para a função ser inicializada (tecnicamente chamamos de trigger da Lambda) e executada pela primeira vez após um período de inatividade. É importante levar em consideração o ColdStart ao projetar e implementar suas funções Lambda para garantir a melhor experiência para o usuário final.

A tabela a seguir mostra o tempo médio de inicialização do ColdStart em cada linguagem suportada:

Linguagem ColdStart Médio (em segundos)
Node.js 150ms - 3000ms
Python 200ms - 3000ms
Java 500ms - 5000ms
C# 500ms - 5000ms
Go 20ms - 1000ms
Ruby 200ms - 3000ms

É importante lembrar que esses valores são apenas médias e podem variar dependendo de vários fatores, como tamanho do pacote da função, quantidade de dependências, complexidade do código e recursos de hardware. Além disso, a AWS está em constante evolução e pode atualizar os tempos de inicialização de suas funções Lambda ao longo do tempo.

Mas um ponto é fato, as vezes escolher a linguagem com o melhor Cold Start (melhor = menor) pode ser crucial para a sua Lambda.

Resumindo em um tweet: a lambda é perfeita para nanos (ou até atômicos) serviços que precisamos fazer em nossas Apps, como: envio de e-mail, atualização de registros em resposta a algum evento no fluxo do negocio, ser executada a partir do upload de um arquivo, entre muitas outras aplicações.

Esse post foi bem teórico mas é uma conversa profunda que sempre precisamos ter sobre as tecnologias até mesmo para desenhar a nossa arquitetura melhor de acordo com a necessidade do produto que estamos desenvolvendo.

Na próxima parte, nós vamos desbravar como podemos realizar o deploy de uma Lambda + Python na AWS com o Terraform e também teremos a utilização da minha Stack no StackSpot.

See you later!

Top comments (0)