الترحيل هو النوع الوحيد من المشاريع الهندسية الذي يُحكم عليه روتينيًا بلا دليل. فالميزة الجديدة تعمل أو لا تعمل. والتقرير الجديد يُظهر الرقم أو لا يُظهره. لكن الترحيل يستبدل شيئًا كان يعمل بالفعل، وبعد إطفاء القديم لا يبقى سجلّ لسلوكه إلا ما كتبه أحدهم مسبقًا. وفي معظم المشاريع التي نُستدعى لمراجعتها، ذلك السجلّ غير موجود. وقد بدأنا نطلبه في الاجتماع الأول، لا لأنه صعب، بل لأنه الجزء الوحيد من العمل الذي يصبح مستحيلًا لاحقًا لا مكلفًا فحسب.
والنتيجة ليست فشل الترحيل. فهو ينجح عادةً. النتيجة أن لا أحد يستطيع قول هل كان يستحقّ، فتصبح المحادثة عنه مباراة انطباعات — الفريق الذي بناه يتذكّره نجاحًا، ومن يستخدمونه يتذكّرون الأسبوعين حين كان كل شيء بطيئًا، والفريقان يصفان المشروع نفسه بدقة. ولأن الخلاف لا يُحسم، يُحسم بالأقدمية بدلًا من ذلك، وهي طريقة سيئة لتقرير هل تُنفق المال نفسه العام القادم على النظام التالي.
خط الأساس ليس اختبار أداء
كلمة «خط أساس» تُذكّر الناس عادةً باختبار الحمل، وهذا هو الحدس الخطأ. فاختبار الحمل يخبرك بما يفعله النظام تحت ظروف اختلقتها. وخط الأساس يخبرك بما فعله فعلًا الثلاثاء الماضي، تحت الحمل الذي كان لديه فعلًا، بالبيانات التي كان يحملها فعلًا. والثاني أصعب تزييفًا وأنفع كثيرًا في الجدل، لأن لا أحد يستطيع ادّعاء أن الظروف غير ممثّلة. وهو أرخص أيضًا: فاختبار الحمل يحتاج بيئة ومجموعة بيانات ومن يفسّره، أما خط الأساس فيحتاج غالبًا من يقبل قراءة ملفات موجودة أصلًا على خادم تدفع ثمنه أصلًا.
وهذا الفرق مهمّ لأن الاثنين يُنتجان أرقامًا مختلفة والناس يخلطون بينهما بحرية. فقد قرأنا تشريحًا لترحيل قارن زمن استجابة النظام الجديد في اختبار الحمل بزمن القديم في الإنتاج واستنتج أن الجديد أسرع أربع مرات. وقد يكون كذلك. لكن المستند لم يُظهر ذلك، ولم يلحظ أحد الاستبدال ستة أشهر. والدرس الذي أخذناه أن المقارنة لا تُؤتمن إلا بقدر نصفها الأقلّ وصفًا بعناية، والنصف الذي يصفه الجميع بإهمال هو الذي يُستبدل.
الأرقام الأربعة الأهمّ
لا تحتاج صورة شاملة، ومحاولة ذلك هي كيف تُؤجّل هذه المهمة حتى تستحيل. فأربعة أرقام تحمل معظم الثقل، وكلها يمكن استخراجها عادةً من أنظمة تشغّلها بالفعل دون قياس أي شيء جديد. سجّل هذه الأربعة وتوقّف؛ فرقم خامس لن ينظر فيه أحد تكلفة لا احتياط، والحدس بأن تكون شاملًا هنا هو ما يحوّل مهمة يوم إلى مشروع له اجتماع انطلاق خاص.
- الحجم: كم مرة يحدث الشيء يوميًا، وكيف تبدو أكثر ساعة انشغالًا مقابل المتوسط.
- توزيع زمن الاستجابة عند النقطة التي ينتظر فيها شخص — لا المتوسط، بل المئين 50 و95 و99.
- معدّل الفشل، ومنفصلًا معدّل الفشل الواحد الذي يكلّف مالًا.
- الرقم التجاري الذي يوجد النظام ليحرّكه، مقيسًا كما يقيسه قسم المال.
والرابع هو ما تتخطّاه الفرق، وهو الوحيد الذي سيتذكّره أي أحد خارج الهندسة. فترحيل يُنصّف زمن تحميل الصفحة ولا يحرّك طلبًا واحدًا إنجاز هندسي حقيقي وشيء صعب الدفاع عنه في اجتماع ميزانية. ومعرفة ذلك مسبقًا تغيّر كيف تُحدّد نطاق العمل. وهو أيضًا الرقم الذي يحدّد هل يموّل أحد الترحيل التالي، فالفريق الذي يسجّله يشتري مصداقية لعمل لم يحدّد نطاقه بعد.
أين تجدها بلا كود جديد
الاعتراض المعتاد أن النظام القديم بلا مراقبة، وهذا صحيح كثيرًا وليس عائقًا تقريبًا أبدًا. فالأنظمة تُسرّب دليل سلوكها في عدة أماكن، وبعد ظهيرة من القراءة يكفي عادةً لإعادة بناء صورة قابلة للدفاع عن التسعين يومًا الماضية. والأماكن الثلاثة أدناه تستحقّ الفحص بالترتيب، فكل واحد أرخص قراءةً من الذي يليه والأولان يكفيان عادةً وحدهما.
سجلّ خادم الويب
سجلات الوصول تحمل أعداد الطلبات والمسارات ورموز الحالة، وفي معظم الصيغ الافتراضية الزمن المستغرق لخدمة كل طلب. وتسعون يومًا منها تعطيك أربعة أشياء.
- الحجم.
- وشكل اليوم.
- ومعدّل الخطأ بحسب المسار.
- وتوزيع زمن استجابة جيد بما يكفي للجدل.
وهي أيضًا الأثر الوحيد الذي لا يفكّر أحد في حذفه. والتحذير الوحيد هو التدوير: فالإعدادات الافتراضية تحفظ أسبوعين غالبًا، فأول ما تفحصه ليس ما تحتويه السجلات بل إلى أي مدى ترجع، وإن كان الجواب أسبوعين فتلك هي نافذة القياس التي تملكها.
إحصاءات قاعدة البيانات نفسها
بوستجرس يحفظ أعداد النداءات التراكمية وإجمالي زمن التنفيذ لكل استعلام مُنمّط، وما يماثله موجود في كل محرّك جدّي. وذلك الجدول يخبرك أي عشرة استعلامات يُمضي النظام حياته فيها فعلًا، وهي كثيرًا ما ليست العشرة التي كان الفريق سيخمّنها، وهو أفضل منبئ وحيد بما سيؤلم بعد الترحيل. خُذ اللقطة مرتين بفارق أسبوع واحفظ الاثنتين: فالعدّادات تراكمية من آخر تصفير، فقراءة واحدة تخبرك عن كل التاريخ مرة واحدة لا عن الفترة التي تهمّك.
الفاتورة
فاتورة استضافتك أداة قياس. فهي تسجّل بالمال كم استهلك النظام القديم من حساب وتخزين وخروج، بمتوسط شهري ولا يمكن الجدل فيه. وهي أيضًا الرقم الذي يثق به قسم المال بالفعل، ما يجعلها نافعة بشكل غير عادي حين يجب تبرير الترحيل لمن لا يهتمّ بالمئينات. خُذ متوسط ثلاثة أشهر لا الأحدث، فالفاتورة الواحدة قد تحوي نقلًا لمرة أو دفعة حصة محجوزة تُظهر النظام القديم أرخص أو أغلى بكثير مما كان.
المتوسطات تُخفي ما يهمّك
متوسط زمن الاستجابة أقلّ تلخيص إفادةً لتوزيعه، لأن المستخدمين الغاضبين كلهم في الذيل والذيل هو بالضبط ما يمحوه المتوسط. فنظام بمتوسط 200 مللي قد يكون نظامًا ينتظر فيه الجميع 200 مللي أو نظامًا ينتظر فيه خمسة وتسعون من مئة 80 مللي والبقية أربع ثوانٍ. وهذان نظامان مختلفان بمشكلتين مختلفتين ورقم عنوان واحد. والحساب قاسٍ هنا: فذيل يصيب طلبًا من كل عشرين لا يُرى في متوسط، وهو أيضًا في خدمة مزدحمة آلاف الأشخاص يوميًا، كلٌّ منهم يعيش النسخة البطيئة كالنسخة الوحيدة التي رآها.
سجّل ثلاثة مئينات وتصبح المقارنة بعدها محدّدة. فقد رأينا ترحيلًا حسّن الوسيط 15% وجعل المئين التاسع والتسعين أسوأ ثلاث مرات، وهو ما اكتشفه الفريق من الشكاوى لا من لوحته، لأن لوحته تُظهر متوسطًا.
| ما تسجّله | من أين يأتي | ماذا يحسم لاحقًا |
|---|---|---|
| الطلبات يوميًا، ساعة الذروة | سجلات الوصول | هل السعة الجديدة صحيحة |
| زمن الاستجابة 50/95/99 | سجلات الوصول | هل صار أسرع للجميع |
| أعلى عشرة استعلامات بالزمن | إحصاءات قاعدة البيانات | ما سيؤلم بعد التحويل |
| معدّل الخطأ والخطأ المكلف | السجلات وتذاكر الدعم | هل تحسّنت الموثوقية |
| تكلفة البنية الشهرية | الفاتورة | هل سدّد تكلفته |
قِس النظام القديم لا الجديد
يوجد نمط فشل يقيس فيه الفريق النظام الجديد ببراعة والقديم إطلاقًا، ما يُنتج لوحة غنية بلا شيء تُقارن به. ويحدث لأن الجديد هو المثير ولأن إضافة مقاييس لكود ستحذفه تبدو هدرًا. وهي ليست هدرًا؛ هي الغرض كله. والحلّ إضافة المقاييس للنظام القديم أولًا والجديد ثانيًا، بهذا الترتيب، وقبول أن أسبوعين من بيانات ما تحذفه أقيَم من سنة من بيانات ما تبنيه.
وإن كان قياس القديم مستحيلًا فعلًا — منتج مورّد أو صندوق أسود أو جهاز لا أحد يملك بياناته — فقِسه من الخارج. وقّت العملية بساعة إيقاف، عشرين مرة، في ساعة معروفة، واكتب العشرين رقمًا. فذلك خط أساس خام وهو أفضل بما لا يُحدّ من لا شيء، وله خاصية نافعة أن ساعة الإيقاف نفسها تُستخدم على الجديد.
اختر الرقم التجاري قبل أن تبدأ
الرقم التجاري هو ما يحدّد هل يُتذكّر المشروع جديرًا، ويجب اختياره قبل بدء العمل لا بعد وصول النتائج. فاختياره بعدها هو كيف يُنسب لترحيل ارتفاعُ إيراد حدث بسبب تغيير سعر في الربع نفسه. اختر واحدًا لا ثلاثة: فمشروع بثلاثة مقاييس نجاح ليس له أي مقياس، لأن ما تحرّك منها هو ما سيُقتبس بعدها والآخران سيتوقّف ذكرهما بهدوء.
اكتبه بتعريفه في المستند نفسه مع الأرقام التقنية، واجعل من يملك ذلك الرقم يوافق على التعريف كتابةً. ويبدو هذا بيروقراطيًا ويأخذ نحو عشرين دقيقة. وهو يمنع أشيع وأغلى جدل في العملية كلها، وهو أن يستخدم شخصان الكلمة نفسها لكمّيتين مختلفتين.
ما يكلّفه خط الأساس
في معظم الأنظمة، تسجيل كل هذا مهندس واحد ليوم واحد، ونصف ذلك اليوم تقريبًا يُقضى في إيجاد مكان السجلات. ولم نره يستغرق أسبوعًا أبدًا. ورأينا مرارًا غيابه يكلّف ربع سنة، لأن بدونه تكون الطريقة الوحيدة لحسم خلاف عن نجاح الترحيل هي مزيد من الهندسة. وعدم التماثل هو الحجة: فيوم عمل مقابل ربع سنة من خلاف لا يُحلّ ليس قرارًا متقاربًا، وهو الإجراء الوحيد الذي لم نأسف أبدًا على الإلحاح عليه.
المقارنة يجب أن تكون قابلة للتكرار
تسجيل الأمر إلى جانب الرقم هو ما يحوّل خط الأساس قياسًا لا ادّعاءً. فبعد ستة أسابيع من التحويل سيريد أحدهم إعادة المقارنة، وإن جاء الرقم الأصلي من استعلام لم يحفظه أحد، فسيأتي الجديد من استعلام مختلف قليلًا وسيكون الفرق بينهما جزءًا من الترحيل وجزءًا من الاستعلام.
وهذا خطأ ارتكبناه نحن على بنيتنا، وهو سبب كتابتنا الأمر في المستند الآن كعادة. فالأداة يجب أن تكون الأداة نفسها، وإلا كان القياس الثاني قياسًا للأداة.
البيانات التي ترحّلها رقم أيضًا
أعداد الصفوف تنتمي لخط الأساس لسبب لا يتّضح إلا بعدها: فهي القياس الوحيد الذي يُثبت أن لا شيء فُقد. فترحيل يُسقط بصمت أربعة آلاف سجلّ تاريخي سيبدو سليمًا في كل مخطّط زمن استجابة وسيكتشفه بعد ثمانية أشهر من يُشغّل تقريرًا سنويًا. وعدّ صفوف كل جدول قبل وبعد يكلّف استعلامًا واحدًا وهو الدفاع الرخيص الوحيد ضدّ فشل الترحيل الوحيد الذي لا يُصلحه الرجوع.
سجّل العدد لكل جدول، ومجموع أي عمود يمثّل مالًا، وأقدم وأحدث طابع زمني في أكبر جدول. فهذه الحقائق الأربع معًا تجعل البَتر الصامت مستحيل التفويت، لأن بَترًا يحفظ الأربعة ليس بَترًا. ومجموع المال هو ما يستحقّ الإلحاح عليه حتى حين يبدو زائدًا: فهو الرقم الوحيد في المستند الذي يستطيع من هو خارج الهندسة التحقّق منه مستقلًا، ما يجعله الرقم الذي يُنهي الجدل أسرع.
وهناك دقّة في موعد أخذ العدد. فإن أُخذ مبكرًا جدًا لن يتطابق، لأن النظام القديم يستمر في العمل والكتابة؛ وإن أُخذ لحظة التحويل كان دقيقًا لكن لا وقت لأحد لحسابه. والجواب العملي أن يُؤخذ مرتين — مرة قبل أسبوع لتحديد الشكل، ومرة في نافذة التجميد — وأن يُكتب معدّل النمو بينهما، كي يُفحص أي تباين بعدها مقابل ما يتوقّعه معدّل النمو لا أن يُجادل فيه.
الصفوف التي لا يعدّها أحد
جداول التدقيق والسجلات المحذوفة منطقيًا وأي شيء في حالة لم يستخدمها أحد هي الصفوف الأكثر عرضةً للإسقاط، لأنها الصفوف التي يقرّر كاتب سكربت الترحيل بشكل معقول أنها لا تستحقّ النقل. وأحيانًا يكون القرار صحيحًا وأحيانًا يعيش الالتزام التنظيمي المرتبط بها سبع سنوات بعد النظام. وفي الحالتين يجب أن يكون قرارًا اتّخذه أحد بقصد وكتبه، لا أثرًا جانبيًا لشرط في استعلام.
من يقرأ خط الأساس بعدها
للمستند ثلاثة قرّاء يأتون بالترتيب.
- الأول الفريق الذي يؤدّي العمل، في الأسبوع التالي للتحويل، يفحص هل ما يراه طبيعي.
- والثاني من أقرّ الميزانية، بعد شهر تقريبًا، يسأل السؤال الوحيد الذي يهمّه.
- والثالث مهندس لم يلتقِ أحدًا منكم، بعد سنتين، يحاول فهم لماذا النظام بهذا الشكل قبل تغييره — وذلك القارئ هو سبب وضع المستند في المستودع لا في صفحة ويكي.
والكتابة للقارئ الثالث تغيّر ما يدخل فيه. فهي تعني قول الواضح: أي نظام كان هذا، وماذا فعل، ومن استخدمه، وأي ساعات كان مزدحمًا. فخط أساس يفترض أن القارئ كان في الغرفة لا نفع له للقارئ الوحيد الذي سيقرؤه حين يهمّ أكثر، وتكلفة كتابة هذين السطرين الإضافيين نحو أربع دقائق.
ونحفظ خطّنا كملف ماركداون واحد بجانب كود الترحيل، مسمّى بالنظام ومؤرّخًا، ولم نأسف مرة على تكرار وجود الأرقام في المستودع إلى جانب أي لوحة أنتجتها. فاللوحات تُعاد تنظيمها والأدوات تُستبدل والحسابات تُغلق؛ وملف نصّي في مستودع لا يزال يُنشر هو أدوم تخزين تملكه معظم المؤسّسات فعلًا.
وله استخدام آخر يصعب توقّعه: فهو أسرع طريقة لإدخال الشخص التالي على النظام. فمهندس جديد يقرأ صفحة واحدة من أرقام حقيقية عن سلوك نظام تحت حمل حقيقي يفهمه أفضل من قارئ مخطّط المعمارية، لأن المخطّط يقول ما هي الأجزاء وخط الأساس يقول أيّها يمرّ العمل فيه فعلًا.
ما نفعله في الأسبوع الأول
في تعاون ترحيل يكون مستند خط الأساس أول تسليم، قبل أي عمل معماري، ولن نُسعّر الترحيل نفسه قبل وجوده. وهذا ليس تفضيل إجراءات. بل إن نطاق الترحيل يعتمد على أرقام لا نملكها بعد، والتسعير بدونها تسعير تخمين ثم الدفاع عنه.
وقد أدّى بنا مرّتين إلى التوصية بعدم الترحيل. وفي الحالتين أظهرت الأرقام أن النظام القديم داخل سعته بأريحية وأن الشكوى الحقيقية تقرير بطيء واحد، وهو عمل يومين لا ربعي سنة. وتلك هي التعاونات الأكثر ثقةً لدينا أنها كانت النصيحة الصحيحة، ولم تكن أي منهما لتحدث بلا يوم قياس أولًا.
- صفحة واحدة في المستودع لا جدولًا على حاسوب.
- نافذة القياس مذكورة بجانب كل رقم.
- الاستعلام أو الأمر الذي أنتج كل رقم.
- رقم تجاري بتعريف مكتوب متّفق عليه.
- ثلاثة مئينات، لا متوسطًا واحدًا أبدًا.
لا شيء من هذا متطوّر وهذا هو المقصود تقريبًا. فسبب تخطّيه ليس الصعوبة بل الترتيب: يجب أن يحدث في الأسبوع الذي يتحمّس فيه الجميع للمعمارية الجديدة ولا يريد أحد إمضاء يوم في قراءة سجلات قديمة. وذلك الأسبوع هو الأسبوع الوحيد الذي يمكن أن يحدث فيه.



