Este projeto é uma solução para o desafio técnico da NTT DATA, focado no desenvolvimento de uma aplicação baseada em microsserviços. A aplicação simula um sistema de gestão de pedidos com um catálogo de produtos, utilizando uma arquitetura moderna com Spring Boot, Spring Cloud Eureka e Spring Cloud Gateway.
O objetivo é demonstrar a implementação de conceitos como Service Discovery, API Gateway e comunicação entre serviços, além de boas práticas de desenvolvimento de APIs REST.
A arquitetura do projeto é dividida em quatro componentes principais, orquestrados para trabalhar em conjunto:
eureka-server: O servidor de Service Discovery (Eureka Server), responsável por registrar a localização de todos os outros microsserviços. É o cérebro da nossa infraestrutura.microservice-products: Microsserviço para o Catálogo de Produtos. Ele gerencia as operações de CRUD de produtos e utiliza um banco de dados em memória H2 para persistência.microservice-orders: Microsserviço para a simulação de Pedidos. Ele se comunica com omicroservice-productspara buscar informações de produtos e simular a criação de um pedido. Não possui persistência própria.api-gateway: O ponto de entrada único para a aplicação. Ele é responsável por rotear as requisições externas para os microsserviços corretos, além de centralizar a lógica de autenticação.
O fluxo de uma requisição se dá da seguinte forma: o cliente envia uma requisição para o API Gateway, que consulta o Eureka Server para encontrar o endereço do microsserviço de destino e, então, a redireciona.
- Spring Boot: Framework principal para o desenvolvimento de todos os microsserviços.
- Spring Cloud Eureka: Implementação do padrão Service Discovery.
- Spring Cloud Gateway: Utilizado para criar o API Gateway de forma reativa e eficiente.
- Spring Data JPA: Abstração para a camada de persistência.
- H2 Database: Banco de dados em memória para o microsserviço de produtos.
- Lombok: Biblioteca para reduzir código repetitivo (getters, setters, etc.).
- Maven: Ferramenta de automação de construção e gerenciamento de dependências.
Para rodar a aplicação, siga a ordem correta de inicialização dos serviços.
- Java JDK 17+
- Maven 3.6+
- Uma IDE (como IntelliJ IDEA ou VS Code)
- Git
- Clone o repositório:
git clone https://github.com/EnzoLFranco/Desafio-NTT-Data.git cd Desafio-NTT-Data - Compile os projetos:
Navegue até a pasta de cada microsserviço e execute o comando:
# Exemplo: cd eureka-server mvn clean install # Repita para os outros projetos
- Inicie os serviços na ordem correta:
- 1º Eureka Server: Rode a classe principal
EurekaServerApplication.java(porta8761). - 2º Microsserviço de Catálogo: Rode
MicroserviceProductsApplication.java(porta8100). - 3º Microsserviço de Pedidos: Rode
MicroserviceOrdersApplication.java(porta8200). - 4º API Gateway: Rode
ApiGatewayApplication.java(porta8700).
- 1º Eureka Server: Rode a classe principal
O API Gateway implementa uma autenticação simples via cabeçalho Authorization: Bearer <token>. O token fixo usado é: seu-token-secreto-aqui.
Acesse http://localhost:8761/ no seu navegador para ver se todos os serviços foram registrados.
Requisição via Postman para criar um novo produto. O status 201 Created e o corpo da resposta com os detalhes do produto, incluindo um ID gerado, indicam sucesso.
Requisição para listar todos os produtos. O status 200 OK e o corpo da resposta em formato JSON contendo a lista dos produtos cadastrados confirmam o sucesso da operação.
Requisição para simular um pedido. O status 200 OK e uma mensagem de sucesso no corpo da resposta indicam que o microsserviço de pedidos se comunicou corretamente com o de produtos e processou a simulação.
Requisição sem o cabeçalho Authorization. O status de erro 401 Unauthorized na resposta confirma que o filtro de segurança do API Gateway está funcionando e bloqueando requisições não autenticadas.