- بواسطة x32x01 ||
ليه System Design بيبان سهل لحد ما تدخل في الجد؟
عمرك حسيت إنك فاهم System Design تمام، ولما حد سألك سؤال بسيط حسّسك إنك واقف في نص هدومك؟ موضوع شكله سهل زي URL Shortener: تبعت URL → يتخزن → يرجع Response
بس فجأة ييجي السؤال القاتل:
هنا بتبدأ تحس إن الدنيا باظت شوية
الغلطة اللي بيقع فيها ناس كتير
المشكلة إن ناس كتير (وأنا منهم في وقت من الأوقات) بتبقى:- حافظ System Design Patterns
- بس مش فاهم ليه بنستخدمها أصلاً
- إمتى أستخدمهم؟
- وليه؟
- وإيه مشاكلهم؟
Patterns مش حلول جاهزة
أهم درس اتعلمته: ما تبقاش واحد حافظ Patterns وخلاصزي اللي مجمع عدّة كتير بس مش عارف يستخدمها
الـ Patterns:
- أدوات
- مش حلول جاهزة تتحط في أي تصميم
كام User؟
نسبة Reads لـ Writes قد إيه؟
Latency المطلوب كام؟
السيستم هيكبر إزاي؟
فكر دايمًا: السيستم ده ممكن يفشل إزاي؟
اختار أي حتة في التصميم وفكر في 3 سيناريوهات ممكن يقع فيها السيستم أمثلة بسيطة:
Database الـ write عالي بس الـ read بقى بطيء
Cache الـ hit rate قليل بسبب long tail
Data Center وقع أو اتقسم… مين الـ primary؟
- إزاي هتكتشف المشكلة
- وإزاي هتعالجها
كثرة Patterns = مشاكل أكتر
كتر الـ Patterns مش معناه تصميم أحسن كل Pattern ليه:
- مميزات
- وعيوب منفصلة
- متحطليش Cache
- ولا Queues
- ولا Sharding
ضيفهم بس لما:
- Metric واضح يقولك إنك محتاجهم
- وتكون مجرب assumptions بتاعتك
ابدأ بسيط وكبّر واحدة واحدة
أحسن حل في أغلب الحالات:- ابدأ بسيستم بسيط
- كبّره مع زيادة الداتا والضغط
- شيلت الـ cache خالص
- رسمت flow جديد
- Database واحدة
- Vertical scaling الأول
أسئلة System Design مفيش ليها إجابة واحدة
أسئلة System Design:- مفيش ليها Answer ثابت
- بتعتمد على:
- الخبرة
- المشاكل اللي عدت عليك
- قدرتك تعمل Structure يناسب الموقف
مشاركة الخبرات = كنز حقيقي
يا ريت الناس الـ Senior تشارك:- مواقف كانت الحل فيها حاجة مش معتادة
- Pattern مشهور بس غيرته بعد تجربة
- قرار مختلف وطلع صح
