4 دروس تعلمناها من آخر تحديث للبنية التحتية
نشرت: 2022-05-04ترقية البنية التحتية. مهمة مشتركة ، خاصة بالنسبة لشركة SaaS مثل شركتنا ، أليس كذلك؟
حسنًا ، لم يكن أحدث إصدار لدينا هو ترقية البرنامج النموذجية حيث أضفنا لمسة بسيطة إليه.
كان الهدف الرئيسي هو ترقية برنامجنا إلى أحدث إصدار ، ولكن هذه المرة قمنا بتضمين خطوتين إضافيتين للمشروع - تقليل عدد عناوين IP التي يجب على عملائنا السماح بها في القائمة وتحقيق التكرار في قاعدة البيانات.
وعلى الرغم من أن غالبية التحديث تمت بسلاسة ، فقد واجهنا أيضًا بعض الانقطاعات في الخدمة على طول الطريق.
في السطور التالية ، سوف نشارك معلومات من وراء الكواليس حول سبب قيامنا بالترقية ، وكيف سارت ، وأهم ما تعلمناه هو المضي قدمًا.
دعونا ندخله مباشرة!
لماذا أجرينا الترقية في المقام الأول وما تضمنته
نحن نتفهم المسؤولية التي نتحملها والدور الذي تلعبه NitroPack في نجاح أعمال عملائنا. هذا هو السبب في أن ضمان الأداء الأمثل وأعلى معايير الأمان واستقرار الخدمة على مدار الساعة طوال أيام الأسبوع أمر بالغ الأهمية.
يعد تحديث بنيتنا التحتية بانتظام أحد الطرق العديدة لضمان كل ذلك. وكما ذكرنا سابقًا ، كانت هناك ثلاثة أجزاء لهذه الترقية بالذات:
1. قم بتحديث برنامجنا إلى أحدث إصدار مستقر
كحل قائم على السحابة ، يتم تنفيذ جميع التحسينات التي يقوم بها NitroPack لمواقع العملاء التي يزيد عددها عن 100،000 عميل على بنيتنا التحتية. حاليًا ، نستخدم أكثر من 100 خادم لتشغيل الخدمة. مع هذا التحديث ، كان علينا ترقية البرنامج الذي ينسق أسطولنا من الخوادم إلى أحدث إصدار مستقر.
2. تقليل عدد عناوين IP التي يجب على عملائنا السماح بها
ببساطة ، لم تكن عملية قائمة عناوين IP سهلة الاستخدام.
قبل التحديث ، كان على عملائنا السماح بإدراج أكثر من 40 عنوان IP لخدمة حركة المرور الصادرة (الطلبات) الخاصة بـ NitroPack إلى مواقع العملاء. علاوة على ذلك ، لم يتم إصلاح عناوين IP هذه ، مما يعني أنه عند تقاعد أحد خوادمنا ، يظهر خادم جديد بعنوان IP مختلف.
تطلبت عملية إنشاء عناوين IP جديدة من عملائنا السماح بانتظام بإدراج عشرات العناوين الجديدة حتى يتمكن NitroPack من تحسين مواقعهم بنجاح.
بعد التحديث ، يحتاج عملاؤنا إلى السماح فقط بثلاثة عناوين IP ثابتة لا تتغير أبدًا.
3. تحقيق التكرار في قاعدة البيانات
لفترة طويلة ، أردنا تحقيق التكرار في قاعدة البيانات لأنه من شأنه تحسين الأداء العام لموقع NitroPack ولوحة القيادة ، وسنكون قادرين على تعزيز أمان الخدمة. علاوة على ذلك ، سيسمح لنا هذا التحديث بإجراء ترقيات قاعدة البيانات المستقبلية بدون أي توقف.
مع وضع هذه الأهداف في الاعتبار ، قمنا بتقسيم العملية إلى خطوتين ، وتركنا يومًا بين الاثنين ، لذلك كان لدينا قدر كبير من الاستراحة:
الخطوة 1: (4 نوفمبر): تقليل عدد عناوين IP
الخطوة 2: (6 نوفمبر): تكرار قاعدة البيانات وتحديث برنامج الخادم
لكن لم يسير كل شيء وفقًا لتوقعاتنا.
ما لم يسير على النحو المخطط له
على الرغم من استعدادنا الشامل ، واجهنا بعض المشكلات غير المتوقعة في جميع التحديثات الثلاثة. إليكم ما حدث:
المشكلة رقم 1: مشكلات الاتصال أثناء عملية تحديث IP
في الرابع من نوفمبر ، كان من المقرر أن نجري تحديثًا أوليًا للخدمة ، بهدف تقليل عدد عناوين IP لحركة المرور الصادرة من NitroPack.
Ð ¢ كان الإصدار الأولي به خطأ برمجي داخلي لم يسمح لخدمتنا بإنشاء اتصالات صادرة في بعض الحالات. لسوء الحظ ، ظهرت هذه المشكلة فقط عندما شهدت بنيتنا التحتية ذروة حركة المرور. لهذا السبب لم نكتشف المشكلة في بيئة التدريج أثناء الاختبارات الأولية. أدت مشكلة الاتصال إلى عدم قيام NitroPack بإجراء تحسينات صادرة بشكل موثوق ، وقد عانى بعض عملائنا من عدم استقرار الخدمة لبضع ساعات.
الخبر السار هو أن فريق التطوير لدينا تمكن من تخفيف المشكلة على الفور من خلال تحديث برنامج عميل HTTP الخاص بنا.

المشكلة رقم 2: استغرق النسخ الاحتياطي لقاعدة البيانات وقتًا أطول من المتوقع
عندما بدأنا العمل على فائض قاعدة البيانات في السادس من تشرين الثاني (نوفمبر) ، اكتشفنا بسرعة أن الأمر سيستغرق وقتًا أطول بكثير مما هو مخطط له. أجبرنا هذا على دفع ترقية برنامج الخادم في اليوم التالي.
لكنها كانت بنية حسنة في الاعتبار. أردنا توخي الحذر الشديد عند إجراء نسخ احتياطي لقاعدة البيانات في المقام الأول حتى نتمكن من إجراء التكرار دون أي مشاكل.
المشكلة رقم 3: أدى خطأ في الخادم إلى إبطاء عملية ترقية البرنامج
عندما بدأنا في نشر ترقية برنامج الخادم في السابع من نوفمبر ، بدأ عدد صغير (أقل من 1٪) من الخوادم بإلقاء أخطاء غير متوقعة حالت في النهاية دون نشر التحديث وأبطأت العملية برمتها. لم تكن هناك طريقة لإصلاح المشكلات بأنفسنا ، واضطررنا إلى تصعيدها إلى مزود الخادم الخاص بنا.
على الرغم من أنه يبدو وكأنه عثرة صغيرة ، بالنظر إلى حجم المهمة ، إلا أن هذا الخطأ غير المتوقع تسبب في جزء صغير (أقل من 2٪) من عملاء NitroPack لتجربة تعطل خدمة قصير متقطع.
المشكلة رقم 4: تسببت أخطاء 502 CDN غير المتوقعة في عدم استقرار الخدمة
عندما اعتقدنا أننا انتهينا من الترقية - بدأ نظام المراقبة لدينا في تسجيل التكرارات المتكررة لأخطاء CDN برمز حالة HTTP 502.
لسوء الحظ ، أثر الخطأ على جميع عملائنا ، مما تسبب في عدم استقرار تسليم موارد CDN لبضعة أيام. بعد فحص المشكلة ، أصدرنا تحديثًا للبرنامج أدى إلى إصلاح عدم استقرار الخدمة بشكل دائم.
بمجرد أن يعمل كل شيء مع NitroPack بشكل صحيح ، عقدنا اجتماعًا بأثر رجعي للتفكير فيما يمكننا تحسينه في المستقبل بناءً على ما تعلمناه من ترقية البنية التحتية هذه.
الخطوات التي نتخذها لضمان عدم حدوث نفس المشكلات مرة أخرى في المستقبل
بشكل عام ، نحن فخورون بالطريقة التي سارت بها الترقية بأكملها. لقد عانينا من عدم استقرار الخدمة من حين لآخر ، ولكن تم التحكم فيه بطريقة خاضعة للرقابة ، وقد نجحنا في تجنب توقف الخدمة بالكامل لقاعدة العملاء بأكملها.
ومع ذلك ، نحن نعلم أن تربيت أنفسنا على الظهر والتركيز كليًا على ما حدث بشكل صحيح لن يدفعنا إلى الأمام كشركة وخدمة.
لهذا السبب نرغب في إيصال التحسينات التي سننفذها من أجل إجراء ترقيات مستقبلية بطريقة أكثر فاعلية. فيما يلي النقاط الرئيسية:
بيئة التدريج قادرة على اختبار الإجهاد
سيسمح لنا ذلك باكتشاف الأخطاء التي تحدث فقط في المواقف ذات الحجم الكبير مع عشرات الآلاف من الطلبات. على سبيل المثال ، كان من الممكن أن يساعدنا ذلك في تحديد عميل HTTP ومشكلات الاتصالات القابلة لإعادة الاستخدام مقدمًا ، وكنا قادرين على تنفيذ تحديث IP دون انقطاع.
أفضل أنظمة المراقبة والإنذار
استنادًا إلى المشكلات التي حدثت أثناء هذه الترقية ، تمكنا من تحديد المناطق التي نفتقر فيها إلى المراقبة والتنبيه. والخبر السار هو أننا قمنا بالفعل بتكوين كليهما لهذه المناطق.
تعاون أفضل بين الفريق والمزيد من التواصل الاستباقي مع العملاء
نظرًا لأن الفرق المختلفة المشاركة في الترقية لم تتم مزامنتها بشكل مثالي مع بعضها البعض ، نشعر أنه لا يمكننا التواصل بشكل استباقي وفي الوقت المناسب بشأن تقدم الترقية لعملائنا الحاليين. كانت لدينا صفحة status.nitropack.io الخاصة بنا حتى يتمكن الجميع من متابعة ما كان يحدث مع الترقية ، لكن هذا لم يكن كافيًا.
في المرة القادمة ، سنتحدث عن تقدم الترقية عبر أكبر عدد ممكن من القنوات ، بما في ذلك وسائل التواصل الاجتماعي والبريد الإلكتروني ولوحة المعلومات والموقع الإلكتروني!
تنسيق أفضل مع مزود الخادم الخاص بنا
بالنسبة للتحديثات المستقبلية ، سنسعى جاهدين لتحسين التنسيق مع مزود الخدمة لدينا لضمان الحلول في الوقت المناسب للمشكلات غير المتوقعة. سيساعدنا هذا في التعامل مع أخطاء الخادم غير المتوقعة بشكل أكثر كفاءة.
أخيرًا ، نود أن نشكر جميع عملائنا على صبرهم وتفهمهم. ثقتك هي القوة الدافعة لدينا لتحسين خدماتنا باستمرار.
