CRUD için Olay Kaynağı
Temel bir CRUD uygulaması için "doğru yol bu" diye olay kaynağı (event sourcing) uyguladık. Özellikler yerine altyapıya 6 ay harcadık.
Uygulama gereksinimleri:
- Kullanıcı yönetimi CRUD
- Günlük 500 kullanıcı
- Denetim gereksinimi yok
- Zaman yolculuğu gerekmiyor
- Standart iş mantığı
Ne inşa ettik:
- Olay deposu (Kafka + PostgreSQL)
- Olay yeniden oynatma sistemi
- Projeksiyonlar (okuma modelleri)
- Anlık görüntüleme (snapshotting)
- Sürümlenmiş olaylar
- Saga orkestrasyonu
Harcanan zaman:
- Altyapı: 4 ay
- Olay şeması tasarımı: 1 ay
- Nihai tutarlılık (eventual consistency) hatalarını ayıklama: 1 ay
- Gerçek iş özellikleri: 2 hafta
İhtiyacımız olan:
class User:
def update(self, data):
self.name = data.name
self.email = data.email
db.save(self)
Olay kaynağının mantıklı olduğu durumlar:
- Yasal denetim izi gereksinimleri
- Finansal işlemler
- Zaman yolculuğu ile hata ayıklama
- Birçok durum geçişi olan karmaşık alan
Ders: Olay kaynağı güçlüdür. Aynı zamanda pahalıdır. Karmaşıklığı gereksinimlerle eşleştirin.