Uma solução moderna de microserviços para cadastro de produtos, gestão de pedidos e notificações integradas.
O Micro-commerce é uma aplicação distribuída baseada em microsserviços projetada para ser escalável, resiliente e de fácil manutenção. O ecossistema é orquestrado por um API Gateway e utiliza mensageria assíncrona para comunicação entre os serviços.
O projeto é dividido em quatro componentes principais:
- api-getway: Gateway baseado em Nginx atuando como ponto de entrada unificado da aplicação, responsável pelo roteamento reverso de requisições para os microsserviços de produtos e pedidos.
- product-service: API desenvolvida com Fastify e TypeScript que utiliza MongoDB para o gerenciamento e persistência do catálogo de produtos.
- order-service: API desenvolvida com Fastify e TypeScript que utiliza PostgreSQL para o gerenciamento de pedidos e se comunica com o
product-servicepara validação e publica eventos de compra no RabbitMQ. - notification-service: Consumidor desenvolvido em Python que escuta eventos na fila do RabbitMQ e processa notificações de novas compras em tempo real.
- 🔀 API Gateway centralizado: Encaminha requisições dinamicamente para as portas corretas dos serviços de produtos e de pedidos sob a porta unificada
:8080. - 📦 Gestão de Produtos: Cadastro e consulta de itens com banco de dados NoSQL flexível (MongoDB).
- 🧾 Processamento de Pedidos: Registro de novas vendas no banco de dados relacional (PostgreSQL) com verificação de integridade de dados.
- 🔔 Notificações Assíncronas: Envio desacoplado e resiliente de notificações de compras concluídas através de mensageria com RabbitMQ e scripts Python.
A stack tecnológica do projeto conta com ferramentas modernas e de alta performance:
- Linguagens & Frameworks:
- Bancos de Dados & Mensageria:
- Infraestrutura:
Para rodar o projeto localmente de forma nativa ou para modificações locais, você precisará de:
- Node.js (versão 20 ou superior)
- Yarn (gerenciador de pacotes)
- Python (versão 3.10 ou superior)
- Docker & Docker Compose
- Nginx (opcional se rodar fora do Docker)
Comece clonando este repositório para a sua máquina local:
git clone git@github.com:davisousadev/micro-commerce.git
cd micro-commercePara modificações nos serviços baseados em Node.js (product-service e order-service):
# Instalar dependências de Node.js
yarn installPara o serviço de notificações em Python (notification-service):
# Criar e ativar um ambiente virtual
python -m venv venv
source venv/bin/activate # No Windows: venv\Scripts\activate
# Instalar as dependências do Python
pip install -r notification-service/requirements.txtA maneira mais fácil e recomendada de rodar todo o ecossistema com todas as dependências pré-configuradas é utilizando o Docker Compose. Execute o seguinte comando no terminal na raiz do projeto:
docker-compose up --buildEste comando irá baixar as imagens oficiais dos bancos de dados e do RabbitMQ, realizar o build das imagens dos serviços customizados e inicializar todas as aplicações de forma integrada.
- API Gateway (Nginx): http://localhost:8080
- Painel do RabbitMQ (Management): http://localhost:15672 (usuário/senha padrão:
guest/guest) - MongoDB:
localhost:27017 - PostgreSQL:
localhost:5432
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Desenvolvido por Davi. Sinta-se à vontade para entrar em contato ou contribuir com o projeto!