"> معماری میکروسرویس در ASP.NET Core | آموزش .NET Core | ام اس پی سافت

معماری میکروسرویس در ASP.NET Core

میکروسرویس

در این مقاله میخواهیم راجب معماری میکروسرویس در ASP.NET Core صحبت کنیم. سبک معماری میکرو سرویس‌ ها تکاملی از سبک معماری SOA (معماری سرویس‌گرا) یکپارچه است.

تفاوت بین SOA و رویکرد میکروسرویس‌ چگونگی توسعه و عملیاتی شدن آنها است.

با اضافه شدن هر فناوری جدید، مسئولیت ما نسبت به جوانب مثبت و منفی عضو جدید افزایش پیدا می‌کند و مسائلی که برای حل آنها طراحی شده است.

Monolith

به کدهای API مبتنی بر الگوی MVC فکر کنید که در آن تمام کنترل کننده‌های شما و POJO ها (Plain Old Java Objects) یا POCO ها (Plain Old C# Objects) بعنوان یک واحد توسعه یافته، ساخته و گسترش یافتند و تقریبا همیشه یک فضای داده برای پروژه مورد استفاده قرار گرفته است.

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

میکروسرویس  ASP.NET Core

مزایای یکپارچگی monolith

  • نگرانی‌های متقابل کمتر

              یکپارچه شدن و تمام مسئولیت ها را با هم داشتن، پیاده‌سازی های تکی و یا اندک می‌تواند تمام نگرانی های                    متقابل عمده همچون امنیت، ورود به سیستم را پوشش دهد.

  •  سرباره عملیاتی کمتر

داشتن یک برنامه یکپارچه بزرگ به این معنی است که فقط یک برنامه وجود دارد که باید برای آن ورود به سیستم، مراقبت و آزمایش را برپا (set up) کنید. همچنین در کل از پیچیدگی کمتری برای گسترش، مقیاس پذیری، ایمنی و عملیاتی کردن برخوردار است.

  • کارایی

همچنان می‌تواند مزایای کارایی وجود داشته باشد چون دسترسی به حافظه مشترک سریعتر از ارتباط بین فرآیندها است

معایب یکپارچگی

  • اتصال محکم

سرویس های برنامه یکپارچه تمایل به ترکیب و اتصال محکم دارند، بطوری که در ضمن تکامل برنامه ایزوله کردن سرویس ها برای اهدافی چون مقیاس پذیری مستقل یا قابلیت نگهداری کد را دچار مشکل می‌کند.

  • درک مشکل

به سبب وابستگی‌های زیاد درک معماری یکپارچه بسادگی مشکل‌تر می‌شود.

  • گسترش همه یا هیچ

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

  • مقیاس همه یا هیچ افزایش یا کاهش مقیاس برای تمام عملکرد می‌باشد.

میکروسرویس

گارتنر یک میکروسرویس را بعنوان یک «مؤلفه برنامه خودکار کوچک، محکم بسته شده، دارای اتصال آزادانه، به شدت محصور شده (encapsulated)، گسترش پذیر مستقل و مقیاس پذیر مستقل » تعریف می‌کند.

میکروسرویس نقشی کلیدی در معماری سیستم‌های توزیع یافته بازی می‌کند، و چشم‌اندازی تازه بوجود آورده است.

برخلاف یکپارچگی، میکروسرویس اکیدا از اصل مسئولیت واحد (SRP) به واسطه محاصره محکم حول توانایی/دامنه تجارت برای مثال پرداخت پیروی می‌کند.

به پایگاه کد API مبتنی بر الگوی MVC فکر کنید که در آن کنترل کننده‌ها و POJO ها (Plain Old Java Objects) یا POCO ها (Plain Old C# Projects) فقط برای یک مسئولیت برای مثال توانایی تجارت توسعه یافته، ساخته و استقرار یافته‌اند.

این معماری میکروسرویس منجر به پروژه‌های اینچنینی بسیاری خواهد شد و هر توانایی تجارت پایگاه داده خودش را خواهد داشت.

آموزش ASP.NET Core میکروسرویس

مزایای میکروسرویس

  •  استقرار ساده‌تر

یکپارچگی همه یا هیچ را مستقر می‌کند.

میکروسرویس سرویس کوچکی است، تیم توسعه کنترل بر روی آنچه که باید استقرار یابد را کامل می‌کند و کد ویژگی دیگر را دست نخورده باقی می‌گذارد یعنی اگر تغییری در سرویس پرداخت اعمال شود، فقط باید پرداخت میتواند مستقر شود که این با یکپارچگی monolith میسر نبود.

  •  مقیاس‌پذیری

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

  • قابلیت نگهداری ساده‌تر

هر سرویس میکروسرویس خودکار است و بنابراین کوچک بودن سرویس، نگهداری آن را نسبت به سرویس یکپارچه monolith بسیار ساده‌تر می‌کند.

  • ایزوله کردن مسئله

هر سرویس پایگاه کد خودش را دارد و در فضای خودش استقرار می‎‌یابد. از اینرو هر مسئله با خودش یا هر سرویس دیگر کاملا ایزوله می‌ماند.

  • مسئولیت واحد

اصل مسئولیت واحد در هسنه طراحی میکرو سرویس قرار دارد. این اصل سایر خدمات خوب معماری میکروسرویس را هدایت می‌کند.

  • جدایی نگرانی

معماری میکروسرویس منجر به ساخته شدن سرویس‌های محکم بسته شده (tightly scoped) با ویژگی‌های مجزا که همپوشانی صفر با سایر توابع دارند می‌شود.

  • دامنه عمیق دانش

میکروسرویس طرز فکر محصول را تشویق می‌کند و منجر به ایجاد دامنه عمیق دانش با مانترا «بسازید، اجرا کنید» می‌‍شود.
معایب میکروسرویس

  • تغییرات فرهنگی

برای تطبیق با معماری میکروسرویس نیازمند به تغییرات فرهنگی و تراز سازمانی است. سازمان نیازمند یک چابک بالغ(mature agile) و فرهنگ DevOps است. با یک برنامه مبتنی بر میکروسرویس، تیمها باید برای مدیریت کل چرخه زندگی سرویس فعال شوند.

  • گرانتر

معماری میکروسرویس منجر به رشد هزینه‌ها می‌شود چون سرویسهای چندگانه وجود دارد.و سرویس‌ها نیاز به ارتباط با یکدیگر دارند که منجر به فراخوانی‌های دور زیادی می‌شود. این فراخوانی‌های دور منجر به هزینه‌های بالاتر مرتبط با پردازش و تأخیر شبکه نسبت به معماری یکپارچه سنتی می‌شود.

  • پیچیدگی

معماری میکروسرویس ذاتا پیچیدگی بیشتری نسبت به معماری یکپارچه دارد. پیچیدگی برنامه مبتنی بر میکروسرویس مستقیما مرتبط با تعداد سرویس‌های درگیر و پایگاه داده‌ها می باشد.

  • بهره‌وری کمتر

معماری میکروسرویس پیچیده است. پیچیدگی بیشتر بر بهر‌وری تأثیر گذاشته و شروع به کاهش می‌کند. تیم توسعه میکروسرویس معمولا به زمان بیشتری برای همکاری، آزمایش، استقرار و عملیاتی کردن سرویس نیاز دارد که قطعا به زمان بیشتری نیاز دارد.

معماری یکپارچه و میکروسرویس هر کدام مزایا و معایب خودشان را دارند.

معماری میکروسرویس توپ نقره‌ای نیست اما برای تیمهایی که مشتاق دگرگونی دیجیتالی و نوشتن سرویسهایی با طرز فکر محصول محور هستند قطعا ارزش قابل توجهی دارد.

  • پسورد: www.mspsoft.com
زهره سلطانیان

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.