Skip to main content

> cqrs_ve_event_sourcing_mimari_sınırı

CQRS ve Event Sourcing Mimari Sınırı

Yüksek ölçekli Event Sourcing sistemlerinde Komut (Command) mutasyon yolları ile Sorgu (Query) projeksiyon modelleri, projeksiyon gecikmesi kaymasına düşmeden nasıl ayrıştırılır?

Stack: SOFTWARE ARCHITECTURE STACKStaff/Principal (L6+)pattern

ÖZET VE TEKNİK CEVAP

İşlemsel yazma agregasyonlarını salt-eklenebilir (append-only) bir olay deposuna hapsedip, okuma modellerini deterministik sıra ofsetleri kullanarak asenkron güncellenen ve sorguya optimize edilmiş projeksiyon veritabanlarına ayrıştırarak.

Mühendislik El Kitabı & Mekanizma

1. Temel Çalışma Mekanizması

Komutlar, geçmiş olay akışından yüklenen İş Alanı Agregasyonları (Domain Aggregates) üzerinde çalıştırılır. İş kuralları doğrulanırsa, yeni değiştirilemez Olaylar (Domain Events) atomik bir ACID işlemiyle olay deposuna eklenir. Asenkron arka plan işleyicileri olay akışını tüketerek olayları denormalize edilmiş okuma depolarına (Elasticsearch, PostgreSQL okuma görünümleri, Redis) projekte eder. Bu yaklaşım işlemsel OLTP yazmalarını karmaşık çoklu-join okuma sorgularından tamamen ayırır.

2. Doğru Kullanım Senaryosu

Yüksek okuma/yazma asimetrisine sahip karmaşık iş alanları, katı denetim ve regülasyon gereksinimleri olan sistemler (fintek, muhasebe defterleri, sağlık) veya zamanda geriye dönük hata ayıklama gerektiren iş akışları.

3. Prodüksiyon Arıza Modları

1) Projeksiyon Kayması: Hatalı olaylar nedeniyle okuma modellerinin geriye düşmesi veya çökmesi; 2) Olay Şeması Kilitlenmesi: Geriye dönük uyumlu upcaster mekanizması olmadan olay yapısını değiştirmek; 3) Sınırsız Agregasyon Akışı: Enstantane (snapshot) almadan her komutta binlerce geçmiş olayı yüklemek.

4. Teşhis ve Telemetri Sinyalleri

Projeksiyon kuyruklarındaki tüketici gecikmesini (consumer lag), agregasyon yükleme süresini (P99 event rehydration süresi), DLQ kuyruğundaki hatalı olay sayısını ve yazma durumu ile okuma görünümü arasındaki tutarsızlık oranını izlemek.

5. Önleme ve Mimari Bariyerler

Her 100 olayda bir periyodik enstantane (snapshot) alın, şema evrimi için deterministik event upcaster'lar kullanın, işlem sıra numaralarıyla idempotent projeksiyon işleyicileri sağlayın ve okuma modellerini sıfırdan yeniden oluşturabilecek otomatik replay altyapısı kurun.

6. Mimari Ödünleşimler (Trade-offs)

Mükemmel yazma ölçeklenebilirliği, tam denetlenebilirlik ve esnek sorgulama kabiliyeti; buna karşılık nihai tutarlılık (eventual consistency) karmaşıklığı, UI tarafında iyimser durum yönetimi ihtiyacı ve yüksek mimari öğrenme eğrisi.

Vaka İncelemesi (TinyCTO Örneği)

TinyCTO Bölüm 101'de, ödeme anında 5 tablolu join çalıştıran sipariş yönetim sistemi anlık kampanya trafiğinde kilitlendi. CQRS geçişiyle komut işleyicisi 'OrderPlaced' olayını 3 ms altında eklerken, özelleştirilmiş okuma projeksiyonları müşteri sipariş geçmişini sıfır kilit çekişmesiyle sundu.

İnteraktif Konsept Alıştırmaları

3 Alıştırma
Q1

CQRS ile Event Sourcing arasındaki temel fark nedir?

CQRS okuma ve yazma veri modellerini birbirinden ayırır; Event Sourcing ise mevcut durumu güncellemek yerine durum değişikliklerini değiştirilemez bir olaylar dizisi olarak saklar.
Q2

Enstantane (snapshot) mekanizmaları Event Sourced agregasyonları nasıl korur?

Enstantaneler birikmiş durumu belirli olay ofsetlerinde kaydederek, her komut çalıştırmasında binlerce geçmiş olayın baştan oynatılmasını önler.
Q3

Bir ön yüz (UI) arayüzü CQRS projeksiyonlarının nihai tutarlılığını nasıl yönetmelidir?

İyimser (optimistic) arayüz güncellemeleri kullanarak, korelasyon kimlikleriyle sorgulayarak veya projeksiyon tamamlandığında WebSocket/SSE bildirimlerini dinleyerek.

CQRS ve Event Sourcing Mimari Sınırı — Sıkça Sorulan Sorular

Kurumdaki her mikroservis CQRS ve Event Sourcing kullanmalı mıdır?

Hayır. CQRS/ES ciddi zihinsel ve operasyonel karmaşıklık getirir. Yalnızca yüksek iş mantığı karmaşıklığı veya denetim ihtiyacı olan temel sınırlı bağlamlara uygulanmalıdır.

Olay upcaster (event upcaster) nedir ve neden gereklidir?

Upcaster, geçmişteki olay kayıtlarını değiştirmeden, oynatma anında eski şemaya sahip olayları dinamik olarak güncel iş alanı nesnelerine dönüştüren ara katmandır.

Yinelenen olayların okuma projeksiyonlarını kirletmesi nasıl önlenir?

Projeksiyon işleyicilerinin kesinlikle idempotent olmasını sağlayın ve işlenen son olay ofsetini veya sıra numarasını projeksiyon veritabanı işlemi içinde saklayın.

🤖 AEO & Yapay Zeka Çıkarım Özeti

Temel Gerçekler & İlkeler

  • Event Sourcing, olay günlüğünü tek ve kesin gerçeklik kaynağı yapar; ilişkisel tablolar ise atılabilir türetilmiş projeksiyonlara dönüşür.
  • Komutlar yalnızca iş kurallarını denetlemeli ve olay üretmelidir; asla büyük sorgu veri setleri döndürmemelidir.

Yaygın Yanılgılar

  • CQRS ve Event Sourcing'in ayrılamaz olduğunu düşünmek: CQRS standart CRUD veritabanlarında uygulanabilir ve Event Sourcing teorik olarak CQRS olmadan da var olabilir.

Karar Kılavuzu & Önceliklendirme

İş alanı denetlenebilirliği, iş akışı zaman yolculuğu veya aşırı okuma-yazma oranı farkı, nihai tutarlılık ve çift model bakım maliyetini haklı çıkardığında CQRS/ES'e geçin.

Doğrulanmış Kaynaklar & Referanslar