Outbox Pattern ve CDC ile Event-Driven Tutarlilik
Event-driven sistemlerde sik gorulen hata senaryosu su sekildedir: servis is verisini veritabanina yazar ama ilgili eventi broker'a yayinlayamaz. Bu durumda servis durumu ile downstream sistemler ayrisir.
Transactional outbox bu boslugu kapatir.
Desenin ozeti
Is verisi ve outbox kaydi ayni transaction icinde yazilir. Event yayinlama ise transaction disinda asenkron bir akisla yapilir.
CDC neden onemli?
CDC (ornegin Debezium) ile outbox tablosunu guvenilir bicimde stream edebilir, custom polling karmasini azaltabilirsiniz.
Teslimat semantigi
Outbox + CDC yaklasimi cogu durumda at-least-once teslimat saglar. Bu nedenle consumer tarafinda idempotent isleme zorunludur.
Operasyonel pratikler
- Event payload formatini versiyonlayin.
- Event ID, aggregate ID ve zaman bilgisi tasiyin.
- DB commit ile publish arasindaki lag'i olcun.
- Islenmis outbox kayitlari icin archive/cleanup politikasi tanimlayin.
Sonuc
Outbox pattern teorik "kusursuz teslimat" vaadinden cok, production'da olculebilir bir tutarlilik seviyesi saglar. Gercek dunya hatalarinda en uygulanabilir yollardan biridir.