گاه‌شمار رنج‌های مکرر؛ فیلترینگ چطور تو محصول حادثه آفرید

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

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

حالا چه اتفاقی میفته اگه شرکت ارتباطات زیرساخت تصمیم بگیره محدودیت‌های سلیقه‌ایش روی اینترنت اعمال کنه؟ تو روزهای اخیر این اتفاق به شکل گسترده افتاد و ما توی بخش رابط کاربری شبکه‌ توزیع محتوا با مشکلات تازه و بیهوده درگیر شدیم.

لیست TLD ها که فیلتر شد

ما برای تشخیص درست فرمت دامنه‌ها و اینکه آیا زیردامنه هستن یا نه از دو تا لیست متن باز و تجزیه کردن‌شون استفاده می‌کنیم. قبلا راجع به تجزیه کردن یکی از این لیست‌ها با Golang مطلبی نوشتم.

این تشخیص بهمون کمک می‌کنه که nameserver های دامنه رو درست پیدا کنیم و همچنین پلنش رو درست تنظیم کنیم. اگه این لیست‌ها نباشن شما اصلا نمی‌تونین دامنه جدیدی تو پنل ثبت کنین.

حالا کاربر آمریکایی شما از سرعت سایت‌تون ناراضیه و شما قصد دارین از شبکه توزیع محتوا استفاده کنید اما این دو تا لیست فیلتر شدن، زمان کش شدن‌شون هم منقضی شده و ما برای دریافت مجددشون مشکل داریم. این یعنی حادثه اول.

نمیشه نسخه جدید داد اما باید نسخه جدید داد

ما هیچ‌وقت کد روی پروداکشن رو مستقیم عوض نمی‌کنیم و برای هات‌فیکس‌ها از فرایندی از پیش تعیین شده استفاده می‌کنیم. فرایندی که اینجا توضیحش دادم. حالا با فیلتر شدن لیست TLD ها مجبور بودیم تو شرایطی که کسی توان روحی و جسمی کار کردن نداشت برای انتشار نسخه هات‌فیکس آماده بشیم و اینجا بود که با حادثه دوم روبه‌رو شدیم. امکان دریافت Image ها از داکر وجود نداشت چرا که شبکه رو با اختلال عجیبی مواجه کرده بودن.

بنابراین باید فرایند و روش درست رو زیرپا میذاشتیم. باید تو پادهای مختلف و به شکل دستی بخشی از کدمون رو اصلاح می‌کردیم. کاری که می‌تونست از بروز حادثه دوم جلوگیری کنه و همزمان حادثه اول رو حل کنه. به هر حال تو آمریکا یکی هست که منتظر دیدن گربه‌های ایرانیه.

حادثه پیش اومده بعد از بررسی چند راه حل از جمله پر کردن دوباره کش، تغییر آدرس لیست‌ها به جایی که هنوز فیلتر نیست (و پذیرفتن خطر آپدیت نبودن‌شون) و انتشار ناموفق یه نسخه تو کمتر از دو ساعت برطرف شد اما رنج‌های مکرر ادامه داشتن.

هشدارها دیگه ارسال نمی‌شن

ما برای ارتباط درون‌سازمانی از زوهو استفاده می‌کنیم که چند وقتی هست بیشتر سرویس‌هاش روی بیشتر ارائه‌دهنده‌های اینترنت فیلتر شدن اما خوش‌شانس بودیم که Messaging API اش از زیر دستشون رد شده بود و می‌تونستیم ازش واسه ارسال پیام‌های خودکار استفاده کنیم. مثلا وقتی یکی از صف‌های پردازشی‌مون کند می‌شدن یا زمانی که صدور گواهی‌نامه رایگان SSL برای کاربرامون با مشکل مواجه می‌شد.

این هشدارها بهمون کمک می‌کردن مسائل و مشکلات رو قبل از بزرگ شدن پیدا کنیم و نذاریم دامنه تاثیرگذاریش زیاد بشه و کاربرا اذیت بشن. حالا اما هیچ چیزی از زیر دستشون رد نشده و ما تو ارسال و در نتیجه دریافت این هشدارها با مشکل مواجهیم. فیلترینگ اینجا مستقیما ما رو وارد حادثه نکرده اما کیفیت کار و پاسخ‌دهی‌مون رو تا حد زیادی کم کرده. حالا تا پیاده کردن راه جایگزین این خطاها رو هم به شکل دستی مدیریت می‌کنیم.

کاربرا زیاد شدن و ما فریز شدیم

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

تو این حادثه که خوشبختانه نمود بیرونی نداشت ما باز هم مجبور بودیم کارهای خودکار رو به مدت یکی دو روز به شکل دستی مدیریت کنیم و اجرای صف‌ها رو تا زمان کاهش پیک مصرف به تعویق بندازیم. بعد باید ریسکی که تو روزهای اول واسمون خیلی سنگین بود و هزینه زیادی داشت رو تو روزهای اخیر می‌پذیرفتیم. برای افزایش تعداد ورکرها نیاز به انتشار نسخه جدید داشتیم و این‌کار که تو شرایط عادی حدود ۵ پنج دقیقه طول می‌کشید با تاخیری نیم‌ساعته به انجام رسید.

این بازی بی‌نهایته

ما محصول‌مون رو برای بقا توسعه می‌دیم. شرایط غیرمنصفانه و تاسف‌بار پیش اومده واسمون هفته‌های پر حادثه‌ای رو به همراه داشته اما ابرها باید زنده بمونن تا گربه‌ها دیده بشن!