سه اصل اساسی در معماری میکروسرویس

۱۹ مهر ۱۳۹۸

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

هدف معماری میکروسرویس کمک به تیم های مهندسی برای ارسال سریعتر، ایمن‌تر و با کیفیت بالاتر محصولات است. خدمات جدا شده به تیم‌ها اجازه می دهد تا به سرعت و با کمترین تأثیر بر مابقی اجزای سیستم، تکرار شوند. اول از همه، بیایید لحظه ای فکر کنیم که معماری میکروسرویس واقعا چیست؟ میکروسرویس یکی از دسته های گرایش مهندسی نرم افزار محسوب می‌شود که در کنار پر بار بودن، بسیار گیج کننده است. در معماری میکروسرویس، چندین سرویس کاملا مشترک با هم کار می کنند. هر سرویس بر روی یک هدف واحد متمرکز است و انسجام بالایی از رفتارها و داده های مرتبط دارد. این تعریف شامل سه اصل اساسی طراحی میکروسرویس است.

اصول اساسی در طراحی معماری میکروسرویس

اصول طراحی میکروسرویس کدامند؟

  • هدف واحد

هر سرویس باید روی یک هدف واحد متمرکز باشد و آن را به خوبی انجام دهد.

  • اتصال آزاد

خدمات، اطلاعات اندکی درباره یکدیگر دارند. تغییر در یک سرویس نباید نیاز به تغییر سایر سرویس‌ها داشته باشد. ارتباط بین خدمات فقط باید از طریق رابط های خدمات عمومی رخ دهد.

  • انسجام بالا

هر سرویس کلیه رفتارها و داده های مرتبط با هم را ارسال می کند. اگر ما نیاز به ایجاد یک ویژگی جدید داریم، تمام تغییرات باید فقط در یک سرویس واحد، بومی سازی شوند.
وقتی ما از خدمات میکروسرویس استفاده می کنیم، باید در رعایت هر سه اصل طراحی نظم داشته باشیم. این تنها راه برای دستیابی به پتانسیل کامل معماری خدمات کوچک است. از دست دادن هر یک از آنها، باعث می‌شود تا به سمت یک الگوی نامناسب پیش برویم. بدون یک هدف واحد، هر سرویس هنوز هم می تواند به صورت مجزا کارهای زیادی انجام دهد، اما به عنوان چندین سرویس یکپارچه و در حال رشد کار نمی‌کنند. در این صورت، در حالی که هزینه عملیاتی را به صورت کامل پرداخت می کنیم، مزایای کاملی از معماری میکروسرویس دریافت نخواهیم کرد.
بدون اتصال آزاد، تغییرات در یک سرویس، بر روی سایر خدمات تأثیر می گذارد. بنابراین ما نمی توانیم سریع و با خیال راحت تغییرات را اعمال کنیم. این امر به معنای از دست دادن اصلی ترین مزیت معماری خدمات کوچک است. مهمتر از همه، مسائل ناشی از نداشتن اتصال آزاد می تواند فاجعه بار باشد، که به عنوان مثال ناسازگاری یا حتی از بین رفتن داده ها، از جمله عواقب آن است. بدون انسجام بالا، ما با یک سیستم یکپارچه توزیع شده رو به رو هستیم. مجموعه ای از سرویس های آشفته که باید برای ایجاد یک ویژگی واحد، در همان زمان تغییر کرده و مستقر شوند. یک سیستم یکپارچه توزیع شده، به دلیل پیچیدگی و هزینه هماهنگی خدمات متعدد در بین چندین تیم، بسیار ضعیف تر از یک سیستم یکپارچه متمرکز عمل می‌کند.
خدمات میکروسرویس به معنای سرویسی که تعداد کمی خط کد داشته باشد یا کارهای میکرو ایفا کند، نیست. این تصور غلط ناشی از نام میکروسرویس است. هدف از معماری میکروسرویس این نیست که تا حد امکان خدمات کوچک داشته باشید. خدمات تا زمانی که سه اصل فوق را رعایت کنند، می توانند پیچیده و اساسی باشند.

ذخیره سازی یکپارچه در معماری میکروسرویس، مضر تلقی می‌شود.

مضرات ذخیره سازی یکپارچه در معماری میکروسرویس

بخش بزرگی از خدمات میکروسرویس، مدل سازی ذخیره مداوم اطلاعات آنها (به عنوان مثال پایگاه داده) است. به نظر می رسد اشتراک ذخیره داده های مداوم در سرویس ها، ساده ترین راه برای ادغام خدمات کوچک با یکدیگر است، اما در واقع بسیار مضر است و ما باید به هر قیمتی از آن جلوگیری کنیم.
اول از همه، ذخیره سازی مداوم داده‌ها در مورد جزئیات اجرا است. به اشتراک گذاشتن ذخیره اطلاعات در سرویس ها، جزئیات اجرای یک سرویس را در کل سیستم به معرض نمایش می گذارد. اگر آن سرویس، فرمت داده‌ها را تغییر دهد، یا لایه های ذخیره کننده اضافه کند و یا به انواع مختلفی از پایگاه داده‌ها تغییر یابد، بسیاری از سرویس های دیگر نیز باید بر همین اساس تغییر کنند. این امر، نقض اصل اتصال آزاد است. ثانیا، ذخیره اطلاعات مداوم، جزو رفتارهای خدماتی نیست، بلکه به معنای نحوه اصلاح، تفسیر و استفاده از داده ها است. اگر ما ذخیره سازی داده‌ها را در بین سرویس‌ها به اشتراک بگذاریم، این بدان معناست که سایر سرویس‌ها نیز باید رفتارهای سرویس را تکرار کنند. این امر، اصل انسجام بالا را نقض می کند. در این حالت رفتارهای موجود در یک دامنه معین، به خدمات متعدد منتقل می شود. اگر یک رفتار را اصلاح کنیم، باید همه این خدمات را با هم اصلاح کنیم. در معماری میکروسرویس، فقط یک سرویس باید مسئول نوع خاصی از داده‌ها باشد. کلیه سرویس های دیگر باید داده‌ها را از طریق API سرویس مربوطه درخواست کنند، یا یک نسخه غیر داده ای ارسال شده را بخوانند.

2
نویسنده مطلب سمانه رحیمی

2 دیدگاه

  • reza
    ۳۰ مهر ۱۳۹۸

    واقعا مطلب کامل و مفیدی بود. انشالله مطالب بیشتر و مفیدتر برامون بنویسید.

    • علی فلاحتی
      ۳۰ مهر ۱۳۹۸

      حتما دوست عزیز

لینک های مفید