Trabalhar com tecnologias Javascript integrada com recursos serverless e microsserviços tem se tornado uma demanda recorrente, quando falamos no contexto de aplicações modernas.
Contudo, estruturar um projeto dessa dimensão não é fácil! Prncipalmente quando precisamos buscar insumos na web para resolver determinado problema.
Pensando nisso, desenvolvemos uma aplicação voltada para utilização do superset do Javascript, o Typescript, aliado com o framework para deploys de recursos serverless na AWS, o famoso Serverless Framework.
Os principais recursos que irão nos apoiar na configuração de nossa aplicação são:
-
GitHub:
- Controle de versionamento e features do projeto.
-
CloudFormation:
- Responsável pela criação / atualização de toda a infraestrutura necessária para o projeto, por meio de código.
-
S3:
- Armazenamento dos pacotes e dependência relacionadas às funções do projeto.
-
DynamoDB:
- Banco de dados NoSQL para armazenamento dos dados da API.
-
Lambda:
- Serviço responsável pela execução dos códigos das funções.
-
API Gateway:
- Camada que fornecerá o endpoint e irá gerenciar todo o roteamento das requisições para as funções Lambda.
Veja a arquitetura abaixo para esclarecer as conexões entre os recursos:
Como você deve saber, os recursos AWS cobram por utilização e é importante trazermos essa visão de custo envolvido na arquitetura apresentada, pois esse tema pode tornar-se um fator de tomada de decisão da viabilidade técnica e de negócio da aplicação.
- São Paulo: $ 2.12 / mês
- Norte Virgínia: $ 1.41 / mês
O link da calculadora, você pode encontrar clicando aqui
Dado todo cenário de recursos e custos envolvidos, para essa aplicação, estamos utilizando o Node JS, com o superset do JS, o Typescript. Portanto, é necessário que você possua o NodeJS instalado.
Após a instalação do Node JS e a conta AWS preparada para utilização, basta executar os comandos abaixo para iniciar o projeto.
Clonando o repositório e entrando na pasta:
git clone https://github.com/gugamainchein/serverless-framework-typescript
cd serverless-framework-typescript
Instalando dependências e executando o projeto:
yarn
yarn start
Após as realizações dos passos acima e a inicialização do projeto com sucesso, você está pronto para integrá-lo com os recursos de sua conta AWS, por meio das variáveis de ambiente abaixo:
-
API_NAME: Nome do seu projeto back-end;
-
STAGE: Ambiente que está trabalhando, como por exemplo "dev", "qa" e "prod";
-
AUTH_HEADER: JWT de sua preferência para validação na autorização.
O back-end deste repositório, tem como propósito a realização do CRU (Create, Read e Update) de clientes no banco de dados. Pensando nisso, abordaremos nos tópicos abaixo como o projeto está estruturado.
-
Arquivo principal:
- O arquivo
serverless.ts
contém todas as instruções / configurações que o Serverless Framework necessita para executar a aplicação localmente e em outros ambientes.
- O arquivo
-
Roteamento:
- Dentro do diretório
/src/routes
encontram-se todos os arquivos de rotas, relacionados com os arquivos e funções responsáveis, da aplicação.
- Dentro do diretório
-
Banco de dados:
- No projeto, estamos utilizando o banco de dados NoSQL da AWS, no caso o DynamoDB. Por ser um recurso desta cloud, para realização da conexão e execução de comandos, utilizamos o SDK;
- Todas as interaçõs com o DynamoDB serão encontradas em
/src/model
.
-
Arquivos compartilhados:
- Como uma prática muito comum de Clean Code, buscamos reaproveitar o máximo de código possível e de forma inteligente. Para alcançar esse propósito, todo compartilhamento de funções e objetos serão encontrados em
/src/shared
, separados de acordo com suas categorias.
- Como uma prática muito comum de Clean Code, buscamos reaproveitar o máximo de código possível e de forma inteligente. Para alcançar esse propósito, todo compartilhamento de funções e objetos serão encontrados em
-
Funções:
- Todas as funções, responsáveis pela execução das regras de negócio, encontram-se em
/src/functions
.
- Todas as funções, responsáveis pela execução das regras de negócio, encontram-se em
- 0.1.0
- Primeira versão da aplicação
Gustavo Mainchein – @gugamainchein – gustavomainchein@outlook.com
- Realize o fork do projeto (https://github.com/gugamainchein/serverless-framework-typescript/fork)
- Crie a nova feature em uma branch (
git checkout -b feature/fooBar
) - Faça o commit das suas mudanças (
git commit -am 'Add some fooBar'
) - Realize o push para a branch (
git push origin feature/fooBar
) - Crie um novo pull request