Skip to content

hellyaxs/microservice-library

Repository files navigation

📚 Livraria Digital - Microsserviços

NestJS Go Spring Flask RabbitMQ Next JS

Este projeto é uma aplicação de livraria distribuída, baseada em Microsserviços. Ele simula um ecossistema robusto, escalável e assíncrono de uma livraria online, utilizando diferentes linguagens e tecnologias em cada serviço.

📌 Visão Geral

A aplicação é composta por múltiplos serviços independentes que se comunicam de forma assíncrona via RabbitMQ, com descoberta de serviços usando o Consul. A arquitetura contempla tanto BD de escrita (write DB) quanto BD de leitura (read DB), visando performance e escalabilidade.


🔧 Tecnologias Utilizadas

Serviço Linguagem Framework Banco de Dados Observações
Livros Java Spring Boot PostgreSQL Gerencia livros e estoque
Users Node.js NestJS PostgreSQL Autenticação e dados dos usuários
Pagamentos Java Spring Boot PostgreSQL Processamento de pagamentos
Empréstimos GO gin PostgreSQL Controle de empréstimos de livros
Notificações Python FastAPI PostgreSQL Envia notificações aos usuários
Mensageria - RabbitMQ - Comunicação assíncrona
Orquestração - Docker Compose - Gerenciamento dos containers

🗃️ Estrutura do Projeto

livraria-microsservicos/ │
 ├── livros/ # Serviço de gerenciamento de livros (NestJS) 
 ├── users/ # Serviço de usuários (Spring Boot) 
 ├── pagamentos/ # Serviço de pagamentos (FastAPI)
 ├── notificacoes/ # Serviço de notificações (Go) 
 ├── emprestimos/ # Serviço de empréstimos (Spring Boot) 
 ├── discovery/ # Configuração do Consul 
 ├── rabbitmq/ # Configuração do broker de mensagens 
 ├── docker-compose.yml # Orquestração dos serviços
 └── README.md # Este arquivo

diagrama da arquitetura

%% Arquitetura Livraria Digital - Microsserviços
%% Diagrama gerado a partir do diagrama de arquitetura do projeto

flowchart TB
    subgraph client [Cliente]
        Client[Client]
    end

    subgraph gateway [API Gateway]
        APIGateway[API Gateway NestJS]
        Note1[GET atuam como proxy]
    end

    subgraph cache [Cache]
        Redis[(Redis)]
    end

    subgraph messaging [Mensageria]
        RabbitMQ[RabbitMQ]
    end

    subgraph microservices [Microsserviços]
        Catalogo[Catalogo]
        Users[Usuários / Membros]
        Emprestimo[Empréstimo]
        Notifications[Notificações]
    end

    subgraph database [Banco de Dados]
        DBWrite[(shared-database write)]
        DBRead[(shared-database read)]
    end

    Client -->|requisições| APIGateway
    APIGateway <-->|cache| Redis
    APIGateway -->|"GET catalogo/..."| Catalogo
    APIGateway -->|"GET users/..."| Users
    APIGateway -->|"POST solicitações"| RabbitMQ
    RabbitMQ -->|mensagens| Emprestimo
    RabbitMQ -->|mensagens| Notifications

    Catalogo -->|write| DBWrite
    Users -->|write| DBWrite
    Emprestimo -->|write| DBWrite
    Notifications -->|write| DBWrite

    DBWrite -->|replicação| DBRead
    APIGateway -.->|"leitura"| DBRead
    Catalogo -.->|"leitura"| DBRead
    Users -.->|"leitura"| DBRead
Loading

Arquitetura de Microsserviços Proposta

  1. Catálogo de Livros (Java/Spring Boot)

Gerenciamento de livros, autores, editoras, categorias Busca e filtragem avançada de acervo ISBN, metadados bibliográficos Integração com APIs externas (Google Books, Open Library) Java é excelente aqui pela robustez e ecossistema Spring

  1. Gestão de Empréstimos (Go)

Controle de empréstimos e devoluções Cálculo de multas e renovações Reservas de livros Regras de negócio de prazos Go oferece alta performance e concorrência ideal para operações críticas

  1. Gestão de Usuários/Membros (Node.js/Express)

Cadastro e autenticação de usuários Perfis (estudante, professor, comunidade) Histórico pessoal de leituras Preferências e recomendações Node.js é ágil para APIs REST e integração com frontend

  1. Notificações e Comunicação (Python/FastAPI)

Envio de emails (vencimentos, reservas disponíveis) Notificações push Lembretes automáticos Geração de relatórios Python facilita integrações com serviços externos e agendamento

Contextos Adicionais (Opcional) 5. Relatórios e Analytics (Python/Django)

Dashboards gerenciais Estatísticas de uso Análise de popularidade de livros Python com pandas/numpy para análise de dados

  1. Pagamentos/Multas (Node.js ou Java)

Processamento de multas Integração com gateways de pagamento Histórico financeiro

Comunicação Entre Serviços

Síncrona: REST APIs ou gRPC Assíncrona: RabbitMQ, Kafka ou Redis para eventos Event Sourcing: Para auditoria de empréstimos

About

Este projeto é uma aplicação de livraria distribuída, baseada em Microsserviços. Ele simula um ecossistema robusto, escalável e assíncrono de uma livraria online, utilizando diferentes linguagens e tecnologias em cada serviço.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors