بیمقدمه: فصل گرما در پیش است، اخبار گواه اینه که بهبود خاصی در ظرفیت تولید، یا مدیریت توزیع برق کشور اتفاق نیوفتاده، برای اینکه با از دسترس خارج شدن دیتاسنترها، سرویسهامون دچار مشکل نشه، بهتره نگاهی به معماری سلولی و تجربه اسلک بندازیم...
توی معماری سلولی سیستمهای پیچیده به واحدهای مستقل و خودکفا (سلولها) تقسیم میشن. هر سلول میتونه به تنهایی کار کنه و اگر یک سلول دچار مشکل بشه، بقیه سلولها میتونن به کار خودشون ادامه بدن.
یه روز توی اسلک، نمودارهای مانیتورینگ نشون دادن که یکی از Availability Zone (AZ) های AWS در منطقه us-east-1 داره پکتهای زیادی رو از دست میده. این باعث خطا و کندی سرویس برای کاربرها شده بود.
مشکل اصلی اینجا بود که با وجود اینکه اسلک از چند AZ استفاده میکرد، وقتی یک AZ دچار مشکل میشد، کل سرویس تحت تأثیر قرار میگرفت! خب این اصلاً منطقی نیست! مگه نه اینکه هدف استفاده از چند AZ همین هست که اگه یکی به مشکل خورد، بقیه کار رو پیش ببرن؟
در مورد اسلک، هر AZ تبدیل به یک سلول شد. یعنی مجموعهای از سرویسهایی که در یک AZ هستن و میتونن به عنوان یک واحد از سرویس خارج بشن یا به سرویس برگردن.
🎯 اسلک چهار هدف اصلی داشت:
- حذف ترافیک از یک AZ در کمتر از ۵ دقیقه (سرعت)
- حذف ترافیک نباید باعث خطای قابل مشاهده برای کاربر بشه
- خروج و بازگشت ترافیک یک AZ باید تدریجی باشه (مثلاً ۱٪ یا ۱۰٪)
- مکانیزم Drain نباید به AZ مشکلدار وابسته باشه
🧠 استراتژیهای پیادهسازی در اسلک
چرا این بار موفق شدن؟
اسلک قبلاً یک بار تلاش کرده بود این کار رو انجام بده و شکست خورده بود. این بار چند اصل مهم رو رعایت کردن:
- تدریجی بودن (Incrementality): به جای ساخت یک سیستم کاملاً جدید و تغییر یکباره، هر سرویس رو جداگانه و تدریجی تغییر دادن.
- نگاه از پایین به بالا (Bottom-up): با هر تیم سرویس جداگانه کار کردن و راهکار مخصوص اون سرویس رو پیدا کردن.
- به اندازه کافی خوب (Good Enough): پذیرفتن اینکه لازم نیست همه سرویسها یکجا و کامل تغییر کنن.
- رویکرد Roofshot به جای Moonshot: به جای یک حرکت مستقیم و بلندپروازانه، مجموعهای از قدمهای کوچکتر که در هر مرحله ارزش ایجاد میکنه.
- تستهای منظم: هر هفته یک AZ رو drain میکردن و پیشرفت رو اندازه میگرفتن.
⛳️ نتایج:
- الان میتونن یک AZ رو در ۶۰ ثانیه از سرویس خارج کنن
- هزینههای انتقال داده بین AZ کاهش پیدا کرده
- یک مکانیزم blue-green deployment جدید به دست آوردن
- راهکار عمومی برای مقابله با مشکلات محدود به یک AZ دارن
📝 نکتههای کلیدی برای پروژههای زیرساختی بزرگ
>>Click here to continue<<