من محمد عبدی یه برنامه نویس ام که چندسالی هست توی این دنیا بی پایان دست و پا میزنم. اینجا از تجربیاتم مینویسم.
میکروسرویس اصلا چی هست؟
اگه شما هم بارها توی مقالات مختلف کلمه میکروسرویس دیدید و یا اونو از افراد مختلف شنیدید اما دقیقا نمی دونید اون چیه و چه کاربردی داره توی این مقاله با من همراه باشید تا بصورت ساده و روان بهتون بگم که میکروسرویس چی هست.
میکروسرویس و معماری نرم افزار
برای تولید یک نرمافزار نیازه اول معماری و ساختار اونو برای خودتون دربیارید که اصلاً این سیستم قرار چطوری کار کنه. یکسری از این معماری ها نسبت به بقیه معروف تر و پر استفاده تره که از قضا معماری میکروسرویس یکی از اون معماری ها و ساختار های معروف تولید نرم افزاره که بزرگترین شرکت های جهان از اون استفاده میکنن. استفاده از میکروسرویس به اندازه ای همه گیر شده که کمتر شرکتی هست که سایز اون بزرگ بشه اما از میکروسرویس استفاده نکنه. از گوگل گرفته تا فیسبوک و از اسنپ گرفته تا دیجی کالا همه و همه از این سرویس استفاده میکنن البته چاره دیگری هم ندارن بخاطر اینکه توی نرمافزار ها قسمت های مختلفی نیازه که نوشته بشه که هرکدوم نیازمندی های خودشو داره تا محصول بهتری در اختیار کاربر نهایی بزارند.
مفهوم میکروسرویس
میکروسرویس تشکیل شده از یک سری سرویس های کوچیک که در کنار هم برای رسیدن به یک هدف کار میکنن. معمولا این هدف همون محصول نهایی اون نرم افزاره. خب تا اینجا کارو داشته باشید تا بیشتر و ساده تر براتون توضیح بدم.
همون طور که گفتم میکروسرویس تشکیل شده از یک سری سرویس های کوچیک که این سرویس های کوچک از طریق یک هسته مرکزی به نام API Gateway با هم دیگه در ارتباط هستن در واقع API Gateway میتونه همون محصول نهایی ما باشه. هر
این سرویس های کوچیک میتونن با هر زبانی نوشته بشن و در هر سروری از ویندوز گرفته تا لینوکس یا در هر کشور یا دیتاسنتر قرار داشته باشند و همینطور میتونن دیتابیس های جدا از همی هم داشته باشند. درواقع اصلا مهم نیست با چه زبان برنامه نویسی اون سرویس نوشته میشه یا دیتابیس اون سرویس چیه. چون این سرویس ها میتونن از طریق rest api و یا سرویس هایی مثل RabbitMQ باهم در ارتباط باشن و درکنار هم کار کنن.
کاربرد میکروسرویس
میکروسرویس مخصوص برنامه هایی که بزرگ هستن در واقع اگر توی یک پروژه بیش از ۳ الی ۵ نفر دارن کار میکنن نیازه که حتما معماری میکروسرویس در پیش بگیرید. به چند دلیل
۱- راحتی توسعه محصول
زمانی که ۳ الی ۵ نفر توی یک پروژه مشغول کار هستن درصد احتمال تداخل کدها با یکدیگر به شدن بالاست و همینطور خطا های یکی از این افراد ممکنه کل پروژه با مشکل مواجه کنه اما اگه از معماری میکروسرویس استفاده کنید تداخل کدها از بین میره و اگه یکی از این افراد یا گروه در سرویسی که داره توسعه میده دچار خطا بشه کل پروژه از کار نمی افته و فقط اون سرویس با مشکل روبرو میشه
۲- زبان برنامه نویسی دلخواه
معمولا برای هر سرویسی یک زبان برنامه نویسی که برای اون سیستم بهتره پیشنهاد میشه که استفاده از اون فوق العاده بهینه تر و راحت تره مثلا برای سیستم چت همزمان معمولا node پیشنهاد میشه که واقعا برای این کار مناسبه. حالا اگه معماری سیستم ما به صورت میکروسرویس نباشه یکم کار پیچیده میشه پس میکروسرویس این امکان به ما میده که توی انتخاب زبان برنامه نویسی و همین طور انتخاب نوع سرور دستمون باز باشه که این خودش یک مزیت فوق العاده عالیه هست.
۳- قابلیت نگهداری و امنیت بهتر
معمولا هرچی از عمر یک برنامه بیشتر میگذره و کاربران اون زیاد میشه نگهداری اون سخت تر میشه چون کوچیک ترین اشتباهی ممکنه کل سیستمو دچار مشکل کنه. این مشکل به کنار زمانی که کاربران برنامه بیشتر بشن نیازه به منابع برای کل سیستم بالا میره و ممکنه کل سیستم کند بشه که واقعا این اتفاق درست نیست. توی معماری میکروسرویس کافیه که فقط منابع اون سرویسی که پردازش بیشتر انجام میده رو بیشتر کرد با این کار دیگه کل برنامه کند نمیشه و فقط همون سرویس با کمی تاخیر پردازش انجام میده که اونم راحل های جالب دیگه ایی داره که بعدا در مورد اونا صحبت میکنیم. موضوع امنیت هم کاملا واضح و شفاف دیگه مثلا وقتی هکر به سرویس بارگذاری فایل شما نفوذ میکنه مطمئنا به سرویس مدارک کاربران شما دسترسی نداره که این خودش باعث ایجاد امنیت بیشتر برنامه شما میشه.
مطالعه بیشتر در مورد میکروسرویس
اگه می خواید بیشتر و کامل تر درباره میکروسرویس مطالعه کنید میتونید از منابع زیر که براتون جمع آوری کردم استفاده کنید. این منابع از نظر بنده منابع جامع و کاملی هستن که خوندن اونارو به شما پیشنهاد میکنم.
۱- سری مقالات آقای علیرضا ارومند
۲- سایت microservices.io
مطلبی دیگر در همین موضوع
پینگونیو عشقه!
مطلبی دیگر در همین موضوع
استایل Dark برای ویرگول
افزایش بازدید بر اساس علاقهمندیهای شما
اینترنت پهنای باند اختصاصی