رایانش ابری و معماری ابری برای برنامههای نرمافزاری، تغییر دهنده بازی بودهاند. با ظهور همزمان میکروسرویس ها، فرآیندهای توسعه ساده می شوند و امکان تمرکز و بهره وری بیشتر را فراهم می کنند.
در عین حال، ریزسرویس ها یکی از پرکاربردترین اصطلاحات در وبلاگ نویسی فناوری اطلاعات در اکثر صنایع فناوری اطلاعات هستند. این کلمه اغلب بدون قافیه یا دلیل استفاده می شود و باعث سردرگمی غیر ضروری در بین رهبران کسب و کار و تصمیم گیرندگان می شود.
در این وبلاگ توضیح داده خواهد شد:
تعریف معماری میکروسرویس
نمونه هایی از الگوهای طراحی میکروسرویس
مزایای تجاری میکروسرویس ها در تجارت الکترونیک
نمونه هایی از استقرار موفقیت آمیز میکروسرویس های سازمانی
تعریف معماری میکروسرویس
به طور خلاصه، معماری میکروسرویس یک چارچوب سست از خدمات هماهنگ است که فقط یک عمل را انجام می دهد. Microservices یک برنامه کاربردی را به عنوان مجموعه ای از خدمات ساختار می دهد که عبارتند از:
آزادانه جفت شده و از طریق API ها ارتباط برقرار می کند
بسیار قابل نگهداری و آزمایش پذیر
به طور مستقل قابل استقرار
بر اساس قابلیت های تجاری سازماندهی شده است
مجموعه ماژول ها مانند یک کیت ساخت لگو است. شما هر خدمت را به اهداف خاص شرکت اختصاص می دهید. اصل تک مسئولیت، هسته ریز خدمات است.
API (رابط برنامه کاربردی) خدمات مختلف را با اجازه دادن به آنها برای ارتباط با یکدیگر متحد می کند. این رویکرد آزادی زیادی را از نظر استقلال نسبی خدمات از یکدیگر فراهم می کند، که توسعه و نگهداری را بسیار ساده تر می کند.
معماری طراحی شده برای میکروسرویس ها بهترین گزینه در شرایطی است که نیاز اولیه سیستم شما چابکی و مقیاس پذیری است. همچنین می توانید برندها و تجربیات خود را به صورت تدریجی راه اندازی کنید که منجر به نوآوری و بهینه سازی مداوم می شود.
اطلاعات بیشتر در مورد یکپارچه در مقابل میکروسرویس را اینجا بخوانید.
نمونه های میکروسرویس از الگوهای معماری
یکی دیگر از عناصر ضروری الگوی معماری میکروسرویس این است که یک سیستم توزیع شده است، به این معنی که همه اجزا به طور کامل جدا شده و از طریق یک پروتکل دسترسی از راه دور (مانند RMI، REST، JMS، AMQP، SOAP) قابل دسترسی هستند. ماهیت توزیع شده این الگوی معماری یکی از نقاط قوت اصلی آن است.
اصول طراحی معماری برای میکروسرویس ها
یکپارچه-دربرابر-میکروسرویس_-تفاوت-های-بین-آنها-و-وقتی-زمان-باز کردن-3-min.png
1. مسئولیت منفرد: برای دستیابی به بهترین معماری سرویس گرا، هر میکروسرویس تمرکز واحدی دارد و یک سرویس را ارائه می دهد.
2. ساخته شده بر اساس قابلیت های تجاری: هر میکروسرویس ممکن است از فناوری متفاوتی بر اساس نیازهای تجاری استفاده کند.
3. طراحی شده برای خرابی: اگر یک میکروسرویس با خطایی مواجه شود، روی هیچ سرویس دیگری تأثیر نمی گذارد.
یکی از جنبه های جذاب این معماری این است که به جای اینکه به عنوان درمانی برای یک مشکل ابداع شود، از مسائل مربوط به سایر الگوهای معماری رایج تکامل یافته است. سبک طراحی میکروسرویس از دو خاستگاه اصلی پدید آمده است:
1. برنامه های کاربردی یکپارچه که با استفاده از الگوی معماری لایه ای ساخته شده اند
الگوی معماری لایه ای بر اساس ساختار n-tier است. هر لایه دارای مجموعهای از مسئولیتها است که نحوه انجام وظایف و تعاملات برنامه را مشخص میکند. مؤلفه ها در لایه های افقی سازماندهی می شوند که هر لایه عملکرد مجزایی را در برنامه انجام می دهد (به عنوان مثال، منطق تجاری یا منطق ارائه). اکثر معماری های لایه ای شامل چهار لایه استاندارد هستند: ارائه، کسب و کار، ماندگاری و پایگاه داده.
2. برنامه های کاربردی توزیع شده تولید شده با استفاده از رویکرد معماری سرویس گرا
معماری سرویس گرا ترکیبی از اجزای نرم افزار توزیع شده، مستقل نگهداری شده و مستقر شده است. توانایی برقراری ارتباط و همکاری از طریق یک شبکه، به ویژه یک شبکه IP، توسط فناوریها و استانداردهایی که ارتباطات و همکاری اجزا را تسهیل میکنند، افزایش مییابد.
نمونه های میکروسرویس از الگوهای معماری عبارتند از:
الگوی خفه کننده
الگوی منبع یابی رویداد
الگوی دروازه API
الگوهای SAGA
نمونه معماری میکروسرویس: الگوی خفه کننده
الگوی Strangler جایی است که یک سیستم "قدیمی" در پشت یک نمای "نامرئی" پنهان شده است. با گذشت زمان، خدمات جایگزین خارجی برای سیستم قدیمی در بالای نما ساخته می شود.
وظیفه هر نما نشان دادن نقاط ورودی موجود سیستم است.
سیستم قدیمی هنوز تا حدودی نفوذ دارد.
تماس های سیستم قبلی از نما عبور می کند.
سرویسهای جدید از سرویسهای سیستم قدیمی ایجاد میشوند که بازسازی میشوند.
نمای واسطه اصلاح میشود تا تماسهایی را که قبلاً برای سرویس سیستم قدیمی به مقصد جدید پس از ایجاد سرویس جدید هدایت میشد، هدایت کند.
سرویس های قدیمی در نهایت به نفع سرویس های جدید «خفه می شوند».
Group-3375-min.png
برخی از خدمات نیازی به مهاجرت در طول فرآیند مهاجرت ندارند. اینها شامل هر برنامه یا سرویسی با محدودیت در استفاده است، مانند مواردی که به یک پلت فرم تجارت الکترونیک تعلق دارند.
با افزودن ویژگیهای جدید و بازسازی ویژگیهای موجود، میتوانید مطمئن شوید که سایت شما ارزش بیشتری نسبت به قبل برای بازدیدکنندگان ارائه میکند و در عین حال عملکرد کامل را حفظ میکند.
هنگامی که در حال انجام یک تغییر سیستم هستید، به شما این امکان را می دهد که ریسک را کاهش دهید و برنامه های موجود را در حین مهاجرت به نسخه های جدید حفظ کنید.
الگوی منبع یابی رویداد
منبع رویداد یک توالی زمانی جدید از رویدادها ایجاد می کند. ایجاد مجدد وضعیت برنامه شامل پرس و جو از داده ها است، و برای انجام این کار، باید هر تغییری را در وضعیت برنامه مجدداً ترسیم کنید. این مفهوم که سیستم باید هرگونه تغییر در وضعیت موجودیت را ثبت کند، زیربنای منبع یابی رویداد است.
ماندگاری یک کالای تجاری با ثبت یک سری رویدادهای تغییر دهنده حالت حفظ می شود.
Group-3376-min.png
هر بار که وضعیت یک شی تغییر می کند، یک رویداد جدید به دنباله رویدادها اضافه می شود. این است
در اصل یک عمل وضعیت فعلی آن ممکن است با پخش مجدد رخدادهای آن بازسازی شود.
فروشگاه رویداد همه رویدادها را ردیابی می کند و به عنوان دلال پیام و پایگاه داده رویدادها عمل می کند. این به سرویس ها امکان می دهد برای رویدادها از طریق یک API ثبت نام کنند. همه مشترکین علاقه مند در مورد هر رویداد ذخیره شده در پایگاه داده فروشگاه رویداد مطلع می شوند. فروشگاه رویداد پایه معماری میکروسرویس های رویداد محور است.
الگوی منبع یابی رویداد برای استفاده در موارد زیر عالی است:
ضروری است که ذخیره داده فعلی را حفظ کنید
شما هیچ تغییری در پایگاه کد لایه داده موجود خود نمی خواهید
تراکنش های شما برای موفقیت برنامه شما حیاتی است
نمونه معماری Microservices: API Gateway
هدف API Gateway ارائه یک نقطه ورودی واحد برای مجموعه ای از میکروسرویس ها است. برای برنامه های بزرگ با چندین برنامه مشتری عالی است، و مسئول ارائه یک نقطه ورودی یکپارچه برای گروه خاصی از میکروسرویس ها است.
Untitled.png
برنامه های مشتری و میکروسرویس ها نیازی به تعامل مستقیم ندارند. در عوض، آنها از طریق دروازه ای که در وسط قرار دارد، ارتباط برقرار می کنند. این به عنوان یک پروکسی معکوس عمل می کند و درخواست های مشتری را به خدمات ارسال می کند. احراز هویت، خاتمه SSL و حافظه پنهان تنها تعدادی از عملکردهای مقطعی هستند که می تواند ارائه دهد.
درگاه microservices API برای مدیریت صحیح خرابی های جزئی طراحی شده است. شکست یک میکروسرویس پاسخگو باعث شکست کل درخواست نمی شود. توانایی یک دروازه API میکروسرویس برای بازیابی از مشکلات حتی جزئی بسیار مهم است.
هنگامی که یک برنامه با شکست مواجه می شود، می تواند:
از یک پاسخ ذخیره شده قبلی استفاده کنید.
کد خطا را برای اطلاعات مهم در نگرانی اصلی درخواست برگردانید.
یک مقدار اختصاص نیافته ارائه کنید.
به لیست 10 سخت افزار برتر اعتماد کنید.
نمونه معماری میکروسرویس ها: SAGA
SAGA یک تکنیک موثر برای حفظ ثبات داده ها در یک ساختار توزیع شده بدون به خطر انداختن خواص ACID است. SAGA مسئول انجام بسیاری از تراکنشهای نظرات با اجازه دادن به بازگشت است.
Group-3377-min.png
SAGA ممکن است در ارکستراسیون یا رقص نمایش داده شود.
در رقص SAGA، هیچ ارکستراسیون کلی وجود ندارد. هر سرویس در Saga تراکنش خود را انجام می دهد و رویدادها را یکی یکی منتشر می کند. سایر خدمات نسبت به این رویدادها واکنش نشان می دهند و مسئولیت خود را تکمیل می کنند. بسته به موقعیت ممکن است رویدادهای اضافی را منتشر کنند یا نکنند.
هر سرویس در داستان تراکنش های خود را انجام می دهد و رویدادها را در ارکستراسیون SAGA منتشر می کند. سایر سرویس ها از رخدادها مطلع می شوند و مسئولیت های خود را انجام می دهند.
مزایای استفاده از SAGA: ممکن است برای حفظ سازگاری داده ها بین سرویس ها بدون اینکه بیش از حد کوپل شود استفاده شود.
مضرات استفاده از SAGA: پیچیدگی الگوی طراحی SAGA برای توسعه دهندگان زیاد است و آنها به نوشتن حماسه به عنوان تراکنش های معمولی عادت ندارند.
مزایای تجاری معماری میکروسرویس به طور خلاصه
مهم ترین مزیت تجاری مدرن استفاده از معماری میکروسرویس از نقطه نظر عملکرد، افزایش معیارهای UX است. آنها برای مطابقت با معیارهای سرعت Google ساخته شده اند، که با انتظارات کاربران مدرن هنگام خرید آنلاین همسو هستند. در زیر خلاصه ای کوتاه از مزایای حیاتی که می توانید از یک سیستم کامپایل شده از میکروسرویس ها انتظار داشته باشید آورده شده است.
تاثیر سئو:
بارگذاری سریعتر صفحه و تصویر، رتبهبندی SEO را بهبود میبخشد و ترافیک ارگانیک را افزایش میدهد.
تاثیر تبدیل:
تاکید زیادی بر UX موبایل دارد و نرخ تبدیل شما را به شدت بهبود می بخشد.
تاثیر بودجه:
بودجههای توسعه بسیار کوچکتر هستند و بودجههای بزرگتری برای جذب مشتری فراهم میکنند.
منابع:
بهترین استعدادهای توسعه جذب فناوری مدرن می شوند. آنها می خواهند در خط مقدم توسعه بزرگ بعدی باشند.
درآمد:
زمان سریعتر برای بازاریابی، کاهش هزینههای توسعهدهنده، تبدیلهای بالاتر و UX بهینهشده بر درآمد شما تأثیر مثبت میگذارد.
عملکرد UX:
هر برنامه کوچکتر است و با تمرکز قوی بر عملکرد و سرعت UX مدرن ساخته شده است.
مثال Netflix Microservices
pasted_image_0.png
نتفلیکس از معماری میکروسرویس های AWS استفاده می کند. هر گونه ارتباط بین میکروسرویس ها از طریق APIهای کاملاً تعریف شده انجام می شود و امکان توسعه چند زبانه را فراهم می کند. این به مقرون به صرفه نگه داشتن ابر کمک می کند و یک نقطه از شکست را حذف می کند، حتی اگر مهندسان چندین منطقه خدماتی را به طور همزمان تغییر دهند.
در آگوست 2008، نتفلیکس زمانی که هنوز از معماری یکپارچه و مراکز داده خصوصی استفاده میکرد، دچار قطعی قابلتوجهی شد. این امر باعث شد نتفلیکس متوجه شود که باید از رویکرد استقرار مداوم و برنامههای کاربردی جدا شده برای جلوگیری از مشکلات آینده استفاده کند.
میکروسرویس ها اطمینان حاصل کردند که با قطع سرویس مواجه نشوند زیرا آنها را از یک پشته منفرد و آسیب پذیر دور می کند. همچنین به مهندسان نتفلیکس این امکان را میدهد تا با ایدههای طراحی جدید بدون تأثیر بر بقیه عملکرد سرویس بازی کنند.
نتفلیکس را چابکتر کرد و در نتیجه مهندسی Chaos، Spinnaker، Global Cloud و رشد عظیمی را که شرکت امروز شاهد بود، بهدست آورد. هر اپلیکیشنی که روی سیستم اجرا میشود، بخش مجزایی از عملیات گسترده نتفلیکس را بر عهده دارد.
به عنوان مثال، هر یک از این توابع توسط یک میکروسرویس مجزا کنترل می شود:
فهرستی از فیلم هایی که در منوی بالا ظاهر می شوند تهیه کنید.
برای ارائه محتوای مرتبط با سطح اشتراک، وضعیت عضویت فعلی خود را بررسی کنید.
برای توصیه فیلمهایی که ممکن است دوست داشته باشید، سابقه تماشای خود را مطالعه کنید.
وقتی زمان تمدید عضویت نتفلیکس فرا رسید، کارت اعتباری خود را شارژ کنید.
موثرترین ابزار تحویل محتوا (CDA) را در منطقه خود پیگیری کنید تا ببینید آیا یکی از آنها مسدود می شود یا از کار می افتد.
به طور خودکار شما را به بهترین CDA با بهترین اتصال به اینترنت منتقل می کند.
نسخه دیجیتالی فایل های اصلی با کیفیت بالا را در سرورهای AWS نگه دارید.
اطمینان حاصل کنید که مجموعه متفاوتی از سرورهای AWS نسخه اصلی را به کیفیت، فرمت، اندازه و صدا تبدیل می کند که ممکن است در انواع دستگاه ها، از جمله دستگاه های تلفن همراه، تلویزیون های هوشمند، و کنسول های بازی پخش شود.
مشخص کنید که از چه دستگاهی برای مشاهده Netflix استفاده می کنید و فرمت ویدیوی مناسب را ارائه دهید.
افزودن نشانه های حق چاپ به همه فایل ها (مدیریت حقوق دیجیتال)
اینها تنها چند روش هستند که نتفلیکس از معماری میکروسرویس ها به نفع خود بهره برداری می کند. نزدیک به 990 گزینه دیگر وجود دارد.
مثال میکروسرویس Spotify
pasted_image_0.png
یکی دیگر از نمونه های برجسته میکروسرویس های مورد استفاده برای ساخت یک سیستم کارآمد، Spotify است. Spotify در حال حاضر بیش از 75 میلیون کاربر فعال ماهانه دارد. این یک منطقه عظیم برای گسترش است.
مشتریانی که از این برنامه ها استفاده می کنند نمی خواهند نگران خدمات باشند، بنابراین هدف ارائه یک تجربه بدون دردسر است.
در اینجا نحوه برخورد Spotify با آن آمده است:
این شبکه به میکروسرویس های تک منظوره مستقل با تیم های توسعه مستقل تقسیم می شود.
هر میکروسرویس بر روی یک هدف مجزا تمرکز دارد.
خدمات مشتری سازگارتر است زیرا این خدمات در سیلوها کار می کنند. در نتیجه، پشتیبانی مشتری کمتر به یکدیگر وابسته است و شرکت می تواند آن را بدون تأثیر بر خدمات بهبود بخشد.
علاوه بر این، هر مشکل جدید به یک سرویس محدود می شود و کل سیستم را تحت تاثیر قرار نمی دهد.
نمونه میکروسرویس های Zadig & Voltaire
Zadig & Voltaire، یک شرکت مد مشهور، یکی از اولین بازرگانی بود که Magento را در سال 2008 به کار گرفت. تقریباً برای یک دهه، این پلتفرم که استانداردهای تجارت الکترونیک را ایجاد کرد، یک تطابق ایده آل برای Zadig & Voltaire بود. با این حال، آنها تصمیم گرفتند لایه frontend را برای یکپارچه سازی UX خود در سراسر بازارها بازسازی کنند.
ZadigVoltaire-Desktop-Mobile-CASE-STUDY-min.jpg
این شرکت نیاز به افزایش عملکرد و انعطاف پذیری برای ارائه معاملات مناسب در تمام بازارهای مورد نظر داشت، که بدون بازسازی معماری فناوری اطلاعات و جایگزینی برخی از روش های دستی با اتوماسیون دشوار بود.
برای دستیابی به اهداف بلندپروازانه خود، این استراتژی خواستار استفاده از یک رویکرد طراحی میکروسرویس بود که شامل موارد زیر بود:
به عنوان مثال، هر یک از این توابع توسط یک میکروسرویس مجزا کنترل می شود:
فهرستی از فیلم هایی که در منوی بالا ظاهر می شوند تهیه کنید.
برای ارائه محتوای مرتبط با سطح اشتراک، وضعیت عضویت فعلی خود را بررسی کنید.
برای توصیه فیلمهایی که ممکن است دوست داشته باشید، سابقه تماشای خود را مطالعه کنید.
وقتی زمان تمدید عضویت نتفلیکس فرا رسید، کارت اعتباری خود را شارژ کنید.
موثرترین ابزار تحویل محتوا (CDA) را در منطقه خود پیگیری کنید تا ببینید آیا یکی از آنها مسدود می شود یا از کار می افتد.
به طور خودکار شما را به بهترین CDA با بهترین اتصال به اینترنت منتقل می کند.
نسخه دیجیتالی فایل های اصلی با کیفیت بالا را در سرورهای AWS نگه دارید.
اطمینان حاصل کنید که مجموعه متفاوتی از سرورهای AWS نسخه اصلی را به کیفیت، فرمت، اندازه و صدا تبدیل می کند که ممکن است در انواع دستگاه ها، از جمله دستگاه های تلفن همراه، تلویزیون های هوشمند، و کنسول های بازی پخش شود.
مشخص کنید که از چه دستگاهی برای مشاهده Netflix استفاده می کنید و فرمت ویدیوی مناسب را ارائه دهید.
افزودن نشانه های حق چاپ به همه فایل ها (مدیریت حقوق دیجیتال)
اینها تنها چند روش هستند که نتفلیکس از معماری میکروسرویس ها به نفع خود بهره برداری می کند. نزدیک به 990 گزینه دیگر وجود دارد.
مثال میکروسرویس Spotify
pasted_image_0.png
یکی دیگر از نمونه های برجسته میکروسرویس های مورد استفاده برای ساخت یک سیستم کارآمد، Spotify است. Spotify در حال حاضر بیش از 75 میلیون کاربر فعال ماهانه دارد. این یک منطقه عظیم برای گسترش است.
مشتریانی که از این برنامه ها استفاده می کنند نمی خواهند نگران خدمات باشند، بنابراین هدف ارائه یک تجربه بدون دردسر است.
در اینجا نحوه برخورد Spotify با آن آمده است:
این شبکه به میکروسرویس های تک منظوره مستقل با تیم های توسعه مستقل تقسیم می شود.
هر میکروسرویس بر روی یک هدف مجزا تمرکز دارد.
خدمات مشتری سازگارتر است زیرا این خدمات در سیلوها کار می کنند. در نتیجه، پشتیبانی مشتری کمتر به یکدیگر وابسته است و شرکت می تواند آن را بدون تأثیر بر خدمات بهبود بخشد.
علاوه بر این، هر مشکل جدید به یک سرویس محدود می شود و کل سیستم را تحت تاثیر قرار نمی دهد.
نمونه میکروسرویس های Zadig & Voltaire
Zadig & Voltaire، یک شرکت مد مشهور، یکی از اولین بازرگانی بود که Magento را در سال 2008 به کار گرفت. تقریباً برای یک دهه، این پلتفرم که استانداردهای تجارت الکترونیک را ایجاد کرد، یک تطابق ایده آل برای Zadig & Voltaire بود. با این حال، آنها تصمیم گرفتند لایه frontend را برای یکپارچه سازی UX خود در سراسر بازارها بازسازی کنند.
ZadigVoltaire-Desktop-Mobile-CASE-STUDY-min.jpg
این شرکت نیاز به افزایش عملکرد و انعطاف پذیری برای ارائه معاملات مناسب در تمام بازارهای مورد نظر داشت، که بدون بازسازی معماری فناوری اطلاعات و جایگزینی برخی از روش های دستی با اتوماسیون دشوار بود.
برای دستیابی به اهداف بلندپروازانه خود، این استراتژی خواستار استفاده از یک رویکرد طراحی میکروسرویس بود که شامل موارد زیر بود:
جدا کردن قسمت جلویی از قسمت باطنی، با استفاده از رابط کاربری Storefront.
اتخاذ یک CMS بدون هدلس معاصر.
پذیرش پتانسیل فناوری وب پیشرو (PWA).
آنها Vue Storefront را انتخاب کردند و - علاوه بر ترکیب مزایای برنامه های بومی و دسکتاپ - مزیت های دیگری را نیز به همراه داشت.
استفاده از داده ها در سطح بین المللی و همچنین متمایز کردن محتوا به دلیل سیستم موقعیت جغرافیایی
همگام سازی داده ها با Magento به طور خودکار مدیریت کارهای روزانه را تسهیل می کند
بهبود رتبه سئو با افزایش عملکرد و کاهش نرخ پرش
امضای کردن
الگوی معماری میکروسرویس به بسیاری از چالشهای رایج موجود در برنامههای کاربردی یکپارچه و معماریهای سرویسگرا میپردازد. از آنجایی که اجزای اصلی برنامه به ویژگیهای کوچکتر و جداگانهای تقسیم میشوند، برنامههایی که بر اساس این الگوی معماری ساخته شدهاند، عموماً قویتر، مقیاسپذیرتر و قادر به ارائه مداوم هستند.