همانطور که میدانیم، معماری میکروسرویس (Microservices Architecture) رویکردی در توسعه نرمافزار است که در آن یک برنامه به مجموعهای از سرویسهای کوچک و مستقل تقسیم میشود.
در معماری میکروسرویس هر سرویس بهصورت جداگانه پیادهسازی میشود و وظیفه مشخصی را بر عهده دارد.
این سرویسها بهطور مستقل قابل توسعه، پیادهسازی و مدیریت هستند و از طریق رابطهای سبک مثل HTTP یا پیامرسانهای غیرهمزمان با یکدیگر ارتباط برقرار میکنند.
معماری میکروسرویس امکان توسعه سریعتر، مقیاسپذیری بهتر و انعطافپذیری بالاتری را در پاسخ به تغییرات فراهم میکند.
معماری میکروسرویس اگر به درستی پیاده سازی نشود بدون شک مشکلات بسیار زیادی میتواند ایجاد کند. از همین رو برای این معماری الگوهای طراحی متفاوتی برای بخش های مختلف آن موجود می باشد. در این مطلب ما قصد داریم با الگوی طراحی ساگا(Sage) در معماری میکروسرویس آشنا شویم.
ساگا یک الگوی طراحی هست که میتواند هماهنگی بین چندین تغییر در حالت سیستم را بدون نیاز به قفل کردن منابع برای مدت زمان طولانی انجام دهد. این الگو بر اساس اصول تقسیم یک تراکنش طولانی به تراکنشهای کوچکتر که به صورت مستقل قابل اجرا هستند عمل میکند.
الگوی ساگا یک الگوی طراحی غیرهمزمان برای مدیریت تراکنشها در مجموعهای از میکروسرویسها است.
دو نوع اصلی از ساگا وجود دارد: ساگای مبتنی بر Choreography و ساگای مبتنی بر Orchestrator.
در ادامه به بررسی هر کدوم می پردازیم:
در الگوی ساگای مبتنی بر Orchestrator، یک میکروسرویس نقش هماهنگکننده را بر عهده دارد و کار انتقال تراکنشها به دیگر میکروسرویسها را انجام میدهد.
در این حالت در صورت بروز خطا در یک تراکنش، هماهنگکننده از میکروسرویس مربوطه درخواست میکند تا تراکنش را برگشت دهد.
به عنوان مثال، اگر ما در حال رزرو بلیت هواپیما باشیم، ابتدا سرویس رزرو پرواز را صدا میزنیم. اگر این سرویس با خطا مواجه شود، Orchestrator تراکنش را به عنوان لغو شده علامتگذاری میکند. اگر رزرو پرواز موفق باشد، Orchestrator درخواست رزرو هتل را میفرستد و اگر این کار موفق شود، تراکنش به پایان میرسد. اما اگر رزرو هتل شکست بخورد، Orchestrator پیامی برای لغو رزرو به سرویس رزرو پرواز میفرستد تا تراکنش به حالت سازگار باقی بماند.
در الگوی ساگای مبتنی بر Choreography، از یک پیامرسان غیرهمزمان برای ارتباط بین میکروسرویسها استفاده میشود. در این روش، همه میکروسرویسها به رویدادهایی که توسط دیگر میکروسرویسها ایجاد میشود واکنش نشان میدهند.
برای مثال:
این فرآیند مانند این است که شما در یک تقاطع شلوغ در حال حرکت هستید، به اطراف نگاه میکنید و با حرکت در بین جمعیت مانند یک رقص از تقاطع عبور میکنید. به همین دلیل به آن Choreography (رقص دسته جمعی) گفته میشود.
نکته مهم این است که ساگا به شما اجازه میده تا از شکستهای فرآیند تجاری جلوگیری کنید، نه شکستهای فنی.
به عنوان مثال، اگر مشتری در تلاش برای پرداخت باشد اما موجودی کافی نداشته باشد، ساگا باید این خطا را مدیریت کند. از سوی دیگر، اگر درگاه پرداخت زمانسنجی شود یا خطای ۵۰۰ بدهد، این یک خطای فنی است که باید به صورت جداگانه مدیریت شود.
اگر این مقاله برای شما جذاب بود خوشحال میشم از قسمت نظرات، حس خودتون یا نکته ای که برای شما قابل بحث هست رو برای ما بفرستید :)
برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *
ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *
هنوز برای این مطلب نظری ارسال نشده است!