Para construir esta aplicação recorreu-se à framework Spring Boot.
Antes de correr a aplicação, é necessário garantir que as bases de dados MySQL e MongoDB estão a correr e disponíveis nas respetivas portas. É também necessário verificar que o Spring Boot está a utilizar os urls corretos destes serviços em application.properties
.
Para saber como estas podem ser inicializadas, recomenda-se a consulta do ficheiro
/projDB/readme.md
.
Uma vez assegurada esta condição, basta executar o comando abaixo para correr a aplicação.
$ ./mvnw spring-boot:run
Se a compilação não foi interrompida por nenhum erro, esta deve ficar disponível na porta 8080
do localhost
.
Utilizando a ferramenta Swagger, foi possível documentar automáticamente os diversos endpoints do serviço, de acordo com os requisitos do professor.
É de notar que, alguns endpoints, para permitir paginação e outras features, retornam um Map<String, Object>
, permitindo inserir informação como o número total de produtos, a página atual e, como é de esperar, os objetos daquele endpoint, não fazendo distinção se os mesmos são Produtos, Categorias...
Nestes casos, o Swagger acaba por não documentar da maneira correta, faltando alguns modelos.
A interface do Swagger encontar-se-à em http://localhost:8080/api/swagger-ui/index.html caso seja executada a aplicação em `localhost.
Antes de ser possível fazer o deploy deve-se alterar os urls dos serviços no ficheiro application.properties
de modo a estarem associados ao seu nome no Docker Compose.
Como título de exemplo, o serviço Kafka
terá o url Kafka
dentro da rede interna do Docker Compose.
Posteriormente é necessário compilar o código e gerar o seu jar:
$ mvn -DskipTests clean package
Foi utilizada a opção
-DskipTests
para ignorar os testes neste caso pois estes iriam falhar devido aos serviços não estarem disponíveis no urL especificado pois a máquina não está no Docker Compose
O ficheiro Dockerfile, de acordo com as referências, tem a informação necessária para o deploy deste serviço através do ficheiro Docker Compose na raiz do repositório.
Referências