STACK://UP الأقاليم 0/9RTL · AR / قفز · ? اختصارات UP

الإقليم ٢ — نقطة الانهيار الواحدة (SPOF) والتكرار (Redundancy)

النبذة

هذا أقصر الأقاليم وأكثرها أثراً. لا برامجَ جديدة هنا، بل مفهومٌ واحد هو محرّك المنهج كله، ويطلب منك المشروع صراحةً أن تشرحه: «explain system redundancy». إن أتقنتَ هذا الإقليم، ستشتقّ كل عنصرٍ قادمٍ بنفسك، لأن كل عنصرٍ قادمٍ هو إجابةٌ على SPOF.

اللغز المستفزّ

خادمك الواحد (Task 0) يموت في الثالثة فجراً. سؤالان:

  1. كم نسبة المستخدمين المتأثّرين؟
  2. صمّم — على ورقة — أصغر تغييرٍ يجعل الجواب صفراً، بحيث لو مات أي خادمٍ بقي الموقع يعمل.

ستكتشف أن «التغيير الصغير» يفتح علبة أسئلةٍ كاملة: لو وضعتَ خادمين، من يقرّر إلى أيّهما يذهب المستخدم؟ وكيف يعرف أحدهما أن الآخر مات؟ اكتب محاولتك؛ بقية المنهج إجابةٌ منظَّمة على ما ستكتشفه هنا.

الدرس

ليش يوجد SPOF أصلاً — تعريفٌ دقيق

لاحظ

SPOF (Single Point Of Failure): أيّ عنصرٍ في النظام، إن تعطّل وحده، يتعطّل النظام كله.

الكلمة المفتاحية «وحده». ليس المهمُّ احتمال العطل — كل شيءٍ يعطل يوماً ما (أقراص، شبكات، طاقة، بشر ينشرون كوداً خاطئاً). المهمّ: هل عطلُ هذا العنصر وحده كافٍ لإسقاط كل شيء؟ في Task 0 كل عنصرٍ SPOF، لأن كل عنصرٍ متفرّد: الصندوق، الـ web server، قاعدة البيانات، حتى الـ DNS لو خادمٌ واحد. السؤال الذي تتدرّب عليه: امشِ على المخطّط عنصراً عنصراً واسأل «لو مات هذا وحده، هل يسقط الموقع؟». كل «نعم» = SPOF يجب أن تطارده.

ليش التكرار (redundancy) هو الجواب — وما ثمنه

إن كان عطل العنصر وحده هو المشكلة، فالحلّ بديهيٌّ بمجرد أن تسمّيه: لا تجعله وحده. ضع نسخةً ثانية يمكنها أن تحلّ محلّه. هذا هو التكرار (redundancy): وجود أكثر من نسخةٍ تؤدّي نفس الدور، بحيث لا يكون أيٌّ منها لا غنى عنه.

لكن — وهنا العدسة تعمل — التكرار يلد مشاكلَ جديدة، وهي بالضبط ما يملأ بقية المنهج:

لاحظ كيف أن مجرّد فهم «SPOF ⟵ redundancy ⟵ مشاكل التكرار» يجعلك تتنبّأ بكل الأقاليم القادمة. هذا هو معنى «الاشتقاق لا الحفظ».

ليش «التوفّر العالي» (High Availability) ليس مرادفاً للتكرار

التكرار وسيلة؛ التوفّر العالي (HA) هو الهدف: أن يبقى النظام عاملاً رغم الأعطال. ولأنّ للتكرار وجهين، يأتي مصطلحان ستُسألان عنهما لاحقاً (إقليم ٣)، نزرعهما الآن لأنهما يولدان مباشرةً من سؤال «النسختان: كلتاهما تعمل أم واحدةٌ تنتظر؟»:

الفرق بينهما، ومتى تختار أيّاً، نفصّله حين نملك الموزّع. يكفيك الآن أن تراهما ابنين شرعيّين لمفهوم التكرار.

تحليل الأخطاء: أوهام التكرار

التمرين (سبورة + تفكير)

خذ مخطّط Task 0، وضع إصبعك على كل عنصرٍ بالترتيب (DNS, server box, Nginx, app server, MySQL). لكلٍّ منها اكتب: (أ) هل هو SPOF؟ (ب) ما أصغر تكرارٍ يزيله؟ (ج) ما التهديد الجديد الذي يولده ذلك التكرار؟ هذا الجدول الثلاثي هو خريطة طريقك في الأقاليم ٣–٧؛ احتفظ به وقارنه بما تبنيه لاحقاً.

الخلاصة — وصلٌ في الشجرة

البذرة المتروكة: قرّرنا أننا نريد نسختين تخدمان، لكن تركنا سؤالين معلّقين: من يوزّع المستخدمين على النسختين؟ وكيف يُخفى موتُ إحداهما؟ هذان السؤالان اسمهما معاً: load balancer. إليه ننتقل.


على السبورة (إنجليزي، مكثّف)

A SPOF (Single Point Of Failure) is any component whose failure alone takes the whole system down. In the single-server setup, everything is a SPOF.

Redundancy removes a SPOF by running more than one instance of a role, so no single one is indispensable — that's how we reach High Availability (HA): the system keeps serving despite failures.

The trade-off: redundancy costs more, adds synchronization complexity, and often just moves the SPOF (e.g., to whatever now distributes or coordinates the copies) — which is the next thing we make redundant.

وقفة الانضباط: «system redundancy» يُشرح في جملتين: running duplicate components so a single failure doesn't cause downtime. لا تَسرد أنواع الأعطال ما لم يُطلب.