دوز مباشرة للمحتوى الرئيسي
دروس فالذكاء الاصطناعي

تدرّب على مقابلات تصميم الأنظمة مع System Design Trainer

تعلّم كيفاش تثبّت System Design Trainer، وتنشئ معماريات AWS وAzure فالسبّورة التفاعلية ديالو، وتقيّم السعة والموثوقية، وتكمّل المستويات المنظّمة، وتستعمل Jev باش تاخذ ملاحظات على قرارات التصميم.

تدرّب على مقابلات تصميم الأنظمة مع System Design Trainer

شنو هو System Design Trainer؟

System Design Trainer هو سبّورة تفاعلية للتدرّب على مقابلات تصميم الأنظمة. كتختار سيناريو، وكتجرّ مكوّنات AWS ولا Azure للوحة، وكتربط بينها باش تبني معمارية، ومن بعد كتطلق محاكاة حتمية للسعة.

المحاكي كيقدّر شحال من حركة يقدر كل مكوّن يدعم، وكيحدّد عنق الزجاجة فالنظام، وكيبيّن المخاطر المعمارية. ملي كتوجد المعمارية، يقدر Jev يقيّم الاختيارات اللي ما كتتحكمش فيها حسابات السعة بوحدها، بحال قابلية التوسّع، والموثوقية، وتصميم البيانات، والشرح المكتوب ديالك.

الميزات الرئيسية

  • لوحة تفاعلية للمعمارية: السبّورة مبنية باستعمال React Flow عبر @xyflow/react.
  • تدرّب منظّم: المشروع فيه 15 مستوى موزّعين على أربعة فصول.
  • نمذجة مباشرة للسعة: كل عقدة كتعرض نسبة الاستعمال وتقديراً لعدد المستخدمين اللي تقدر تدعمهم.
  • تشخيص المعمارية: المحاكي كيكشف نقاط الفشل الوحيدة، وموازِنات الحمل الناقصة، والزبناء المرتابطين مباشرة بقواعد البيانات.
  • تقديرات التكلفة والتوفّر: النظام كيوفّر مؤشرات إضافية إلى جانب حسابات الإنتاجية.
  • تقييم بحال ديال المقابِل: Jev كينقّط قابلية التوسّع، والموثوقية، وتصميم البيانات، والشروحات المكتوبة، ومن بعد كيقترح شنو خاصك تحسّن من بعد.
  • تقنيات مخصّصة: تقدر تدخل تقنيات بحال Kafka ولا MongoDB ولا NGINX. Jev كيصنّف الدور المعماري ديالها باش يعيّن ليها ملف السعة المناسب.
  • التقدّم المحلي: التصاميم والتقدّم فالسيناريوهات كيتخزّنو فالمتصفّح.
  • اللعب الحر: كاينة سبّورة مفتوحة خارج المستويات المنظّمة.

تثبيت وتشغيل المشروع

1. ثبّت الاعتماديات

دير clone للمستودع ولا حمّلو، وحلّ المجلد ديالو فواحد الطرفية، وثبّت اعتماديات npm:

npm install

2. صايب ملف البيئة المحلي

نسخ قالب البيئة المرفق إلى .env.local:

cp .env.example .env.local

3. كوّن Jev

باش توصلك أجوبة حقيقية من Jev، زِد قيمة TYPESAFE_API_KEY فـ .env.local. Jev مطبّق فـ lib/server/jev.ts باستعمال @typesafe-ai/sdk.

التطبيق يقدر يخدم حتى بلا مفتاح API. فهاد الحالة، أجوبة Jev كترجع لنموذج تجريبي مبيّن بوضوح، وكيخليك تجرّب باقي مسار العمل بلا تقييم خارجي.

4. شغّل خادم التطوير

npm run dev

حلّ العنوان المحلي اللي كيبيّنو خادم التطوير باش تبدا تستعمل المدرّب.

كمّل أول تمرين ديالك فتصميم الأنظمة

  1. اختار سؤال. اختار سيناريو بحال تصميم البنية التحتية لمليون مستخدم. كل سيناريو كيعطي عدد مستخدمين ومتطلبات ثابتة.
  2. قرا الأهداف. المستويات فيها أهداف إجبارية وأهداف إضافية اختيارية كيتفحصو ملي كتطلق التصميم.
  3. زِد مكوّنات السحابة. جرّ مكوّنات AWS ولا Azure المناسبة للسبّورة.
  4. ربط المعمارية. صايب مسارات الطلبات والبيانات بين الزبناء، ومكوّنات الشبكة، وخدمات التطبيق، والذاكرات المؤقتة، والطوابير، وقواعد البيانات، على حساب اللي مناسب للسيناريو.
  5. طلّق التصميم. راجع الاستعمال، وتقديرات المستخدمين المدعومين، والتوفّر، والتكلفة، وتحذيرات المعمارية.
  6. حلّ عنق الزجاجة. حدّث التصميم على حساب المكوّنات اللي فاتتها السعة ولا التحذيرات الهيكلية، ومن بعد عاود شغّلو.
  7. طلب ملاحظات Jev. صيفط التصميم والشرح المكتوب للتقييم ملي تكون واجد.

كيفاش كيتحسب التنقيط فالمستوى

إلى كمّلتي جميع الأهداف الإجبارية كتربح نجمة وحدة. كل هدف إضافي كيعطي نجمة أخرى. النجوم كيعطيو XP وكيساهمو فالرتبة ديالك، والتقدّم كيبقى محفوظ فالمتصفّح.

الفصل 4 كيطلب منك تعاود تبني معمارية مرجعية من Azure Architecture Center. من بعد ما تكمل واحد من هاد المستويات، المدرّب كيربطك بالمعمارية الأصلية.

فهم نموذج السعة

محرك السعة كاين فـ lib/simulate.ts. هو حتمي وما كيستعملش الذكاء الاصطناعي. الحمل الأقصى كيتستخرج من السيناريو بالعلاقة التالية:

DAU × requests per day ÷ 86,400 × peak factor

النموذج كيفرّق هاد الحمل بين القراءات والكتابات، ومن بعد كينشرو من عقدة Users عبر الرسم البياني المرتابط.

كيفاش كيتأثّر الترافيك بالمكوّنات الشائعة

  • شبكات CDN: كتمتص الجزء من الترافيك اللي كيحدّد السيناريو أنه قابل للتخزين المؤقت فالطرف.
  • الذاكرات المؤقتة: كتمتص القراءات على حساب نسبة الإصابات ديالها. النموذج كيدعم وضع cache-aside كمكوّن شقيق والوضع المضمّن.
  • الطوابير: كتحيّد الكتابات من المسار المتزامن وكتسوّيها تدريجياً نحو متوسط معدل الطلبات.
  • المكوّنات الشقيقة: المكوّنات من نفس النوع كتقسم الحمل بالتساوي. مثلاً، موازِن حمل مربوط بجوج مجموعات ديال التطبيق كيوزّع الترافيك بيناتهم.
  • قواعد بيانات SQL: سعة الكتابة محدودة بمكوّن أساسي واحد.
  • قواعد بيانات NoSQL: سعة الكتابة كتتوسّع مع الأقسام.

كل نود كيعرض الاستعمال وتقدير ديال supports ~N users، محسوب بقسمة عدد المستخدمين فالسينيوريو على نسبة الاستعمال. السعة الإجمالية ديال السيستيم كتحددها الحلقة الأضعف، يعني النود اللي عندو أقل تقدير ديال المستخدمين اللي كيقدر يدعمهم.

مثال على تكرار التصميم

نفترضو أن التصميم كيبعث الترافيك كامل ديال الكليان مباشرةً لمكوّن واحد ديال التطبيق، ومن بعد لقاعدة البيانات. تشغيل السيمولاسيون يقدر يبيّن أن التطبيق ولا قاعدة البيانات هي الحلقة الأضعف، ومعاها تحذيرات ديال الاعتمادية.

من بعد تقدر تراجع الأركيتيكتشر بإضافة التوزيع المناسب، والكاش، والمعالجة غير المتزامنة، ولا مكوّنات البيانات. مثلاً، مجموعات متشابهة ديال التطبيق ورا لود بالانسر تقدر تقسّم ترافيك التطبيق، والكاش يقدر ينقص القرايات من قاعدة البيانات حسب نسبة الإصابة ديالو، والكويو يقدر ينقل عمليات الكتابة بعيداً على المسار المتزامن. عاود شغّل الموديل من بعد كل تغيير باش تشوف واش الحلقة الأضعف تحركات لمكان آخر.

تقدير سعة أكبر ما كيعنيش أوتوماتيكياً أن التصميم صحيح. استعمل Jev باش تقيّم المقايضات فالإعتمادية، وتصميم البيانات، وقابلية التوسع، والمنطق اللي ورا الاختيارات ديالك.

استعمل Jev بفعالية

السيمولاتور الحتمي كيعطي Jev الأرقام اللي حسبها على شكل حقائق. ومن بعد Jev كيتكلف بالأحكام اللي ما يمكنش نختزلوها فمعادلات ديال الإنتاجية.

  • نقط التقييم: كيراجع قابلية التوسع، والإعتمادية، وتصميم البيانات، والشرح المكتوب.
  • اختيار التحسين: كيحدد شنو خاصو يتحسن من بعد.
  • أحكام اللائحة المرجعية: كينتج Noul واحد لكل عنصر فـلائحة التحقق ديال السينيوريو.
  • تصنيف المكوّنات المخصصة: كيعطي دور أركيتيكتوري لتكنولوجيا كتدخلها، وكيخلي الترainer يطبق بروفايل السعة المناسب.

باش تحصل على ملاحظات أقوى، خلّي الشرح المكتوب واضح ومحدد. وصف مسار الترافيك، وافتراضات التوسع، وكيفاش كيتعالج الفشل، وأنماط القراية والكتابة، وعلاش كل مكوّن رئيسي موجود.

نصائح متقدمة

حسّن الحلقة الأضعف، ماشي كل مكوّن

السيستيم ما كيدعم غير العدد ديال المستخدمين اللي كيسمح به المكوّن المحدود. بدا بالنود اللي عندو أقل تقدير ديال المستخدمين المدعومين. من بعد ما تبدل التصميم، عاود شغّل السيمولاسيون حيث إزالة حلقة أضعف وحدة تقدر تبيّن حلقة أخرى.

قارن بين المسارات المتزامنة وغير المتزامنة

الكيوات كتحيد عمليات الكتابة من مسار الطلب المتزامن وكتسوّيها مع الحمل المتوسط. استعمل الموديل باش تقارن بين مسار كتابة مباشر وأركيتيكتشر فيها كيو، ملي السينيوريو كيسمح بالمعالجة غير المتزامنة.

جرّب أماكن وضع الكاش

السيمولاتور كيتعرف على الكاشات المستعملة كإخوة فـنمط cache-aside، وعلى الكاشات اللي محطوطة داخل المسار. لاحظ كيفاش المكان ونسبة الإصابة كيأثرو على ترافيك القراية فالمراحل اللي من بعد.

راقب التحذيرات البنيوية

ما تركّزش غير على الاستعمال. قلب على نقط الفشل الوحيدة، واللود بالانسرات الناقصة، والاتصالات المباشرة بين الكليان وقاعدة البيانات. هاد التحذيرات تقدر تكشف ضعف فالتصميم متعلق بالإعتمادية ولا بالأمن، حتى إلا كانت السعة الخام كافية.

تفقّد المصدر اللي ورا أرقام الكاتالوغ

بيانات السعة، والتوافر، والتكلفة متعرفة فـlib/catalog.ts. كل رقم فيه مصدر كيبان فبطاقة خصائص المكوّن. القيم مصنفة كحدود رسمية، أو اتفاقيات مستوى الخدمة الرسمية، أو معايير أداء ديال المزوّد، أو افتراضات، أو خدمات ما عندهاش حد منشور.

  • حد رسمي: كوطا منشورة من AWS ولا Azure، بحال تحديد عدد الطلبات على مستوى الحساب.
  • SLA رسمي: التزام شهري منشور من المزوّد بنسبة التوافر.
  • معيار أداء ديال المزوّد: رقم أداء منشور وماشي مضمون.
  • افتراض: قيمة ممذجة ملي ما كاين حتى رقم من المزوّد. المشروع كيعتبر حتى التكاليف كاملة افتراضات.
  • ما كاين حتى حد منشور: خدمة ممذجة على أساس أنها كتتوسع بشكل مستقل، وبالتالي ما كتوليش هي الحلقة الأضعف.

الـREADME كيقول أن هاد المصادر تراجعات آخر مرة فشتنبر 2026. كوطات السحابة كتتبدل، وكثير منها يمكن يترفع، لذلك خاص نتائج السيمولاسيون تتعتبر تقديرات وماشي ضمانات.

استكشف السينيوريوات ولا وسّعها

تعريفات السينيوريوات مخزنة فـlib/scenarios.ts، والمستويات الـ15 المنظمة معرفة فـlib/levels.ts. زِد السينيوريوات فـlib/scenarios.ts ملي تبغي توسّع التمارين المتاحة.

فهم التخزين فالمتصفح

تصاميم الكانفاس كتتحفظ لكل سينيوريو فـlocalStorage، والتقدم حتى هو كيبقى فالمتصفح. تذكّر أن تخزين المتصفح محلي للبروفايل والبيئة الحاليين ديال المتصفح.

الخلاصة

System Design Trainer كيجمع بين كانفاس تفاعلي لأركيتيكتشر السحابة، ونمذجة حتمية للسعة، وأهداف منظمة، ومراجعة للتصميم مبنية على Jev. استعمل السيمولاتور باش تختبر السلوك القابل للقياس، واستعمل التحذيرات باش تكشف المشاكل البنيوية، واستعمل Jev باش تحسّن المنطق وتحليل المقايضات المطلوبين فمقابلة ديال تصميم الأنظمة.