بازگردانی دستی (rollback) یک crash در پایگاهدادهی یک شرکت لجستیک، یکبار ۶ ساعت طول کشید. بعد از آن یک سامانهی failover ساختیم که همین کار را زیر ۴ دقیقه تمام میکند. تا امروز ۴۷ حادثهی production را مدیریت کردهایم: باجافزار، نشت حافظه، خرابی دیسک، تنظیم غلط DNS. هر ماه drill اجرا میشود؛ تصمیمهای اصلی هر حادثه در ۶۰ ثانیهی اول گرفته و ثبت میشوند.
برای ما سرعت بازیابی مهمتر از حجم کدیست که نوشتهایم.
۴۷
حادثه مدیریتشده
از ۱۴۰۲ تا امروز
۳:۴۲
میانگین زمان بازیابی
در ۱۲ ماه اخیر
۱,۲۴۷
سیستم تحت پایش
در ۶ سازمان فعال
۲۴/۷
پایش فعال
با on-call ثبتشده
چرا ساخته شد
سال ۱۴۰۱، تیم ما ۶ ساعت پای rollback دستی یک crash در پایگاهدادهی یک شرکت لجستیک نشست؛ همان شب ۲۰۰ کامیون بدون مسیر ماندند. همان شب تصمیم گرفتیم سامانهای بسازیم که failover را زیر ۴ دقیقه انجام دهد — نه روی اسلاید ارائه، در production واقعی.
شروع عملیات: بهمن ۱۴۰۱
اصول عملیاتی
تشخیص پیش از توقف
هشدار باید دستکم ۶۰ ثانیه پیش از فروپاشی کامل به دستمان برسد؛ بر اساس رفتار واقعی سیستم، نه فقط عبور از آستانه CPU.
جداسازی بدون توقف کل
بخش آسیبدیده ظرف ۹۰ ثانیه از ترافیک production جدا میشود؛ بقیه سرویسها online میمانند.
بازیابی با یکپارچگی داده
هر بازیابی با checksum روی صد درصد رکوردها تأیید میشود؛ RPO هیچوقت از ۹۰ ثانیه بیشتر نمیشود.
ثبت تصمیم در ۶۰ ثانیه اول
هر حادثه یک timeline با timestamp میلیثانیهای دارد؛ گزارش RCA حداکثر ظرف ۲۴ ساعت تحویل داده میشود.
مدل عملیاتی در لحظه حادثه
تشخیص و هشدار
سامانهی پیشبین ناهنجاری را ثبت میکند، on-call ظرف ۴۵ ثانیه paginate میشود و تصمیم اولیه در timeline حادثه ثبت میشود.
جداسازی و مهار
ترافیک به replica سالم هدایت میشود، بخش آلوده از خوشه جدا میشود و دامنه آسیب محدود میماند.
بازیابی production
بسته به نوع حادثه snapshot یا failover اجرا میشود، یکپارچگی داده اعتبارسنجی و سرویس اصلی دوباره online میشود.
بازبینی و RCA
گزارش ریشهیابی همراه با timeline کامل تحویل داده میشود و drill بعدی بر اساس یافتهها بهروزرسانی میشود.