Funções Serverless em JavaScript: AWS Lambda e alternativas para desenvolvedores

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Serverless em JavaScript: Como parar de pensar em servidores e começar a escrever código

\n\n

Imagine: você criou um serviço incrível, o lançou e, um mês depois, ninguém o usa. Você paga por um servidor que fica ocioso. Ou o contrário — você sofre um pico de tráfego, o servidor cai e você está às 3 da manhã ajustando o nginx. Familiar? Existe uma maneira de se livrar dessa dor de cabeça — funções serverless em JavaScript.

\n\n

Serverless (ou computação sem servidor) não é mágica, é um modelo onde você escreve apenas o código, e o provedor (AWS, Google, Yandex) decide quando, onde e quantos recursos alocar. Você paga apenas pelo tempo de execução e pelo número de requisições. Nada de máquinas virtuais "sempre ligadas". Para o desenvolvedor JavaScript, isso é especialmente conveniente: Node.js é o ambiente nativo para AWS Lambda, Google Cloud Functions e Yandex Cloud Functions.

\n\n

Neste artigo, não vamos apenas falar teoria. Vamos escrever funções reais, comparar provedores e dar uma checklist para você não pisar na bola. Vamos lá!

\n\n

O que é uma função serverless e por que ela é útil para um desenvolvedor JS?

\n\n

Uma função serverless é um pedaço de código (geralmente uma única função) que é executado em resposta a um evento. O evento pode ser uma requisição HTTP, upload de arquivo para S3, gravação em banco de dados ou até mesmo um sinal de temporizador (cron).

\n\n

Por que isso é conveniente para JavaScript:

\n
    \n
  • Início rápido — não precisa configurar servidor, basta enviar o código.
  • \n
  • Escalonamento automático — a função se replica sozinha sob demanda.
  • \n
  • Economia — enquanto ninguém chama a função, você não paga nada.
  • \n
  • Ecossistema — Node.js é suportado por todos os grandes provedores.
  • \n
\n\n

Cenários típicos: processamento de webhooks, geração de miniaturas de imagens, envio de e-mails, validação de formulários, parsing de dados, criação de microsserviços. Tudo que pode ser executado sob demanda.

\n\n

AWS Lambda — o rei do serverless JavaScript

\n\n

Amazon Web Services Lambda é o serviço mais popular. Ele surgiu primeiro e ainda define os padrões. Vamos escrever uma função simples que recebe JSON e retorna uma resposta.

\n\n

Código para AWS Lambda em Node.js 20:

\n\n
export const handler = async (event) => {\n  try {\n    const { name } = JSON.parse(event.body || '{}');\n    const message = `Olá, ${name || 'convidado'}! Você chamou com sucesso uma função serverless.`;\n    \n    return {\n      statusCode: 200,\n      headers: {\n        'Content-Type': 'application/json',\n        'Access-Control-Allow-Origin': '*',\n      },\n      body: JSON.stringify({ message, timestamp: Date.now() }),\n    };\n  } catch (error) {\n    return {\n      statusCode: 400,\n      body: JSON.stringify({ error: 'JSON inválido' }),\n    };\n  }\n};
\n\n

Observe: a função se chama handler. Este é o nome padrão para o ponto de entrada. O parâmetro event contém tudo que veio do API Gateway — cabeçalhos, corpo, parâmetros da requisição. Você retorna um objeto com statusCode e body.

\n\n

Como funciona: você cria uma função no console da AWS, envia o código (ou usa SAM/Serverless Framework), configura um gatilho — por exemplo, um endpoint HTTP via API Gateway. Pronto. O mundo ficou mais simples.

\n\n

Cold start e como lidar com ele

\n\n

A principal desvantagem do Lambda é o cold start. Se a função não for chamada por um tempo, na primeira requisição o ambiente é carregado novamente. Isso pode levar de 200 a 500 ms. Para APIs de alta carga, isso é crítico. Soluções:

\n
    \n
  • Mantenha a função "aquecida" com CloudWatch Events (ping a cada 5 minutos).
  • \n
  • Reduza o tamanho do pacote — não inclua pacotes npm desnecessários.
  • \n
  • Use Provisioned Concurrency (mas é mais caro).
  • \n
\n\n

Para a maioria dos microsserviços, o cold start não é um problema. Mas se você está escrevendo um chatbot onde a velocidade é importante, leve isso em consideração.

\n\n

Google Cloud Functions — simplicidade e integração com Firebase

\n\n

Go

Blogs

Book Recommendations