ARCHITECTURE_LAB · v3.2

Uzun ömürlü sistemler için mimari prensipler.

Rebelsoft mimarileri; modaya göre değil, üretimde yıllarca çalışacak sistemlerin güvenlik, izlenebilirlik, performans ve sürdürülebilirlik ihtiyaçlarına göre tasarlanır.

REFERENCE_ARCHITECTURE

Event-driven mikroservis referansı

REF_ARCH_001 · EVENT-DRIVEN MICROSERVICESv3.2
REF_ARCH_001 · EVENT-DRIVEN MICROSERVICESClientsAPI GatewayAuth / OAuthOrders SvcCatalog SvcPayments SvcEvent Bus (Kafka)PostgreSQLRedisClickHouse

Bu yapı; sipariş, ödeme, stok, katalog ve raporlama gibi birbirinden bağımsız büyüyen domain'lerde kullanılır. Küçük ve tek modüllü uygulamalarda gereksiz karmaşıklık yaratabileceği için tercih edilmez.

EVENT_FLOW

Async pipeline anatomisi

Asenkron sistemlerde mesele yalnızca kuyruğa mesaj atmak değildir. Hata tekrarı, aynı işlemin iki kez çalışmaması, başarısız mesajların ayrılması ve manuel tekrar işleme süreçleri birlikte tasarlanmalıdır.

EVENT_FLOW · OUTBOX_PATTERNAT_LEAST_ONCE
Producer
Orders Svc
Event Bus
Kafka / RabbitMQ
Worker
Idempotent
Sink
DB · Cache · DWH
THROUGHPUT
10k+ msg/s
P99 LATENCY
< 50ms
DURABILITY
3x replicated
RETRY_POLICY

Retry policy

Exponential backoff + jitter, üst limitli yeniden denemeler.

DLQ

Dead-letter queue

Başarısız mesajlar nedene göre etiketlenir, manuel replay her zaman hazır.

IDEMPOTENCY

Idempotency key

Her mesaja deterministik kimlik; aynı iş iki kez çalışmaz.

MONITORING

Monitoring

Kuyruk derinliği, gecikme, success/failure oranı sürekli izlenir.

ALERTING

Alerting

Threshold değil; SLO + error budget bazlı burn-rate alarmları.

MANUAL_REPLAY

Manual replay

Operasyon DLQ'dan filtreyle replay edebilir; ürünün parçasıdır.

ARCHITECTURE_PATTERNS

Üzerinde uzmanlaştığımız desenler

AR_01PATTERN

Event-Driven Microservices

Idempotent worker'lar, outbox pattern ve message broker üzerine kurulu, replay edilebilir mimari.

WHEN_TO_USE

  • Yüksek hacimli sipariş/ödeme akışları
  • Cross-service tutarlılık
  • Audit & replay zorunluluğu
KafkaRabbitMQOutboxIdempotency keys
AR_02PATTERN

Distributed Systems

Consensus, sharding ve multi-region failover ile yatay ölçeklenen sistemler.

WHEN_TO_USE

  • Multi-region varlık
  • Yüksek availability gereksinimi
  • Veri tutarlılığı kritik
RaftetcdCockroachDBVitess
AR_03PATTERN

API Orchestration & Federation

Kontrat-first gateway, GraphQL federation, gRPC service mesh — disiplinli API ekosistemi.

WHEN_TO_USE

  • Çok ekipli geliştirme
  • Çoklu istemci (web/mobile/B2B)
  • Sıkı versiyonlama
KongApollo FederationgRPCOpenAPI
AR_04PATTERN

Observability First

Metrics, logs ve traces day-one. SLO/SLI ile error budget — production'ı tahmin edilebilir kılar.

WHEN_TO_USE

  • Production'a giden her sistem
  • On-call disiplini
  • Performans bütçeleri
OpenTelemetryPrometheusLokiGrafana

ENGINEERING_PRINCIPLES

Pazarlık edilmeyen mühendislik prensipleri

AP_01

Strangler-fig, big-bang değil

Legacy yapıları parça parça modernize ederiz. Eski sistem çalışırken yeni mimari yanında yetişir; cutover kontrollüdür, geri dönüş her zaman mümkündür.

AP_02

Event-driven, request-response değil

Yüksek hacimli sistemlerde senkron RPC kırılgandır. Idempotent worker'lar, message broker'lar ve outbox pattern ile dayanıklı, geri alınabilir akışlar tasarlarız.

AP_03

Observability, opsiyon değil zorunluluk

Metrics, logs ve traces day-one'da gelir. SLO/SLI ve error budget tanımlamadan production'a çıkmayız.

AP_04

LTS-first, hype-driven değil

5 yıl çalışacak sistemler kurarken bu yıl trend olan teknolojiyi değil, yıllarca desteklenecek olanı seçeriz.

ANTI_PATTERNS

Kaçındığımız mimari hatalar

İyi mimarlık sadece ne yaptığını değil, ne yapmadığını da anlatır. Bunlar bizim 'pazarlık etmiyoruz' listemizdir.

×

Her problemi mikroservis yapmak

Küçük domain'lerde mikroservis, operasyon yükünü çözdüğünden fazla artırır.

×

Loglamayı sonradan eklemek

Observability mimariye gömülmezse her incident tahmin oyunudur.

×

API kontratı olmadan geliştirmek

Üretici ve tüketici kontrat olmadan paralel çalışamaz, entegrasyon kaybedilir.

×

Production'a manuel publish

Tekrarlanabilir ve geri alınabilir olmayan deploy, bir gün incident'a dönüşür.

×

Cache'i veri tutarlılığı yerine kullanmak

Cache performans için vardır, doğruluk için değil. Karıştığında veri kaybolur.

×

Yetkilendirmeyi sadece frontend'e bırakmak

Yetki kontrolü backend'de merkezîdir; frontend sadece görsel yardımcıdır.

TECHNOLOGY_STACK

LTS-first, hype-driven değil

BACKEND
.NET LTSNode.js LTSASP.NET CoreNestJS
.NET LTS ve Node.js LTS — uzun ömürlü, kurumsal destekli runtime'lar.
FRONTEND
ReactTypeScriptNext.jsTanStack
Karmaşık admin panelleri ve operasyon ekranları için olgun React stack'i.
DATABASE
PostgreSQLSQL ServerRedisMongoDB
İşlemsel veri için PostgreSQL/SQL Server, cache için Redis.
MESSAGING
RabbitMQKafkaRedis StreamsMQTT
At-least-once teslimat ve dayanıklı akışlar için broker'lar.
OBSERVABILITY
OpenTelemetryGrafanaPrometheusLoki
Day-one metrics, logs ve traces — SLO bilinçli operasyon.
DEPLOYMENT
DockerKubernetesGitHub ActionsArgoCD
Container tabanlı dağıtım, GitOps disiplini ve canary rollout.

Mimari Değerlendirme Talep Et

Mevcut sisteminizin ölçeklenebilirlik, güvenlik, entegrasyon ve bakım risklerini birlikte inceleyelim.

Teknik Keşif Görüşmesi Planla