Skip to content

mtngunay/b2b-microservices-platform

Repository files navigation

🇹🇷 Türkçe | 🇬🇧 English

🚀 B2B Microservices Platform 2026

Kurumsal B2B sistemleri için tasarlanmış, event‑driven, ölçeklenebilir ve observability‑first bir Kubernetes tabanlı mikroservis platformu.

Bu repo özellikle:

  • Gerçek hayata yakın production‑grade K8s manifestleri
  • CQRS + Event‑Driven mimari
  • ELK, Prometheus, Grafana, Jaeger ile tam gözlemlenebilirlik
  • .NET tabanlı API & Worker servisleri

sunmayı amaçlar.


📌 İçindekiler


🚀 Hızlı Başlangıç

Tek Komutla Tüm Sistemi Başlat

cd k8s
.\run.ps1

veya:

start.bat

Bu script otomatik olarak:

  1. Kubernetes namespace’lerini oluşturur
  2. Tüm servisleri deploy eder
  3. MSSQL, MongoDB, Redis, RabbitMQ başlatır
  4. Veritabanlarını oluşturur (B2BWriteDb, HangfireDb)
  5. API & Worker servislerini ayağa kaldırır
  6. ELK, Prometheus, Grafana, Jaeger stack’ini kurar
  7. Gerekli port‑forward işlemlerini başlatır

Sistemi Durdurmak

Get-Process kubectl | Stop-Process

🏗️ Mimari Genel Bakış

CLIENT (Swagger / API Consumer)
        │
        ▼
┌─────────────────────────────┐
│        B2B API (3x)         │
│     CQRS + JWT + Redis      │
└───────────┬─────────────────┘
            │
   ┌────────┼────────┐
   ▼        ▼        ▼
 MSSQL   MongoDB   Redis
 Write     Read     Cache
   │
   ▼
RabbitMQ (Event Bus)
   │
   ▼
B2B Worker (2x)
Hangfire + Consumers

Temel prensipler:

  • Write: MSSQL
  • Read: MongoDB
  • Cache / Session: Redis
  • Async Communication: RabbitMQ
  • Background Jobs: Hangfire

📦 Çalışan Servisler

Servis Replika Amaç
B2B API 3 REST API + Swagger
B2B Worker 2 Hangfire & Event Consumer
MSSQL 1 Write DB
MongoDB 1 Read DB
Redis 3 Cache / Token Store
RabbitMQ 3 Event Bus
Elasticsearch 3 Log Storage
Logstash 2 Log Processing
Kibana 1 Log UI
Prometheus 1 Metrics
Grafana 1 Dashboards
Jaeger 1 Distributed Tracing

🌐 Erişim URL’leri

Servis URL Kullanıcı / Şifre
Swagger http://localhost:8080/swagger -
RabbitMQ http://localhost:15672 b2b_user / ****
Jaeger http://localhost:16686 -
Kibana http://localhost:5601 -
Prometheus http://localhost:9090 -
Grafana http://localhost:3000 admin / admin

🔐 API & Kimlik Doğrulama

Test Kullanıcıları

Email Şifre Rol
admin@demo.com Admin123! Admin
user@demo.com Admin123! User

Login Örneği

curl -X POST http://localhost:8080/api/v1/Auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"admin@demo.com","password":"Admin123!"}'

Swagger’da Authorize → Bearer kullanılır.


📂 Dizin Yapısı

k8s/
├── namespaces/
├── config/
├── api/
├── worker/
├── data/
├── messaging/
├── ingress/
├── observability/
├── run.ps1
├── start.bat
└── kustomization.yaml

📊 Observability

Logging – ELK

  • Elasticsearch (3 replica, StatefulSet)
  • Logstash (B2B pipeline)
  • Kibana UI

Metrics – Prometheus & Grafana

  • HPA uyumlu metrikler
  • Hazır dashboard’lar

Tracing – Jaeger

  • OpenTelemetry (OTLP)
  • API → Worker → DB izleme

📈 Scaling & Health Checks

  • HPA: CPU %70 / Memory %80
  • Liveness: /health/live
  • Readiness: /health/ready

🐛 Troubleshooting

Pod Çalışmıyor

kubectl describe pod <pod> -n <ns>
kubectl logs <pod> -n <ns>

401 Unauthorized

  • Token süresi dolmuş olabilir
  • Redis temizlenmiş olabilir
  • JWT secret uyumsuz olabilir

✅ Prerequisites

  • Docker Desktop (Kubernetes enabled)
  • kubectl
  • PowerShell 5.1+

About

Kurumsal B2B sistemleri için tasarlanmış, event‑driven, ölçeklenebilir ve observability‑first bir Kubernetes tabanlı mikroservis platformu.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors