یکی از بزرگترین دغدغه های برنامه نویسان در سطح enterprise (شرکت های بین المللی و بسیار بزرگ) عدم دستیابی به مقیاس پذیری بالا بود. زمانی که در رابطه با پروژه های کوچک یا متوسط یا حتی بزرگ صحبت می کنیم مسئله مقیاس دهی آنچنان عجیب و سخت نیست اما برخی اوقات برنامه نویسی در سطح enterprise انجام می شود یعنی شرکت هایی با ترافیک بسیار بالا (میلیون ها کاربر). در سال ۲۰۰۵ آقای دکتر Peter Rogers برای اولین بار از کلمه microservices استفاده کرد و بعد ها در سال ۲۰۱۱ به صورت عملی تری از آن رونمایی شد.
معماری Monolithic همان روش عادی و سنتی طراحی وب و مقیاس دهی به برنامه ها است. ما می توانیم برنامه های وب را در تئوری به سه بخش اصلی تقسیم کنیم:
این سه بخش به شدت به یکدیگر وابسته و دائما در تعامل هستند بنابراین طراحی پیش فرض ما monolithic (مونولیتیک) می باشد؛ یعنی برنامه ما به صورت «یک کل» و «یک واحد مستقل» خواهد بود و این سه بخش (front-end و back-end و database) هیچ گاه از هم جدا نمی شوند.
در طراحی مونولوتیک هر سه بخش اصلی برنامه های تحت وب به صورت یکجا قرار دارند بنابراین یک سورس کد بزرگ دارند. این نوع طراحی مزایای زیر را دارد:
با اینکه مزیت های بالا قابل توجه هستند اما معایب جدی نیز متوجه این نوع طراحی می باشد:
معماری microservice، برخلاف معماری monolithic که برنامه را به عنوان یک «کلِ واحد» در نظر می گرفت، برنامه شما به به بخش های مختلف و کوچکتری تقسیم می کند. در این نوع معماری هر پروسه از برنامه شما به عنوان یک سرویس جداگانه در نظر گرفته می شود بنابراین هر کدام از این سرویس ها منطق و پایگاه داده خودشان را دارند و کار خاص خودشان را انجام می دهند. در نظر داشته باشید که در این تعریف وقتی از «بخش های کوچکتر» صحبت می کنیم، منظورمان ماژول هایی مستقل است که به صورت جداگانه deploy می شوند و به یکدیگر هیچ نیازی ندارند اما برای تشکیل یک برنامه بزرگ تر از طریق API با یکدیگر تعاملات خودشان را دارند.

مثل هر چیز دیگری در زندگی معماری های microservices و monolithic مزایا و معایب خود را دارند. ما در مورد نقاط قوت و ضعف معماری monolithic صحبت کرده ایم اما حالا نوبت به معماری microservices می رسد.
با اینکه معماری microservices مزایای بسیاری دارد اما معایب خاص خودش را نیز دارد که در این بخش به آن ها اشاره می کنیم:
بنابراین در صورتی که برنامه شما بزرگ نیست و می خواهید آن را سریعا راه بیندازید استفاده از معماری monolithic را پیشنهاد می کنم. به طور مثال معماری monolithic برای تیم های استارتاپ و تازه کار گزینه بسیار مناسبی است چرا که نیازی به دانش عمیق ندارد. همچنین برخی از اوقات برنامه شما آنچنان ساده است که نیازی به عملیات های سنگین و پیچیده ندارد بنابراین دردسرهای معماری microservices را ندارد. همچنین در نظر داشته باشید که ساخت برنامه های microservices نیاز به دانش فنی دارد و دست زدن به چنین کاری بدون داشتن تجربه کاری بسیار ریسکی محسوب می شود. بنابراین تا زمانی که برنامه شما پیچیده نیست و تا زمانی که دانش کافی برای مدیریت آن را ندارید بهتر است از معماری microservices دوری کنید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.