تفاوت های معماری سرویس گرا با میکروسرویس ها

در رابطه با معماری سرویس گرا و میکروسرویس ها باید گفت هر دو زیر مجموعه از تفکر سرویس گرایی هستند و نقطه مشترکی که دارند بحث Distribution (توزیع پذیری) هست. در معماری سرویس گرایی بخش هایی از نرم افزار تو شِمای سرویس encapsulate (کپسوله) میشوند. حالا این کپسوله سازی رو همونطور که قبلا هم حتما شنیدید به این مساله اشاره داره که سرویس ها بصورت مجزی از هم طراحی می شوند.

سرویس ها هم در معماری به دو صورت طبقه بندی میشن :

  • Service Type (سطح الگوی معماری)
  • Business Type (سطح پیاده سازی)

تو میکروسرویس ها هم Service Type به دو صورت هست :

  • Functional
  • Infrastructure

به این صورت که کلاینت میاد یه درخواستی رو به سمت لایه API ارسال میکنه ، لایه API هم میاد منتقلش میکنه به سطح عملیات سرویس و اینجا هم تقاضای سرویس به سطح زیربنایی سرویس فرستاد میشه ، حالا شکلش رو میکشم بهتر متوجه بشیم :

 

تو SOA هم سرویس ها دو دسته هستند :

  • Business Service مثل XML , WSDL , BPEL ( سطح تجرید اینجا بالا هست)
  • Enterprise Service که مثلا تحت چارچوب دات نت با زبان سی شارپ پیاده سازی صورت بگیره یا …
  • Application Service
  • Infrastructure Service

اما  چطوره ؟

مدل مالکیت میکروسرویس هم بدین شکله :

مدل مالکیت میکروسرویس
مدل مالکیت میکروسرویس

تو SOA هر سرویسی صاحب خودشو داره ولی تو میکروسرویس این یه تیم هستش که درگیر میشه بر خلاف SOA که چند تا تیم میان درگیر چند تا سرویس میشن و این یه نقطه منفی واسه SOA محسوب میشه و همین ویژگی منفی باعث شده میکروسرویس ها بالاتر از SOA باشن. از منظر Granularity (دانه بندی) هم سرویس ها هستش که چون اندازه کوچکتری دارن :

  • سریع تر تولید میشن
  • سریع تر تو پروژه استقرار پیدا میکنن
  • سریع تر هم تست میشن

پس در این صورت میشه مزایای میکروسرویس ها رو اینا بر شمرد :

  • هزینه میاد پایین
  • زمان کمتری واسه توسعه نیاز هست
  • مشتری های رضایت بیشتری دارن
  • Stakeholder ها هم راضی ترن

الآن چلش اصلی SOA همین بحث  Granularity (دانه بندی) هستش که متاسفانه برخی معماران درک درستی ازش ندارن ؛ بعضی سرویس ها خیلی ریز طراحی میشن ، بعضی سرویس ها هم خیلی درشت . اگه یادتون باشه تو پایگاه داده یه قانون داشتیم به نام ACID که طبق اون اگه دانه بندی خیلی ریز باشه ما نمی تونیم سرویس ها رو با هم Synchronize کنیم.

دانه بندی هم رو دو تا فاکتور تاثیر میذاره :

  • Functionality
  • Transaction Management

میکرو سرویس ها :

  • Small Size
  • Small Structure

بحث دیگه ای هم که مطرح هست موضوع Component Share هست که SOA و Micro services با هم تفاوت دارند که سرویس گرایی بیشترین اشتراک رو داره بر خلاف میکروسرویس ها که کمترین اشتراک رو داره و همین شده واسش مزیت ! اما چرا ؟

  • چون که Modules Dependency پایین هستش پس نگهداری آسون تره چون که تکامل سرویس ها مستقل از سرویس های دیگه ست.
  • دوم اینکه فاز استقرار راحت تره ممکن هست ، چون که حجم کدهایی که تغییر میکنه زیاد نیست
  • سوم اینکه ریسک تاثیر تغییر یه سرویس به باقی سرویس ها میادش پایین

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *