در 2 دهه گذشته، شاهد افزایش نیاز به طراحی سیستم های توزیع شده و در نتیجه آن، جدی تر شدن دغدغه هایی مثل
Scalability،
Availability و ... بوده ایم. البته، این دغدغه ها همیشه مورد توجه معماران و طراحان نرم افزار بوده اند اما، فراگیری بیشتر این نیازها باعث پررنگ شدن این مفاهیم و بعضا باعث تئوریزه شدن سبک ها و مفاهیم جدید طراحی گردید. ظهور و
یا فراگیر شدن
Event-Driven Architecture (به اختصار
EDA) را میتوان حاصل این اتفاق دانست.
EDA یک سبک معماری توزیع و
Asynchronous است که جهت تولید نرم افزارهایی با مشخصه¬های کیفی ذکر شده مورد استفاده قرار میگیرد. این سبک معماری نه تنها مشخصه هایی مانند
Scalability و
Availability را در نظر می گیرد،
بلکه طراح یا معمار را قادر میسازد تا به بسیاری از مسائل دیگر مانند
Elasticity،
Resiliency،
Adaptability،
Composability و ... بهتر رسیدگی کند.
EDA را میتوان به عنوان یک سبک معماری مستقل و هم میتوان به عنوان سبکی ترکیبی با معماری های دیگر (برای مثال
Event-Driven Microservices Architecture) مورد بررسی و استفاده قرار دارد.
در این دوره آموزشی به مفاهیم و مقدمات Event-Driven Architecture در قالب تئوری و عملی میپردازیم و مخاطب را با نگاه Event-Driven و Asynchronous آشنا میکنیم. هدف اصلی این دوره، آشنا کردن مخاطب با EDA و ایجاد تغییر الگوی فکری در مخاطب جهت استفاده از نگاه EDA به بسیاری از مسائل طراحی و معماری است. همانطور که از اسم دوره پیداست،
این دوره، بخش اول و مقدماتی این مبحث بوده و به همین دلیل بیشتر بر روی مفاهیم پایه ای و بنیادین EDA تمرکز میکند و بسیاری از مفاهیم پیشرفته (مانند Streaming، Complex Event Processing، امنیت در معماری EDA، مانیتورینگ و ...) را پوشش نمی دهد و یا نهایتا به معرفی آنها اکتفا میکند. همینطور به علت محدودیت دسترسی حجم زیادی از مخاطبین به سرویس های Cloud (مانند AWS و Azure)، مجموعه ابزارهای ارائه شده توسط
این سرویس ها (مانند Amazon EventBridge، Amazon SNS و ... ) در کلاس بررسی نمی شوند.