Skip to content

Cr-Israel/microservices

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧩 Microservices

Aplicação construída com arquitetura de microsserviços usando TypeScript, RabbitMQ, Kong API Gateway e Jaeger para rastreamento distribuído.


📌 Sumário


📖 Sobre o Projeto

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.


🏗️ Arquitetura

         ┌───────────────────────────────┐
         │         Cliente / HTTP        │
         └──────────────┬────────────────┘
                        │ :8000
         ┌──────────────▼────────────────┐
         │       Kong API Gateway        │
         │  (declarative, DB-less)       │
         └──────┬────────────────┬───────┘
                │                │
   ┌────────────▼──┐      ┌──────▼──────────┐
   │  app-orders   │      │  app-invoices   │
   │  (TypeScript) │      │  (TypeScript)   │
   └───────┬───────┘      └──────┬──────────┘
           │                     │
           └──────────┬──────────┘
                      │
           ┌──────────▼──────────┐
           │      RabbitMQ       │
           │  (mensageria async) │
           └─────────────────────┘
                      │
           ┌──────────▼──────────┐
           │        Jaeger       │
           │  (tracing / OTLP)   │
           └─────────────────────┘

🔧 Serviços

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

🚀 Tecnologias

  • 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

✅ Pré-requisitos


▶️ Como Rodar

1. Clone o repositório

git clone https://github.com/Cr-Israel/microservices.git
cd microservices

2. Suba a infraestrutura (Kong, RabbitMQ, Jaeger)

docker compose up -d

3. Rode os microsserviços individualmente

# 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

🌐 Portas e Interfaces

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

📦 Contratos

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

📄 Licença

Distribuído sob a licença MIT. Veja LICENSE para mais informações.


Feito por Cr-Israel

About

Microsserviços com TypeScript, RabbitMQ, Kong API Gateway e rastreamento Jaeger.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors