Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/guligon90/infusetech-rest-orders
Avaliação técnica para a posição de engenheiro de software na Infuse Tecnologia Ltda, Web service que provê uma API RESTful para manipulação de dados básicos de pedidos.
https://github.com/guligon90/infusetech-rest-orders
docker docker-compose java maven mvc mysql restful-api springboot
Last synced: 2 days ago
JSON representation
Avaliação técnica para a posição de engenheiro de software na Infuse Tecnologia Ltda, Web service que provê uma API RESTful para manipulação de dados básicos de pedidos.
- Host: GitHub
- URL: https://github.com/guligon90/infusetech-rest-orders
- Owner: guligon90
- License: mit
- Created: 2024-08-27T22:50:55.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2024-09-02T17:20:02.000Z (5 months ago)
- Last Synced: 2025-02-06T20:45:59.539Z (6 days ago)
- Topics: docker, docker-compose, java, maven, mvc, mysql, restful-api, springboot
- Language: Java
- Homepage:
- Size: 191 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# InfuseTech - Web Service de Pedidos
![Code Analysis](https://github.com/guligon90/infusetech-rest-orders/actions/workflows/project-ci.yml/badge.svg)
Avaliação técnica para a posição de engenheiro de software na [Infuse Tecnologia Ltda](https://www.infuse.srv.br/). Web service que provê uma API RESTful para manipulação de dados básicos de pedidos.
## TOC
- [InfuseTech - Web Service de Pedidos](#infusetech---web-service-de-pedidos)
- [TOC](#toc)
- [Preliminares](#preliminares)
- [Topologia do projeto](#topologia-do-projeto)
- [Manipulação do projeto](#manipula%C3%A7%C3%A3o-do-projeto)
- [O que deseja fazer?](#o-que-deseja-fazer)## Preliminares
Esse projeto foi desenvolvido utilizando as seguintes ferramentas:
- [Software Development Kit Manager (`sdkman`)](https://sdkman.io/): v5.18.1 ou superior. É recomendado esse gerenciador para a instalação local das seguintes dependências;
- [OpenJDK (`java`)](https://nodejs.org/dist/v20.11.1/node-v20.11.1.tar.gz): versão LTS 64-bit (v17.0.12) ou superior:
- Instalação [manual](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html);
- Instalação com o [`sdkman`](https://maven.apache.org/install.html);
- [Apache Maven (`mvn`)](https://yarnpkg.com/getting-started): v3.6.3 ou superior:
- Instalação [manual](https://maven.apache.org/install.html);
- Instalação com o [`sdkman`](https://sdkman.io/sdks/#maven);
- [Docker Engine](https://docs.docker.com/engine/install/ubuntu/): v24.0.2 ou superior:
- [Comando `docker` sem ser `sudo`](https://docs.docker.com/engine/install/linux-postinstall/). Opcional;
- [Docker Compose](https://docs.docker.com/compose/install/linux/): v2.27.0 ou superior;
- [GNU Make](https://www.gnu.org/software/make/): v4.3 ou superior.## Topologia do projeto
![Topologia do projeto](./docs/img/project-docker-topology.png)
Como ilustra o diagrama, a comunicação entre serviços do cluster via TCP/HTTP se dá em uma rede particular ([`orders-network-dev`](./docker-compose.yml#L39)) e também, para efeito de acesso externo, portas são expostas por esses serviços para comunicação.
Segue abaixo uma listagem das assinaturas de URL, para as diferentes redes:
| **Serviço** | **Descrição** | **Protocolos** | **URL externa** | **URL interna** |
| ----------- | -------------------------------------------------------- | -------------- | ------------------------ | -------------------------- |
| webservice | Aplicação Spring Boot que fornece a API REST de pedidos | TCP,HTTP | | |
| phpmyadmin | Ferramenta para manipulação do banco de dados MySQL | TCP,HTTP | | |
| database | Servidor de banco de dados relacional MySQL | TCP | tcp://localhost:3300 | tcp://database:3300 |> [!IMPORTANT]
> Concernindo as URLs supracitadas, as **externas** são classificadas assim pois são **externas à rede do Docker**, e.g. quando a aplicação Spring Boot está sendo rodada localmente na máquina.
> Similarmente, uma URL é dita **interna** pois é **interna à rede do Docker**, e.g. quando tanto a aplicação Spring Boot quanto o servidor MySQL estão rodando em seus conteineres, um se comunicando com o outro via TCP.## Manipulação do projeto
Através do `make`, via scripts de automação do Docker Compose implementados em um [Makefile](./Makefile), na raíz do projeto. Para conferir a documentação de cada script, basta executar no terminal
```bash
make
```ou
```bash
make help
```---
## O que deseja fazer?
- [Voltar para TOC](#toc)
- [Execução da plataforma - Servidor MySQL](./docs/md/DATABASE.md)
- [Execução da plataforma - Web Service Java](./docs/md/WEBSERVICE.md)
- [Execução da plataforma - API de Pedidos](./docs/md/API-TESTING.md)
- [Especificações originais](./docs/md/ORIGINAL-SPECS.md)