ملحق: تمارين السبورة (Whiteboard Drills)
المشروع كله whiteboarding أمام مُقيّم، ٣٠ دقيقة، بلا حاسوبٍ ولا ملاحظات. هذه المهام الخمس كألغازٍ مؤقّتة، مع معيار تقييمٍ ذاتي: ارسم من رأسك، ثم صحّح نفسك بالقائمة. لا تنظر للحلّ في الأقاليم قبل المحاولة.
طريقة الاستعمال: اضبط مؤقّتاً ٧–١٠ دقائق لكل مهمة. ارسم + انطق الشرح بصوتٍ عالٍ بالإنجليزية كأن المُقيّم أمامك. ثم راجع القائمة وضع ✓/✗.
Drill 0 — Simple web stack (Task 0)
ارسم: مستخدم → DNS → خادمٌ واحدٌ يحوي (Nginx, app server, codebase, MySQL).
يجب أن تنطق (تحقّق ✓):
- دور domain name، ونوع سجلّ
www= A (قيمته IP) ولماذا ليس CNAME. - الخادم = دورٌ لا صندوق.
- دور web server / application server / database (كلٌّ بجملة).
- الخادم يكلّم المستخدم بـ HTTP over TCP/IP.
- المشاكل الثلاث: SPOF، downtime عند الصيانة، لا يتوسّع.
Drill 1 — Distributed (Task 1)
ارسم: load balancer (HAProxy) أمام خادمين، كلٌّ web+app+db، مع primary‑replica.
تحقّق ✓:
- لكل عنصرٍ مضاف: لماذا أضفته (بجملة).
- خوارزمية الموزّع (Round Robin) وكيف تعمل.
- Active‑Active أم Active‑Passive + الفرق.
- كيف يعمل Primary‑Replica (writes→primary, binlog→replica, reads→replica) والفرق من منظور التطبيق.
- المشاكل: أين الـ SPOF، لا firewall/HTTPS، لا monitoring.
Drill 2 — Secured & monitored (Task 2)
ارسم: بنية Task 1 + 3 firewalls + شهادة/HTTPS على الموزّع + 3 monitoring clients.
تحقّق ✓:
- لماذا أضفت كل عنصر.
- ما وظيفة الـ firewalls.
- لماذا الحركة عبر HTTPS (سرّية/تكامل/مصادقة).
- ما غرض المراقبة، وكيف تجمع الأداة بياناتها (agent → push → service).
- كيف تراقب QPS للـ web server (عُدّ access log عبر الزمن).
- المشاكل: لماذا SSL termination عند الموزّع مشكلة؛ لماذا **كاتب MySQL واحد مشكلة؛ لماذا كل المكوّنات على كل خادم** مشكلة.
Drill 3 — Scale up (Task 3)
ارسم: عنقود موزّعين + فصل web/app/db كلٌّ على خادمه (طبقات).
تحقّق ✓:
- لكل عنصرٍ مضاف: لماذا (فصل ⟵ توسّع مستقل + عزل؛ موزّع ثانٍ ⟵ إزالة SPOF الموزّع).
- كيف يعمل عنقود الموزّعين (Active‑Passive عبر VIP/heartbeat، أو Active‑Active).
- أين تبقى الـ SPOF (الكاتب الواحد، ربما DNS).
Drill 4 — What happens when you type google.com (المشروع الثاني)
ارسم + اسرد: المحطّات الثماني بالترتيب، كل سهمٍ مسمّى، الحركة مُعلَّمةٌ مشفّرة.
تحقّق ✓ (الكلمات الثماني الإلزامية):
- DNS request — اسم → IP (cache/TTL).
- TCP/IP — اتصال على port 443، مصافحة ثلاثية، تسيير IP.
- Firewall — يسمح بـ 443 فقط.
- HTTPS/SSL — شهادة (هوية) + مفتاح جلسة + تشفير.
- Load‑balancer — health check + توزيع لخادمٍ حيّ.
- Web server — HTTP + static + reverse proxy.
- Application server — يشغّل الكود يولّد الصفحة.
- Database — استعلام (read replica / write primary).
- افتتحتَ بـ "focus on a specific area?".
معيارٌ عابرٌ لكل التمارين
- ✗ رسمتُ من الذاكرة لا من الاشتقاق؟ أعد: لكل عنصرٍ اسأل «أي SPOF/اختناق يزيله؟» — إن لم تعرف، أنت تحفظ لا تفهم.
- ✗ تكلّمتُ أكثر من اللازم؟ كل بندٍ جملةٌ أو اثنتان. الإطناب يخصم.
- ✗ بدأتُ بـ"كيف" قبل "لماذا"؟ ابدأ دائماً بالسبب.