Skip to content

Repositório com a implementação de uma arquitetura de microservices em Java e Spring, simulando uma plataforma EAD. Inclui API Gateway, Service Registry, Config Server, comunicação síncrona e assíncrona, autenticação JWT, Circuit Breaker e boas práticas para sistemas distribuídos escaláveis e robustos.

Notifications You must be signed in to change notification settings

matheusvidal21/ead-microservices

Repository files navigation

Finalizado

🚀 EAD Microservices

Logo DSCommerce

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.


🏗️ Arquitetura de Microservices

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.

Microservices Principais

  1. AuthUser 🔐:

    • Gerencia a autenticação e autorização de usuários.
    • Implementa Spring Security com suporte para JWT.
  2. Course 📚:

    • Responsável por gerenciar cursos, módulos, lições e inscrições.
  3. Notification 📣:

    • Lida com notificações e alertas para os usuários.

🛠️ Tecnologias Utilizadas

Linguagem e Frameworks

  • 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)

Banco de Dados

  • PostgreSQL 🗃️
  • Docker para provisionamento do banco de dados.

Mensageria

  • RabbitMQ 🐇:
    • Comunicação assíncrona entre microservices.

Outras Ferramentas

  • 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.

📂 Estrutura do Repositório

  • 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.


🚦 Funcionalidades Implementadas

Comunicação e Padrões

API Gateway Pattern

  • Utilizado para roteamento centralizado de requisições.
  • Implementado com Spring Cloud Gateway e Service Registry.

Service Registry Pattern

  • Gerenciado com Eureka Server.
  • Permite a descoberta dinâmica de serviços.

Config Server

  • Gerenciamento centralizado de configurações em um repositório git.
  • Atualização em tempo de execução com Spring Cloud Config.

API Composition Pattern

  • Comunicação síncrona entre microservices para compor dados de múltiplos serviços.

Comunicação Síncrona

  • Inscrição de usuários em cursos.
  • Deleção de dados com integração entre microservices.

Comunicação Assíncrona

  • Mensageria com RabbitMQ:
    • Eventos de notificação entre serviços.
  • Event-Carried State Transfer:
    • Transferência de estado por meio de eventos.

Confiabilidade

  • Implementação do Circuit Breaker Pattern com Resilience4j para melhorar a resiliência de falhas.

Autenticação e Autorização

  • JWT (Json Web Token):
    • Autorização baseada em papéis (Roles).
    • Integração de autenticação entre microservices.

⚙️ Configuração e Execução

Requisitos

  • JDK 17
  • Maven
  • Docker

Instalação

  1. Clone o repositório:
git clone git@github.com:matheusvidal21/ead-microservices.git
cd ead-microservices
  1. Inicie containers para criar os bancos de dados:
docker-compose up -d
  1. Inicie os microsserviços principais:
  • service-registry
  • config-server
  • api-gateway
  1. Inicie os demais microsserviços:
  • auth-user
  • courses
  • notification

👥 Autor


Matheus Vidal

About

Repositório com a implementação de uma arquitetura de microservices em Java e Spring, simulando uma plataforma EAD. Inclui API Gateway, Service Registry, Config Server, comunicação síncrona e assíncrona, autenticação JWT, Circuit Breaker e boas práticas para sistemas distribuídos escaláveis e robustos.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published