Projeto Global Solution FIAP - Microserviços
- Breno de Souza Silva - RM: 88332
- Gabriel Kazuki Onishi - RM: 87182
- Matéria: Microservice and Web Engineering
- Professor: José Romualdo da Costa Filho
Os Objetivos de Desenvolvimento Sustentável (ODS) são um apelo global para a adoção de medidas que visam erradicar a pobreza, proteger o meio ambiente e garantir a paz e prosperidade para todos. Estabelecidos em 2015 pela Assembleia Geral das Nações Unidas e integrados à Agenda 2030, os ODS compreendem 17 objetivos interconectados, abrangendo 169 metas nas dimensões econômica, social e ambiental do desenvolvimento sustentável.
Dentro desse contexto, destacamos o ODS 3, que busca assegurar uma vida saudável e promover o bem-estar para todas as pessoas, em todas as idades. Essa dimensão é crucial para a construção de sociedades resilientes e inclusivas, transcendendo os cuidados médicos e englobando a prevenção de doenças, acesso a serviços de saúde de qualidade e promoção de estilos de vida saudáveis.
Para contribuir com esse objetivo global, desenvolvemos uma aplicação que utiliza diagramas e scripts para gerar datasets com dados de indicadores do ODS 3, Saúde e Bem-Estar. Estes dados são disponibilizados através de uma API, acessível tanto para consumo direto quanto para integração em outras aplicações.
- APIs: Disponibilizam dados do ODS 3 de forma acessível e organizada, permitindo fácil integração em diferentes contextos.
- Aplicação Frontend: Uma interface intuitiva para visualização e interação com os indicadores de saúde, tornando as informações mais acessíveis ao público em geral, com gráficos e filtros.
- Docker: As aplicações estão disponíveis para uso intuitivo e conteinerizados com Docker.
O projeto foi desenvolvido utilizando as seguintes tecnologias:
- Docker: Docker é uma tecnologia de contêiner utilizada para gerenciar e implantar aplicações de forma eficiente, garantindo consistência entre ambientes.
- Docker Compose: Docker Compose é uma ferramenta que permite definir e gerenciar aplicativos Docker multi-container. Facilita a configuração de serviços, redes e volumes em um arquivo YAML.
- VSCode: Utilizamos o ambiente de desenvolvimento Visual Studio Code para a escrita, edição e depuração de código. Ele oferece uma ampla gama de extensões que facilitam o desenvolvimento em diversas linguagens.
- SQL Data Modeler: SQL Data Modeler é uma ferramenta que empregamos para desenvolver os relacionamentos entre as entidades do projeto de banco de dados Oracle SQL.
- MySQL: MySQL é uma ferramenta de gerenciamento de banco de dados utilizada no projeto para armazenamento e recuperação eficientes de dados.
- Postman: Utilizamos o Postman para testar e documentar nossas APIs. Isso facilita o processo de integração e validação das funcionalidades do sistema.
- Jest: Jest é um framework de teste para JavaScript, com foco na simplicidade. É utilizado para testes unitários e de integração.
- SuperTest: SuperTest é uma biblioteca de asserções HTTP para Node.js, frequentemente utilizada em conjunto com o Jest para testar APIs.
- K6: K6 é uma ferramenta de teste de carga e desempenho, utilizada para avaliar o comportamento do sistema sob diferentes condições de tráfego.
- Node.js com Express: Utilizamos o Node.js com o framework Express para construir a camada de servidor da nossa aplicação.
- React JS: ReactJS é uma biblioteca JavaScript para construção de interfaces de usuário. É utilizado na criação da interface do usuário no lado do cliente.
- Axios: Axios é um cliente HTTP baseado em Promises que utilizamos para fazer requisições HTTP tanto no lado do cliente (React) quanto no lado do servidor (Node.js).
- Recharts: Recharts é uma biblioteca de gráficos para React baseada em D3. Utilizamos o Recharts para visualização de dados e criação de gráficos interativos em nossa aplicação.
- Clone este repositório em sua máquina local.
- Abra ou execute o Docker Desktop.
- Execute de forma automática os contêineres Docker para iniciar as aplicações Backend e Frontend, clicando no arquivo autoBuild.bat dentro do repositório.
- Após a completa execução arquivo .bat anterior, execute o arquivo composeUp.bat também.
- E após completa execução do arquivo composeUp.bat, abra o Docker Desktop, e clique na aba Containers.
- Clique no container applications gerado de forma automática, e espere o script de inserção DML (50seg) finalizar para começar a utilizar os serviços de API e frontend.
- Acesse a aplicação através do navegador e explore os indicadores de saúde do ODS 3 de maneira intuitiva.
- Endpoint GET/categorias
http://localhost:3000/categorias
- Endpoint GET/indicador
http://localhost:3000/indicador
- Endpoint GET/indicador/{id}
http://localhost:3000/indicador/3.1.1
- Endpoint GET/objetivos
http://localhost:3000/objetivos
- Endpoint GET/categorias
- Endpoint GET/indicador
- Endpoint GET/indicador/{id}
- Endpoint GET/objetivos
- Página Inicial:
- Página de Objetivos:
- Página de Indicadores:
http://localhost:3001/
- Página Inicial:
- Página de Objetivos Brasil:
- Página de Objetivos Mundo:
- Página de Indicadores sem filtros:
- Página de Indicadores com filtros:
Instruções para execução dos testes de Integração:
Important
Antes de começar os testes de integração, certifique-se de que os containers estejam funcionando, pelo menos o container "ods3db".
- Abra a pasta do projeto ODS3API no Visual Studio Code.
- Abra o terminal e execute o comando abaixo:
npm install
- Ao abrir o projeto, caminhe até a pasta de configuração conforme o exemplo do caminho abaixo:
C:\Users\amsbr\OneDrive\Documentos\ODS3\applications\backend\ods3API\src\config
- Abra o arquivo databaseConfig.js e certifique-se de alterar o atributo "host: ods3db" da configuração para "host: localhost, conforme o código abaixo:
const config = {
pool: {
//host: "ods3db", //manter para conexões entre containers
host: "localhost", // manter para testes de integração
user: "main",
password: "1234",
database: "ODS3",
connectTimeout: 60000,
waitForConnections: true,
connectionLimit: 20,
maxIdle: 10,
idleTimeout: 60000,
enableKeepAlive: true,
},
listPerPage: 10,
};
- Após a certificação de que a configuração está conforme descrito anteriormente, salve as alterações e abra o terminal (Ctrl+').
- Com o terminal aberto, caminhe até a pasta de testes conforme o exemplo caminho abaixo:
C:\Users\amsbr\OneDrive\Documentos\ODS3\applications\backend\ods3API\tests>
- No terminal, dentro do caminho da pasta de testes, escreva o comando abaixo para executar os testes de integração:
npx jest
Instruções para execução dos testes de carga:
Important
Antes de começar os testes de carga, certifique-se de que o k6 está instalado em sua máquina, pois sem ele instalado não tem como executar os testes. Caso, ainda não tenha o k6 instalado, você pode seguir os passos de instalação conforme a documentação oficial.
- Abra a pasta do projeto ODS3API no Visual Studio Code.
- Ao abrir o projeto, caminhe até a pasta de testes conforme o exemplo do caminho abaixo:
C:\Users\amsbr\OneDrive\Documentos\ODS3\applications\backend\ods3API\tests>
- No terminal, dentro do caminho da pasta de testes, escreva o comando abaixo para executar os testes de performance:
k6 run scripts.js
Note
Ao utilizar o comando descrito no passo anterior, você estará testando todos os endpoints conjuntamente e não apenas um endpoint só. Isso acontece, pois o arquivo scripts.js foi desenvolvido com a inteção de facilitar com apenas um comando testar todas as controllers e cenários da aplicação.
Tip
É possível testar os endpoints de forma separada também, acessando a pasta scenarios que fica dentro da pasta de testes conforme o exemplo abaixo:
C:\Users\amsbr\OneDrive\Documentos\ODS3\applications\backend\ods3API\tests\scenarios>
Dentro da pasta abaixo, você pode digitar o mesmo comando que utilizou para executar o arquivo de scripts. Para isso apenas altere o nome do arquivo para o endpoint que deseja testar, conforme exemplos abaixo:
k6 run get-categoria.js // ---> Para testar a controller de Categoria
k6 run get-objetivo.js // ---> Para testar a controller de Objetivo
k6 run get-indicador.js // ---> Para testar a controller de Indicador
k6 run get-indicador-codIndicador.js // ---> Para testar a controller de Indicador com o código Indicador
Important
É necessário lembrar que você também pode alterar as configurações do seu teste dentro do arquivo scripts.js, assim como dentro de cada arquivo da pasta scenarios que deseja testar. As configurações que você pode alterar são o número de usuários virtuais (vus) e a duração (duration) que deseja utilizar para o teste, dentro do pedaço de código abaixo de cada arquivo:
export const options = {
vus: 10,
duration: '10s',
};
- Configuração do teste:
- Usuários Virtuais (vus): 100
- Duração (duration): 5min
Contribua conosco na construção de um mundo mais saudável e inclusivo!