-
-
Notifications
You must be signed in to change notification settings - Fork 64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Domain Event'lerinin saklanmasi #11
Comments
Selam @yarimadam , Katkın için teşekkür ederim. Mesajını bir kaç kere okudum bir noktayı kaçırmış olmamak için, okurken "ES eventleri" ifaden dikkatimi çekti. Bu daha önce çok denk gelmediğim bir ifade şekli olduğundan belkide. Event sourcing bir pratik yani bir event i tanımlamak için kullanılması çok doğru gelmiyor bana. "ES Eventi" konseptini bilmiyor olabilrim bununla ilgili paylaşabileceğin bir link varsa okuyabilmem için çok sevinirim. Ek olarak, Domain enetleri aslında olayları "yaymak" için değil de daha çok aynı bounded context içerisinde varlık gösterir. "Yaymak" ile kastını anlıyorum sanırım ama orada Integration Event konsepti devreye giriyor. |
Selamlar, biraz hizli yazdigim icin dogru terimleri kullanmamis olabilirim afedersin. Aslinda biraz daha vaktim oldugunda daha ozenli yazmaliydim. Ancak bu tarz Turkce kaynaklar pek olmadigi icin ve hemen issue acabilecegimi gorunce heyecanlandim ve yaziverdim. :) ES eventlerinden kastim Aggregate Root'a (AR) etki eden eventler. Yani apply olan eventler. Bu eventler AR'nin state'ine etki ederler. Aslinda kisacasi ilgili AR'nin event stream'ine kaydedilen eventler. Ornegin Bu Eger bir Integration event aslinda domain event'in kendisi. Bazi projelerde cift event bus kullanildigindan oturu ayrica integration event diye betimlendigini dusunuyorum. Ornegin domain eventini MQ'ya gonderen ve ayni zamanda da local bir observer'e teslim eden iki farkli bus kullanilabiliyor. Bu durumda MQ'ya giden event integration event olarak algilanabilir ve isimlendirilebilir. Tabii neden local bir observer kullanip eventlerin senkronize bir sekilde consume edilmesi amaclanir? Orasi da sanirim gereksinim ve use-case'ler ile alakali. Ayni transaction icerisinde tutulmasi gerekiyorsa bu da bir use case olabilir. Bana gore cok gecerli sebepler yoksa integration event diye ayri bir konsepti projeye katmak, hic bir deger katmadan kompleksligi arttiracak bir aksiyon olur. Ez cumle soyle sonuclandirabilirim: Event sourced bir aggregate root'a apply edilecek eventler = aggregate changed tipi eventler Yukarida verdigim Dolayisi ile: Konuyu esas baglamina dondurecek olursam da yukarida acikladigim sebeplerden oturu domain eventleri persist edilen eventler olmamalidirlar. |
DDD ve Mikroservis Mimari bolumunde kucuk bir kavram hatasina denk geldim.
Baslik: Domain Event’lerin Persistent(kalıcı) olarak saklanması
Burada domain eventlerinin event sourcing yontemi ile saklanmasindan bahsediliyor.
Domain event'leri business modelinin bir parcasidir. Bounded context icerisinde gerceklesen business olaylarini hem betimlemek hemde yaymak icin domain eventlerini kullanir.
ES eventleri esasen ilgili Aggregate'in mevcut hali ile alakalidir. Yerel event'lar olarakta gecer.
Dolayisi ile aslinda persist edilen domain eventlerinden ziyade ES event'leri olmalidir.
Domain eventleri ile ES eventlerinin bir noktada kesisir gibi olmasi aradaki ayrimin bazen mantiksal olarak fark edilememesine yol acabiliyor.
Ornegin bir Product product Aggregate'i olustugunda hem domain eventi hem ES eventi akla gelecektir.
Domain eventi muhattaplarin ihtiyaci olan minimum bilgiyi icermesi gerekirken ES eventi baslangic product halinin tamamini payload olarak icermek mecburiyetindedir.
Kucuk bit not olarak sunuda belirmek isterim: ES eventleri de bir event bus'a gonderilebilir. Bazi uygulamalar projeksiyonlari event bus araciligi ile tetikliyorlar.
Event sourcing'i bu kitapta aciklamak cok dogru olmadigindan belki ilgili paragraf tamamen kaldirilabilir.
The text was updated successfully, but these errors were encountered: