میکروسرویس ها Microservices
میکروسرویس ها Microservices
میکروسرویس ها یک نوع از معماری و سازماندهی کردن هستند که در توسعه نرم افزار باعث می شند نرم افزار به بخش های کوچک تری تقسیم بشه که این بخش ها با استفاده از API های خوب تعریف شده باهم در ارتباط هستند .که عموما توسط تیم های توسعه کوچک این سرویس ها نگه داری می شوند.
microservice ها باعث میشند برنامه ها راحت تر رشد کنند و توسعه آن ها سریع تر باشد، همینطور باعث میشود سرعت عرضه به بازار افزایش پیدا کند .
Monolithic vs Microserives Architecture
در معماری monolithic تمام پردازش ها در یک سرویس اجرا می شوند .این به این معنی هست که اگر یک یک پردازش دچار مشکل شود کل اون سرویس دچار اختلال می شود .و همینطور اگر یک پروسس نیاز به تغییر داشته باشد همه برنامه باید این تغییر را لحاظ کند
با استفاده از میکروسرویس ها و این نوع معماری یک برنامه از تعدادی اجزا مستقل ساخته می شود که هر پردازش برنامه داخل یک سرویس مجزا اجرا خواهد شد .این سرویس ها با استفاده از مجموعه ای از API ها با همدیگر در ارتباط خواهند بود .با توجه به اینکه سرویس ها از یکدیگر جدا هستند هر سرویس به تنهای می تواند توسعه داده شود، استقرار پیدا کند و توسعه داده شود .
ویژگی های میکروسرویس ها :
هر عضو ( سرویس ) در معماری میکروسرویس همانطور که گفته شد به طور مستقل می تواند توسعه داده شود، عرضه شود، و بدون اینکه اثری روی بقیه سرویس بگذارد رشد داده شود .سرویس ها لازم نیست هیچ بخشی از برنامه داخلی خود را به اشتراک بگذارند با بقیه سرویس ها .هر نوع ارتباطی از طریق API های از پیش تعریف شده برقرار می شود.
هر سرویس برای یک مجموعه از مسئله ها و راه حل های مشخص ایجاد شده .اگر در زمان توسعه کدهای متفاوتی در یک سرویس در حال انجام بودند این سرویس می تواند به سرویس های مشخص تر بشکند .
مزیت های Microservice ها
چابکی : میکروسرویس ها باعث فراهم کردن خوراک لازم برای تیم های خود سازمانده کوچک می شوند .تیم ها در یک محتوی و مفاهیم مشخص از خوب تعریف شده بدون وابستگی به بقیه تیم ها به توسعه سریع می پردازند. کاهش زمان ارائه و خروجی تیم ها از مزیت های مشخص و ویژه این نوع معماری هست .
اسکیل پذیری میکروسرویس ها با توجه به ساختار مستقلی که دارند باعث می شوند اسکیل دادند یک سرویس و پردازش بسته به نیاز فعلی محصول بسیار بسیار راحت تر باشد .همینطور دقیقا مشخص خواهد شد این توسعه چه مقدار هزینه در بر داشته است .
میکروسرویس ها Continues Integration و Continues Delivery هنگام ایجاد یک برنامه با خودشون همراه دارند به این ترتیب تست کردن ایده های جدید و اضافه کردن ویژگی های جدید به محصول کم هزینه تر و ساده تر خواهد بود و همینطور این ویژگی ها در صورت تایید سریع تر به دست بازار خواهند رسید .
آزادی در انتخاب با توجه به ساختار و فلسفه ی میکروسرویس ها لازم نیست یک معماری برای پاسخگویی به همه نیازها در نظر گرفته بشه و هر سرویس و تیم میتونه بسته به مسيله ای که در حال برطرف کردن آن هست بهترین ابزار و معماری انتخاب کنه برای سرویسش .
برنامه های قابل استفاده مجدد کوچک کردن برنامه به تکه های مشخص و خوب تعریف شده باعث می شود که توسعه دهنده ها و تیم ها از یک قابلیت که به خوبی در یک سرویس تعریف و پیاده سازی شده در جاهای مختلف استفاده کنند .
تاب آوری : سرویس های مستقل باعث می شوند که برنامه در برابر مشکلات و خطاها تاب آوری داشته باشد. همانطور که در ابتدای بحث گفته شد در یک سیستم monolithic با توجه به اینکه تمام پردازش ها در یک سرویس در حال اجرا هستند با به مشکل خوردن این سرویس تمام برنامه دچار اختلال می شود . اما با توجه به اینکه میکروسرویس ها بصورت مجزا از هم کار می کنند به خطا خوردن یک سرویس باعث از کار افتادن دیگر سرویس ها نخواهد شد .