معرفی Microserviceها
1398/01/26 17:20 , میلاد صاحب نظر

معرفی Microserviceها

یکی از تازه‌ترین تکنولوژی‌هایی که در صنعت توسعه وب سر و صدای بسیاری کرده است، Microserviceها هستند. قبل از اینکه فکر کنید Microservice نیز فقط یک تب زودگذر است، باید بدانید پروژه‌هایی که تا الآن از Microserviceها استفاده کرده‌اند، موفقیت خیلی زیادی داشته‌اند.

این موفقیت‌ها باعث شد تا کم‌کم همه متوجه این تکنولوژی جدید بشوند و الآن تا حد زیادی معروف شده است.

شهرت این تکنولوژی به این معنا است که باید آب دستتان است زمین بگذارید و به استفاده از آن بپردازید؟ نه دقیقه. معماری برنامه شما چیزی نیست که به این راحتی بتواند تغییر کند. به همین دلیل این پست نوشته شد.

در این پست Microserviceها را معرفی می‌کنیم، نکات مثبت و منفی را لیست می‌کنیم و در آخر، چند فریمورک و ابزار معرفی می‌کنیم که به شما کمک می‌کنند راحت‌تر از Microserviceها استفاده کنید. در پایان این پست آماده خواهید بود که تصمیم بگیرید آیا از Microserviceها استفاده بکنید یا خیر.

از معماری سرویس گرا (SOA) تا Microserviceها

از معماری سرویس گرا (SOA) تا Microserviceها

برای درک Microserviceها، باید به دهه ۱۹۸۰ میلادی بازگردیم. زمانی که یک نوع معماری نرم‌افزار جدید ظهور کرد. این معماری برای خدمات یا سرویس‌های توزیع کاربرد داشت.

در SOA اعضای مجزای برنامه، از طریق پروتکل ارتباطات در یک شبکه، خدماتی برای اعضای دیگر فراهم می‌کردند. به هر حال، SOA زیاد به ماژولار کردن برنامه مربوط نمی‌شود، بلکه بیشتر به تشکیل یک برنامه با کنار هم قرار دادن اعضای توزیع شده، اعضای مجزا از هم و اعضای نرم‌افزار به کار گرفته شده مربوط می‌شود.

به زمان حال برمی‌گردیم. Microserviceها برنامه‌های پیچیده را به تعداد زیادی فرآیندهای کوچک و مستقل تجزیه می‌کنند، که با استفاده از HTTP، REST یا APIهای Thrift با یکدیگر ارتباط برقرار می‌کنند. تجزیه یک برنامه به سرویس‌های کوچک‌تر متفاوت چند مزیت دارد:

  • ماژولار کردن را بهبود می‌بخشد.

  • درک، توسعه و تست برنامه را آسان‌تر می‌کند.

  • برنامه‌هایی که با Microserviceها ساخته می‌شوند نسبت به فرسایش معماری مقاوم‌تر هستند، که این امر به فاصله بین معماری پیاده‌سازی طرح‌ریزی شده و معماری واقعی سیستم نرم‌افزار اشاره می‌کند.

  • با فراهم کردن امکان توسعه، پیاده‌سازی و متفاوت سازی میزان انجام کار برای تیم‌های خودمختار کوچک، عملیات توسعه نرم‌افزار موازی‌سازی می‌شود.

  • اجازه می‌دهد که معماری یک سرویس به خصوص در طول اصلاحات و بازنویسی‌ها، دائماً ظاهر شود.

  • معماری‌های مبتنی بر Microservice امکان ارائه و پیاده‌سازی مداوم را فراهم می‌کنند.

Microserviceها در برابر معماری برنامه Monolithic

اگرچه معماری monolothic قدیمی در گذشته خیلی خوب عمل کرد، اما در دنیای امروز، که برنامه‌ها باید هر از گاهی به‌روزرسانی شوند و ۹۹.۹۹ درصد اوقات باید آماده به خدمات‌رسانی باشند، این معماری دیگر کارایی ندارد.

این که گاهی محض تنوع کل یک برنامه را در یک ماژول تست، بازسازی و پیاده‌سازی مجدد کنیم دیگر روش خوب و کارآمدی نیست. یک نقطه ضعف دیگر این است که، چون همه چیز در یک فرآیند اجرا می‌شود، یک Exception کنترل نشده، می‌تواند کل سیستم monolothic را نابود کند (شکل ۱).

معماری monolothic در برابر معماری Microservice

شکل ۱: معماری monolothic در برابر معماری Microservice

نقاط ضعف Microserviceها

حالا که حسابی در مورد سیستم‌های monolothic بد گفتیم، باید همچنین اشاره کنیم که Microserviceها نیز مشکلات خاص خودشان را دارند. اگرچه آن‌ها مشکلات زیادی که در پارادایم monolothic‌ قدیمی وجود داشتند را برطرف می‌کنند، اما همچنین مشکلات جدیدی هم به وجود می‌آورند که باید در نظر بگیریم.

Microserviceها به دلیل وجود تعداد زیادی بخش متغیر، در مقایسه با معماری monolothic پیچیدگی خیلی زیادی دارند. برای پیاده‌سازی موفق و نگهداری و بررسی یک برنامه Microservice در مرحله تولید، به مهارت‌های توسعه فوق‌العاده‌ای نیاز است.

اگرچه یک برنامه monolothic می‌تواند در یک دسته سرور اپلیکیشن پیاده‌سازی شود تا احتمال بروز خطا کاهش و انعطاف‌پذیری آن افزایش یابد، اما هر سرویس در Microserviceها به دسته خودش نیاز دارد. افزودن ویژگی‌هایی همچون متعادل‌سازی بارگذاری (Load) برای این دسته‌ها نیز کار ساده‌ای نیست.

سیستم‌های Microservice ذاتاً توزیعی هستند و ساختن سیستم‌های توزیعی کار مشکلی است. چیزی که زمانی یک فراخوانی متد ساده بود، الآن توسط یک فراخوانی رویه راه دور (به نام REST) یا پیام ناهمگام جایگزین می‌شود. توسعه‌دهندگان باید مشکلاتی همچون تأخیر شبکه بین سرویس‌ها، تحمل خطا، نسخه بندی و غیره را در نظر بگیرند.

حتی با اینکه تست سرویس‌ها به خودی خود آسان است، اما تست‌های end to end مشکل‌تر از قبل شده‌اند. اگر اشتباهی پیش بیاید، فهمیدن اینکه در کجای زنجیره یک exception رخ داده است کار مشکلی است، چون جریان کد الآن خیلی پیچیده‌تر است.

فریمورک‌ها و ابزارهای Microservice

تعدادی فریمورک و ابزار وجود دارند که می‌توانند به شما کمک کنند تا فرآیند توسعه Microserviceها را آسان‌تر انجام دهید. چند مورد از آن‌ها عبارت‌اند از:

  • Spring Boot: یک فریمورک برای ایجاد برنامه‌های Spring در سطح تولید است که فقط می‌توانید آن‌ها را اجرا کنید.

  • Dropwizard: یک فریمورک جاوا برای توسعه سرویس‌های وب RESTful کارآمد و کاربر پسند است.

  • Jersey: یک فریمورک سرویس وب RESTful متن باز برای توسعه سرویس‌های وب RESTful در جاوا می‌باشد که از APIهای JAX-RS پشتیبانی می‌کند و به عنوان یک پیاده ساز رفرنس JAX-RS عمل می‌کند.

  • Wiremock: یک کتابخانه انعطاف‌پذیر برای تحلیل سرویس‌های وب است. این کتابخانه می‌تواند پاسخ بازگشت داده شده توسط HTTP API (زمانی که یک درخواست خاص دریافت می‌کند) را تنظیم کند. همچنین برای تست Microserviceها نیز به کار می‌رود.

  • Docker: یک پروژه متن باز است که امکان ایجاد، پیاده‌سازی و اجرای برنامه‌ها با استفاده از containerها را فراهم می‌کند. با استفاده از این containerها، توسعه‌دهندگان می‌توانند یک برنامه را به عنوان یک بسته اجرا کنند. این امر امکانی فراهم می‌کند تا بتوانید کتابخانه‌ها و دیگر وابستگی‌ها در یک بسته را انتقال دهید.

  • Hystrix: یک کتابخانه جاوا fault tolerance است. این ابزار طراحی شده است تا نقاط دسترسی به سرویس‌ها، سیستم‌ها و کتابخانه‌های سوم شخص راه دور را در یک محیط توزیعی (مانند Microserviceها) از هم مجزا کند. این کتابخانه، با ایزوله سازی سرویس‌های در حال شکست و جلوگیری از منتشر شدن اثر خطاها کارایی کل سیستم را افزایش می‌دهد.

نگاه به آینده

حالا که فهمیدیم Microserviceها چه هستند می‌توانید تصمیم بگیرید که پروژه‌های آینده خود را بر اساس این تکنولوژی انجام دهید یا خیر.

منبع: developer

 مطالب مرتبط

 مقدمه ای بر زبان برنامه نویسی #C و پلتفرم NET Framework.
 مقدمه ای بر NLog در هسته ASP.NET
 طبقه بندی زبان های برنامه نویسی
۷ زبان توسعه بازی Unity برای آموختن: کدام بهترین است؟
 LINQ(زبان جستجوی یکپارچه)
برنامه نویسی شیءگرا چیست؟

از آخرین دوره های آموزشی و تخفیف ها مطلع شوید

با تکمیل فرم زیر ، از اخبار و اطلاعات به روز برنامه نویسی و تکنولوژی عقب نمانید

آخرین مطالب

آموزش جامع SQL Server (جلسه ۱۲)
آموزش جامع SQL Server (جلسه ۱۲)

دستور UPDATE در SQL Server برای تغییر داده‌های موجود در یک جدول، از دستور UPDATE به شکل زیر استفاده ...

آموزش جامع SQL Server (جلسه ۱۵)
آموزش جامع SQL Server (جلسه ۱۵)

دستور DROP TABLE در SQL Server گاهی، لازم است یک جدول که دیگر استفاده‌ای ندارد را حذف کنید. برای ...

آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)
آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)

بخش اول از آخرین مبحث دوره جامع آموزش SQL Server در جلسه قبلی بررسی شد. این مبحث که ...

آخرین دیدگاه ها

دیدگاه خود را درباره این پست بنویسید

فرم ارسال نظرات