The current project consists of a Serverless application with AWS Lambda, Typescript, and Serverless Framework, focusing on implementing design patterns, unit testing, commit standardization, and staging scenarios. The goal is to improve performance and organize future developed applications.
The main dependencies used in this project are:
- Serverless: tool used to facilitate the use of AWS tools with a single model.
- Jest and Babel: used to perform unit tests.
- Commitizen, Commitlint and Husky: used to standardize commits.
- @hapi/joi: used to validate parameters forwarded through HTTP requests.
Next, the folder structure used in this project:
src: main source code folder.config: folder used to store environment variables and other necessary configurations.example: route example folder, including cases with and without parameter passing.controllers: folder used to control endpoints.services: folder used to execute the service designated to endpoints.models: folder with parameter validators.
handler: file responsible for centralizing the controllers to be consumed in theserverless.ymlfile and unit tests.
tests: folder used to store the unit test files and mocks to demonstrate request parameters.utils: folder with utility functions and classes used throughout the code.serverless.yml: central project file containing all necessary configurations for AWS, environment settings, and routes.
The scripts available in this project are:
start: script used to start the project locally.test: script used to perform tests.commit: script used to perform commits.delete: script used to remove the project from AWS.deploy:qa: script used to deploy the project in a test environment.deploy:prod: script used to deploy the project in a production environment.
The main references used in this project were:
O projeto atual consiste em uma aplicação Serverless com AWS Lambda, Typescript e Serverless Framework, tendo como foco a implementação de padrões de projeto, testes unitários, padronização de commits e cenários de homologação. O objetivo é melhorar a performance e organizar as aplicações desenvolvidas futuramente.
As principais dependências utilizadas neste projeto são:
- Serverless: ferramenta utilizada para facilitar o uso das ferramentas da AWS com um único modelo.
- Jest e Babel: utilizados para a realização de testes unitários.
- Commitizen, Commitlint e Husky: utilizados para padronizar os commits.
- @hapi/joi: utilizado para validar os parâmetros encaminhados através de requisições http.
A seguir, a estrutura de pastas utilizada neste projeto:
src: pasta principal do código-fonte.config: pasta utilizada para armazenar as variáveis de ambiente e outras configurações necessárias.example: pasta de exemplo de rota, incluindo casos com e sem passagem de parâmetros.controllers: pasta utilizada para controlar os endpoints.services: pasta utilizada para executar o serviço designado para os endpoints.models: pasta com validadores de parâmetros.
handler: arquivo responsável por centralizar os controllers a serem consumidos no arquivoserverless.ymle nos testes unitários.
tests: pasta utilizada para armazenar os arquivos de testes unitários e mocks para demonstração dos parâmetros de requisições.utils: pasta com funções e classes utilitárias utilizadas em todo o código.serverless.yml: arquivo central do projeto, contendo todas as configurações necessárias para a AWS, configurações de ambiente e rotas.
Os scripts disponíveis neste projeto são:
start: script utilizado para iniciar o projeto localmente.test: script utilizado para realizar os testes.commit: script utilizado para realizar os commits.delete: script utilizado para remover o projeto da AWS.deploy:qa: script utilizado para realizar o deploy do projeto em ambiente de testes.deploy:prod: script utilizado para realizar o deploy do projeto em ambiente de produção.
As principais referências utilizadas neste projeto foram: