معماری رویداد محور (EDA) چیست؟
معماری رویداد محور (EDA) یک الگوی معماری مدرن است که از سرویسهای کوچک و جدا از هم ساخته شده که رویدادها را منتشر، مصرف یا مسیریابی میکنند.
یک رویداد نشاندهنده تغییر در وضعیت یا یک بهروزرسانی است. به عنوان مثال: کالایی که در سبد خرید قرار میگیرد، فایلی که در یک سیستم ذخیرهسازی آپلود میشود، یا سفارشی که آماده ارسال میشود. رویدادها میتوانند هم وضعیت را (مانند نام کالا، قیمت یا مقدار در یک سفارش) حمل کنند و هم صرفاً شامل شناسهها (به عنوان مثال، “سفارش شماره ۸۹۴۲ ارسال شد”) مورد نیاز برای جستجوی اطلاعات مرتبط باشند.
برخلاف مدلهای سنتی مبتنی بر درخواست، EDA، اتصال سست بین سرویسهای تولیدکننده و مصرفکننده را ترویج میکند. این امر باعث میشود که مقیاسپذیری، بهروزرسانی و استقرار مستقل اجزای جداگانه یک سیستم آسانتر باشد.
چرا معماری جدا از هم مهم است؟
بسیاری از سازمانها دریافتهاند که برنامههای کاربردی، پایگاههای داده و فناوریهای یکپارچه، تأثیر منفی بر نوآوری و بهبود تجربه کاربر دارند. برنامههای کاربردی و پایگاههای داده قدیمی، گزینههای شما را برای پذیرش چارچوبهای فناوری مدرن کاهش میدهند و رقابتپذیری و نوآوری شما را محدود میکنند. با این حال، هنگامی که برنامههای کاربردی و فروشگاههای داده آنها را مدرن میکنید، مقیاسپذیری آنها آسانتر و توسعه آنها سریعتر میشود.
یک استراتژی داده جدا از هم، تحمل خطا و انعطافپذیری را بهبود میبخشد، که به تسریع زمان ورود به بازار (TTM) برای ویژگیهای جدید برنامه شما کمک میکند.
برای اطلاعات بیشتر در مورد مزایای مدرنسازی برنامههای کاربردی یکپارچه، به «فعال کردن ماندگاری دادهها در میکروسرویسها» در راهنمای تجویزی AWS مراجعه کنید.
مزایای معماری رویداد محور (EDA) چیست؟
معماری رویداد محور (EDA)، اتصال سست بین اجزای یک سیستم را ترویج میکند که منجر به چابکی بیشتر میشود. میکروسرویسها میتوانند به طور مستقل مقیاس شوند، بدون تأثیر بر سایر سرویسها از کار بیفتند و پیچیدگی گردشهای کاری را کاهش دهند. رویدادها را میتوان به صورت انعطافپذیر مسیریابی، ذخیره و برای اهداف حسابرسی ثبت کرد. جریانهای رویداد مبتنی بر فشار میتوانند در زمان واقعی عمل کنند و هزینههای مرتبط با ایجاد و اجرای کدی که به طور مداوم سیستمها را برای تغییرات بررسی میکند، کاهش دهند.
مقیاس و خرابی مستقل
با جدا کردن سرویسها، اجزای یک معماری رویداد محور میتوانند به طور مستقل مقیاس شوند و از کار بیفتند و انعطافپذیری یک برنامه را افزایش دهند. این امر با افزایش تعداد ادغام بین سرویسها اهمیت بیشتری پیدا میکند. اگر یک سرویس دچار مشکل شود، بقیه میتوانند به کار خود ادامه دهند.
معماری رویداد محور همچنین میتواند طراحی سیستمهای تقریباً بیدرنگ را آسانتر کند و به سازمانها کمک کند از پردازش دستهای فاصله بگیرند. رویدادها هنگام تغییر وضعیت یک برنامه ایجاد میشوند. با افزایش مقیاس رویدادها، لایهای که رویدادها را پردازش میکند نیز میتواند افزایش یابد.
رویدادها معمولاً در سرویسهای پیامرسانی منتشر میشوند که مانند یک بافر الاستیک بین میکروسرویسها عمل میکنند و به مدیریت مقیاسپذیری کمک میکنند. رویدادها همچنین ممکن است به یک سرویس مسیریاب ارسال شوند که میتواند پیامها را بر اساس محتوای رویداد فیلتر و مسیریابی کند. در نتیجه، برنامههای مبتنی بر رویداد میتوانند مقیاسپذیرتر باشند و نسبت به برنامههای کاربردی یکپارچه، افزونگی بیشتری ارائه دهند.
توسعه با چابکی
با معماری رویداد محور و مسیریابهای رویداد، توسعهدهندگان دیگر نیازی به نوشتن کد سفارشی برای بررسی، فیلتر و مسیریابی رویدادها ندارند. یک مسیریاب رویداد به طور خودکار رویدادها را فیلتر و به مصرفکنندگان ارسال میکند. مسیریاب همچنین نیاز به هماهنگی سنگین بین سرویسهای تولیدکننده و مصرفکننده را از بین میبرد که چابکی توسعهدهنده را افزایش میدهد.
معماری رویداد محور مبتنی بر فشار است، به این معنی که همه چیز در صورت تقاضا با ارسال رویدادها به مسیریاب و سیستمهای پاییندستی اتفاق میافتد، بدون نیاز به اطلاع سرویسهای وابسته. به همین دلیل، زیرساخت و منابع میتوانند با حجم رویداد، مقیاس بالا و پایین شوند که هزینههای پردازش حجمهای کاری و اجرای برنامههای مستقر را کاهش میدهد.
ساخت سیستمهای توسعهپذیر
معماری رویداد محور نیز بسیار توسعهپذیر است. تیمهای دیگر میتوانند ویژگیها را گسترش دهند و قابلیتها را بدون تأثیر بر میکروسرویسهای موجود اضافه کنند. با انتشار رویدادها، یک برنامه میتواند با سیستمهای موجود ادغام شود – و برنامههای آینده میتوانند به راحتی به عنوان مصرفکنندگان رویداد ادغام شوند – بدون تغییر راهحل موجود.
تولیدکنندگان رویداد هیچ اطلاعی از مصرفکنندگان رویداد ندارند، بنابراین گسترش سیستم اصطکاک کمتری دارد و ویژگیها یا ادغامهای جدید وابستگیهایی را که سرعت توسعه آینده را کاهش میدهند، اضافه نمیکنند.
کاهش پیچیدگی
میکروسرویسها، توسعهدهندگان و معماران را قادر میسازند تا گردشهای کاری پیچیده را تجزیه کنند. به عنوان مثال، آنها میتوانند یکپارچه تجارت الکترونیک را به «پذیرش سفارش» و «فرآیندهای پرداخت» با خدمات موجودی، انجام و حسابداری جداگانه تقسیم کنند.
حجم کاری که مدیریت و هماهنگی آن در یکپارچه پیچیده است، به مجموعهای از سرویسهای ساده و جدا از هم تبدیل میشود که به طور مستقل مدیریت میشوند و به صورت ناهمزمان از طریق پیامهای رویداد ارتباط برقرار میکنند.
یک رویکرد رویداد محور، امکان مونتاژ و هماهنگ کردن سرویسهایی را که دادهها را با نرخهای مختلف پردازش میکنند، فراهم میکند. در مثال زیر، یک میکروسرویس پذیرش سفارش از طریق یک صف با یک سیستم پردازش پرداخت تعامل دارد.
در این مثال، سرویس پذیرش سفارش میتواند حجم زیادی از سفارشهای ورودی را با ذخیره پیامها در یک صف ذخیره کند.
سرویس پردازش پرداخت، که معمولاً به دلیل پیچیدگی مدیریت پرداختها کندتر است، میتواند جریان ثابتی از پیامها را از صف بگیرد. سرویس پرداخت به دلیل منطق تلاش مجدد و مدیریت خطا، بین حالات مختلف سیستم جابجا میشود. سرویس گردش کار، مراحل پرداخت را بر اساس وضعیت سیستم هماهنگ و مدیریت میکند و در نهایت رویدادهای بیشتری را مورد علاقه سرویسهای موجودی، انجام و حسابداری تولید میکند.
حسابرسی آسان
یک مسیریاب رویداد در یک معماری رویداد محور به عنوان یک مکان متمرکز برای حسابرسی برنامه شما و تعریف سیاستها عمل میکند. این سیاستها میتوانند محدود کنند که چه کسی میتواند در یک مسیریاب منتشر و مشترک شود و کنترل کنند که کدام کاربران و منابع مجوز دسترسی به دادههای شما را دارند. همچنین میتوانید رویدادهای خود را هم در حال انتقال و هم در حالت ذخیره رمزگذاری کنید.
کاهش هزینهها
EDAها مبتنی بر فشار هستند، بنابراین همه چیز در صورت تقاضا با ظاهر شدن رویداد در مسیریاب اتفاق میافتد. به این ترتیب، شما برای بررسی مداوم یک رویداد هزینه نمیپردازید. این بدان معناست که مصرف پهنای باند شبکه کمتر، استفاده CPU کمتر، ظرفیت ناوگان بیکار کمتر و تعداد کمتری از دستدهیهای SSL/TLS است.
معماری رویداد محور (EDA) چگونه کار میکند؟
در زیر نمونهای از یک معماری رویداد محور (EDA) برای یک سایت تجارت الکترونیک آورده شده است: