حسّن النظام، لا مكوناته
قاعدة هامينغ الأولى في هندسة الأنظمة
المبدأ الأساسي لهامينغ من الفصل 28: إذا حسّنت المكونات فمن المحتمل أن تُفسد أداء النظام.
أوضح ذلك بقصة المحلل التفاضلي. كان من المقرر توصيل وحدتين. قام البناؤون بتحسين المضخمات في الوحدة الثانية. في يوم الاختبار، شغّل هامينغ الاختبار القياسي — حل y'' + y = 0، ورسم y مقابل y'، وتوقع دائرة. فشل الاختبار. السبب: المضخمات المحسّنة سحبت تياراً أكبر عبر دائرة التأريض. كانت دائرة التأريض مناسبة للتصميم الأصلي. لم تكن مصممة لمستوى التيار الجديد. تعطلت الواجهة، لا المكون.
تعميمه: معظم حالات فشل النظام تعود إلى الواجهات، وليس إلى المكونات. تُصمَّم المكونات وتُختبر وتُعتمد. أما الواجهات فتُصمَّم كفكرة متأخرة، وتُختبر نادرًا، ولا تُعتمد أبدًا بشكل مستقل. وعندما يتغير مكون ما، يتغير سلوك واجهته. ولم يُصمَّم أي شيء في المراحل اللاحقة ليتوافق مع هذه الواجهة الجديدة.
التباين الرئيسي: تحسُّن بمقدار 10 أضعاف في مكون قد يؤدي إلى تدهور بمقدار 10 أضعاف في النظام إذا كان هذا المكون يغذي واجهة مقيدة. التحسُّن لا يُضاف — بل يُطرح.
نظام التعليم كمثال على فشل هندسة النظم
حالة التعليم عند هامينغ
طبَّق هامينغ هذا المبدأ على التعليم. فتحسين درجات المواد الفردية — من خلال تدريب الطلاب على تعظيم أدائهم في الاختبارات لكل مادة — ينتج طلابًا يحققون نتائج جيدة في الاختبارات الفردية، لكنهم غير قادرين على دمج المعرفة عبر التخصصات.
كل مكون (درجة المادة) يتحسن. النظام (التعليم، المعرفة ككل) يتدهور. الواجهة بين المواد — قدرة الطالب على تطبيق المعرفة عبر المجالات — لم تُحسّن أبدًا. بل ضمرت.
هذا ليس خطأً في التنفيذ. إنه هيكلي. عندما تقيس وتكافئ أداء المكونات، تحصل على تحسين المكونات. الواجهات غير مرئية لمقاييس المكونات.
وصفته: ابحث عن عنق الزجاجة في النظام، ثم اسأل ماذا يحدث في المرحلة التالية عند إزالته. إزالة عنق الزجاجة تُغرق الصف التالي. يصبح التحسين غير المقيد قيدًا جديدًا.
تتبع تدهور الواجهة
أظهر هامينغ أن تحسين مكون يغير سلوك واجهته — وبقية النظام كانت مصممة حول الواجهة القديمة.
العُقد، الطوابير، درجات الارتفاع المفاجئ
نموذج مصنع MOAD
كل رسم بياني لتبعيات البرمجيات يشكّل مصنعًا. كل عقدة هي محطة عمل. وكل حافة هي طابور. يدخل العمل إلى طابور العقدة، يُعالَج، ثم يتدفق إلى الطوابير اللاحقة.
يتميز كل عقدة بنتيجتين:
درجة الاندفاع = التسريع × درجة الدخول
مقدار العمل الذي يتدفق إلى الأسفل عندما يتم إزالة هذا الاختناق. عقدة بدرجة دخول 5 (5 تبعيات سابقة تتغذى عليها جميعًا) وتسريع 100× تولد اندفاعًا بمقدار 500× في المراحل اللاحقة.
درجة الوساطة = درجة الدخول + درجة الخروج
مدى مركزية محطة العمل هذه في التدفق الكلي. تعني درجة الـ betweenness العالية أن العديد من المسارات تمر عبر هذه العقدة.
نموذجان أساسيان:
عقدة مدمنة العمل: بينية عالية ودرجة surge عالية. هذه هي نقطة الاختناق. تتراكم كل الصفوف السابقة بسببها. إزالة هذه الاختناق دون توفير سعة مرحلية لاحقة يؤدي إلى انهيار كل ما يليها في الوقت نفسه.
عقدة الشره: درجة out-degree عالية ودرجة surge منخفضة. تستهلك كل ما يُغذى إليها. لا تشعر بالألم لأن اختناقها داخلي وليس في الإنتاجية. الآلة التي تنسى التوقف — يدخل العمل ولا يخرج شيء، وتظل العقدة تُبلغ "مشغولة" إلى الأبد.
MOAD-0001 & MOAD-0005: حالة الاقتران
حالة GHC
قبل تصحيح MOAD-0001 في محلل التبعيات لـ GHC: استغرق بناء N=50,000 تبعية 17 دقيقة. بعد التصحيح: 10 ثوانٍ. التسريع: 100×.
ماذا يحدث في المراحل اللاحقة؟ كل ذاكرة تخزين مؤقت، ومخزن للقطع، ومشغل CI كان يتكيف مع وصول الدفعات كل 17 دقيقة، أصبح الآن يتلقى 100× المزيد من عمليات البناء المكتملة في الساعة. ذاكرات التخزين المؤقت التي كانت مصممة للتعامل مع 60 قطعة بناء في الساعة أصبحت الآن تتلقى 6,000.
هذا هو MOAD-0005: عيب الاندفاع على ذاكرة التخزين المؤقت. يتم تفويت كل مفتاح تخزين مؤقت في نفس الوقت لأنه لم يتم تسخين أي ذاكرة تخزين مؤقت مسبقًا لمعدل الوصول الجديد. إصلاح MOAD-0001 يُنتج MOAD-0005.
الاقتران ليس عرضيًا. إنه هيكلي. أي تسريع من O(N²) → O(N) مع درجة داخلية > 1 ينتج درجة اندفاع أعلى من 1. درجة الاندفاع أعلى من 100 هي مرشحة لـ MOAD-0005.
التجهيز قبل الإفصاح
يعالج نظام البناء 1,000 رسم بياني لتبعيات الحزم في الساعة. تقوم بتصحيح MOAD-0001 في عملية اجتياز الرسم البياني، مما يقلل وقت البناء من 60 دقيقة إلى 30 ثانية — أي تسريع بمقدار 120 ضعف. أصبح النظام الآن يعالج 120,000 رسم بياني في الساعة.
متى نتوقف: شرط التوقف
شرط الإيقاف
يُعتبر التصحيح مستوفيًا لشرط الإيقاف — أي: لا تُفصح — عندما تتحقق الشروط الأربعة التالية في آنٍ واحد:
1. التصحيح موجود في نظام حي (مُدمج، مُنشر)
2. لا يوجد رعاة مُعيَّنون لتحمُّل التأثير اللاحق
3. العيب اللاحق (MOAD-0005) غير محلول
4. التسريع ≥ 100×
كل الأربعة معاً = يبكي الطفل. عيّن الفريق قبل الدمج، لا بعده.
العقدة بدون مُشرف تعمل كمحطة عمل بدون عامل. يتراكم العمل. ينهار أحدهم. مبدأ الحاسوب الدائم: لا تصلح خوارزمية التوزيع دون تجهيز السائقين. ثلاثة سائقين، ثلاثة ملايين شخص: فتح الخوارزمية يُنشئ قطيعاً هائجاً من الطلبات غير المخدومة بدلاً من تسليم أسرع.
وال-إي: الشرهون ومدمنو العمل
نموذج وال-إي
يصوّر فيلم وال-إي من بيكسار فشل نموذج المصنع بأوضح صورة. الشرهون على كراسي التحليق، يُطعمون بدون احتكاك. مدمنو العمل — وال-إي، إيف — يموتون عند محطاتهم لإبقاء التغذية مستمرة.
العقدة الشرهة (البشر على كراسي التحليق) لديها أقصى درجة خروج: تستهلك كل ما يُقدَّم لها، ولا تنتج شيئاً. درجة الاندفاع لديها صفر — إنها بالوعة. لا تشعر بالألم لأن شيئاً لا يتراكم عند مخرجها. إنها تستهلك فقط.
عقدة المدمن على العمل (WALL-E) تمتلك أعلى درجة بينية: كل شيء يمر عبرها. تمتص كل المدخلات. وتنتج المخرج الوحيد. وستؤدي درجة الاندفاع الخاصة بها، إذا تم استبدالها بنموذج أسرع، إلى إغراق كل قوائم الانتظار اللاحقة في وقت واحد.
العيب في نظام WALL-E ليس في الشرهين. بل في غياب المشرف: لا يوجد أحد مكلف بموازنة محطات العمل. ولم يقم أحد بتجهيز السعة قبل تشغيل الخوارزمية.
حالة pip: قائمة التحقق قبل الإفصاح
اكتشفت MOAD-0001 في محلل الاعتماديات الخاص بـ pip في Python. سرعة التحسين المقاسة: 200×. يعمل pip على حوالي 400 مليون تثبيت يوميًا. وتخدم PyPI الحزم.