استرایپ بازیابی خودکار شاردهای MongoDB را با مدل گرافی پیاده‌سازی کرد

تیم مهندسی استرایپ زیرساخت دیتابیس‌های جهانی را به‌صورت گراف مدل‌سازی کرده و با ترکیب الگوریتم‌های جستجوی گراف و ماشین‌های حالت، برنامه‌های رفع خطا را به‌طور خودکار محاسبه و اجرا می‌کند. نتیجه کاهش حدود 30٪ در هشدارهای پیجر، معادل نزدیک به 200 پیج کمتر در سال و حذف تقریباً 12 روز وضعیت ناسالم شاردها در هر سال بوده است.

  • کاهش هشدارها و پیج‌ها: ~30٪
  • کاهش دوره‌های ناسالم شاردها: ~12 روز در سال
  • پویایی در سازگاری با توپولوژی‌های مختلف شارد

چالش‌های روش قبلی و انگیزه تغییر

نسخهٔ قبلی سیستم مبتنی بر توالی‌های ثابت کار و پلاگین‌ها بود. وابستگی‌های شکننده، منطق وابسته به چیدمان مشخص و حالت‌های میانی بدون رسیدگی باعث می‌شد بسیاری از سناریوهای ترکیبی نیاز به دخالت دستی داشته باشند. در یک بازهٔ شش ماهه، کنترل‌پلین تیم 124 بار به‌خاطر شاردهای نادرست پیکربندی شده و 32 بار برای سناریوهای تک‌نودِ از کار افتاده اپراتورها را پیج کرد. این رخدادها عملیات حیاتی مثل ساخت ایندکس و نگهداری برنامه‌ریزی‌شده را معمولاً هر بار حدود یک ساعت مسدود می‌کردند.

چطور مدل گرافی کار می‌کند

در مدل جدید هر گره نمایندهٔ یک مؤلفهٔ زیرساختی است، یال‌ها رابطهٔ میان مؤلفه‌ها را نمایش می‌دهند و صفت‌های گره وضعیت فعلی را توصیف می‌کنند. به‌جای توزیع منطق بازیابی در چندین جریان کاری ثابت، سیستم از پیمایش گراف برای یافتن مسیرهای بازیابی معتبر استفاده می‌کند. این رویکرد اجازه می‌دهد همان منطق به‌صورت پویا با چیدمان‌های مختلف شارد و تغییرات زیرساخت سازگار شود.

نمودار گراف زیرساخت MongoDB استرایپ

از BFS تا دایکسترا: انتخاب مسیرهای کم‌هزینه‌تر

ابتدا از جستجوی پهنا-اول (BFS) برای یافتن مسیرهای ممکن استفاده می‌شد، اما برای اولویت‌بندی برنامه‌های بازیابی کم‌هزینه‌تر و کاهش عملیات غیرضروری به الگوریتم دایکسترا (Dijkstra) گذار کردند. دایکسترا امکان بررسی مسیرها تا نقاط قابل دسترس را فراهم می‌کند و در شرایطی که مسیر کامل وجود ندارد، مسیر منتهی به کم‌ترین وضعیت نادرست‌پیکربندی‌شده را بازمی‌گرداند؛ بدین ترتیب «رفع جزئی» قابل برنامه‌ریزی می‌شود و از اعمال تغییرات پرهزینه جلوگیری می‌گردد.

قواعد ترکیب‌پذیر و ماشین‌های حالت

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

ماشین حالت و برنامه‌ریز مسیریابی در سیستم استرایپ

گسترش‌پذیری فراتر از بازیابی

این چارچوب تنها محدود به شفا‌دهی واکنشی نیست؛ تیم استرایپ قصد دارد آن را برای موارد زیر نیز به‌کار گیرد:

  • خودکارسازی تغییرات توپولوژی و انتقال بار
  • هماهنگی استقرارهای آبی-سبز
  • برنامه‌ریزی و اجرای نگهداری‌های از پیش تعیین‌شده

ترکیب مدل‌سازی ماشین حالت، برنامه‌ریزی مبتنی بر شبیه‌سازی و مسیریابی زمان اجرا می‌تواند جایگزین مجموعهٔ گسترده و دست‌وپاگیر runbookهای خاص شود.

زمینهٔ گسترده‌تر صنعت

استرایپ تنها نیست؛ شرکت‌های دیگری نیز روی خودکارسازی عملیات زیرساخت سرمایه‌گذاری می‌کنند. اوبر نمونه‌هایی از پلتفرم‌های اعلامی و خودشفا منتشر کرده و متا ابزارهایی برای تسریع پاسخ به حوادث ارائه داده است. برای مطالعهٔ بیشتر می‌توان به بلاگ مهندسی استرایپ و منابع عمومی مهندسی مانند صفحات Uber Engineering و Meta Engineering مراجعه کرد.

پیام برای تیم‌های دواپس و مهندسی پلتفرم

در عملیات مقیاس‌پذیر دیتابیس‌ها، تنها رفع خطا کافی نیست؛ مدیریت مداوم سلامت ناوگان بدون فرسودگی تیم‌های شیفت اهمیت دارد. الگوی گرافی همراه با ماشین حالت که استرایپ پیاده‌سازی کرده، روشی عملیاتی برای کاهش بار عملیاتی و افزایش پایداری ارائه می‌دهد. نکات کاربردی برای تیم‌ها:

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

منابع و مراجع: مطلب تیم مهندسی استرایپ در بلاگ استرایپ و صفحات مرجع الگوریتم‌ها در Wikipedia.