
آموزش ساختن میکروسرویس های واکنش گر Reactive Microservices
آموزش ساختن میکروسرویس های واکنش گر Reactive Microservices یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی ساخت میکروسرویس های واکنش گر (Reactive Microservices) است که با نام اصلی Building Reactive Microservices از شرکت Pluralsight منتشر شده است.
میکروسرویس های واکنش گر (Reactive Microservices) چیست؟
یکی از اصول کلیدی پیاده سازی یک معماری مبتنی بر مایکروسرویس ها اصل تقسیم و غلبه می باشد. اصل تقسیم و غلبه و یا همان divide and conquer به معنی تجزیه کردن یک سیستم به زیر سیستم های مجزا و ایزوله شده است که بر اساس پروتکل های خوش تعریف با یکدیگر ارتباط برقرار می کنند. دقت کنید که ایزولاسیون و یا همان isolation یک پیش نیاز برای به دست آوردن دو خاصیت بسیار مهم مقاوم بودن (resiliency) و ارتجاع پذیری (elasticity) می باشد.

همچنین برای به دست آوردن isolation نیاز به ارتباطات غیر همزمان و یا asynchronous communication داریم تا سرویس ها بتوانند از یکدیگر decouple بشوند. این decouple شدن هم از لحاظ زمانی و هم از لحاظ فضایی بسیار مهم است. با decouple کردن مایکروسرویس ها از لحاظ زمانی به همروندی و یا concurrency دست خواهیم یافت و با decouple کردن از لحاظ فضایی به توزیع و یا همان distribution و همچنین قابلیت تحرک پذیری و یا mobility دست خواهیم یافت. قابلیت تحرک پذیری به این معنی است که میتوان سرویس ها را در سیستم جابجا کرد.
اصول طراحی سیستمهای Reactive با معماری میکروسرویس
طراحی سیستمهای Reactive بر ساخت برنامههایی تمرکز دارد که بتوانند در برابر تغییرات بار کاری، تأخیرها و اختلالات واکنش مناسبی نشان دهند. در معماری میکروسرویسها، این موضوع اهمیت ویژهای دارد؛ زیرا اجزای سیستم از طریق ارتباطات توزیعشده با یکدیگر تعامل میکنند و ممکن است هر سرویس با شرایط اجرایی متفاوتی روبهرو شود. طراحی صحیح مرزهای سرویسها و توجه به رفتار سیستم در زمان بروز مشکل، از بخشهای مهم ایجاد یک معماری قابلاتکا محسوب میشود.
برای ساخت میکروسرویسهای واکنشگرا، لازم است به جای تمرکز صرف بر عملکرد هر سرویس بهصورت جداگانه، رفتار کل سیستم نیز بررسی شود. تأخیر در پاسخ یک سرویس میتواند بر بخشهای وابسته تأثیر بگذارد و منابع را برای مدت بیشتری درگیر کند. درک این ارتباطها به توسعهدهندگان کمک میکند معماری را طوری طراحی کنند که در شرایط متغیر، پاسخگویی و پایداری سیستم حفظ شود و خرابی یک جزء لزوماً به اختلال گسترده در کل برنامه منجر نشود.
مدیریت خطا و افزایش تابآوری میکروسرویسها
در سیستمهای توزیعشده، خطاهای شبکه و از دسترس خارج شدن سرویسها از شرایطی هستند که باید برای آنها برنامهریزی شود. اگر یک سرویس نتواند پاسخ مناسب دریافت کند، رفتار سرویس فراخواننده میتواند بر وضعیت سایر اجزای برنامه اثر بگذارد. طراحی تابآور به معنای پیشبینی چنین شرایطی و مشخص کردن واکنش مناسب سیستم است. این رویکرد کمک میکند مشکلات موقت بهسادگی به اختلالهای زنجیرهای تبدیل نشوند.
برای مدیریت مؤثر خطاها، باید وابستگیهای میان سرویسها و پیامدهای شکست هر درخواست بهدقت بررسی شوند. روشهایی مانند تعیین محدودیت زمانی برای درخواستها، کنترل تلاشهای مجدد و جلوگیری از ادامه درخواستهای ناموفق میتوانند در طراحی سیستمهای توزیعشده نقش داشته باشند؛ البته انتخاب هر روش به شرایط پروژه بستگی دارد. شناخت این مفاهیم به توسعهدهندگان کمک میکند رفتار سیستم را در زمان اختلال پیشبینی کنند و برای حفظ کیفیت سرویس تصمیمهای فنی مناسبتری بگیرند.
مدیریت بار کاری و پاسخگویی در سیستمهای Reactive
یکی از دغدغههای مهم در سیستمهای واکنشگرا، حفظ پاسخگویی در شرایطی است که تعداد درخواستها یا میزان کار پردازشی تغییر میکند. اگر یک سرویس نتواند بار ورودی را مدیریت کند، صف درخواستها ممکن است افزایش پیدا کند و زمان پاسخگویی سایر بخشها نیز تحت تأثیر قرار گیرد. به همین دلیل، طراحی یک سیستم Reactive به توجه همزمان به ظرفیت پردازش، مدیریت منابع و نحوه تعامل میان سرویسها نیاز دارد.
در معماری میکروسرویسها، هر سرویس ممکن است الگوی مصرف منابع متفاوتی داشته باشد. بررسی این تفاوتها میتواند به انتخاب روش مناسب برای کنترل بار و جلوگیری از اشباع منابع کمک کند. همچنین باید مشخص باشد سیستم در زمان افزایش فشار چگونه رفتار میکند و چه محدودیتهایی برای پردازش درخواستها وجود دارد. آشنایی با این ملاحظات، دید عمیقتری نسبت به طراحی برنامههایی ایجاد میکند که بتوانند در برابر تغییر شرایط اجرا واکنش مناسبی نشان دهند.
این آموزش برای چه توسعهدهندگانی مناسب است؟
این آموزش برای توسعهدهندگانی مناسب است که با مفاهیم پایه برنامهنویسی و ساختار نرمافزار آشنا هستند و میخواهند درک پیشرفتهتری از طراحی میکروسرویسهای واکنشگرا به دست آورند. سطح پیشرفته دوره نشان میدهد موضوع آن بیشتر برای افرادی مطرح است که با چالشهای معماری سیستمهای نرمافزاری آشنایی دارند و میخواهند درباره رفتار سیستم در شرایط مختلف، ارتباط میان سرویسها و طراحی ساختارهای مقاومتر مطالعه کنند.
اگر در پروژههای خود با برنامههای توزیعشده سروکار دارید، بررسی اصول Reactive Microservices میتواند به شما کمک کند تصمیمهای معماری را با توجه بیشتری به پایداری و پاسخگویی سیستم اتخاذ کنید. این دانش همچنین برای افرادی مفید است که مسئولیت طراحی یا بازبینی ساختار سرویسها را بر عهده دارند و میخواهند تأثیر وابستگیها، اختلالها و تغییر بار کاری را بر عملکرد کلی برنامه بهتر درک کنند.
سرفصل مطالب آموزش ویدئویی ساخت میکروسرویس های واکنش گر (Reactive Microservices)
فصل اول
:
مقدمه دوره آموزشی
- مقدمه دوره آموزشی
فصل دوم: طراحی کردن مکروسرویس های
Failure Tolerant
- مقدمه
- بررسی Resilience در معماری های ری اکتیو
- بررسی Reactive Manifesto - Responsive
- بررسی Reactive Manifesto - Resilient
- بررسی Reactive Manifesto - Elastic
- بررسی Reactive Manifesto - Message Driven
فصل سوم: جلوگیری کردن از
Duplication
از طریق عملیات
Idempotent
- مقدمه
- به دست آوردن Resilience و عملیات Idempotent
- ساختن Document Service
- ساختن Translation Service
- ترکیب کردن سرویس ها با یکدیگر
فصل چهارم: انجام
Auditing
با استفاده از
Event Sourcing
- مقدمه
- بررسی Event Sourcing
- طراحی کردن Message Broker
- نصب کردن و اجرا کردن Docker
- پیاده سازی Consumer ها و Publisher ها
- پیاده سازی عملی معماری Message Driven
فصل پنجم: مدیریت کردن
Failure
در تراکنش های توزیع شده (
Distributed Transaction
ها)
- مقدمه
- بررسی SAGA ها
- طراحی کردن یک State Machine
- بررسی کردن Notification های از دست رفته
- انجام عملیات Polling برای Notification های از دست رفته
- مدل کردن Request های Reject شده
- پیاده سازی Rejection Handler ها
- جمع بندی







