Categorias
backend

Serverless para iniciantes

Quando ouvi a palavra serverless pela primeira vez, levei a tradução ao pé da letra e pensei que se tratava de um projeto onde não existiria um servidor. Mas não é bem isso…

E criei esse artigo pra te contar o que entendi sobre o assunto. Dessa forma acredito que pode rolar uma troca legal entre a gente: de um lado, eu vou consolidar meus estudos iniciais da arquitetura serverless e do outro, você fica conhecendo mais um ponto de vista sobre o assunto. Então aqui vou falar sobre:

  • O que é serverless
  • Quais os benefícios de usar serverless
  • Qual a importância de devs aprenderem a criar soluções serverless
  • Como criei experiência ao estudar serverless
  • Tutorial de “Hello, world!” na arquitetura serverless

O que é serverless?

Serverless é uma arquitetura orientada a eventos e não é que não exista um servidor, na real a gente não precisa se preocupar com a configuração de um servidor, pois o provedor de nuvem que usaremos fará isso pra gente.

Além disso, na arquitetura serverless, as aplicações são iniciadas apenas quando um evento aciona a execução do código da aplicação de forma dinâmica.

Dos modelos de serverless que existem aqui embaixo estão alguns dos mais populares:

  1. BaaS – Backend as a Service, como o Firebase do Google Cloud Platform
  2. FaaS – Function as a Service como AWS Lambda e Azure function

Quais os benefícios de usar serverless?

Mas você deve estar se perguntando, quais as vantagens de começar a usar serverless, não é mesmo? Dentre uma lista extensa de benefícios que fazem as empresas decidirem por usar serverless posso destacar estes 3:

  •  A escalabilidade da aplicação é automática
  •  A configuração de deploy é super simples
  •  Só pagamos pelo que usamos

A arquitetura serverless popularizou quando as empresas entenderam que podem crescer sua infraestrutura com redução de custos e de forma automática.

Além disso, é possível usar serverless na linguagem de programação que o time já utiliza, facilitando ainda mais a adesão.

Qual a importância de devs aprenderem a criar soluções serverless?

Soluções serverless garantem facilidade no dia a dia de trabalho, para determinados projetos, onde muitas configurações já existem, como por exemplo de conteinerização, escalonamento e muitas outras.

Dessa forma, podemos nos concentrar em criar regras com qualidade, explorando o ágil e utilizando boas práticas.

Podemos também acessar diversas oportunidades ao sermos capazes de gerar crescimento para os negócios em que colaboramos com economia utilizando serverless.

Tenta uma coisa? Pesquisa no LinkedIn a quantidade de vagas disponíveis para quem tem esse conhecimento. Eu pesquisei aqui com o termo AWS Lambda e encontrei quase 400 vagas para o Brasil. Bastante, não?

Criando experiência enquanto estudo

Meu primeiro projeto serverless usando AWS Lambda do zero ao deploy

Minha primeira experiência com serverless foi realizando um projeto guiado, no curso Ignite da Rocketseat, no módulo de backend com Node.js nas aulas da maravilhosa Dani Leão.

A gente fez uma aplicação que cria e valida um certificado de conclusão de curso gerando uma versão pdf. Se liga no resultado abaixo!

A request de criação do certificado:

O pdf gerado:

Para isso utilizamos as tecnologias abaixo:

  • Typescript
  • Framework serverless
  • AWS Lambda
  • DynamoDb
  • S3
  • puppeteer
  • handlebars

Algumas lições aprendidas:

  • Como criar uma lambda
  • Tipagem da aws-lambda
  • Criei minha conta aws e configurei as credenciais na minha máquina
  • Como usar o dynamoDb offline
  • Como rodar o projeto serverless offline
  • Como fazer deploy da solução
  • O uso de algumas libs pra transformar data e pra gerar pdf
  • Como usar S3
  • Como consultar o log na aws
  • O principal aprendizado foi entender o arquivo serverless.ts e que ele pode ser no formato yml também
  • Como criar e rodar um projeto com o framework serverless usando o esbuild

O código completo você pode conferir aqui no meu repositório: https://github.com/simaraconceicao/serverless

Tutorial: “Hello, Serverless!”

Agora que você já sabe os motivos pelos quais deveria aprender a criar projetos usando a arquitetura serverless, chegou a hora de colocar a mão no código e vamos dar um hello world com serverless. 

Aqui a gente vai fazer um tutorial rodando localmente, ou seja não faremos deploy na AWS.

Requisitos: É preciso ter instalado o “node”: “>=14.15.0”.

Passo 1:  Instalar o framework serverless 

Um boilerplate para gerar projetos aws lambda. Você pode ler mais detalhes aqui na documentação: https://www.serverless.com/

Comando:

npm install -g serverless

Verifique se instalou corretamente usando o comando:

serverless --version

Deverá retornar as versões instaladas.

Passo 2: Criar o projeto usando o template aws-nodejs-typescript

Comando:

serverless create --template aws-nodejs-typescript --path nome-do-projeto

Passo 3: Entrar no projeto, instalar as dependências e abrir no vscode

Comandos: 

cd nome-do-projeto
npm i
code .

Passo 4: Excluir arquivos default (pasta de libs e pasta hello)

Antes de excluir estava assim:

 

Após excluir os arquivos default, sua estrutura de pastas vai ficar assim:

Passo 5: Hello, Serverless!

Criar um arquivo dentro da pasta functions e nomear de hello.ts 

Código:

import { APIGatewayProxyHandler } from 'aws-lambda'

export const handler: APIGatewayProxyHandler = async (event) => {
 return {
  statusCode: 200,
body: JSON.stringify({
message: 'Hello, Serverless!'
})
}
}

Passo 6: entender estruturas de pastas, principalmente arquivo serverless.ts

├── src

│   ├── functions               # Lambda configuration and source code folder

│      ├── hello.ts

│  

├── package.json

├── serverless.ts               # Serverless service file

├── tsconfig.json               # Typescript compiler configuration

├── tsconfig.paths.json         # Typescript paths

└── webpack.config.js           # Webpack configuration

Passo 7: Dentro do arquivo serverless.ts mudar importação do arquivo hello

Importar a funcao via path, excluir importação que vem por default dos arquivos e pastas que excluímos.

Código:

// import the function via paths
functions: {  
hello: {
 handler: "src/functions/hello.handler",
events: [
{
http: {
path: "hello",
method: "get",
cors: true
}
}
]
}
}


Passo 8: Incluir plugin serverless offline

Comando:

npm i serverless-offline -D

Inserir config de plugin no arquivo serverless.ts 

Código:

plugins: ['serverless-offline'],

Observação

Como o arquivo serverless.ts estava antes por default:

Como o arquivo serverless.ts ficou após todas as alterações:

Passo 9: rodar projeto localmente

Comando:

serverless offline

 

Passo 10: acessar o link que aparece no terminal que é a request get

Resultado:

Conclusão

Espero que esse artigo te ajude a dar os primeiros passos com AWS Lambda. Se você tentou fazer o hello world e precisa de ajuda, pode consultar esse meu repo aqui: https://github.com/simaraconceicao/hello-serverless.

Caso queira trocar ideia sobre esse ou outro conteúdo, vou adorar te receber na comunidade do telegram quero ser dev: https://t.me/queroserdev

Até o próximo post!

Um comentário a “Serverless para iniciantes”

Esse artigo está riquissimo de conhecimentos, detalhes e informações novas pra mim
Adorei e ja vou por em pratica graças ao nivel de detalhamento.
Mostrou que não é nada de outro planeta para ser executado.

Obrigada Si!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *