چگونه یک خطای کوچک به یک خاموشی عظیم منجر شد که اینترنت را خاموش کرد

یک خاموشی بزرگ سرویس ابری آمازون (AWS) در روز دوشنبه که موجب قطع برخی از محبوب‌ترین برنامه‌ها و خدمات جهان شد، همه با یک خطای نرم‌افزاری شروع شد.

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

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

«ما بابت تأثیری که این رویداد بر مشتریان ما گذاشت، عذرخواهی می‌کنیم»، آمازون در بیانیه‌ای در وب‌سایت AWS گفت. «ما می‌دانیم این رویداد تأثیر زیادی بر بسیاری از مشتریان داشته است. ما همه تلاش خود را خواهیم کرد تا از این رویداد درس بگیریم و در دسترس بودن خدمات خود را هر چه بیشتر بهبود بخشیم.»

در سطح کلان، مشکل از رقابت دو برنامه برای نوشتن همزمان یک ورودی DNS – در واقع یک رکورد در دفتر تلفن اینترنت – ناشی شد که منجر به ایجاد یک ورودی خالی شد. این موضوع باعث بهم ریختگی چندین سرویس AWS شد.

«استعاره دفتر تلفن بسیار مناسب است، زیرا اشخاص در خط دیگر هستند، اما اگر ندانید چگونه به آن‌ها برسید، مشکل دارید»، آنجیلیک مدینا، سرپرست خدمات نظارت بر شبکه Cisco’s ThousandEyes اینترنتی، به CNN گفت. «و آن دفتر تلفن عملاً ناپدید شده است.»

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

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

«نتیجه… صفحه‌ای خالی (یا صفحه‌ای خط خورده) در دفتر آزمایشگاه است، زمانی که معلم بیاید و آن را چک کند»، او نوشت.

این «صفحه خالی» باعث سقوط پایگاه داده DynamoDB آمازون شد و اثر زنجیره‌ای ایجاد کرد که بر سایر سرویس‌های AWS مانند EC2، که سرورهای مجازی برای توسعه و استقرار برنامه‌ها ارائه می‌دهد، و تعادل‌کننده بار شبکه، که نیازهای شبکه را مدیریت می‌کند، تاثیر گذاشت. هنگامی که DynamoDB مجدداً آنلاین شد، EC2 سعی کرد همه سرورهای خود را همزمان مجدداً راه‌اندازی کند و نتوانست سریع به آن‌ها پاسخ دهد.

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

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

«خاموشی‌های بزرگ مانند این، اتفاق می‌افتند. نمی‌توان کاری انجام داد تا از آن جلوگیری کرد، درست مانند اینکه مردم بیمار شوند»، گوپتا با CNN تلفنی گفت. «اما فکر می‌کنم واکنش شرکت به خاموشی‌ها و اطلاع‌رسانی به مشتریان واقعاً، واقعاً کلید موفقیت است.