تاريخ انتهاء الصلاحية 6-4-2021
في يوم 6 أبريل، 2021، فوجئنا بانتهاء صلاحية شهادة بروتوكول أمان طبقة النقل (TLS) لأحرف البدل بصورة غير متوقعة. إنه لأمر مُحرج أن تنتهي صلاحية شهادة، لكننا شعرنا أن من المهم أن نشارك القصة معكم هنا على أمل أن يتعلم الآخرون مما مررنا به وأن يُحسّنوا أنظمتهم. إذا كنتم أنتم أو مؤسستكم تستخدمون نظام مراقبة شهادات، فقد يكون ذلك تذكيرًا جيدًا بضرورة الفحص بحثًا عن الثغرات في تلك الأنظمة.
لقد كانت الشهادة المنتهية صلاحيتها مُستخدمة عبر الكثير من الخدمات الداخلية في Epic - الكثير جدًا منها، في الواقع. وعلى الرغم من بذلنا قصارى جهدنا في مراقبة شهاداتنا لرصد انتهاء صلاحيتها، إلا أننا لم نوفر تغطية كاملة لكل منطقة تُستخدم فيها الشهادات. وقد أفضى انتهاء صلاحية الشهادة ثم تجديدها إلى سلسلة من الأحداث غير المتوقعة التي ساهمت في إطالة مدة تعطل الخدمات. ونسرد في هذا المنشور المزيد من التفاصيل حول ذلك.
فقد تأثرت المكونات الأساسية مثل أنظمة المصادقة والهوية الخاصة بنا، وترتبط تلك الخدمات بالكثير من الخدمات الأخرى عبر كامل أنظمتنا البنائية. وتم رصد التأثيرات التالية أو الإبلاغ عنها:
- فشلت عمليات تسجيل الدخول إلى حساب Epic من أي منتجات تستخدم نموذج المصادقة هذا، وتتضمن Fortnite، أو Rocket League، أو Houseparty، أو Epic Online Services، أو Epic Games Store
- قطع الاتصال من الخدمات أو الألعاب المباشرة من جميع المنصات
- فشلت عمليات شراء العناصر من مشغل Epic Games
- سلوك غير متوقع في مشغل Epic Games من المحتوى حيث لا يقوم بالتحميل في وضع عدم الاتصال ولا يعمل
- لم تكن مواقع الويب الخاصة بالتسويق أو منتجات Epic Games متاحة أو تدنى مستوى أدائها بما في ذلك مواقع Unreal Engine
- العديد من مشكلات الأدوات الداخلية التي تؤثر على قدرة موظفي Epic على حل المشكلات أو إدارتها
يهدُف هذا المنشور إلى تزويدكم بمعلومات تفصيلية حول ما حدث، وما تعلمناه، والخطوات التي سنتخذها مستقبلاً.
ماذا حدث؟
أفضت الأحداث إلى وقوع ثلاث عواقب كبرى:
- تسببت شهادة منتهية الصلاحية في انقطاع الخدمة عبر قطاع كبير من أدوات الإدارة الداخلية والمكالمات الداخلية من خدمة إلى خدمة على الخادم
- حدثت زيادة كبيرة وغير متوقعة في حركة المرور إلى مشغل Epic Games، مما أدى إلى قطع الخدمة عن مشغل Epic Games وميزات توزيع المحتوى
- تم نشر إصدار غير صحيح من موقع الويب الخاص بـ Epic Games Store يشتمل على أصول وبيانات اصطناعية غير صالحة كجزء من عملية التحجيم التلقائي، مما أدى إلى تدهور مستوى تجربة استخدام Epic Games Store
1) انتهت صلاحية الشهادة

في يوم 6 أبريل في تمام الساعة 12:00 مساءً بالتوقيت العالمي المنسق، انتهت صلاحية شهادة بروتوكول أمان طبقة النقل (TLS). كانت هذه الشهادة مُستخدمة في كمية كبيرة من الاتصالات الداخلية فقط عبر منصة خادم Epic. نستخدم تشفير بروتوكول أمان طبقة النقل (TLS) بين خدمات الخادم خاصتنا من أجل مكالمات واجهة برمجة التطبيقات (API) عبر الخدمات وأدوات الإدارة الداخلية. هذه الشهادة مخصصة لمنطقة نظام تسمية مجال (DNS) داخلية وهي ليست متاحة للجمهور.
في تمام الساعة 12:00 مساءً بالتوقيت العالمي المنسق، توقفت حركة المرور عمليًا بين أنظمة الخادم. وبعد مرور ست دقائق، أي في تمام الساعة 12:06 مساءً بالتوقيت العالمي المنسق، تم الإبلاغ عن الحادث وبدأنا التعامل مع الحادث. على الرغم من وجود الكثير من الإنذارات التي تنطلق في تلك الحالات، إلا أننا دائمًا ما نشجع أي فرد داخل الشركة على الإبلاغ عن أية مشكلات واسعة التأثير يرصدونها. يعمل فريق العمليات المباشرة (Live Ops) لدينا على مدار الساعة طوال الأسبوع من أجل تحديد أولوية كل حادثة، وهم من يبدأ عملية إدارة الحادثة. عند وصول البلاغ الداخلي الأول، أطلقت أدوات وعملية الإدارة الداخلية خاصتنا قناة Slack وتمت دعوة كل الأطراف المعنية أو استدعاؤهم إلى الحادثة.
في تمام الساعة 12:12 مساءً بالتوقيت العالمي المنسق قمنا بتأكيد انتهاء صلاحية إحدى الشهادات، ورأينا أن ذلك هو السبب الأرجح وراء المشكلات، ومن ثم بدأنا عملية التجديد. في تمام الساعة 12:37 مساءً بالتوقيت العالمي المنسق أُعيد إصدار الشهادة وبدأت الشهادة المُحدثة في السريان على خدمات الخادم خاصتنا. وخلال الدقائق الخمس إلى 15 التالية، شرع موازنو الأحمال في نشر الشهادة الجديدة تلقائيًا عبر النقاط النهائية الداخلية وتم استرداد مكالمات HTTPS من خدمة إلى خدمة بالإضافة إلى واجهات إدارتنا.
وكان فريق العمليات المباشرة (Live Ops) لدينا والذي عمل على تحديد أولوية تلك المشكلة يعمل كذلك على إدارة الحادثة عند تلك المرحلة - حيث تواصلوا مع الموظفين، وأشركوا الأشخاص المناسبين في العملية - وفي تمام الساعة 12:38 مساءً بالتوقيت العالمي المنسق تم إجراء مكالمة عبر Zoom للتنسيق بين الأشخاص الذين يتعاونون في قناة Slack. وعلى الرغم من أن قناة Slack تُعد أداة تواصل جيدة، إلا أنه في المواقف الطارئة لا شيء يفوق التواصل المباشر في الوقت الفعلي بالصوت أو بالفيديو. وقد تم إرسال تحديثات بشأن الحادثة إلى المساهمين الداخليين بصورة منتظمة عبر العملية والأدوات لإبقاء الجميع على اطلاع دائم على آخر المستجدات بشأن ما يجري. عند تلك المرحلة، كان هناك ما يزيد على 25 شخصٍ منخرطين في الأمر بشكل مباشر ويعملون على حل تلك المشكلة بالإضافة إلى عدد كبير من المراقبين: من أقسام دعم اللاعبين، والمجتمع، والهندسة، والإنتاج وعبر الكثير من فرقنا ومنتجاتنا المختلفة.

رسم بياني يوضح عدد الطلبات في الدقيقة مقابل خدمة مصغرة واحدة، يُظهر هبوطًا عند انقطاع خدمة الشهادة وزيادة عند زمن استرداد الخدمة الكامل.
العوامل المساهمة
لم تكن مناطق نظام تسمية المجال (DNS) للاتصالات الداخلية من خدمة إلى خدمة تحظى بمراقبة فعالة من قِبل خدمات مراقبة الشهادات خاصتنا، وهذا إهمال من جانبنا. تتلقى أنظمة مراقبة الشهادات خاصتننا إدخالات من مساحات أسماء نظام تسمية المجالات (DNS) بالكامل، وليس عند شهادات أو نقاط نهائية فردية، وكانت تهيئة تلك المنطقة الداخلية مفقودة. وقد عمدنا من ذلك الحين إلى نقل تلك المنطقة إلى حل المراقبة الأحدث لدينا والذي يتعامل مع تلك الثغرة. وقبل وقوع تلك الحادثة، كنا قد أطلقنا كذلك مشروعًا لتمكين وتهيئة AWS Config بصورة عامة عبر الكثير من حساباتنا. فمن خلال تعميم هذا الإعداد يصبح بإمكاننا إضافة قاعدة AWS config بسهولة وتمكين إنذارات الدفاع العميق لرصد انتهاء صلاحية الشهادات.
لم تكن عمليات التجديد التلقائية قد تم تمكينها بعد لتلك الشهادة الداخلية، وكانت الأولوية قد مُنحت إلى العمل المطلوب لإنجاز ذلك الهدف عند اكتشاف ذلك في وقت سابق من هذا العام. لدينا بالفعل الأنظمة والخدمات المناسبة لتسهيل التجديد التلقائي، لكن عملية الترحيل لاستخدام تلك الميزات لم تكن مكتملة قبل وقوع تلك الحادثة. ومع أنظمة المراقبة الحالية لدينا كنا نعتقد أننا نحظى بحماية من مخاطر انتهاء صلاحية الشهادات أكثر من التي كانت متوفرة لنا في الواقع. ومن ثم سنعمل على نقل تلك الشهادة وغيرها إلى عمليات التجديد التلقائي. وفي تلك الأثناء، أكملنا عملية مراجعة يدوية لجميع شهاداتنا.
كانت شهادة أحرف البدل من خدمة إلى خدمة المستخدمة مُثبتة عبر المئات من خدمات الإنتاج المختلفة، وكان ذلك السبب وراء اتساع نطاق تأثير الحادثة. نستخدم AWS ACM (AWS Certificate Manager) لإدارة هذه الشهادة، مما يمكننا من تجديد هذه الشهادة واستخدامها بسرعة عبر مئات من خدمات الإنتاج في دقائق. لم تكن مشكلة انتهاء الصلاحية تتعلق بـ AWS ACM نفسها، ولكنها كانت تتعلق بإدارتنا لشهادتنا. سنعمل على فصل محيط النشاط الكلي لشهاداتنا، وسيعمل جزء من هذا على تحديث عملياتنا لاستخدام الشهادة مع AWS ACM.
2) حدوث زيادة كبيرة في حركة نقل البيانات إلى خدمة "مشغل Epic Games"
بينما تم استرداد معظم الخدمات فور تجديد الشهادة، ظلت خدمات مشغل Epic Games الخاصة بنا غير متوفرة فعليًا.
في الساعة 12:46 مساءً بالتوقيت العالمي المنسق، بعد إصدار الشهادة، حدثت زيادة هائلة في معدل الطلب على خدمة مشغل Epic Games وهي خدمة واجهة خلفية أساسية تدعم عميل مشغل Epic Games. كان سبب زيادة معدل الطلب هو منطق إعادة المحاولة غير المتوقع في العملاء، والذي لا يتم رؤيته إلا في سيناريوهات الفشل فقط. وفي حين أننا قمنا بالكثير من أعمال المرونة في "مشغل Epic Games" على مر السنين، إلا أن حالة تضخم الطلبات هذه كانت غير متوقعة. تتبع الاتصال تم الوصول إلى الحدود المسموح بها على مضيفينا، وتم إسقاط الحزم عبر الأسطول، مما جعل الاسترداد أكثر صعوبة حتى مع زيادة أسطول تطبيقات الواجهة الخلفية لدينا بنسبة 250%. واجهت خدمات "مشغل Epic Games" فشلاً متتاليًا وانقطاعًا كاملاً، وتطلب الاسترداد تقييد حركة نقل البيانات إلى الواجهة الخلفية، ثم إضافة حركة نقل البيانات مرة أخرى بشكل متزايد إلى النظام مع زيادة حدود تتبع الاتصال في نفس الوقت.
كانت بصمتنا الكبيرة لعملاء "مشغل Epic Games" تنشئ عشرات الملايين من الاتصالات بخدمة الواجهة الخلفية لـ "مشغل Epic Games"، وقد انخفضت مكونات أنظمة "مشغل Epic Games" من التحميل. كنا بحاجة إلى تفريغ حركة نقل البيانات إلى الواجهة الخلفية للسماح بالاسترداد. رغم أن لدينا عادةً سعة اندفاع متاحة لهذه الخدمة، إلا أنها لم تسمح للخدمة بمعالجة حتى التحميل لسعة 28 ضعفًا والذي لاحظناه في بداية الانقطاع.

رسم بياني لعدد الطلبات في الدقيقة إلى موازن التحميل الخلفي من "مشغل Epic Games". نمت حركة نقل البيانات بمعدل 28 ضعفًا في البداية وكان الاندفاع الأخير في الساعة 15:12 بالتوقيت العالمي المنسق 40 ضعف المعدل الطبيعي.
رغم أن عدد طلباتنا كان أكثر من 28 ضعفًا عاديًا، إلا أن العدد الهائل من الاتصالات بالخدمة الخلفية لـ "مشغل Epic Games" استنفد مساحة تتبع الاتصال المتاحة، مما أدى إلى فقدان الحزمة وتراجع الاتصال في النهاية من العُقد الخلفية . زاد حمل اتصال الواجهة الخلفية بمقدار 3200 ضعف عن المعدل الطبيعي لدينا. كانت الزيادة في اتصالات TCP أعلى بكثير من حجم الطلبات.

رسم بياني لاتصال جديد لعدد الطلبات في الدقيقة إلى موازن التحميل الخلفي من "مشغل Epic Games" مع زيادة قدرها 3200 ضعف التوصيلات مقارنة بالذروة العادية.
العوامل المساهمة
أدت شهادة TLS التي انتهت صلاحيتها إلى انقطاع تسبب في حدوث سلوك غير متوقع في عميل المشغل الخاص بنا. كشف التحقيق الذي أجريناه أن إعادة محاولة العميل كانت تستخدم منطق إعادة المحاولة الخطي بدلاً من التراجع الأسي الذي توقعناه. تسبب خطأ إضافي غير متوقع أيضًا في أن نمط الطلب من ملايين عملاء "مشغل Epic Games" يعيد المحاولة باستمرار وبلا نهاية حتى يتم تلقي استجابة ناجحة. أدى هذان الخطآن عبر قاعدة تثبيت العميل إلى إنشاء نمط مكالمة غير مقصود وغير متوقع. لقد تعرضنا لهجمات لتعطيل تقديم الخدمة بشكل فعّال من قبل عملائنا، ونعمل بشكل عاجل على الحصول على إصلاحات لهذه الأخطاء في تحديث "مشغل Epic Games".
من بين العوامل المثيرة للاهتمام والتي تساهم في هذا الجزء من الحادث هو طول الانقطاع الأوّلي. كلما طالت فترة انقطاع الخدمة، زادت احتمالية استخدام المزيد من العملاء لمنطق إعادة المحاولة الخاطئ واستدعاء الواجهة الخلفية لدينا باستمرار. إذا كان الانقطاع الأوّلي أقصر في الوقت المناسب، فربما لم نقم بتكديس عدد كافٍ من العملاء لإجراء مكالمات إعادة المحاولة المستمرة لزيادة تحميل النظام، وكان الانقطاع بهذا الطول هو الذي كشف هذه الحالة. سنحل هذا من خلال التغييرات في نمط المكالمة.
لم يكن إنذارنا لتتبع الاتصال مفهومًا بشكل جيد. تم تشغيل هذا الإنذار أثناء الحادث لخدمة "مشغل Epic Games"، وبينما كانت عدة فِرق على دراية بمعنى هذا الإنذار، لم يكن وصف التنبيه والإشعار واضحين بما فيه الكفاية، ولم يكن معروفًا أن هذا الشرط قد يتسبب في فقد الحزمة لأي اتصال هؤلاء المضيفين، بما في ذلك الاتصال بمجموعة Redis الداخلية. كانت هذه لحظة ضغط على الفريق الذي حقق فيما يمكن أن يحدث عندما خفض الاتصال بمجموعة Redis. تم الاشتباه في أن آليات التخزين المؤقت لدينا هي جزء من السبب. ثبت لاحقًا أن هذا ناتج عن فقد الحزم من امتلاء جدول تتبع الاتصال، مع استخدام عدة مئات الآلاف من الاتصالات. في وقت لاحق من الحادث، قمنا برفع حدود تتبع الاتصال الخاصة بنا إلى أكثر من مليون لكل عقدة، لكن الزيادات في تتبع الاتصال في بنيتنا التحتية ليست فورية واستغرقت بعض الوقت. سنعمل على تحديث إنذارنا لنكون أكثر وضوحًا بأن هذا سيؤدي إلى مشكلات كبيرة في الشبكات حتى حين التوصل إلى حلها.
أدى التوسع إلى وصول العُقد الجديدة على الفور إلى حدود تتبع الاتصال. نظرًا لأن أسطولنا كان مثقلاً بالاتصالات، مما تسبب في فقد شديد للحزم، فقد احتجنا إلى تقليل حركة نقل البيانات الإجمالية للأسطول وزيادة حركة نقل البيانات ببطء. حاولنا أولاً استخدام AWS WAF (Web Application Firewall) للحد من مجموعة فرعية من حركة نقل البيانات الواردة، إلا أن تكويننا لم يحد من حركة نقل البيانات الكافية. لم تكن هذه مشكلة مع AWS WAF، ولكن داخل مجموعة القواعد الخاصة بنا. وحرصًا على الوقت، استخدمنا بعد ذلك الأوزان المستهدفة لموازنة تحميل AWS لتحريك بعض حركات نقل البيانات، والتي كانت، جنبًا إلى جنب مع زيادة حدود تتبع الاتصال، ناجحة في النهاية. أدى استخدام WAF في هذا السيناريو إلى تأخير استرداد خدمات "مشغل Epic Games"، ولكن لم يكن ذلك خطأ من AWS. سنقوم بتطوير عملية قياسية لتحميل حركة التصفية بشكل عاجل في المواقف الحرجة مثل هذه باستخدام AWS WAF أو أوزان هدف موازن التحميل أو تقنيات AWS الأخرى.
3) الأصول غير الصالحة لموقع ويب Epic Games Store
في الساعة 3:12 مساءً بالتوقيت العالمي المنسق، مع تجديد شهادتنا واستعادة خدمة "مشغل Epic Games" الخاصة بنا، شرعنا في إلغاء حظر جميع العملاء الذين يتصلون بـ Epic Games Store الخاص بنا. نظرًا لطول فترة انقطاع الخدمة، كان هناك عدد أكبر بكثير من العملاء الذين يطلبون المحتوى من Epic Games Store الخاص بنا، والذي بدأ في التوسع بشكل طبيعي. بدأنا في تقييم أي آثار متبقية في حوالي الساعة 3:30 مساءً بالتوقيت العالمي المنسق.
بدا كل شيء طبيعيًا في البداية، لكننا بدأنا في تلقي تقارير داخلية حول مشكلات التخطيط والأخطاء على المتجر، والتي تمكنا من تأكيدها وإعادة إنتاجها. عند التحقق من التفاصيل، لاحظنا أن عميل الويب (كيفية تفاعل المستخدم الذي يتصفح epicgames.com مع المتجر) كان يحاول جلب معرف أصل فريد لم يكن موجودًا في CDN الخاص بنا. لقد فحصنا إصدارات الحاويات الخاصة بنا التي تم نشرها عبر الأسطول، وكانت جميعها متشابهة، ولكن إذا كان ذلك صحيحًا، فكيف يمكن لإصدار التطبيق نفسه إرجاع قيم أصول ثابتة كانت مختلفة؟
شيئًا ما لم يكن صحيحًا. لقد كانت فترة مربكة للغاية للحادث، وفي النهاية تبين أن الكثير من الإشارات المتوفرة لدينا (مثل الإصدارات المنشورة) كانت إشارات خاطئة. لقد تمكنا من ربط توسيع الواجهة الخلفية لمتجر Epic Games Store بالزيادة في 403 ثانية على شبكة CDN الخاصة بنا، مما قادنا إلى مسار التحقيق في الحالات الجديدة بمزيد من التفصيل. عند تحويل المحتوى محليًا في المثيلات الجديدة، اكتشفنا أن المحتوى الذي يتم إرجاعه غير صالح. تمكنا من تتبع هذا الأمر إلى دفع غير متوقع للحاوية إلى سير عمل CI/CD جديد، تم إجراؤه في اليوم السابق وغير مرتبط تمامًا بكل شيء واجهناه حتى الآن خلال هذا الحادث. كانت هذه النتائج لا تزال مفاجئة، ولكن بعد اكتشاف ذلك أخيرًا، تمكنا من التراجع سريعًا عن إصدار الحاوية، وإنهاء الحالات غير الصالحة، واستعادة حركة المرور.
كان من الممكن أن تكون هذه المشكلة قد ظهرت خلال أي نطاق واسع حدث خلال هذه الفترة، ولكن نظرًا لأننا عادة ما نحتفظ بالكثير من المساحة عبر مجموعة الخدمات، لم تظهر هذه المشكلة حتى التوسع الكبير في Epic Games Store الذي حدث بسبب حركة مشغل Epic Games.
العوامل المساهمة
أدى انقطاع الشهادة إلى حدوث مشكلات في مشغل Epic Games، والتي أدت عند الاسترداد إلى ظهور عاصفة من الطلبات إلى Epic Games Store، مما أدى بعد ذلك إلى توسيع نطاق أنظمة Epic Games Store. هذا متوقع ومرحب به.
ضللتنا إشاراتنا وبياناتنا حول حالة الإصدارات عبر أسطول التطبيقات لدينا للاعتقاد بأن نشر أسطولنا كان موحدًا. لقد قمنا بتغيير مخطط النسخ الخاص بنا للمساعدة في منع هذا التشخيص الخاطئ في المستقبل.
لقد أدى التغيير الأخير في خط أنابيب CI/CD لمتجر Epic Games Store إلى تكوين خاطئ أدى إلى تحديث عنصر التطبيق بشكل غير متوقع. تم تصحيح هذا من خلال تعديل على خط أنابيب CI/CD، مما أدى إلى إعادة التغييرات غير المتوقعة. سوف يحمينا تغيير نظام الإصدار لدينا إذا حدث هذا مرة أخرى.
الجدول الزمني
- 12:00 مساءً بالتوقيت العالمي المنسق - انتهت صلاحية الشهادة الداخلية
- 12:06 مساءً بالتوقيت العالمي المنسق - تم الإبلاغ عن الحادث وبدأت إدارة الحادث
- 12:15 مساءً بالتوقيت العالمي المنسق - تم إعداد رسائل العملاء الأولى
- 12:21 مساءً بالتوقيت العالمي المنسق - تأكيد فشل الخدمة الكبيرة المتعددة من قبل فرق متعددة
- 12:25 مساءً بالتوقيت العالمي المنسق - التأكيد على أن عملية إعادة إصدار الشهادة قد بدأت
- 12:37 مساءً بالتوقيت العالمي المنسق - تم تأكيد إعادة إصدار الشهادة
- 12:46 مساءً بالتوقيت العالمي المنسق - استعادة مؤكدة لبعض الخدمات
- 12:54 مساءً بالتوقيت العالمي المنسق - تم اكتشاف تتبع الاتصال كمشكلة لخدمة مشغل Epic Games
- 1:41 مساءً بالتوقيت العالمي المنسق - إعادة تشغيل عقد خدمة مشغل Epic Games
- 3:05 مساءً بالتوقيت العالمي المنسق - زيادة حد تتبع الاتصال لخدمة مشغل Epic Games
- 3:12 مساءً بالتوقيت العالمي المنسق - أولى علامات استعادة خدمة مشغل Epic Games
- 3:34 مساءً بالتوقيت العالمي المنسق - توسيع نطاق خدمة ويب Epic Games Store
- 3:59 مساءً بالتوقيت العالمي المنسق - التقارير الأولى عن الأصول المفقودة في Epic Games Store
- 4:57 مساءً بالتوقيت العالمي المنسق - تم اكتشاف مشكلة تتعلق بإصدارات غير متطابقة من خدمة ويب Epic Games Store
- 5:22 مساءً بالتوقيت العالمي المنسق - تم تصحيح إصدار خدمة ويب Epic Games Store
- 5:35 مساءً بالتوقيت العالمي المنسق - الاسترداد الكامل
ما الخطوة التالية؟
في الأقسام أعلاه، قمنا بتغطية السيناريوهات التي أدت إلى المفاجآت والانقطاع في النهاية في 6 أبريل. لقد ذكرنا خطواتنا التالية جنبًا إلى جنب مع العوامل المساهمة، لكننا سنلخصها هنا أيضًا.
لا يوجد سبب جذري واحد لهذه القضايا. ساهم عدد لا يحصى من العوامل، التكنولوجية والتنظيمية على حد سواء، في الأحداث التي تكشفت. لقد ساعدنا نطاق الانقطاع ومدته في اكتشاف ليس فقط الأخطاء الصريحة في أنظمتنا، التي سنعمل على تصحيحها؛ ولكن أيضًا الافتراضات التي لم نناقشها سابقًا في بعض عملياتنا الداخلية، وخاصة تلك التي تحكم إدارة الشهادات.
بينما انتقلنا على الفور لتغطية هذه المنطقة من خلال نظام مراقبة الشهادات الأحدث لدينا، وقمنا بتدقيق جميع الشهادات المعروفة الحالية، سنلقي نظرة أعمق على أي ثغرات إضافية في مراقبة الشهادات لدينا ونضيف تدقيقًا إضافيًا للمستقبل، مثل إضافة AWS Config مراقبة جميع الشهادات المستندة إلى AWS ACM. سنعمل أيضًا على تقليل محيط الانفجار لأي شهادة معينة.
سنلقي نظرة فاحصة على أنماط استدعاء عميل مشغل Epic Games ونصلح بشكل عاجل بعض الأخطاء التي حددناها كجزء من هذا، بالإضافة إلى تحسين قدرتنا على الاستجابة لحالات زيادة حركة المرور بشكل كبير. مع الزيادة الدائمة في جداول تتبع الاتصال الخاصة بنا لهذا الأسطول، يجب أن نكون قادرين على التعامل مع كمية مماثلة من الحمل دون فقدان كبير للحزم. إذا كنت تدير أساطيل كبيرة الحجم، فقد يكون هذا تذكيرًا جيدًا للتحقق من حدود جدول تتبع الاتصال لديك وتنبيهك إذا ما كنت تستخدم وظيفة نت فيلتر (netfilter). كما يسعدنا أن نكون بمثابة تذكير جيد للتحقق من منطق إعادة المحاولة في عملائك، وخاصة كيف يمكن أن يتصرفوا بشكل إجمالي بعد فترة انقطاع طويلة.
بالنسبة لـ Epic Games Store، قمنا بنشر إصلاح من شأنه أن يمنع تعديل كائن تطبيق مباشر، وكجزء من هذا تعلمنا وأصلحنا خطأ في إنشاء الأصول لدينا.
نأمل أن يزودك تقرير الحادث هذا بتفاصيل إضافية حول ما حدث في 6 أبريل. نأمل أن تلقي هذه التفاصيل الضوء على ما تعلمناه وتحسيناتنا، وأن تساعد الآخرين على تجنب المشكلات المماثلة.
انضم إلينا!
كتب هذا المنشور فريق هندسة الموثوقية لدينا مع الكثير من المساعدة من العديد من الفرق الهندسية الرائعة الأخرى هنا في Epic.
هل أنت مهتم بهذه الأنواع من المشكلات؟ هل أنت شغوف بالألعاب وخدمات الألعاب؟ تبحث Epic دائمًا عن المواهب الرائعة ونقوم بالتوظيف على مستوى العالم عبر جميع مجموعات المهارات. إذا كنت تبحث عن وظائفنا المفتوحة، تفضل بزيارة Epic Games Career hub.
هل ساعدك هذا المنشور أم أنك وجدت هذا ممتعًا؟ أخبرنا من خلال public-incident-response@epicgames.com.