به بیان ساده Event sourcing راهکاری برای ذخیرهسازی حالت یک شی براساس رخدادهایی است که از زمان ایجاد برای آن اتفاق افتاده است. دراینصورت قادر خواهیم بود، حالت هر شیء در هر لحظه از زمان را با بازسازی این رخدادها ایجاد کنیم. بهطورکلی میتوان گفت که Event sourcingیک الگوی معماری قدرتمند برای مدیریت حالات اپلیکیشنهای پیچیدهای است که ممکن است نیاز به بازسازی، اجرای مجدد یا دیباگ کردن داشته باشند. و همچنین یک راهحل جایگزین برای دادههای ماندگار است، برخلافState _Oriented Persistence که تنها آخرین نسخه از حالت موجود را نگه میداردEvent sourcing هر جهش حالت را بهعنوان یک رکورد جداگانه تحت عنوان رویداد ذخیره میکند.
مزایای Event sourcing :
1- تغییر در سازوکار ذخیرهسازی، تغییری در برنامه ایجاد نمیکند.
2- بهخاطر سادگی ذخیرهسازی رخدادها، کارایی بهبود مییابد.
3- عدم نیاز به لایهObject Relational Mapper (ORM) برای ذخیرهسازی
4- نگهداری تاریخچه رخدادهایی که در سیستم اتفاق افتاده است.
5- سادگی تجمیع با سایر زیرسیستمها
6- سیر در گذشته و پیشبینی آینده
7- خطا یابی سیستم که در حال کار است با تکرار رخدادهایی که منجر به خطا شده اند.
باید توجه داشت اگرچه Event sourcingیک الگوی خاص و نا آشناست و برای یادگیری ،پیادهسازی و درک مفهومش باید تلاش زیادی کرد ،ولی استفاده از Event sourcing کیفیت و دقت پروژه را بسیار ارتقا داده و ضریب خطا و از دست دادن دیتا را به حداقل میرساند.
منابع :
https://microservices.io/patterns/data/event-sourcing.html
https://virgool.io/@arashrahimi46/event-sourcing-%DA%86%DB%8C%D8%B3%D8%AA-cnnc6vwjqj2o