Este repositório contém o código-fonte e a documentação para o Tech Challenge - Fase 5, desenvolvido pelo Grupo 30.
O projeto consiste em uma sistema de e-commerce utilizando uma arquitetura com microserviços. Além do Spring Framework, Spring Boot e Sping Data, também utilizamos neste projeto as bibliotecas Spring Security e Spring Gateway.
Tecnologias e ferramentas utilizadas
-
Linguagem de programação:
- Java 17
-
Framework:
- Spring Boot 3.2.2
-
Bibliotecas:
- Spring Web
- Spring Security
- Spring Gateway
- OpenAPI
- Lombok
-
Banco de dados:
- PostgreSQL
-
Outras ferramentas:
- Docker
O sistema opera de forma que o usuário deve efetuar login para obter o token JWT, necessário para acessar as demais rotas através do gateway. Dentro do gateway, é realizada uma validação para determinar a validade do token. Caso o token seja inválido, o sistema retornará um erro 401 (Unauthorized). Se o token for válido, o usuário será redirecionado para a próxima rota.
Utilizamos um banco de dados para cada microserviço e configuramos dois profiles, um profile para trabalharmos com H2 e outro para trabalharmos com o PostgreSQL:
Configuração de teste utilizando o H2:
Configuração de produção utilizando o PostgreSQL:
Criamos um container para cada aplicação e outro para cada banco de dados e uma rede no modo bridge para ter acesso ao containers via localhost:
tech-challenge-fase5/docker-compose.yml
Lines 1 to 137 in 2a89677
Também adicionamos o arquivo Dockerfile que gerencia o processo de build da aplicação através do Maven e JDK, já inicializando a aplicação:
tech-challenge-fase5/payment/Dockerfile
Lines 1 to 15 in 2a89677
Para criação dos container, compilar e rodar a applicação é necessário apenas o comando:
docker-compose up -d
Adicionamos a geração automática da documentação através da biblioteca SpringDoc OpenAPI, a documentação pode ser acessada enquanto a aplicação estiver rodando em http://localhost:8080/swagger-ui/index.html#/:
Microserviço Users http://localhost:8081/swagger-ui/index.html#/
Microserviço Items http://localhost:8082/swagger-ui/index.html#/
Microserviço Shopping-Carts http://localhost:8083/swagger-ui/index.html#/
Microserviço Payment http://localhost:8084/swagger-ui/index.html#/
Disponibilizamos um de arquivo JSON com todas as requisições Postman para testar a API, os arquivos estão disponíveis nos seguintes links:
O projeto foi concluído com êxito, atendendo plenamente aos requisitos estabelecidos no desafio. As tecnologias e ferramentas adotadas demonstraram ser adequadas para o propósito do sistema, contribuindo para um desenvolvimento eficiente e robusto. As principais dificuldades encontradas estão relacionadas a utilização, configuração e compreensão, do Spring Security e Spring Gateway. A complexidade dessas tecnologias exigiu um esforço adicional por parte da equipe para garantir uma implementação eficaz e sem falhas.