Projeto de Microsserviços para E-commerce
Este repositório contém uma arquitetura de microsserviços projetada para uma plataforma de e-commerce, abrangendo o gerenciamento de usuários, estoque de produtos e o processo de checkout de pedidos.
O projeto é dividido nos seguintes microsserviços principais:
- Microsserviço de Usuários: Responsável por todas as operações relacionadas aos usuários da plataforma.
- Gerenciamento de Estoque de Produtos: Controla o inventário de produtos.
- Sistema de Checkout de Pedidos: Orquestra o fluxo de finalização de uma compra.
Este serviço gerencia as informações e operações relacionadas aos usuários.
- Descrição: API para realizar o cadastro, atualização, busca e exclusão de usuários na plataforma.
- Documentação da API: Swagger PetStore
- Cadastrar usuário
- Atualizar dados do usuário
- Buscar/Listar usuários
- Excluir usuário
- Padrão de Arquitetura: CQRS (Command Query Responsibility Segregation)
- Estilo de Arquitetura: DDD (Domain-driven Design) [7, 18, 25]
- Banco de Dados: Elasticsearch
Responsável por controlar a disponibilidade e o histórico de movimentações dos produtos.
- Descrição: API para gerenciar o estoque, incluindo reservas, vendas e adição de novos produtos.
SKUNomeCorMaterial
quantidade_reservadaquantidade_disponivelquantidade_removida_vendida
- Reservar produto
- Vender produto
- Adicionar produto
- Consultar histórico de transações
- Consultar quantidade disponível em estoque
- Arquitetura: Event Sourcing. [8, 19, 31]
- Banco de Dados: PostgreSQL e/ou Elasticsearch
Orquestra o fluxo de um pedido, desde a sua criação até a entrega.
- Descrição: Sistema distribuído que coordena os diversos passos do processo de checkout, como pagamento, separação e envio.
- Fazer Pedido: Inicia o processo de checkout.
- Fazer Pagamento: Processa o pagamento do pedido.
- Separar Pedido: Gerencia a separação dos itens no estoque.
- Enviar Pedido: Controla a logística de envio do pedido.
- Cancelamento de Operações: Implementa a lógica para reverter operações em caso de falhas.
- Arquitetura: SAGA
- Direcionamento de Operações: Orientado a Eventos
- Banco de Dados: PostgreSQL e/ou Elasticsearch
- Banco de Dados para Event Sourcing: Event Sourcing DB [1]
- Streaming de Banco de Dados: ksqlDB [2]
- Logs da Aplicação: Registros detalhados do comportamento de cada serviço.
- Tracing Distribuído: Rastreamento de requisições através dos microsserviços para identificar gargalos e falhas.
- Ciclo de Vida do Pedido: Identificação clara dos passos de um pedido.
- Armazenamento de Logs: Kibana (ELK) para armazenamento e visualização de logs. [3, 4]
- Monitoramento: Prometheus para coleta de métricas. [14]
As seguintes tecnologias e padrões são utilizados em todos os microsserviços para garantir a consistência e a manutenibilidade do projeto.
- Linguagem: Java 21
- Framework: Spring Boot 3.5.5
- Containerização:
Dockerfilepara cada microsserviçodocker-compose.ymlpara orquestração do ambiente de desenvolvimento
- Gerenciador de Projeto: Maven
- Group (Start Spring IO):
br.com.example - Empacotamento: Jar
- Spring Web
- Lombok
- Spring Tests
- Validation
- Spring Boot Actuator
- Spring DevTools
- Spring Configuration Processor