- بواسطة x32x01 ||
😅 ليه System Design بيبان سهل لحد ما تدخل في الجد؟
عمرك حسيت إنك فاهم System Design تمام، ولما حد سألك سؤال بسيط حسّسك إنك واقف في نص هدومك؟ 😅موضوع شكله سهل زي URL Shortener: تبعت URL → يتخزن → يرجع Response ✔️
بس فجأة ييجي السؤال القاتل:
❓ طب إيه اللي هيحصل لو وصلنا لـ 10 مليون write في الثانية؟
هنا بتبدأ تحس إن الدنيا باظت شوية 😬.
🤯 الغلطة اللي بيقع فيها ناس كتير
المشكلة إن ناس كتير (وأنا منهم في وقت من الأوقات) بتبقى:- حافظ 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 مشهور بس غيرته بعد تجربة
- قرار مختلف وطلع صح 👏