Bem-vindo ao repositório do EAD Microservices! Este projeto foi desenvolvido como parte de uma formação em microservices com Java e Spring e tem como objetivo demonstrar uma arquitetura robusta e escalável utilizando padrões e ferramentas modernas.
Para isso, foi construído um projeto que simula uma plataforma de cursos EAD (Educação a Distância), onde instrutores podem criar cursos e módulos, e alunos podem se cadastrar e se inscrever nos cursos disponíveis.
Este projeto segue uma arquitetura de microservices, dividindo a aplicação em vários serviços independentes que se comunicam entre si. Cada microservice é responsável por uma funcionalidade específica e pode ser escalado e implantado separadamente.
-
AuthUser 🔐:
- Gerencia a autenticação e autorização de usuários.
- Implementa Spring Security com suporte para JWT.
-
Course 📚:
- Responsável por gerenciar cursos, módulos, lições e inscrições.
-
Notification 📣:
- Lida com notificações e alertas para os usuários.
- Java 17 ☕
- Spring Boot 3.1.0 🌱:
- Spring Web (APIs RESTful)
- Spring Data JPA (Banco de dados)
- Spring Security (Autenticação/Autorização)
- Spring Cloud (Padrões de microsserviços)
- PostgreSQL 🗃️
- Docker para provisionamento do banco de dados.
- RabbitMQ 🐇:
- Comunicação assíncrona entre microservices.
- Spring Cloud Netflix Eureka 📡: Service Registry.
- Spring Cloud Config Server 📜: Gerenciamento centralizado de configurações para todos os microservices.
- Resilience4j 🔄: Implementação de Circuit Breaker e Retry.
- Orika Mapper 🗺️: Ferramenta de mapeamento de objetos Java para conversões rápidas e eficientes entre DTOs e entidades.
- Lombok ✂️: Redução de verbosidade no código.
-
api-gateway: Microservice que atua como o ponto único de entrada da aplicação, roteando requisições para os serviços internos. -
config-server: Fornece gerenciamento centralizado de configurações.service-registry: Registro de serviços com Eureka. -
authuser: Gerencia autenticação, autorização e usuários. -
course: Serviço responsável por cursos, módulos e lições. -
notification: Serviço que gerencia as notificações. -
notification-hex: Serviço de notificações com arquitetura hexagonal. -
docker-compose.yml: Provisiona banco de dados necessários para cada serviço. -
init-db.sh: Script para inicializar o banco de dados.
- Utilizado para roteamento centralizado de requisições.
- Implementado com Spring Cloud Gateway e Service Registry.
- Gerenciado com Eureka Server.
- Permite a descoberta dinâmica de serviços.
- Gerenciamento centralizado de configurações em um repositório git.
- Atualização em tempo de execução com Spring Cloud Config.
- Comunicação síncrona entre microservices para compor dados de múltiplos serviços.
- Inscrição de usuários em cursos.
- Deleção de dados com integração entre microservices.
- Mensageria com RabbitMQ:
- Eventos de notificação entre serviços.
- Event-Carried State Transfer:
- Transferência de estado por meio de eventos.
- Implementação do Circuit Breaker Pattern com Resilience4j para melhorar a resiliência de falhas.
- JWT (Json Web Token):
- Autorização baseada em papéis (Roles).
- Integração de autenticação entre microservices.
- JDK 17
- Maven
- Docker
- Clone o repositório:
git clone git@github.com:matheusvidal21/ead-microservices.git
cd ead-microservices- Inicie containers para criar os bancos de dados:
docker-compose up -d- Inicie os microsserviços principais:
- service-registry
- config-server
- api-gateway
- Inicie os demais microsserviços:
- auth-user
- courses
- notification
Matheus Vidal |
|---|
