چه چیزی مرز میکروسرویس را تعریف می کند؟

مقدمه: تعریف مرزهای مناسب
به عنوان ما تصمیم گرفتیم که چه چیزی به میکروسرویس تبدیل می شود؟ تقسیم یک سیستم بزرگ به قسمت های کوچکتر خوب به نظر می رسد ، اما ایجاد تقسیمات اشتباه می تواند مشکلات بیشتری نسبت به راه حل ها ایجاد کند. چگونه می توان “مرزهای” ایده آل را برای میکروسروس های ما پیدا کرد ، و اطمینان حاصل کرد که آنها منسجم ، مستقل و هماهنگ با تجارت هستند.
چه چیزی مرز میکروسرویس را تعریف می کند؟
یافتن بخش مناسب یک هنر است ، اما اصولی وجود دارد که ما را راهنمایی می کند:
-
پنهان کردن اطلاعات: یک اصل کلاسیک مهندسی نرم افزار. هر میکروسرویس باید جزئیات داخلی خود (مانند پایگاه داده پیچیده یا ساختار منطقی آن) را در پشت یک رابط خوب تعریف شده (API) پنهان کند. خدمات دیگر فقط از طریق این رابط تعامل دارند ، بدون اینکه بدانند به عنوان این سرویس در داخل کار می کند. این اجازه می دهد تا اجرای داخلی بدون شکستن موارد بستگی به سرویس دارد.
-
انسجام (انسجام): ویژگی های موجود در یک میکروسرویس باید به شدت مرتبط باشد و برای یک هدف مشترک با هم کار می کند. یک سرویس باید یک مسئولیت واضح و منحصر به فرد داشته باشد. به عنوان مثال ، اگر فقط با داده ها و عملیات پروفایل برخورد کنید ، یک سرویس “مدیریت مشخصات کاربر” منسجم است. اگر او همچنین مدیریت پست های وبلاگ را شروع کند ، انسجام را از دست می دهد.
- بصری: نمودار نشان می دهد یک دایره (میکروسرویس) با چندین نقطه مرتبط در داخل (انسجام زیاد) در مقابل یک دایره با نقاط قطع شده (انسجام کم).
-
اتصال (اتصال): میزان وابستگی بین میکروسرویس ها را اندازه گیری می کند. ما می خواهیم جفت شدنیعنی اینکه تغییرات در یک سرویس تا حد ممکن تأثیر کمی در دیگران داشته باشد. اگر برای تغییر سرویس A ، همیشه نیاز به تغییر سرویس B دارید ، آنها به شدت همراه هستند.
رقص بین انسجام و اتصال: به طور کلی ، جستجوی انسجام زیاد در یک سرویس به دستیابی به اتصال کم بین خدمات کمک می کند. اگر یک سرویس کاری خوب انجام شود (انسجام بالا) ، تمایل به جزئیات داخلی دیگران (اتصال کم) دارد.
انواع جفت شدن (از چه چیزی اجتناب کنید)
- اتصال جفت دامنه: رایج ترین برای تعامل ، یک سرویس باید بخشی از دامنه دیگری را درک کند. لازم است ، اما باید به حداقل برسد.
- جفت جفت عبور از طریق: سرویس یک شعله B ، که فقط تماس را به C. منتقل می کند. این باعث پیچیدگی غیر ضروری می شود.
- اتصال مشترک (اتصال مشترک): چندین سرویس به یک منبع مشترک مانند پایگاه داده بستگی دارد. این در میکروسرویس بسیار خطرناک است ، زیرا استقلال را نقض می کند (هرکدام باید داده های خود را داشته باشند).
- جفت محتوا: بدترین نوع! سرویس A به طور مستقیم به داده های داخلی سرویس B تغییر یا بستگی دارد (به عنوان مثال ، به جدول پایگاه داده دیگری دسترسی پیدا کنید). این استقلال را از بین می برد و باید از هر قیمتی اجتناب شود. ## طراحی دامنه محور (DDD): یک ابزار قدرتمند
چگونه می توان این مرزهای منسجم و کم اتصال را در عمل پیدا کرد؟ در طراحی دامنه (DDD) مفاهیم ارزشمندی را ارائه می دهد:
-
زبان همه جا (زبان همه جا): برای توصیف دامنه یک واژگان مشترک بین توسعه دهندگان و کارشناسان تجارت ایجاد کنید. صحبت کردن به همان زبان از ابهامات جلوگیری می کند و به مدل سازی دقیق تر نرم افزار کمک می کند.
-
اضافه شده (جمع): گروه بندی از اشیاء دامنه که به عنوان یک واحد واحد رفتار می شوند. در یک تجارت الکترونیکی به “نظم” فکر کنید. این شامل موارد ، آدرس تحویل ، وضعیت و غیره است. “درخواست” کل تضمین می کند که همه این قسمت ها سازگار هستند. به طور کلی ، یک میکروسرویس در حدود یک یا چند سنگدانه مدل می شود.
-
متن محدود (زمینه محدود): این یک مرز روشن را تعریف می کند که در آن یک مدل دامنه خاص (و زبان همه گیر آن) معتبر است. در چارچوب “فروش” ، کلمه “مشتری” می تواند معنایی داشته باشد. در زمینه “پشتیبانی” ، ممکن است دیگری داشته باشد. زمینه محدود اغلب نامزد ایده آل برای تبدیل شدن به میکروسرویس است. این یک مدل را محاصره می کند و از یکپارچگی آن محافظت می کند.
Mappando DDD برای میکروسرویس ها: ایده اصلی تراز کردن مرزهای میکروسرویس با مرزهای مرزی دامنه تجاری است. این به طور طبیعی منجر به خدمات منسجم و اتصال کمتری می شود.
طوفان رویداد: یک تکنیک مشترک (کارگاه) برای کمک به کشف این حوزه ها ، رویدادها و زمینه های محدود ، که هم تکنسین ها و هم متخصصان تجارت را درگیر می کنند ، ذکر شده است.