میکروسرویس ها چیست؟ تعریف، معماری

میکروسرویس ها نرم افزار را به ماژول هایی با رابط های دقیق و عملکردهای تخصصی تجزیه می کنند.معماری میکروسرویس، همچنین به عنوان "microservices" شناخته می شود، به عنوان یک روش توسعه تعریف می شود که نرم افزار را به ماژول هایی با عملکردهای تخصصی و رابط های دقیق تجزیه می کند. این مقاله تعریف، مثال‌ها و معماری میکروسرویس‌ها را پوشش می‌دهد و چند بهترین روش را برای اجرای آنها در سال 2022 بیان می‌کند.میکروسرویس ها چیست؟معماری میکروسرویس، همچنین به عنوان "microservices" شناخته می شود، یک روش توسعه است که نرم افزار را به ماژول هایی با عملکردهای تخصصی و رابط های دقیق تجزیه می کند.میکروسرویس ها در چند سال اخیر به طور فزاینده ای محبوب شده اند، زیرا سازمان ها DevOps و فرآیندهای آزمایش مداوم را برای چابک تر شدن اتخاذ می کنند. شرکت‌های آنلاین پیشرو مانند آمازون، eBay، Netflix، PayPal، Twitter و Uber معماری‌های یکپارچه را کنار گذاشته‌اند و به سمت میکروسرویس‌ها رفته‌اند.معماری یکپارچه شامل برنامه هایی است که به عنوان واحدهای بزرگ و مستقل ساخته شده اند. چنین برنامه هایی را نمی توان به راحتی تغییر داد زیرا کل سیستم به شدت به هم متصل است. حتی یک تغییر کوچک در کد احتمالاً مستلزم ایجاد و استقرار یک نسخه کاملاً جدید از نرم افزار است. مقیاس‌بندی برنامه‌های یکپارچه نیز دشوار است، زیرا مقیاس‌بندی یک تابع خاص نیاز به مقیاس‌بندی کامل برنامه دارد.میکروسرویس ها این مشکلات معماری یکپارچه را با اتخاذ یک رویکرد مدولار برای توسعه نرم افزار برطرف می کنند. به عبارت ساده، میکروسرویس ها برنامه های کاربردی را به عنوان ترکیبی از چندین سرویس فردی و به هم پیوسته دوباره تصور می کنند. هر سرویس یک فرآیند تخصصی را اجرا می کند و به طور مستقل مستقر می شود. در صورت نیاز، سرویس ها می توانند داده ها را با استفاده از تکنیک های مختلف ذخیره و پردازش کنند و می توانند به زبان های برنامه نویسی دیگر نوشته شوند.آشنایی با معماری میکروسرویس هادر یک برنامه یکپارچه، همه فرآیندها به شدت به یکدیگر متکی هستند و به عنوان یک سرویس واحد عمل می کنند. در چنین معماری، افزایش تقاضا برای پهنای باند هر فرآیند به این معنی است که معماری کامل نیاز به مقیاس‌پذیری دارد.از آنجایی که همه کدها در یک برنامه یکپارچه با هم بر روی یک پایه مستقر می‌شوند، افزودن یا افزایش ویژگی‌ها به یک فرآیند پیچیده تبدیل می‌شود، به‌ویژه زمانی که پایه کد از نظر اندازه و پیچیدگی گسترش می‌یابد. علاوه بر این، برنامه های یکپارچه ممکن است مستعد شکست باشند. این به این دلیل است که فرآیندهای کاملاً وابسته و اساساً وابسته به یکدیگر در صورت از بین رفتن یک فرآیند به راحتی تحت تأثیر قرار می گیرند.همه اینها محدودیت هایی را برای آزمایش ایجاد می کند و می تواند سیال ماندن و پاسخگویی را برای شرکت ها دشوار کند. این به طور بالقوه آنها را در یک بازار بسیار پویا و مشتری محور قرار می دهد.میکروسرویس ها به برنامه های بزرگ اجازه می دهند به قطعات کوچکتر تقسیم شوند که به طور مستقل عمل می کنند. هر "قطعه" مسئولیت های خود را دارد و می تواند آنها را بدون توجه به آنچه که سایر اجزا انجام می دهند انجام دهد. یک برنامه کاربردی مبتنی بر میکروسرویس، خدمات جمعی این قطعات را برای برآوردن درخواست‌های کاربر فرا می‌خواند.سرویس‌ها در معماری میکروسرویس‌ها با استفاده از رابط‌های برنامه‌نویسی کاربردی سبک (API) که به رابط‌های دقیق متصل می‌شوند، با یکدیگر صحبت می‌کنند. این خدمات برای انجام وظایف تجاری خاص مانند تراکنش های پولی، ایجاد فاکتور و پردازش داده ها ایجاد می شوند. هر سرویس یک عملیات واحد را انجام می دهد. همانطور که آنها به طور مستقل اجرا می شوند، خدمات می توانند بر اساس تقاضا برای عملکردهای خاص خود مستقر، به روز و مقیاس شوند.پیاده‌سازی معماری میکروسرویس‌ها منجر به ایجاد سیستم‌های تجاری انعطاف‌پذیر و مقیاس‌پذیر می‌شود. با این حال، تغییر از یکپارچه به ریزسرویس ها مستلزم نوسازی پویا زیرساخت فناوری اطلاعات است.این لزوماً بد نیست، زیرا میکروسرویس‌ها از بسیاری از راه‌حل‌های مشابهی استفاده می‌کنند که معمولاً در محیط‌های RESTful و وب سرویس مستقر می‌شوند. این بدان معناست که کار با آنها برای یک تیم IT با تجربه کافی باید نسبتاً ساده باشد. به عنوان مثال، تست API - یک فرآیند نسبتاً رایج - می تواند برای اعتبارسنجی جریان داده در سراسر استقرار میکروسرویس ها استفاده شود.معماری میکروسرویس‌ها برای کسب‌وکارهای دیجیتال مدرن که همیشه نمی‌توانند انواع مختلف دستگاه‌هایی را که به زیرساخت‌های آن‌ها دسترسی دارند را در نظر بگیرند، ایده‌آل است. برنامه های متعددی که به عنوان یکپارچه شروع شده بودند، به آرامی برای استفاده از ریزسرویس ها اصلاح شدند، زیرا نیازهای پیش بینی نشده در دنیای پس از همه گیری پدیدار شد. نوسازی محیط‌های بزرگ‌تر سازمانی را می‌توان با استفاده از APIها به دست آورد تا به میکروسرویس‌ها اجازه دهد تا با معماری یکپارچه قدیمی‌تر ارتباط برقرار کنند.کانتینرها نمونه‌ای عالی از معماری میکروسرویس‌ها هستند زیرا به کسب‌وکارها اجازه می‌دهند بدون نگرانی در مورد وابستگی‌ها بر توسعه خدمات تمرکز کنند. برنامه های کاربردی Cloud-Native معمولاً با استفاده از اهرم به عنوان ریزسرویس ساخته می شوند.ویژگی های معماری میکروسرویس هادر زیر پنج ویژگی اصلی معماری میکروسرویس ها ذکر شده است.1. تقسیم به اجزای متعددنرم‌افزاری که با استفاده از معماری میکروسرویس ساخته می‌شود، بنا به تعریف، به خدمات مؤلفه‌های متعددی تقسیم می‌شود. هر سرویس را می توان به طور مستقل بدون به خطر انداختن یکپارچگی برنامه ایجاد، مستقر و به روز کرد. کل برنامه را می توان با بهینه سازی چند سرویس خاص به جای حذف و استقرار مجدد آن، بزرگ کرد.2. مقاوم و مقاوم در برابر شکستبرای یک برنامه کاربردی که با استفاده از معماری میکروسرویس ساخته شده است، کار آسانی نیست. البته، خدمات فردی ممکن است شکست بخورد و بدون شک بر عملیات تأثیر می گذارد. از این گذشته، چندین سرویس متنوع و منحصر به فرد برای انجام عملیات در یک محیط میکروسرویس با یکدیگر ارتباط برقرار می‌کنند و شکست در برخی مواقع رخ می‌دهد.با این حال، در یک برنامه کاربردی مبتنی بر میکروسرویس که به درستی پیکربندی شده است، یک تابعی که با خرابی مواجه است باید بتواند ترافیک را از خود دور کند و در عین حال به سرویس های متصل خود اجازه ادامه کار را بدهد. همچنین با نظارت بر میکروسرویس ها و بازگرداندن آنها در اسرع وقت در صورت خرابی، می توان خطر اختلال را کاهش داد.3. فرآیند مسیریابی سادهمیکروسرویس ها شامل اجزای هوشمندی هستند که قادر به پردازش داده ها و اعمال منطق هستند. این اجزا توسط «سیم‌های گنگ» به هم متصل می‌شوند که اطلاعات را از یک عنصر به عنصر دیگر منتقل می‌کنند.این فرآیند مسیریابی ساده برعکس معماری استفاده شده توسط برخی دیگر از برنامه های کاربردی سازمانی است. به عنوان مثال، یک اتوبوس خدمات سازمانی از سیستم های پیچیده برای مسیریابی پیام، رقص و اجرای قوانین تجاری استفاده می کند. با این حال، میکروسرویس ها به سادگی درخواست ها را دریافت می کنند، آنها را پردازش می کنند و خروجی مناسبی را برای انتقال به جزء درخواست کننده تولید می کنند.4. عملیات غیرمتمرکزمیکروسرویس ها از پلتفرم ها و فناوری های متعددی استفاده می کنند. این امر باعث می‌شود روش‌های حاکمیت متمرکز سنتی برای اجرای معماری میکروسرویس ناکارآمد باشد.حاکمیت غیرمتمرکز برای ریز سرویس‌ها مناسب‌تر است زیرا توسعه‌دهندگان در سراسر جهان ابزارهای ارزشمندی برای حل چالش‌های عملیاتی ایجاد می‌کنند. این ابزارها حتی می توانند توسط توسعه دهندگان دیگری که با مشکلات مشابهی روبرو هستند به اشتراک گذاشته و استفاده شوند.به طور مشابه، یک معماری میکروسرویس از مدیریت غیرمتمرکز داده حمایت می کند، زیرا هر برنامه میکروسرویس پایگاه داده منحصر به فرد خود را مدیریت می کند. برعکس، سیستم های یکپارچه معمولاً با استفاده از یک پایگاه داده منطقی متمرکز برای همه برنامه ها کار می کنند.5. ساخته شده برای مشاغل مدرنمعماری میکروسرویس ها برای تمرکز بر تحقق الزامات کسب و کارهای مدرن و دیجیتال ایجاد شده است. معماری‌های یکپارچه سنتی تیم‌هایی را بر روی توسعه عملکردهایی مانند UI، لایه‌های فناوری، پایگاه‌های داده و منطق سمت سرور کار می‌کنند. از سوی دیگر، میکروسرویس‌ها به تیم‌های متقابل متکی هستند. هر تیم مسئولیت ایجاد محصولات خاص بر اساس خدمات فردی را بر عهده می گیرد که داده ها را از طریق یک گذرگاه پیام ارسال و دریافت می کند.