/serverless-rocketseat

Serverless example for Rocketseat presentation

MIT LicenseMIT

Rocketseat - Exemplo de API REST usando Serverless

Este repositório consiste de uma API feita em Node.js que usa serverless framework, AWS API Gateway, Lambdas e DynamoDB.

Na branch complete você encontra a versão final deste workshop.

Sugiro que você não pare por aqui, durante o workshop passamos muito brevemente por cada ferramenta, sem entrar em detlhes sobre como ela funciona. Pegue um tempo para estudar cada uma delas individualmente e como você pode tirar o máximo de proveito dela.

Rodando o projeto

O foco do workshop foi rodar a aplicação direto na AWS, portanto não abordamos como rodar local. Para saber como você pode rodar local, olhe a sessão Rodando localmente. Tudo foi feito em um Mac, no Linux deve ser bem parecido e no Windows deve ser possível fazer o equivalente com algumas adaptações.

Requisitos

  • Node.js - Há um arquivo .nvmrc no projeto caso queira realizar a instalação usando o nvm.
  • Uma conta na AWS - Se você ainda não tem conta, vai precisar de um cartão de crédito, mas não se preocupe, existe um free tier para experimentar os recursos.
  • Serverless framework - Pode ser instalado usando o comando npm install -g serverless

Fazendo o deploy

  1. Crie uma conta de acesso programático com acesso de admin no IAM da AWS e pegar a chave e a secret.
  2. Configure o serverless para usar essa conta, isso pode ser feito usando o serverless: serverless config credentials -o --provider aws --key <chave> --secret <secret>
  3. Depois de configurar o serverless.yml com os recursos desejados, fazer deploy usando o comando serverless deploy

Ao fazer o deploy, é interessante olhar o que foi criado nos seguintes serviços no console:

  • Cloud Formation
  • S3
  • Lambda
  • API Gateway
  • DynamoDB

E caso queira ver os logs das Lambdas, vá até o detalhe de uma delas e na aba Monitoramento, clique em Visualizar logs no CloudWatch.

Rodando localmente

Durante o workshop, sempre que fazíamos uma modificação, fazíamos o deploy para testar. Em aplicações reais isso se torna inviável, portanto, para conseguir testar com mais facilidade, sugiro o estudo de duas ferramentas:

Links e referências

Eu escrevi um artigo baseado no workshop e que tem algumas das informações que falei durante ele, para acessar clique aqui.

  • Como criar um usuário no IAM - Caso você não tenha familiaridade com a criação de usuários na AWS usando IAM
  • Serverless Express Plugin - Caso tenha interesse em trabalhar com Express ou Koa, é possível usando um plugin do Serverless. Porém vale sempre pesar o que é melhor para o seu caso de uso, por exemplo, o uso do Express pode aumentar o seu tempo de cold start um pouco.
  • Serverless Middleware Plugin - Plugin para a criação de middlewares usando Serverless

Problemas e dúvidas

Caso tenha qualquer dúvida, problema ou sugestão, fique à vontade para criar uma issue neste repo, e eu responderei assim que possível.