8000 GitHub - gguibittencourt/simios
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

gguibittencourt/simios

 
 

Repository files navigation

Simios

📚 Sobre o projeto

Este projeto visa a criação de uma API REST em Node.js que detecta se uma sequência de DNA pertence a um humano ou a um símio.

↪️ Feito Com

O projeto foi desenvolvido como serverless utilizando AWS Lambda, API Gateway, RDS (Postgres) e RDS Proxy.

Abaixo segue as tecnologias utilizadas neste projeto:

  • AWS Lambda - Plataforma de computação sem servidor e orientada a eventos
  • API Gateway - Serviço para criação, publicação, manutenção, monitoramento e proteção de APIs REST;
  • RDS - Serviço de banco de dados relacional distribuído;
  • RDS Proxy - Proxy de banco de dados totalmente gerenciado que torna os aplicativos mais escaláveis, mais resilientes a falhas de banco de dados e mais seguros;
  • chai - Chai é uma biblioteca de asserção, semelhante à embutida do Node assert;
  • cross-env - Cross-env é uma biblioteca para executar scripts que definem e usam variáveis ​​de ambiente em plataformas;
  • dotenv - Dotenv é um módulo de dependência zero que carrega variáveis ​​de ambiente de um .env arquivo para o process.env;
  • lambda-tester - Lambda-tester é uma biblioteca para escrever testes de unidade para AWS Lambda funções usando Node.js;
  • mocha - Mocha é uma biblioteca de teste para Node.js, criado para ser simples, extensível e rápido;
  • Node.js - Node.js é um ambiente de tempo de execução JavaScript. Ele executa o código JavaScript fora de um navegador;
  • nodemon - Nodemon é uma ferramenta que ajuda a desenvolver aplicativos baseados em node.js reiniciando automaticamente o aplicativo quando mudanças são detectadas;
  • pg - Pg é um cliente PostgreSQL sem bloqueio para Node.js;
  • sequelize - Sequelize é um ORM para Node.js baseado em promessa;
  • serverless - Serverless é um framework para construir aplicativos compostos de microsserviços que são executados em resposta a eventos;
  • sinon - Sinon é uma biblioteca JavaScript para testes spies, stubs and mocks;
  • tslint - TSLint é uma ferramenta de análise estática extensível que verifica o código TypeScript para erros de legibilidade, manutenção e funcionalidade;
  • TypeScript - TypeScript é um superconjunto de JavaScript desenvolvido pela Microsoft que adiciona tipagem e alguns outros recursos a linguagem;
    • ts-node-dev - Ferramenta que compila seus projetos com Typescript e reinicia o projeto quando o arquivo é modificado.

🚀 Começando

↪️ Pré-requisitos

  • Node > v10.13.0
  • Npm > v6.4.1
  • Docker

↪️ Estrutura de arquivos

A estrutura de arquivos está da seguinte maneira:

simios
├── app/
│   ├── config/
│   │    ├── sequelize/
│   │    │   └── ConfigSequelize.ts
│   ├── controller/
│   │   └── DNAController.ts
│   ├── model/
│   │   └── DNAModel.ts
│   ├── service/
│   │   └── DNAService.ts
│   ├── utils/
│   │   └── Util.ts
│   └── handler.ts
├── assets/
│   └── coverage.png
├── config/
│   ├── database/
│   │    ├── migrations/
│   │    │   └── init.ts
|   │    ├── .editorconfig
├── environments/
│   └── DNAController.ts
├── tests/
│   └── dna.mock.ts
│   └── dna.test.ts
├── .editorconfig
├── .gitignore
├── .nycrc.json
├── .sequelizerc
├── docker-compose.yml
├── Dockerfile
├── package.json
├── README.md
├── tsconfig.json
└── tslint.json

↪️ Instalação

$ git clone https://github.com/gguibittencourt/simios
$ cd simios
$ docker-compose up -d

↪️ Aplicação

Local

A aplicação estará rodando na URL http://localhost:3011

Ao executar o comando docker-compose up -d, para subir a aplicação o Docker executa o comando:

$ npm run local

Produção

A aplicação estará rodando na URL https://39dvnchwsa.execute-api.us-east-1.amazonaws.com/dev

Para fazer deploy da aplicação é necessário acessar o container simios_simios_1 do docker e rodar o comando:

$ npm run deploy

Utiliza os serviços da AWS:

  • Lambda
  • API Gateway
  • RDS
  • RDS Proxy

↪️ Testes

Para executar os testes é necessário acessar o container simios_simios_1 do docker e rodar o comando:

$ npm run coverage
  • Após executar será criada uma pasta coverage com os resultados dos testes, para verificar o percentual de cobertura basta acessar coverage/lcov-report/app e abrir o arquivo index.html

alt text

↪️ API

Simian

Verifica se a sequência de DNA pertence a um humano ou a um símio e insere no banco de dados as informações.

  • Caso o DNA seja identificado como um símio, o retorno será um HTTP 200-OK, caso contrário um HTTP 403-FORBIDDEN.

Requisição:

POST /simian

{
	"dna": ["ATGCGA", "CAGTGC", "TTATTT", "AGACGG", "GCGTCA", "TCACTG"]
}

Stats

Retorna as estatísticas de verificações de DNA, onde informa a quantidade de DNA’s símios, quantidade de DNA’s humanos, e a proporção de símios para a população humana.

Requisição:

GET /stats

Resposta:

{
	"count_mutant_dna": 40, 
   	"count_human_dna": 100,
	"ratio": 0.4
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 99.0%
  • Dockerfile 1.0%
0