⚡ÖZET VE TEKNİK CEVAP
Event Sourcing mimarisinde bir varlığın (Banka Hesabı, Sipariş) durumu asla veritabanında değiştirilebilir tek bir satır olarak tutulmaz; bunun yerine değişmez olayların (HesapAcildi, ParaYatirildi) eklemeli (append-only) bir günlüğü olarak saklanır. Varlığın o anki durumu, 0. versiyondan N. versiyona kadar tüm geçmiş olayların sırayla bellekte baştan oynatılmasıyla (replay) hesaplanır. Bu durum mükemmel bir denetim izi ve geçmişe dönme gücü verse de, 20.000 işlem görmüş bir hesapta her sorguda 20.000 olayın baştan oynatılması sistemi felç eder. Yüksek performanslı Event Sourcing mimarileri bunu Periyodik Snapshot Alma (her 100 olayda bir durumun anlık görüntüsünü kaydedip sadece son snapshot'tan sonrasını oynatmak) ve Event Upcasting (eski V1 olaylarını veritabanındaki değişmez kayıtlara dokunmadan bellekte anlık olarak V3 şemasına çeviren dönüştürücüler) ile çözer.
Mühendislik El Kitabı & Mekanizma
6 Boyutlu Mimari Analiz⚙️1. Temel Çalışma Mekanizması
Mekanizma🎯2. Doğru Kullanım Senaryosu
Kapsam⚠️3. Prodüksiyon Arıza Modları
Kritik Risk📡4. Teşhis ve Telemetri Sinyalleri
Metrikler🛡️5. Önleme ve Mimari Bariyerler
Bariyerler⚖️6. Mimari Ödünleşimler (Trade-offs)
ÖdünleşimVaka İncelemesi (TinyCTO Saha Örneği)
Bir dijital cüzdan platformu bakiye yönetimini Event Sourcing ile yapıyordu. 3 yılda büyük mağaza hesaplarında 120.000 olay birikti. Bir mağaza uygulamayı açtığında bakiyesini hesaplamak 4,8 saniye sürdüğü için API zaman aşımına uğruyordu. Ekip her 250 işlemde bir otomatik snapshot alan ve Upcaster boru hattı olan bir mimari kurdu. Varlık yükleme süresi 4.800 ms'den 6 ms'ye indi ve mağaza girişleri 50 ms altında kusursuz çalıştı.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaEvent Sourcing mimarisinde 'Event Upcaster' nedir?
Event Sourcing'de uzun ömürlü varlıklar için Snapshot alma neden hayati önem taşır?
Event Sourcing: Replay Performansı, Snapshot Alma ve Şema Evrimi (Schema Evolution) — Sıkça Sorulan Sorular
Event Sourcing neden neredeyse her zaman CQRS ile birlikte kullanılır?
Çünkü salt eklemeli bir olay günlüğünden karmaşık sorgulama, arama ve filtreleme yapılamaz; CQRS olayları optimize edilmiş ilişkisel veya Elasticsearch okuma tablolarına yansıtır.
Event Sourcing'de iki kullanıcı aynı anda yazma yaptığında varlık çakışması nasıl yönetilir?
İyimser Eşzamanlılık Kontrolü ile: Yazma işlemi `expected_version == current_version` kontrolü yapar; geride kalan ikinci işlem hata alır ve en güncel durumu yükleyip tekrar dener.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸
Event Sourcing stores immutable domain event streams instead of mutable state rows.
- ▸
Replaying unbounded event histories causes severe CPU and memory latency stalls.
- ▸
Snapshotting saves point-in-time states to bound replay iterations to le 100.
- ▸
Event Upcasters transform historical event schemas in-memory without modifying storage.
Yaygın Yanılgılar
- ✗
Yanılgı: Event Sourcing replaces relational databases (Gerçek: Event Sourcing is a domain modeling pattern, usually paired with relational/document event stores).
- ✗
Yanılgı: You should run SQL migration scripts to update past event payloads (Gerçek: Historical events are immutable; use Upcasters instead).
Karar Kılavuzu & Önceliklendirme
Configure automated background snapshotting for all entities expected to exceed 100 events. Use CQRS read projections to serve high-volume search and dashboard queries.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL_DOCUMENTATION]Event Sourcing Architecture and Patterns— Martin Fowler (martinfowler.com)
