DEV Community

Cover image for Serverless básico
Lucas Ferreira
Lucas Ferreira

Posted on

Serverless básico

Serverless é uma arquitetura baseada em funções como um serviço (FaaS - Function as a Service), o principal objetivo é que o desenvolvedor se preocupe apenas com o código da função (lógica do negócio) e a responsabilidade pela configuração do ambiente/máquina que vai rodar o código fique por conta do provedor de cloud.

Características

  • Ambiente sem estado para rodar o código, cada evento que aciona a função PODE ser processado em um ambiente completamente novo, isso limita por exemplo a utilização do sistema de arquivos do ambiente onde o código está rodando e um novo processamento está desacoplado dos processamentos anteriores.
  • Tempo de execução limitado, o processamento deve ocorrer dentro de um período de tempo, se a execução não estiver completa o ambiente onde o código está rodando simplesmente morre.
  • Orientado a eventos, cada função de uma aplicação serverless tem um ou mais gatilhos que acionam a execução do código.

Código básico com o framework Serverless

# serverless.yml
provider:
  name: aws
  runtime: nodejs14.x
  memorySize: 512
  timeout: 3

functions:
  users:
    handler: ./UserHandler.handler
    events:
      - http:
          method: GET
          path: users
          cors: true
Enter fullscreen mode Exit fullscreen mode
// UserHandler.js
// aws sample
exports.handler =  async function(_event, _context) {
    const service = new UserService();
    const response = await service.findAll();
    return JSON.stringify(response);
}
Enter fullscreen mode Exit fullscreen mode

Com o comando abaixo é possível realizar a implantação da função no provedor de cloud.

npx serverless deploy
Enter fullscreen mode Exit fullscreen mode

Quando uma requisição chegar na rota registrada no API Gateway um novo evento será disparado e este evento pode ser processado por uma função nova (cold) ou por uma função ativa (warm).

serverless_article

Diferenças entre serverless e uma arquitetura cloud com contêineres

  • Uma grande diferença é que o serverless te força a quebrar suas operações e definir muito bem qual a responsabilidade da função. Isso é imposto basicamente pelo tempo limite de execução e pelos valores maiores cobrados para execuções com tempo maior ou com consumo de memória maior.
  • As funções serverless ficam desativadas quando não existem eventos para processar, diferentemente de um contêiner rodando uma aplicação que fica 100% do tempo rodando mesmo sem requisições.

Principais ferramentas

  • Serverless framework.
  • AWS Lambda.
  • Azure Functions.
  • Google Cloud Functions.
  • Infraestrutura como código.

Referencias

Discussion (0)