تمت ترجمة المحتوى الموجود على هذا الموقع باستخدام الذكاء الاصطناعي (AI) أو تقنية الترجمة الآلية، وقد تحتوي على أخطاء.

Skip to content

توفير موثوقية المنصات على نطاق واسع

يتطلب تشغيل أي منصة موزعة قابلة للتوسع التزامًا بالموثوقية، لضمان حصول العملاء على ما يحتاجون إليه عندما يحتاجون إليه. قد تكون التبعيات معقدة إلى حد ما، خاصة مع منصة كبيرة مثل Roblox. إن بناء خدمات موثوقة يعني أنه بغض النظر عن تعقيد وحالة التبعيات، لن تتوقف أي خدمة معينة (أي أنها متاحة بدرجة عالية)، وستعمل بدون أخطاء (أي بجودة عالية) وبدون أخطاء (أي تحمل الأعطال).

لماذا الموثوقية مهمة

يلتزم فريق هوية الحساب لدينا بتحقيق موثوقية أعلى، نظرًا لأن خدمات الامتثال التي أنشأناها هي مكونات أساسية للمنصة. يمكن أن يكون لعدم الامتثال عواقب وخيمة. تكلفة تعطيل التشغيل الطبيعي لـ Roblox مرتفعة للغاية، مع الحاجة إلى موارد إضافية للتعافي بعد الفشل وتجربة مستخدم ضعيفة.

تركز المقاربة النموذجية للموثوقية بشكل أساسي على التوافر، ولكن في بعض الحالات يتم خلط المصطلحات وإساءة استخدامها. تقيّم معظم مقاييس التوافر ما إذا كانت الخدمات تعمل أم لا، في حين يتم أحيانًا نسيان أو إساءة فهم جوانب مثل التسامح مع التقسيم والاتساق. 

وفقًا لنظرية CAP، لا يمكن لأي نظام موزع أن يضمن سوى جانبين من هذه الجوانب الثلاثة، لذا تضحي خدمات الامتثال لدينا ببعض الاتساق من أجل تحقيق التوافر العالي والتسامح مع التقسيم. ومع ذلك، لم تضحي خدماتنا إلا بالقليل ووجدت آليات لتحقيق اتساق جيد مع تغييرات معمارية معقولة موضحة أدناه.

إن عملية الوصول إلى موثوقية أعلى هي عملية تكرارية، حيث تتوافق القياسات الدقيقة مع العمل المستمر من أجل منع العيوب واكتشافها والكشف عنها وإصلاحها قبل وقوع الحوادث. وقد حدد فريقنا قيمة كبيرة في الممارسات التالية:

  • القياس الصحيح - بناء قابلية مراقبة كاملة حول كيفية تقديم الجودة للعملاء وكيفية تقديم التبعيات الجودة لنا.
  • التوقع الاستباقي - تنفيذ أنشطة مثل مراجعات الهندسة وتقييمات مخاطر التبعيات.
  • إعطاء الأولوية للتصحيح - إيلاء اهتمام أكبر لحل تقارير الحوادث للخدمة والتبعيات المرتبطة بخدمتنا.

يتطلب بناء موثوقية أعلى ثقافة الجودة. كان فريقنا يستثمر بالفعل في التطوير القائم على الأداء ويعلم أن نجاح أي عملية يعتمد على اعتمادها. اعتمد الفريق هذه العملية بالكامل وطبق الممارسات كمعيار. يوضح الرسم البياني التالي مكونات العملية:

قوة القياس الصحيح

قبل التعمق في المقاييس، هناك توضيح سريع يجب تقديمه بخصوص قياسات مستوى الخدمة.

  • SLO (هدف مستوى الخدمة) هو هدف الموثوقية الذي يسعى فريقنا إلى تحقيقه (أي 99.999٪).
  • SLI (مؤشر مستوى الخدمة) هو الموثوقية التي تم تحقيقها خلال فترة زمنية معينة (أي 99.975% في فبراير الماضي).
  • SLA (اتفاقية مستوى الخدمة) هي الموثوقية المتفق عليها لتقديمها والمتوقعة من قبل عملائنا خلال فترة زمنية معينة (أي 99.99% في الأسبوع).

يجب أن يعكس SLI التوافر (عدم وجود استجابات لم تتم معالجتها أو مفقودة)، والتسامح مع الأعطال (عدم وجود أخطاء في الخدمة)، والجودة التي تم تحقيقها (عدم وجود أخطاء غير متوقعة). لذلك، حددنا SLI الخاص بنا على أنه "نسبة النجاح" للاستجابات الناجحة مقارنة بإجمالي الطلبات المرسلة إلى الخدمة. الاستجابات الناجحة هي تلك الطلبات التي تم إرسالها في الوقت المناسب وبالشكل الصحيح، مما يعني عدم حدوث أخطاء في الاتصال أو الخدمة أو أخطاء غير متوقعة.

يتم جمع مؤشر الأداء الرئيسي (SLI) أو نسبة النجاح هذا من وجهة نظر المستهلكين (أي العملاء). والهدف من ذلك هو قياس التجربة الفعلية الشاملة المقدمة لمستهلكينا حتى نشعر بالثقة في الوفاء باتفاقيات مستوى الخدمة (SLA). وعدم القيام بذلك من شأنه أن يخلق إحساسًا زائفًا بالموثوقية يتجاهل جميع مخاوف البنية التحتية المتعلقة بالاتصال بعملائنا. وعلى غرار مؤشر الأداء الرئيسي للمستهلك، نقوم بجمع مؤشر الأداء الرئيسي للتبعية لتتبع أي مخاطر محتملة. في الممارسة العملية، يجب أن تتوافق جميع اتفاقيات مستوى الخدمة (SLA) الخاصة بالتبعية مع اتفاقية مستوى الخدمة (SLA) الخاصة بالخدمة، وهناك تبعية مباشرة بينهما. ففشل أحدهما يعني فشل الجميع. كما نقوم بتتبع المقاييس والإبلاغ عنها من الخدمة نفسها (أي الخادم)، ولكن هذا ليس المصدر العملي للموثوقية العالية.

بالإضافة إلى مؤشرات الأداء (SLI)، يجمع كل إصدار مقاييس الجودة التي يتم الإبلاغ عنها من خلال سير عمل التكامل المستمر (CI). تساعد هذه الممارسة على فرض معايير الجودة بقوة (مثل تغطية الكود) والإبلاغ عن مقاييس أخرى ذات مغزى، مثل الامتثال لمعايير الترميز وتحليل الكود الثابت. تمت تغطية هذا الموضوع سابقًا في مقال آخر بعنوان "بناء الخدمات الصغيرة المدفوعة بالأداء". يكتسب الالتزام الدقيق بالجودة أهمية كبيرة عند الحديث عن الموثوقية، لأنه كلما استثمرنا أكثر في تحقيق نتائج ممتازة، زادت ثقتنا في أن النظام لن يفشل في ظل الظروف المعاكسة.

يمتلك فريقنا لوحتي تحكم. توفر إحداهما رؤية كاملة لكل من مؤشر الأداء الرئيسي للمستهلكين (SLI) ومؤشر الأداء الرئيسي للتبعيات (SLI). أما الثانية فتعرض جميع مقاييس الجودة. ونحن نعمل على دمج كل شيء في لوحة تحكم واحدة، بحيث يتم تجميع جميع الجوانب التي تهمنا وتكون جاهزة للإبلاغ عنها في أي إطار زمني محدد.

توقع الفشل

يعد إجراء المراجعات المعمارية جزءًا أساسيًا من الموثوقية. أولاً، نحدد ما إذا كان هناك تكرار وما إذا كان لدى الخدمة الوسائل اللازمة للبقاء عند تعطل التبعيات. بالإضافة إلى أفكار النسخ المتماثل النموذجية، طبقت معظم خدماتنا تقنيات محسنة لتزويد ذاكرة التخزين المؤقت المزدوجة، واستراتيجيات الاستعادة المزدوجة (مثل قوائم الانتظار المحلية للتحويل التلقائي)، أو استراتيجيات فقدان البيانات (مثل دعم المعاملات). هذه الموضوعات واسعة بما يكفي لتبرير كتابة مدونة أخرى، ولكن في النهاية فإن أفضل توصية هي تنفيذ الأفكار التي تأخذ في الاعتبار سيناريوهات الكوارث وتقلل من أي تأثير سلبي على الأداء.

هناك جانب مهم آخر يجب توقعه وهو أي شيء يمكن أن يحسن الاتصال. وهذا يعني السعي الحثيث لتحقيق زمن انتقال منخفض للعملاء وإعدادهم لحركة مرور عالية جدًا باستخدام تقنيات التحكم في ذاكرة التخزين المؤقت، ووحدات sidecar، وسياسات الأداء لفترات الانتظار، وقواطع الدائرة، وإعادة المحاولة. تنطبق هذه الممارسات على أي عميل بما في ذلك ذاكرات التخزين المؤقتة والمخازن وقوائم الانتظار والعملاء المترابطين في HTTP و gRPC. وهذا يعني أيضًا تحسين الإشارات السليمة من الخدمات وفهم أن فحوصات الحالة تلعب دورًا مهمًا في جميع عمليات تنسيق الحاويات. تقدم معظم خدماتنا إشارات أفضل للتدهور كجزء من ملاحظات فحص الحالة وتتحقق من أن جميع المكونات الحيوية تعمل قبل إرسال إشارات سليمة.

أثبت تقسيم الخدمات إلى أجزاء حاسمة وغير حاسمة فائدته في التركيز على الوظائف الأكثر أهمية. كنا نمتلك نقاط نهاية مخصصة للإدارة فقط في نفس الخدمة، وعلى الرغم من عدم استخدامها كثيرًا، إلا أنها أثرت على مقاييس زمن الوصول الإجمالية. أدى نقلها إلى خدمة خاصة بها إلى تأثير إيجابي على كل المقياس.

يعد تقييم مخاطر التبعية أداة مهمة لتحديد المشاكل المحتملة المتعلقة بالتبعيات. وهذا يعني أننا نحدد التبعيات ذات مؤشر الأداء المنخفض (SLI) ونطلب مواءمة اتفاقية مستوى الخدمة (SLA). تحتاج هذه التبعيات إلى اهتمام خاص أثناء خطوات التكامل، لذا نخصص وقتًا إضافيًا لإجراء المقارنة المعيارية واختبار ما إذا كانت التبعيات الجديدة ناضجة بما يكفي لخططنا. أحد الأمثلة الجيدة هو اعتمادنا المبكر لخدمة التخزين كخدمة (Storage-as-a-Service) من Roblox. تطلب التكامل مع هذه الخدمة تقديم تذاكر الأخطاء وعقد اجتماعات مزامنة دورية لتبادل النتائج والملاحظات. يستخدم كل هذا العمل علامة "الموثوقية" حتى نتمكن من تحديد مصدره وأولوياته بسرعة. تم إجراء التوصيف مرارًا وتكرارًا حتى تأكدنا من أن التبعية الجديدة جاهزة للاستخدام. ساعد هذا العمل الإضافي في رفع التبعية إلى المستوى المطلوب من الموثوقية الذي نتوقع تقديمه من خلال العمل معًا لتحقيق هدف مشترك.

إضفاء النظام على الفوضى

ليس من المرغوب أبدًا حدوث حوادث. ولكن عندما تحدث، هناك معلومات مهمة يجب جمعها والتعلم منها من أجل أن نكون أكثر موثوقية. لدى فريقنا تقرير حوادث الفريق الذي يتم إنشاؤه بما يتجاوز التقرير النموذجي على مستوى الشركة، لذلك نركز على جميع الحوادث بغض النظر عن حجم تأثيرها. نحدد السبب الجذري ونحدد أولويات جميع الأعمال للتخفيف من حدته في المستقبل. كجزء من هذا التقرير، نستدعي فرقًا أخرى لإصلاح حوادث التبعية ذات الأولوية العالية، والمتابعة بالحل المناسب، والتقييم بأثر رجعي، والبحث عن الأنماط التي قد تنطبق علينا.

يُصدر الفريق تقرير موثوقية شهري لكل خدمة يتضمن جميع مؤشرات الأداء المحددة هنا، وأي تذاكر فتحناها بسبب الموثوقية، وأي حوادث محتملة مرتبطة بالخدمة. لقد اعتدنا على إنشاء هذه التقارير لدرجة أن الخطوة الطبيعية التالية هي أتمتة استخراجها. إن القيام بهذه النشاط الدوري مهم، وهو تذكير بأن الموثوقية يتم تتبعها ومراعاتها باستمرار في عملية التطوير لدينا.

تشمل أدواتنا مقاييس مخصصة وتنبيهات محسّنة بحيث يتم إخطارنا في أسرع وقت ممكن عند حدوث مشاكل معروفة ومتوقعة. تتم مراجعة جميع التنبيهات، بما في ذلك التنبيهات الكاذبة، كل أسبوع. في هذه المرحلة، من المهم صقل جميع الوثائق حتى يعرف مستخدمونا ما يمكن توقعه عند تشغيل التنبيهات وعند حدوث أخطاء، ومن ثم يعرف الجميع ما يجب فعله (على سبيل المثال، يتم مواءمة دلائل الإجراءات وإرشادات التكامل وتحديثها بشكل متكرر).

في النهاية، يعد تبني الجودة في ثقافتنا العامل الأكثر أهمية وحسمًا في الوصول إلى موثوقية أعلى. يمكننا ملاحظة كيف أن هذه الممارسات المطبقة في عملنا اليومي تؤتي ثمارها بالفعل. فريقنا مهتم جدًا بالموثوقية، وهي أهم إنجازاتنا. لقد زاد وعينا بالتأثير الذي قد تحدثه العيوب المحتملة ومتى قد تظهر. وقد حققت الخدمات التي طبقت هذه الممارسات أهداف مستوى الخدمة (SLO) واتفاقيات مستوى الخدمة (SLA) باستمرار. وتعد تقارير الموثوقية التي تساعدنا على تتبع كل العمل الذي قمنا به شهادة على العمل الذي أنجزه فريقنا، وتشكل دروسًا لا تقدر بثمن لإعلام وتأثير الفرق الأخرى. هكذا تؤثر ثقافة الموثوقية على جميع مكونات منصتنا.

الطريق نحو موثوقية أعلى ليس سهلاً، ولكنه ضروري إذا كنت ترغب في بناء منصة موثوقة تعيد تصور كيفية تجمع الناس معًا.

ألبرتو هو مهندس برمجيات رئيسي في فريق هوية الحساب في Roblox. يعمل في صناعة الألعاب منذ فترة طويلة، وله سجل حافل في العديد من ألعاب AAA ومنصات التواصل الاجتماعي مع تركيز قوي على البنى القابلة للتوسع بدرجة عالية. وهو الآن يساعد Roblox على تحقيق النمو والنضج من خلال تطبيق أفضل ممارسات التطوير.