الدرس 0: لماذا نصمّم نطاق النظام مسبقًا؟
مشروع جانبي يعمل بشكل مثالي. عشرة مستخدمين يسجّلون الدخول، يكتبون، يقرؤون — وكل شيء يستجيب فورًا. خادم واحد، قاعدة بيانات واحدة، وكود يُنفَّذ سطرًا بسطر (متزامن) — فلماذا نعقّد الأمور؟ الآن تخيّل الكود نفسه تمامًا، دون تغيير سطر واحد، وهو يواجه عشرة ملايين مستخدم. فجأة يختنق الخادم الوحيد، وتتحوّل ق
تصميم الأنظمة أشبه بتخطيط طريق قبل أن تنمو مدينة حوله: من السهل تعديل خطّ على الورق، ومن الصعب جدًّا اقتلاع طريق ممتلئ بالسيارات بالفعل وإعادة بنائه.
- النطاق (Scale)
- عدد المستخدمين أو الطلبات أو حجم البيانات التي يجب أن يخدمها النظام في آنٍ واحد. الكود نفسه قد يعمل على أكمل وجه على نطاق صغير وينهار على نطاق واسع، دون أي تغيير في منطقه.
- مفاضلة النطاق
- اختيار متعمَّد بين خاصيتين جيدتين عندما يتعذّر تعظيمهما معًا في آنٍ واحد — مثل السرعة مقابل الاتساق، أو التكلفة مقابل الموثوقية، أو البساطة مقابل المرونة. لا توجد إجابة صحيحة واحدة، بل خيار يناسب القيود الحالية فقط.
- مقابلة تصميم الأنظمة
- صيغة مقابلة تقنية شائعة في الشركات الحسّاسة تجاه النطاق، تختبر ليس فقط ما إذا كان المرشّح يكتب كودًا صحيحًا، بل ما إذا كان قادرًا على التفكير في المفاضلات ضمن قيود حقيقية — وهي بالضبط المهارة التي تحمي أيضًا الأنظمة الحقيقية من الانهيار.