آنچه در این صفحه می خوانید:
- معرفی میکروسرویس ها (Microservices
- مزایای میکروسرویس ها (Microservices)
- تکنولوژی میکروسرویس ها (Microservices)
معرفی میکروسرویس ها (Microservices)
میکروسرویس که همچنین به عنوان معماری میکروسرویس (Microservice architecture) شناخته می شود، سبک معماری است که برنامه را به عنوان مجموعه ای از سرویس ها، بنا می کند. میکروسرویس نوعی سبک ساختاری معماری سرویس گرا (SOA)، برنامه ای را به عنوان مجموعه ای از سرویس های اتصال آزاد تنظیم می کند. در معماری میکروسرویس، سرویس های کوچک و بزرگ و پروتکل ها سبک وزن هستند.
هیچ تعریف واحدی برای میکروسرویس وجود ندارد و با نظر های اجماع شده با گذشت زمان در صنعت تکامل یافته است. برخی از خصوصیات تعریف شده که اغلب به آنها استناد می شود عبارتند از:
- سرویس ها در معماری میکروسرویس (MSA) اغلب فرآیندی هستند که برای دستیابی به یک هدف با استفاده از پروتکل های فناوری آگونیستی مانند HTTP از طریق شبکه ارتباط برقرار می کنند.
- سرویس ها در یک معماری میکروسرویس بطور مستقل قابل استفاده هستند.
- سرویس حول قابلیت های تجاری سازماندهی می شوند.
- بسته به اینکه متناسب با چه مواردی باشد، سرویس ها با استفاده از زبان های برنامه نویسی مختلف، پایگاه داده، سخت افزار و محیط نرم افزار قابل اجرا هستند.
میکروسرویس یک لایه در برنامه یکپارچه نیست (به عنوان مثال، کنترل کننده وب، یا بک اند - برای-فرانت اند). در عوض، یکی از ویژگی های تجاری است که دارای رابط های روشن است و ممکن است از طریق مؤلفه های داخلی خود، معماری لایه ای را پیاده سازی کند. از دیدگاه استراتژی، میکرو سرویس ها در اصل از فلسفه یونیکس "یک کار را انجام داده و آن را خوب انجام می دهند" پیروی می کند. مارتین فاولر معماری مبتنی بر میکروسرویس را دارای ویژگی های زیر توصیف می کند:
- خود را به یک فرآیند توسعه نرم افزار تحویل مداوم متصل می کند. تغییر بخش کوچکی از برنامه فقط به رفرش و استفاده مجدد یک یا تعداد کمی از سرویس ها نیاز دارد.
- به اصولی مانند اصل گرانولی سرویس و توسعه مبتنی بر تجارت پایبند است.
معمولا میکروسرویس برای برنامه های نیتیو کلود، محاسبات بدون سرور و برنامه های کاربردی با استفاده از استقرار کانتینر سبک وزن اتخاذ می شود. به دلیل تعداد زیاد سرویس ها (در مقایسه با پیاده سازی برنامه های یکپارچه)، تحویل مداوم غیر متمرکز و دواپس (DevOps) با نظارت بر سرویس جامع، برای توسعه موثر، نگهداری و بهره برداری از چنین برنامه هایی ضروری هستند. نتیجه و دلیل منطقی پیروی از این رویکرد این است که میکروسرویس های پرایویت می توانند به صورت جداگانه ارزیابی شوند.
ویژگی های میکروسرویس ها (Microservices)
مولتی کامپوننت
با استفاده از نرم افزارهای ساخته شده به عنوان میکروسرویس ها، می توان به خدمات مختلفی تقسیم شد. چرا؟ به گونه ای که هر یک از این سرویس ها می توانند مستقر شوند و بعد از آن به طور مستقل از بین بروند بدون اینکه یکپارچگی یک برنامه به خطر بیفتد. در نتیجه، شما ممکن است به جای نیاز به استقرار کل برنامه ها، نیاز به تغییر یک یا چند سرویس مجزا داشته باشید. اما این رویکرد دارای نقاط ضعف، از جمله فراخوانی های از راه دور است.
ساخته شده برای تجارت
میکروسرویس ها معمولاً پیرامون قابلیت ها و اولویت های تجاری سازماندهی می شود. بر خلاف یک رویکرد سنتی توسعه یکپارچه - که در آن تیم های مختلف تمرکز ویژه ای دارند، به عنوان مثال UI ها، پایگاه داده ها، لایه های فناوری یا منطق سمت سرور، میکروسرویس ها از تیم های عملکردی استفاده می کند. وظایف هر تیم بر این اساس است که محصولات خاصی را بر اساس یک یا چند سرویس شخصی که از طریق گذرگاه پیام ارتباط برقرار می کنند، بسازند.
مسیریابی ساده
میکروسرویس ها تا حدودی مانند سیستم کلاسیک UNIX عمل می کنند: آنها درخواست هایی دریافت می کنند، آنها را پردازش می کنند و پاسخی را ایجاد می کنند. این برخلاف بسیاری از محصولات دیگر مانند ESBs (باس های سرویس سازمانی) است که در آن از سیستم های پیشرفته برای مسیریابی پیام ها و اعمال قوانین تجارت استفاده می شود.
غیر متمرکز
از آنجایی که میکروسرویس ها شامل فناوری ها و سیستم عامل های مختلفی است، روش های قدیمی مدیریت حالت متمرکز بهینه نیست. حاکمیت غیر متمرکز مورد حمایت جامعه میکروسرویس ها است زیرا توسعه دهندگان آن تلاش می کنند تا ابزارهای مفیدی را تولید کنند که در این صورت دیگران می توانند برای حل همان مشکلات استفاده کنند. درست مانند حاکمیت غیرمتمرکز، معماری میکروسرویس نیز به نفع مدیریت داده غیر متمرکز است. سیستم های یکپارچه از یک پایگاه داده منطقی واحد در برنامه های مختلف استفاده می کنند. در یک برنامه میکرو سرویس، هر سرویس معمولاً بانک اطلاعاتی مربوط به خود را مدیریت می کند.
مقاومت در برابر خرابی
میکرو سرویس ها برای مقابله با شکست طراحی شده اند. از آنجا که چندین سرویس منحصر به فرد و متنوع با هم ارتباط برقرار می کنند، ممکن است یک سرویس به هر دلیلی یا دیگری نتواند شکست بخورد (به عنوان مثال، هنگامی که تأمین کننده در دسترس نباشد). با این حال، نظارت بر میکرو سرویس ها می تواند به جلوگیری از خطر شکست کمک کند.
تکاملی
معماری میکروسرویس یک طراحی تکاملی است و برای سیستم های تکاملی ایده آل است. بسیاری از برنامه ها بر اساس معماری یکپارچه شروع می شوند، اما با توجه به الزام های پیش بینی نشده، می توان به آرامی به میکروسرویس هایی که از طریق API ها بر روی یک معماری یکپارچه قدیمی تعامل دارند، افزود.
مزایای میکروسرویس ها (Microservices)
فواید تجزیه یک برنامه در سرویس های کوچکتر بیشمار است، ازجمله:
- مدولار بودن: باعث می شود برنامه کاربردی، درک، توسعه، تست آن در برابر فرسایش تدریجی معماری نرم افزار آسان تر شود. این مزیت اغلب در مقایسه با پیچیدگی معماری های یکپارچه مطرح می شود.
- مقیاس پذیر: از آنجا که میکروسرویس ها بطور مستقل از یکدیگر پیاده سازی و مستقر شده اند، یعنی آنها در فرآیندهای مستقل اجرا می شوند، می توانند به طور مستقل کنترل و مقیاس شوند.
- ادغام سیستم های ناهمگن و وراثت: میکروسرویس ها به عنوان وسیله ای مناسب برای نوسازی نرم افزار یکپارچه در نظر گرفته شده است.
- توسعه توزیع: میکروسرویس ها با ایجاد تیم های کوچک مستقل برای توسعه، استقرار و مقیاس کردن سرویس های مربوطه به طور مستقل و به موازات یکدیگر قرار می گیرند.میکروسرویس ها ادغام مداوم، تحویل مداوم و استقرار را تسهیل می کنند.
تکنولوژی میکروسرویس ها (Microservices)
میکرو سرویس های رایانه ای می توانند به زبان های مختلف برنامه نویسی پیاده سازی شوند و از زیرساخت های مختلفی استفاده کنند. بنابراین، مهمترین انتخاب فناوری، نحوه ارتباط میکروسرویس ها با یکدیگر (همزمان، غیر همزمان، یکپارچه سازی UI) و پروتکل های مورد استفاده برای ارتباطات (RESTful HTTP، messaging، گرف کیوال ...) است. در یک سیستم سنتی، بیشتر انتخاب های فناوری مانند زبان برنامه نویسی بر کل سیستم تأثیر می گذارد. بنابراین، رویکرد انتخاب فناوری ها کاملاً متفاوت است.
سرویس مش
در یک سرویس مش، هر نمونه سرویس با نمونه ای از یک سرور پروکسی معکوس، به نام یک پروکسی سرویس، پراکسی sidecar یا sidecar جفت می شود. نمونه سرویس و پروکسی sidecar یک کانتینر را به اشتراک می گذارند و کانتینر توسط یک ابزار ارکستر سازی ظروف مانند کوبرنتیز، Nomad، داکر یا DC / OS اداره می شوند. پراکسی سرویس ها وظیفه ارتباط با سایر سرویس ها را بر عهده دارند و می توانند از قابلیت هایی مانند تأیید اعتبار و مجوز، ارتباطات ایمن و سایر موارد پشتیبانی کنند.
مقایسه سیستم عامل ها
اجرای یک معماری میکرو سرویس بسیار دشوار است. نگرانی های زیادی وجود دارد که هر معماری میکروسرویس نیاز به رفع آن دارد. نتفلیکس برای پشتیبانی از برنامه های داخلی خود، یک فریمورک میکرو سرویس ارائه داد و سپس بخش های زیادی از آن فریمورک را باز کرد.