میکروسرویس یا معماری یکپارچه؟
برای درک میکروسرویس ها؛ ما باید بدانیم که کاربرد سیستم های تعبیه شده چیست و چه چیزی باعث شده است که در زمان های اخیر از برنامه های کاربردی تعبیه شده به میکروسرویس ها برویم.
کاربردهای یکپارچه
اگر تمام فعالیت های یک پروژه در یک بخش واحد باشد، برنامه به عنوان یک برنامه یکپارچه شناخته می شود. ما اپلیکیشن خود را در لایه های مختلفی مانند ارائه، سرویس و رابط طراحی می کنیم و سپس از آن قسمت کد نوشته شده به عنوان فایل خروجی استفاده می کنیم. این چیزی نیست جز یک برنامه یکپارچه، که در آن «مونو» به یک پایه کد منفرد اشاره دارد که شامل تمام عملکردهای لازم است.
چرا اصلا به سمت میکروسرویسها برویم؟
خب برای جواب به این سوال بهتر است معایب سیستمهای یکپارچه را مرور کنیم:
مدیریت دشوار بخاطر گسترش برنامه در گذشت زمان
برای تغییری کوچک، کل برنامه را دوباره باید منتشر ( publish ) کنیم
با تغییر و آپدیت برنامه، زمان انتشار افزایش مییابد.
درک دشوار برای توسعه دهندههای جدید هر پروژه
برای تقسیم ترافیک روی قسمتهای مختلف برنامه، باید نمونههای کل برنامه را در چندین سرور منتشر کنیم که بسیار ناکارآمد و باعث استفادهی بیهوده از منابع میشود
اگر از فناوری یا تکنولوژیهای جدید استفاده کنیم، برای عملکردی خاص، چه از نظر هزینه و چه از نظر زمان، بر کل برنامه تاثیر گذار است
و در نهایت وجود یک باگ در هر ماژول میتواند کل برنامه را مختل کند.
و اما مزایای سیستمهای یکپارچه:
توسعهی آن نسبت به میکروسرویسها ساده است.
انتشار آن آسانتر است؛ زیرا فقط یک خروجی، مستقر شدهاست.
در مقایسه با معماری میکروسرویسها، توسعهی آن نسبتا آسانتر و سادهتر است.
مشکلات تأخیر و امنیت شبکه در مقایسه با معماری میکروسرویسها نسبتاً کمتر است.
توسعه دهندگان نیازی به یادگیری برنامههای مختلف ندارند؛ آنها میتوانند تمرکز خود را بر روی یک برنامه حفظ کنند.
میکروسرویس ها
این یک سبک توسعه معماری است که در آن برنامه از سرویسهای کوچکتری تشکیل شدهاست که بخش کوچکی از عملکرد و دادهها را با برقراری ارتباط مستقیم با یکدیگر، با استفاده از پروتکلی مانند HTTP مدیریت میکند. به عبارتی دیگر خدمات یا سرویسهای کوچکی هستند که با هم کار میکنند.
معماری میکروسرویس تأثیر بسزایی در رابطهی بین برنامه و پایگاه داده دارد. بجای اشتراک گذاری یک پایگاه داده با سایر میکروسرویسها، هر میکروسرویس، پایگاه داده خاص خود را دارد که اغلب منجر به تکثیر برخی از دادهها میشود، اما اگر میخواهید از این معماری بهره مند شوید، داشتن یک پایگاه داده در هر میکروسرویس، ضروری است؛ زیرا اتصال ضعیف را تضمین میکند. مزیت دیگر داشتن یک پایگاه دادهی مجزا برای هر میکروسرویس این است که هر میکروسرویس میتواند از نوع پایگاه دادهای که برای نیازهای خود مناسبتر است، استفاده کند. هر سرویس یک ماژول را ارائه میدهد، به طوری که خدمات مختلف را میتوان به زبانهای برنامه نویسی مختلف نوشت. الگوهای زیادی در معماری میکروسرویس دخیل هستند مانند discovery و registry service ، Caching ، ارتباط API ، امنیت و غیره.
اصول میکروسرویس ها:
مسئولیت فردی: این یکی از اصولی است که به عنوان بخشی از مدل طراحی SOLID شناسایی شده است. یک سازمان یا کلاس؛ مشخص می کند که یک روش یا میکروسرویس باید تنها یک مسئولیت داشته باشد. هر میکروسرویس باید مسئولیتی داشته باشد و از یک عملکرد واحد پشتیبانی کند. همچنین می توانید بگویید که تعداد میکروسرویس هایی که باید ایجاد کنید با تعداد ویژگی های مورد نیاز شما برابر است. پایگاه داده نیز غیرمتمرکز است، به طور کلی هر میکروسرویس پایگاه داده خاص خود را دارد.
ساخته شده بر اساس مهارت های کسب و کار: با وجود فناوری بسیار زیاد در دنیای امروز، همیشه یک فناوری وجود دارد که برای یک عملکرد خاص مناسب تر است. اما در برنامه های یکپارچه، این یک اشکال جدی بود. از آنجا که ما نمی توانیم از فناوری های مختلف برای هر عملکرد استفاده کنیم، بنابراین باید در برخی زمینه ها مصالحه کنیم. یک میکروسرویس هرگز نباید محدود به استفاده از پشته فناوری مناسب یا ذخیره سازی پایگاه داده داخلی باشد که به بهترین وجه با اهداف تجاری مطابقت دارد. به عنوان مثال، هر میکروسرویس ممکن است بر اساس نیازهای تجاری از فناوری های مختلفی استفاده کند.
طراحی برای رسیدگی به خطا: میکروسرویس ها باید با در نظر گرفتن مدیریت خطا طراحی شوند. میکروسرویس ها باید از این معماری استفاده کنند و خرابی میکروسرویس نباید کل سیستم را تحت تأثیر قرار دهد و سایر ویژگی ها باید در دسترس کاربر باقی بماند. اما در برنامه های کاربردی سیستم جاسازی شده که در آن شکست یک ماژول کل برنامه را از کار می اندازد، اینطور نبود.
مزایای میکروسرویس:
مدیریت آن آسان است زیرا نسبتا کوچک است.
اگر بهروزرسانی یکی از میکروسرویسها وجود داشته باشد، فقط باید آن میکروسرویس را دوباره منتشر کنیم.
میکروسرویس ها مستقل هستند و بنابراین خود منتشر می شوند. زمان نصب و انتشار آنها نسبتاً کمتر است.
برای یک توسعهدهنده مبتدی بسیار آسان است که در پروژهای غوطهور شود، زیرا او فقط باید میکروسرویس خاصی را که روی آن اجرا میشود، درک کند، نه کل سیستم را.
اگر به دلیل استفاده بیش از حد کاربران از این ویژگی، میکروسرویس بیش از حد بارگذاری شده باشد، باید فقط آن میکروسرویس را پیکربندی کنیم. بنابراین، معماری میکروسرویس از مقیاس بندی افقی پشتیبانی می کند.
هر میکروسرویس بسته به نیازهای تجاری می تواند از فناوری های مختلفی استفاده کند.
اگر یک میکروسرویس خاص به دلیل برخی خطاها از کار بیفتد، روی سایر میکروسرویس ها تأثیر نمی گذارد و کل سیستم دست نخورده باقی می ماند و به ارائه عملکردهای دیگر به کاربران ادامه می دهد.
معایب میکروسرویس ها:
این پیچیده است و پیچیدگی آن با تعداد ریزسرویس ها افزایش می یابد.
نیروی ویژه لازم است
اجرای مستقل میکروسرویس ها پیچیده است.
میکروسرویس ها برای برنامه های شبکه گران هستند. زیرا آنها نیاز به ارتباط با یکدیگر دارند و تمام آن تماس های راه دور باعث تاخیر در شبکه می شود.
امنیت کمتر به دلیل ارتباط بین سرویس ها
اشکال زدایی مشکل است
- ۰۱/۰۹/۱۹