Aplicação construída com arquitetura de microsserviços usando TypeScript, RabbitMQ, Kong API Gateway e Jaeger para rastreamento distribuído.
- Sobre o Projeto
- Arquitetura
- Serviços
- Tecnologias
- Pré-requisitos
- Como Rodar
- Portas e Interfaces
- Contratos
- Licença
Este repositório implementa uma arquitetura de microsserviços com dois serviços principais — Orders e Invoices — que se comunicam de forma assíncrona via RabbitMQ. O tráfego externo passa pelo Kong API Gateway (configuração declarativa, sem banco de dados), e o rastreamento distribuído é feito com Jaeger via protocolo OTLP.
┌───────────────────────────────┐
│ Cliente / HTTP │
└──────────────┬────────────────┘
│ :8000
┌──────────────▼────────────────┐
│ Kong API Gateway │
│ (declarative, DB-less) │
└──────┬────────────────┬───────┘
│ │
┌────────────▼──┐ ┌──────▼──────────┐
│ app-orders │ │ app-invoices │
│ (TypeScript) │ │ (TypeScript) │
└───────┬───────┘ └──────┬──────────┘
│ │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ RabbitMQ │
│ (mensageria async) │
└─────────────────────┘
│
┌──────────▼──────────┐
│ Jaeger │
│ (tracing / OTLP) │
└─────────────────────┘
| Serviço | Descrição |
|---|---|
app-orders |
Gerenciamento de pedidos |
app-invoices |
Geração e gerenciamento de faturas |
api-gateway |
Kong Gateway — roteamento e ponto de entrada da API |
broker |
RabbitMQ — comunicação assíncrona entre os serviços |
jaeger |
Rastreamento distribuído de requisições |
- TypeScript — linguagem principal dos microsserviços
- RabbitMQ 3 — mensageria e comunicação assíncrona entre serviços
- Kong 3.9 — API Gateway declarativo (DB-less)
- Jaeger — rastreamento distribuído com suporte a OTLP (gRPC e HTTP)
- Docker + Docker Compose — containerização e orquestração local
- contracts/messages — contratos de mensagens compartilhados entre os serviços
- Node.js (v18+)
- Docker + Docker Compose
- Git
git clone https://github.com/Cr-Israel/microservices.git
cd microservicesdocker compose up -d# Serviço de pedidos
cd app-orders
npm install
npm run dev
# Serviço de faturas (em outro terminal)
cd app-invoices
npm install
npm run dev| Serviço | Endereço | Descrição |
|---|---|---|
| Kong Proxy (API) | http://localhost:8000 |
Ponto de entrada da API |
| Kong Admin API | http://localhost:8001 |
API de administração do Kong |
| Kong Admin UI | http://localhost:8002 |
Interface visual do Kong |
| Kong Proxy SSL | https://localhost:8443 |
Proxy com HTTPS |
| RabbitMQ | amqp://localhost:5672 |
Conexão AMQP |
| RabbitMQ Management | http://localhost:15672 |
Dashboard do RabbitMQ |
| Jaeger UI | http://localhost:16686 |
Visualização de traces |
| Jaeger OTLP gRPC | http://localhost:4317 |
Ingestão de traces via gRPC |
| Jaeger OTLP HTTP | http://localhost:4318 |
Ingestão de traces via HTTP |
O diretório contracts/messages contém os contratos de mensagens compartilhados entre app-orders e app-invoices, garantindo consistência nos eventos trocados via RabbitMQ.
contracts/
└── messages/
└── ... ← Tipos e interfaces das mensagens entre os serviços
Distribuído sob a licença MIT. Veja LICENSE para mais informações.
Feito por Cr-Israel