تعرف على ميزانيات الأخطاء للفرق الصغيرة: ضع SLOs واقعية للمنتجات المبكرة، قرّر الحوادث المهمة، وطبّق طقس موثوقية أسبوعي بسيط.

الفرق الصغيرة تطلق بسرعة لأنها مضطرة. الخطر عادة ليس انقطاعًا درامياً واحدًا. بل هو نفس الفشل الصغير المتكرر: تسجيل هشّ، عملية دفع تفشل أحيانًا، نشر يكسر شاشة واحدة من حين لآخر. كل واحد من هذه الأمور يسرق ساعات، يقوّض الثقة، ويحوّل الإصدارات إلى رمية حظ.
ميزانيات الأخطاء تعطي الفرق الصغيرة طريقة بسيطة للتحرك بسرعة دون التظاهر أن الموثوقية "ستحدث وحدها".
SLO (هدف مستوى الخدمة) هو وعد واضح حول تجربة المستخدم، معبرًا عنه برقم خلال نافذة زمنية. مثال: "عمليات الدفع الناجحة لا تقل عن 99.5% خلال آخر 7 أيام." ميزانية الأخطاء هي مقدار "السيئ" المسموح به داخل ذلك الوعد. إذا كان SLO هو 99.5%، فميزانيتك الأسبوعية هي 0.5% من عمليات الدفع الفاشلة.
هذا لا يتعلق بالكمال أو عروض الموثوقية الشكلية. ليس عملية ثقيلة، ولا اجتماعات لا نهاية لها، ولا جدول بيانات لا يحدّثه أحد. إنها طريقة للاتفاق على ما يعنيه "جيد بما فيه الكفاية"، وملاحظة متى تنحرف عن ذلك، واتخاذ قرار هادئ بشأن ما سيلي.
ابدأ صغيرًا: اختر 1 إلى 3 SLOs موجهة للمستخدم مرتبطة بأهم الرحلات، قِسها بإشارات لديك بالفعل (أخطاء، زمن استجابة، دفعات فاشلة)، واجعل مراجعة قصيرة أسبوعية تنظر فيها إلى حرق الميزانية وتختار إجراء متابعة واحدًا. العادة أهم من الأدوات.
فكّر في الموثوقية كخطة نظام غذائي. لا تحتاج أيامًا مثالية. تحتاج هدفًا، وطريقة لقياسه، ومخصصًا للحياة الواقعية.
SLI (مؤشر مستوى الخدمة) هو العدد الذي تراقبه، مثل "% من الطلبات التي تنجح" أو "زمن تحميل الصفحة p95 أقل من ثانيتين". SLO هو الهدف لذلك الرقم، مثل "99.9% من الطلبات تنجح". ميزانية الأخطاء هي مقدار الفشل المسموح به ولا يزال يعتبرك على المسار.
مثال: إذا كان SLO هو 99.9% توفر، فميزانيتك 0.1% زمن تعطل. على مدى أسبوع (10,080 دقيقة)، 0.1% تقارب 10 دقائق. هذا لا يعني أنه يجب عليك محاولة "استهلاك" 10 دقائق. يعني أنه عندما تنفقها، فأنت تتاجر بالموثوقية مقابل السرعة أو التجارب أو عمل الميزات.
هذه هي القيمة: تحوّل الموثوقية إلى أداة قرار، لا إلى تمرين تقارير. إذا استهلكت معظم الميزانية بحلول الأربعاء، توقف عن التغييرات الخطرة وأصلح ما يكسر. إذا كنت بالكاد تنفق شيئًا، يمكنك الشحن بثقة أكبر.
ليس كل شيء يحتاج نفس SLO. تطبيق عام موجه للعملاء قد يحتاج 99.9%. أداة إدارية داخلية غالبًا ما يمكن أن تكون أكثر تساهلًا لأن عددًا أقل من الناس يلاحظ والأثر أصغر.
لا تبدأ بقياس كل شيء. ابدأ بحماية اللحظات التي يقرر فيها المستخدم أن منتجك يعمل أم لا.
اختر 1 إلى 3 رحلات مستخدم تحمل أكبر قدر من الثقة. إذا كانت هذه ثابتة، فمعظم المشاكل الأخرى تبدو أصغر. مرشحين جيدين هم اللمسة الأولى (التسجيل أو الدخول)، لحظة المال (الدفع أو الترقية)، والفعل الأساسي (نشر، إنشاء، إرسال، رفع، أو استدعاء API حيوي).
اكتب ما يعنيه "النجاح" بعبارات بسيطة. تجنب المصطلحات التقنية مثل "200 OK" ما لم يكن مستخدموك مطورين.
بعض الأمثلة التي يمكنك تكييفها:
اختر نافذة قياس تتناسب مع مدى سرعة تغييراتك. نافذة 7 أيام تعمل عندما تنشر يوميًا وتريد تغذية راجعة سريعة. نافذة 28 يومًا أهدأ إذا كانت الإصدارات أقل تكرارًا أو بياناتك صاخبة.
المنتجات المبكرة لها قيود: الحركة قد تكون منخفضة (نشر سيء واحد يعطل أرقامك)، المسارات تتغير بسرعة، والقياس غالبًا ما يكون رقيقًا. هذا مقبول. ابدأ بعدّات بسيطة (محاولات مقابل نجاحات). ضيّق التعريفات بعد أن يتوقف المسار نفسه عن التغيير.
ابدأ بما تطلقه اليوم، لا بما تتمنى أن تملكه. لأسابيع قليلة، التقط خط أساس لكل رحلة رئيسية: كم مرة تنجح وكم مرة تفشل. استخدم حركة فعلية إن وُجِدت. إذا لم تكن هناك حركة، استخدم اختباراتك، تذاكر الدعم، والسجلات. أنت تبني صورة تقريبية لـ"طبيعي".
يجب أن يكون SLO الأول شيئًا يمكنك تحقيقه معظم الأسابيع أثناء الاستمرار في الشحن. إذا كان معدل النجاح الأساسي 98.5%، لا تضع 99.9% وتفترض النجاح. ضع 98% أو 98.5% أولاً، ثم ضيّق لاحقًا.
الكمون مغرٍ للقياس، لكنه قد يصرف الانتباه مبكرًا. تحصل الفرق غالبًا على قيمة أكبر من SLO معدل نجاح أولًا (الطلبات تكتمل دون أخطاء). أضف الكمون عندما يشعر المستخدمون به بوضوح وتتوفر بيانات مستقرة كفاية.
تنسيق مفيد هو سطر واحد لكل رحلة: من، ماذا، الهدف، ونافذة الزمن.
اجعل النافذة أطول للحظات المال والثقة (الفوترة، المصادقة). اجعلها أقصر للتدفقات اليومية. عندما يمكنك تحقيق SLO بسهولة، ارفعه قليلًا واستمر.
الفرق الصغيرة تضيع كثيرًا من وقت الموثوقية عندما يصبح كل عطل إنذارًا حريقياً. الهدف بسيط: الألم المرئي للمستخدم يصرف من الميزانية؛ كل شيء آخر يُعامل كعمل عادي.
مجموعة صغيرة من أنواع الحوادث تكفي: انقطاع كامل، انقطاع جزئي (يتعطل مسار رئيسي واحد)، تدهور الأداء (يعمل لكن ببطء محسوس)، نشر سيء (إصدار يسبب فشلًا)، ومشكلات بيانات (خاطئة، مفقودة، مكررة).
حافظ على المقياس صغيرًا واستخدمه في كل مرة.
قرر ما الذي يُحتسب ضد الميزانية. عامل فشلات مرئية للمستخدم كمصروف: تسجيل أو دفع معطّلين، مهلات يشعر بها المستخدم، قفزات 5xx التي توقف الرحلات. الصيانة المعلنة لا تحتسب إذا تم إعلام المستخدمين وتصرف التطبيق كما هو متوقع خلال تلك النافذة.
قاعدة واحدة تنهي معظم النقاشات: إذا كان مستخدم خارجي حقيقي سيلاحظ ويعجز عن إكمال رحلة محمية، فهي تحتسب. وإلا، فلا.
تغطي هذه القاعدة أيضًا مناطق رمادية شائعة: انقطاع طرف ثالث يُحتسب فقط إذا كسر رحلة المستخدم، ساعات الحركة المنخفضة ما زالت تُحتسب إذا تأثر المستخدمون، والمختبرون الداخليون لا يحتسبون ما لم يكن الاستخدام الداخلي هو الاستخدام الأساسي.
الهدف ليس قياسًا مثاليًا. إنه إشارة مشتركة قابلة للتكرار تخبرك عندما تصبح الموثوقية مكلفة.
لكل SLO، اختر مصدر حقيقة واحدًا والتزم به: لوحة مراقبة، سجلات التطبيق، فحص اصطناعي يضرب نقطة نهاية واحدة، أو مقياس واحد مثل عدد عمليات الدفع الناجحة في الدقيقة. إذا غيرت طريقة القياس لاحقًا، دوّن التاريخ وتعامل معها كإعادة ضبط حتى لا تقارن تفاحًا بالبرتقال.
يجب أن تعكس التنبيهات حرق الميزانية، لا كل عطب. قد تكون قفزة قصيرة مزعجة، لكنها لا ينبغي أن توقظ أحدًا إذا لم تمس ميزانية شهرية إلا قليلاً. نمط بسيط يعمل جيدًا: التنبيه على "حرق سريع" (أنت في طريقك لحرق ميزانية شهر في يوم) وتنبيه أخف على "حرق بطيء" (في طريقك لحرقها خلال أسبوع).
احتفظ بسجل موثوقية صغير حتى لا تعتمد على الذاكرة. سطر واحد لكل حادث يكفي: التاريخ والمدة، تأثير المستخدم، السبب المحتمل، ما الذي غيرته، ومالك متابعة مع موعد نهائي.
مثال: فريق مكوّن من شخصين يطلق API جديد لتطبيق الموبايل. SLO الخاص بهم هو "99.5% من الطلبات ناجحة"، مقاس من عدّ واحد. نشر سيء خفض النجاح إلى 97% لمدة 20 دقيقة. ينبه حرق سريع، يتراجعان، والمتابعة هي "أضف فحص كاناري قبل النشر".
لا تحتاج عملية كبيرة. تحتاج عادة صغيرة تحافظ على بقاء الموثوقية مرئية دون سرقة وقت التطوير. تحقق لمدة 20 دقيقة لأن ذلك يحوّل كل شيء إلى سؤال واحد: هل ننفق الموثوقية أسرع مما خططنا؟
استخدم نفس خانة التقويم كل أسبوع. احتفظ بملاحظة مشتركة تُلحق بها (لا تُعدِّل السجل). الثبات يتفوّق على التفصيل.
أجندة بسيطة تناسب:
بين المتابعات والالتزامات، قرر قاعدة الإصدار للأسبوع وحافظ على الملل:
إذا أحرقت رحلة التسجيل معظم ميزانيتها بعد انقطاعين قصيرين، قد تجمّد فقط تغييرات التسجيل بينما تستمر في شحن العمل غير المتعلق.
ميزانية الأخطاء لا تهم إلا إذا غيرت ما ستفعله الأسبوع القادم. الهدف ليس توفرًا مثاليًا. إنه وسيلة واضحة للقرار: هل نطلق ميزات، أم نسدد دين الموثوقية؟
سياسة يمكنك قولها بصوت عالٍ:
هذا ليس عقابًا. إنه مقايضة علنية حتى لا يدفع المستخدمون الثمن لاحقًا.
عندما تُبطئ، تجنّب مهمات غامضة مثل "تحسين الاستقرار". اختر تغييرات تغير النتيجة التالية: أضف حاجزًا (مهلات، التحقق من المدخلات، حدود معدل)، حسّن اختبارًا كان سيتعرّف على الخطأ، سهّل التراجع، أصلح مصدر الخطأ الأعلى، أو أضف تنبيهًا واحدًا مرتبطًا برحلة المستخدم.
اجعل التقارير منفصلة عن اللوم. كافئ تقارير الحوادث السريعة، حتى عندما تكون التفاصيل فوضوية. الحادثة الوحيدة السيئة حقًا هي التي تظهر متأخرة، عندما لا يتذكر أحد ما تغيّر.
فخ متكرر هو وضع SLO مطلي بالذهب من اليوم الأول (99.99% يبدو رائعًا) ثم تجاهله بصمت عندما تواجه الواقع. يجب أن يكون SLO المبدئي قابلًا للتحقيق بالأشخاص والأدوات الحالية، وإلا يصبح ضجيجًا في الخلفية.
خطأ آخر هو قياس الشيء الخاطئ. الفرق تراقب خمسة خدمات وقراءة قاعدة بيانات، لكنها تفوت الرحلة التي يشعر بها المستخدم فعليًا: التسجيل، الدفع، أو "حفظ التغييرات". إذا لم تستطع شرح SLO في جملة واحدة من وجهة نظر المستخدم، فمن المحتمل أنه داخلي جدًا.
إرهاق التنبيهات يحرق الشخص الوحيد القادر على إصلاح الإنتاج. إذا كانت كل قفزة صغيرة تُوقظ أحدهم، تصبح التنبيهات "طبيعية" وتُفوّت الحرائق الحقيقية. نبه بحسب تأثير المستخدم. وجّه الباقي إلى فحص يومي.
قاتل أكثر هدوءًا هو العدّ غير المتسق. أسبوعًا تحتسب تباطؤًا لمدة دقيقتين كحادث، والأسبوع التالي لا. حينها تصبح الميزانية نقاشًا بدل أن تكون إشارة. اكتب القواعد مرة وطبقها بثبات.
حواجز مساعدة:
إذا كسر نشر الدخول لمدة 3 دقائق، احسبه في كل مرة، حتى لو تم إصلاحه سريعًا. الاتساق هو ما يجعل الميزانية مفيدة.
اضبط مؤقتًا على 10 دقائق، افتح مستندًا مشتركًا، وأجب عن هذه الأسئلة الخمسة:
إذا لم تتمكن من قياس شيء بعد، ابدأ بوكيل يمكنك رؤيته بسرعة: دفعات فاشلة، أخطاء 500، أو تذاكر الدعم الموسومة بـ"دفع". استبدل الوكلاء لاحقًا عندما يتحسن التتبع.
مثال: فريق مكوّن من شخصين يرى ثلاث رسائل "لا يمكن إعادة تعيين كلمة المرور" هذا الأسبوع. إذا كانت إعادة تعيين كلمة المرور رحلة محمية، فهذه حادثة. يكتبون ملاحظة قصيرة (ما حدث، كم عدد المستخدمين، ما فعلوا) ويختارون متابعة واحدة: إضافة تنبيه على فشل إعادة التعيين أو إضافة محاولة إعادة.
مايا وجون يديران شركة ناشئة من شخصين ويطلقان يوم الجمعة. يتحركان بسرعة، لكن أول المستخدمين الدافعين يهتمون بشيء واحد: هل يمكنهم إنشاء مشروع ودعوة زميل دون أن يتعطل؟
الأسبوع الماضي كان لديهم انقطاع حقيقي واحد: فشل "إنشاء المشروع" لمدة 22 دقيقة بعد ترحيل خاطئ. كما كانت هناك ثلاث فترات "بطيئة لكن ليست متوقفة" حيث ظلت الشاشة تدور 8 إلى 12 ثانية. اشتكى المستخدمون، لكن الفريق ناقش ما إذا كان البطء يُحتسب كتعطل.
اختاروا رحلة واحدة وجعلوها قابلة للقياس:
يوم الاثنين يجريان طقس الـ20 دقيقة. نفس الوقت، نفس المستند. يجيبان على أربعة أسئلة: ماذا حدث، كم من الميزانية احترقت، ما التكرار، وما التغيير الوحيد الذي يمنع التكرار.
تكون المقايضة واضحة: الانقطاع وفترات البطء أحرقا معظم الميزانية الأسبوعية. لذا يصبح "الميزة الكبيرة الواحدة" للأسبوع التالي "أضف فهرس قاعدة بيانات، اجعل الترحيلات أكثر أمانًا، ونبه على فشل إنشاء المشروع."
النتيجة ليست موثوقية مثالية. إنها مشاكل مكررة أقل، قرارات أوضح بنعم/لا، وعدد أقل من السهرات لأنهم اتفقوا مقدمًا ما يعنيه "سيئ بما فيه الكفاية".
اختر رحلة مستخدم واحدة وضع وعد موثوقية بسيطًا عليها. تعمل ميزانيات الأخطاء أفضل عندما تكون مملة وقابلة للتكرار، لا مثالية.
ابدأ بـ SLO واحد وطقس أسبوعي واحد. إذا بقي الأمر سهلاً بعد شهر، أضف SLO ثانيًا. إذا كان ثقيلًا، صغّره.
اجعل الحساب بسيطًا (أسبوعي أو شهري). اجعل الهدف واقعيًا لموقعك الآن. اكتب ملاحظة موثوقية من صفحة واحدة تجيب عن: SLO وكيف تقيسه، ما الذي يُحتسب كحادث، من المسؤول هذا الأسبوع، متى يحدث التحقق، وماذا تفعل افتراضيًا عندما تحترق الميزانية بسرعة.
إذا كنت تبني على منصة مثل Koder.ai (koder.ai), يمكن أن يساعد الربط بين التكرار السريع وعادات الأمان، خاصة اللقطات والتراجع، حتى تظل "العودة للحالة الجيدة الأخيرة" حركة عادية ومتدرّبة.
حافظ على الدورة مشدودة: SLO واحد، ملاحظة واحدة، تحقق أسبوعي قصير واحد. الهدف ليس القضاء على الحوادث. إنه ملاحظة مبكرة، اتخاذ قرار هادئ، وحماية القليل من الأشياء التي يشعر بها المستخدمون فعليًا.
وعد SLO هو وعد بالموثوقية يتعلق بتجربة المستخدم، يُقاس خلال نافذة زمنية (مثل 7 أو 30 يومًا).
مثال: “99.5٪ من عمليات الشراء تتم بنجاح خلال آخر 7 أيام.”
ميزانية الأخطاء هي مقدار «السلبي» المسموح به ضمن SLO الخاص بك.
إذا كان SLO هو 99.5٪ نجاح، تكون الميزانية 0.5٪ فشل خلال تلك النافذة. عندما تحرق الميزانية بسرعة، تُبطئ التغييرات الخطرة وتصلح الأسباب.
ابدأ بـ 1–3 رحلات يلاحظها المستخدم فورًا:
إذا كانت هذه الرحلات موثوقة، تصبح معظم المشاكل الأخرى أقل أهمية وأسهل في ترتيب الأولويات لاحقًا.
اختر خط أساس يمكنك تحقيقه في معظم الأسابيع.
إذا كنت عند 98.5٪ اليوم، فبدءًا بـ98–98.5٪ مفيد أكثر من إعلان 99.9٪ ثم تجاهله.
استخدم العدّ البسيط: محاولات مقابل نجاحات.
مصادر بيانات بداية جيدة:
لا تنتظر مراقبة مثالية؛ ابدأ بوكيل تثق به وحافظ على اتساقه.
احسبها إذا كان المستخدم الخارجي سيلاحظ ويعجز عن إكمال رحلة محمية.
أمثلة شائعة تُحتسب ضد الميزانية:
لا تحتسب إزعاج داخلي فقط إلا إذا كان الاستخدام الداخلي هو الاستخدام الرئيسي للمنتج.
قاعدة بسيطة: نوقظ الناس بناءً على حرق الميزانية، لا على كل تقطّع.
نوعان مفيدان من التنبيه:
هذا يقلل من تعب التنبيهات ويركز الانتباه على المشكلات التي ستغيّر ما ستُصدره لاحقًا.
اجعلها 20 دقيقة، نفس الوقت، ونفس المستند:
اختم بوضع الإصدار للأسبوع: طبيعي، حذر، أو تجميد (على ذلك المجال فقط).
استخدم سياسة افتراضية سهلة النطق:
الهدف هو صفقة هادئة، ليست لومًا.
قواعد عملية تساعد:
إذا بنيت على منصة مثل Koder.ai، اجعل “العودة للحالة الجيدة الأخيرة” إجراءً روتينيًا، واعتبر التراجعات المتكررة إشارة للاستثمار في اختبارات أو فحوصات نشر أكثر أمانًا.