Skip to content

JuhMaran/code-architectures

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Code Architectures

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.

Estrutura do Projeto

O projeto é dividido nos seguintes microsserviços principais:

  1. Microsserviço de Usuários: Responsável por todas as operações relacionadas aos usuários da plataforma.
  2. Gerenciamento de Estoque de Produtos: Controla o inventário de produtos.
  3. Sistema de Checkout de Pedidos: Orquestra o fluxo de finalização de uma compra.

1. Microsserviço de Usuários

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

Funcionalidades

  • Cadastrar usuário
  • Atualizar dados do usuário
  • Buscar/Listar usuários
  • Excluir usuário

Arquitetura e Tecnologias

  • Padrão de Arquitetura: CQRS (Command Query Responsibility Segregation)
  • Estilo de Arquitetura: DDD (Domain-driven Design) [7, 18, 25]
  • Banco de Dados: Elasticsearch

2. Gerenciamento de Estoque de Produtos

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.

Atributos do Produto

  • SKU
  • Nome
  • Cor
  • Material

Atributos de Estoque

  • quantidade_reservada
  • quantidade_disponivel
  • quantidade_removida_vendida

Endpoints

  • Reservar produto
  • Vender produto
  • Adicionar produto
  • Consultar histórico de transações
  • Consultar quantidade disponível em estoque

Arquitetura e Tecnologias

  • Arquitetura: Event Sourcing. [8, 19, 31]
  • Banco de Dados: PostgreSQL e/ou Elasticsearch

3. Sistema de Checkout de Pedidos

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.

Microsserviços

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

Funcionalidades Adicionais

  • Cancelamento de Operações: Implementa a lógica para reverter operações em caso de falhas.

Arquitetura e Tecnologias

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

Observabilidade

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

Tecnologia Comum

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:
    • Dockerfile para cada microsserviço
    • docker-compose.yml para orquestração do ambiente de desenvolvimento
  • Gerenciador de Projeto: Maven
  • Group (Start Spring IO): br.com.example
  • Empacotamento: Jar

Dependências Comuns

  • Spring Web
  • Lombok
  • Spring Tests
  • Validation
  • Spring Boot Actuator
  • Spring DevTools
  • Spring Configuration Processor

About

Code Architectures

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors