معماری مایکروسرویس برای تحقق دو هدف کلی به کار میره :
1. نابستگی متقابل (decoupling) ، به این معنی که پیادهسازی و یا تغییر یک بخش ، وابستگی کمتری به پیادهسازی و منطق بخش های دیگه داشته باشه .
2. مقیاس پذیری افقی(horizontal scaling) ، به عنوان مثال اگر تو اسنپ سرویس قیمتگذاری درخواستش بالا رفت ، بتونیم با تخصیص منابع بیشتر برای همون سرویس ، ساعات اوج رو کنترل کنیم .
در معماری مایکروسرویس رویداد گرایی خیلی بکار میره ، اما یکی از مشکلاتی که بی توجهی بهش میتونه باعث وابستگی متقابل(coupling) در محیط به ظاهر مایکروسرویس بشه ، این هست که معلوم نیست هر رویداد به چه زنجیره از رویداد ها(event chains) منجر میشه و گاهی یک رویداد ، منجر به مجموعهای از رویداد های بهکلی مجزای دیگه میشه ، پس اگر چکاندن رویداد رو به عنوان یک کنش در نظر بگیریم، باید واکنش بقیه رو هم بدونیم تا منجر به فاجعه نشه ! و این همون چیزیه که از شرش به مایکروسرویس پناه بردیم !
از طرفی طراحی درست توالی رویداد ها و فرآیند ها ، در محیط های رویداد گرا اهمیت بسیار بیشتری داره .
این مفهوم رو بیایید با یه مثال ساده نگاه کنیم . فرض کنید اسنپفود، برای فرآیند تایید و پرداخت سفارش ، دو راهکار جایگزین داشته باشه ، دقت کنید هردو فرآیند دقیقاً شامل مراحل یکسانی هستند اما تقدم و تاخرشون فرق میکنه ، میبینید که با یه تغییر ساده ، چه مسئله مهمی میتونه حل بشه (و معادلاً مسئله مهم دیگه ای به وجود بیاد !)
[1]الهام گرفته از
https://www.oreilly.com/library/view/practical-process-automation/9781492061441/