Table of Contents

مقدمة

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

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

فهم كامل للسؤال

قبل أن تبدأ برسم صناديق وأسهم يجب أن تفهم المشكلة بعمق معظم المرشحين يسرعون إلى حل فقط ليدركوا فيما بعد أنهم لم يفتوا السياق الحرج

توضيح النطاق والأهداف

السؤال: من هم المستخدمين؟ وما هو الغرض الرئيسي من النظام؟ هل ينبغي أن نركز على سمة محددة (مثل نشر التويتر) أو المنبر بأكمله؟ مثلا، إذا طلب منه تصميم برنامج لتقاسم المركبات، يؤكد ما إذا كان عليك تغطية السائق الذي يركب، والمواءمة في الوقت الحقيقي، وتجهيز المدفوعات، والتسعير المفاجئ، أو مجرد محرك المطابقة.

تحديد القيود

فهم القيود التي ستشكل تصميمكم: العدد المتوقع للمستعملين (مثلاً الملايين مقابل الآلاف)، وحجم البيانات، والتوزيع الجغرافي، والميزانية، والوقت إلى السوق، ويختلف نظام البدء بـ 000 10 مستخدم اختلافاً جذرياً عن نظام واحد لشبكة اجتماعية عالمية، توضيح ما إذا كان ينبغي أن تُحدِّد إلى الحد الأمثل درجة منخفضة من الرطوبة، أو ارتفاع الناتج، أو الاتساق القوي.

قياسات النجاح

السؤال عن النجاح الذي يبدو: هل هو وقت التأقلم (99.99 في المائة)، وقت الاستجابة تحت 200 متر، أو القدرة على التعامل مع نسبة محددة من القراءة إلى الكتابة؟ وهذا يضمن لك إعطاء الأولوية للمبادلات الصحيحة فيما بعد.

كسر المشكلة

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

تحديد العناصر الأساسية

وتشمل معظم النظم العملاء، والمختصين بالتطبيقات، وخواديم التطبيقات، وقواعد البيانات، والمخابئ، والأسئلة، والتخزين، والبدء بقائمة بسيطة: إدارة المستعملين، واغتنام المحتوى، والبحث، والإطعام، والإخطارات، وما إلى ذلك.() وقد تشمل العناصر الأساسية، بالنسبة لمنصة بث الفيديو، خط أنابيب تحميل، وخدمة نقل المحتوى، وشبكة تقديم الطلبات، ومحرك التوصية.

تدفق البيانات

رسم بياني لتدفق البيانات الأولية: ما الذي يحدث عندما يقوم المستخدم بعمل رئيسي؟ تتبع الطريق من الزبون إلى الخادم إلى قاعدة البيانات والخلف، وتحديد مكان إعداد البيانات وتخزينها وتجهيزها واستهلاكها، وسيبلغ ذلك لاحقا اختيار قواعد البيانات وأنماط الاتصال.

تحديد التفاعلات والأقاليم

ملاحظة كيف تتفاعل العناصر - المتزامنة (الآلية الوقائية، والشبكة العالمية للإنشاء والتعمير) ضد المفارقات (الصفوف، ومسارات الأحداث).

تحديد الاحتياجات والمقتضيات

وهذا يبين بوضوح المتطلبات الوظيفية وغير التشغيلية، مما يبين أنه يمكنك فصل ما يجب على النظام أن يفعله عن كيفية أداءه.

الاحتياجات الوظيفية

يجب أن يدعم النظام، بالنسبة لدائرة تخزين الملفات مثل صندوق القمامة، تشمل: تحميل، تحميل، حصة، متزامنة عبر الأجهزة، وتاريخ النسخ، وترتيب الأولويات على التصريفات من النوع اللطيف إلى المؤثرات.

الاحتياجات غير المالية

هذه سمات النظام الجيدة، وتشمل السمات المشتركة:

  • Scalability]: كيف يتعامل النظام مع النمو في المستخدمين أو البيانات؟
  • Availability]: نسبة التفرغ (مثل 99.9 في المائة من المستعملين).
  • ]: أوقات الاستجابة المقبولة (مثلاً، 199 دون 300 متر).
  • Consistency]: powerful vs. eventual consistency trade-offs.
  • Security]: التوثيق، والإذن، والتشفير.
  • Cost]: Budget for infrastructure and operational overhead.

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

الأولوية في الترشيحات

ليس كل الملامح متساوية، إربطها بأهميتها لتركيز جهود تصميمك، استخدم مصفوفة بسيطة:

  • Must-have]: Core operationality without which the system is usefulless. For a messaging app: send and receive messages, store history, notify.
  • Nice-to-have]: تعزيز الخبرة ولكن يمكن تأجيله، على سبيل المثال، قراءة الإيصالات، وردود الفعل، أو المكالمات بالفيديو.

خلال المقابلات، تبدأ بـ "العمليات" إذا سمح الوقت، يمكنك مناقشة كيفية توسيع التصميم لملامح لطيفة إلى مؤثرة، وهذا يبين أنك تستطيع التعامل مع المبادلات والتسليم التدريجي.

تصميم الهيكل التنظيمي الرفيع المستوى

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

أسلوب اختيار الهندسة المعمارية

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

التكنولوجيات الرئيسية المختارة

بينما لا تحتاج إلى اختيار منتجات محددة، ذكر الفئات:

  • Reason for technology choices: SQL for strong consistency, NoSQL for flexible schemas, message queues for decoupling, CDN for static content.
  • مبررات تستند إلى المتطلبات، مثلاً، استخدام نظام " بوستغريس " (S PostgreSQL) في البيانات المتعلقة بالمعاملات و " Redis " في التأشيرات لأن النظام يحتاج إلى الاتساق والسرعة على السواء.

مع دياغرام

"يُرسلون إلى خواديم الشبكة" "يُطلقون بوابة "آي بي آي" التي تُرسل إلى خدمة المستخدمين، خدمة البريد، وخدمة الإخطارات، وتتحدث الخدمات إلى قواعد بياناتهم الخاصة وتنشر رسائل إلى "كافكا" لتجهيز الأسينك"

ويمكنكم الإشارة إلى أنماط مشتركة من الإطار المحسن AWS، الذي يحفظ جيداً ] لإظهار الوعي بأفضل الممارسات.

تخزين البيانات وإدارتها

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

نوع قاعدة البيانات

  • SQL (relational) ]: عندما تكون البيانات منظمة، تكون العلاقة مسألة، والامتثال من جانب الوكالة الدولية للطاقة الذرية مطلوبة (مثل المعاملات المالية).
  • NoSQL]: بالنسبة للشحنات العالية الكتابة، والكساء المرن، أو البيانات الموجهة نحو الوثائق، الأنواع: مخازن الوثائق (MongoDB)، القيمة الرئيسية (Redis, DynamoDB)، شاغر (Cassandra)، الرسم البياني (Neo4j).

In many large systems, you use a hybrid approach: SQL for core entities, NoSQL for fast lookups or analytics. Explain your choice with reasoning like "We store user profiles in PostgreSQL for relational queries, but use DynamoDB for session tokens because we need high availability and low latency."

شيما البيانات والنمذجة

تحديد الجداول/الاستعمارات الرئيسية مع الحقول والعلاقات، ولإطعام وسائل الإعلام الاجتماعية، قد يكون لديك جداول: مستعمل، بريد، مثل، تابع، يناقش كيف تخزن قوائم الأصدقاء غير الشهيرة للقراءة السريعة، معتادة على الاتساق.

التلقيم والمساندة والإنعاش في حالات الكوارث

(أ) ضمان توافر البيانات ومناقشة تكرارها في جميع المناطق (متعددة الأطراف ضد مدير واحد) - استراتيجيات الدعم الإرشادي (الطلقات اليومية، سجلات الشطب) وأهداف نقطة الاسترداد/الانتعاش (RPO) - الأهداف الزمنية للانتعاش (RTO) - بالنسبة للنظم الحرجة، استخدام التلقيم النشط لتقليل وقت الفشل.

تقسيم البيانات (التقاسم)

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

جدول الأعمال والأداء

ويكفل التصعيد قدرة النظام على معالجة النمو دون تدهور، وتغطية طبقات البيانات والحساب.

Horizontal vs. Vertical Scaling

فالتصنيف العمودي (خواديم الخواديم الزائفة) أبسط ولكنه يحد من ذلك، فالتخفيض الأفقي (الإضافة إلى المزيد من المعاهد) يوفر مرونة ولكنه ينطوي على تعقيدات في توزيع الدولة، ويفضي إلى خدمات عديمة الجنسية، وكثيرا ما يتطلب التوسع الأفقي في الخدمات الحكومية (قواعد البيانات) التقطيع أو التكرار.

استراتيجيات الاختراق

وكثيرا ما يُطلع الخوخ على البيانات للحد من الحمولة في مجالي الطوارئ وقاعدة البيانات.

  • CDN ]: فيما يتعلق بالأصول الثابتة (الصور، CSS، الفيديو).
  • Application cache]: In-memory caches like Redis or Memcached for API responses or session data.
  • Database query cache: Cache common queries at the database level ( but careful with invalidation).

"إنّها تُعطينا معلومات عن مُستخدمي الـ"ريديس" بـ5 دقائق، عندما تُنشأ وظيفة جديدة، نُبطل المخبأ لأتباع الملصقات"

موازنة القرض وتسلق الأفق

(ج) موازنات حمولة الاستخدام على مستويات متعددة: زبون إلى خواديم نظام المعلومات الإدارية المتكامل، وخواديم نظام المعلومات الإدارية المتكامل إلى حالات الخدمة، وبين الخدمات الصغرى، وخوارزميات التناقش (السطو البري، وأقل الاتصالات، والتسرع المستمر في عقد الدورات) وعلى النطاق العالمي، استخدام نظام الموازنة بين الحمولة القائمة على النظم الوطنية لسواتل الملاحة (الإنكاسة) أو موازنة حمولة عالمية (مثل مسار التردد 53).

تقنيات توسيع نطاق قاعدة البيانات

  • Read replicas]: Offload read queries to replicas. Writes go to primary, reads to replicas (asynchronous replication) Useful for read-heavy workloads.
  • Connection pooling]: Reduce overhead of database connections by pooling them at the application or proxy layer (e.g.Bouncer).
  • Query optimization]: Indexing, query refactoring, denormalization.

التصدي للتحديات المحتملة

لكل نظام نقاط فشل، يحددها بشكل استباقي ويقترح التخفيف منها.

قضايا المراكب والنباتات

وتشمل الاختناقات المشتركة القدرة على كتابة قواعد البيانات، والتزامن بين العملية الواحدة، وشبكة النطاق الترددي، والحلول: بيانات التقسيم، واستخدام التجهيز المتزامن (الكوايا)، والتحسين الأمثل للشبكة الدولية (النظام المتكامل)، مثلا، إذا كانت قاعدة البيانات غير كافية، فإن العازل يكتب على استفسار ويدفعها.

الشواغل الأمنية

Discuss authentication (OAuth2, JWT), authorization (RBAC), encryption at rest (AES-256) and in transit (TLS), and protection against common attacks (SQL injection, DDoS, XSS). Use OWASP guidelines as a reference. For example, All APIpoints require a valid abuse

الفشل والارتداد

خطة الإخفاقات في العناصر:

  • Service redundancy]: تشغيل نسخ متعددة خلف رصيد الحمولة.
  • Database failover]: Use primary-replica with automatic promotion or multi-region active-active.
  • Circuit breakers]: Prevent cascading failures when a downstream service is slow (see ]Martin Fowler’s CircuitBreaker pattern).
  • التردي المُتَبَعَق ]: إذا فشلت خدمة التوصية، فإنها تخدم مضموناً عاماً بدلاً من صفحات الخطأ.

الرصد والقابلية للاحتجاز

(السجلات المُعدّلة) والمقاييس (البطء، معدلات الخطأ، وحدة مكافحة الشغب/النظرية)، والتعقب (التعقب المُوزّع مثل (جايجر أو زيبكين)، على سبيل المثال: "نستخدم بروميثيوس للتصفيق، و(غرافانا) لأجهزة الركام، و(إيلك) لتحليل السجلات"

الاتصال بوضوح وبكل ثقة

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

تحلل سببك

قل لماذا اخترت نهجاً واحداً على آخر، على سبيل المثال: "لقد اخترت كاساندرا على بريدجريس كيل لمخزن الرسائل لأننا نتوقع أن يكون هناك الكثير من الكتابة بدون ارتباط بينكما، و نحتاج إلى مقياس خطي، و لكن نخسر فهرسة ثانوية قوية، لذا سنخلق خدمة بحث منفصلة باستخدام إلستريش

Use Analogies and Real-World Examples

"هذا يشبه كيف تتعامل "تويتر مع التويتر سنستخدم نهج المشجعات على الكتابة للمستعملين النشطين و المشجعين على الشاشة من أجل الأقل نشاطاً

الموافقة على التغذية

إذا قام المستجوب بإدخال قيد جديد (مثلاً، "مستعملينا يتركزون في منطقتين فقط" ، أعدل تصميمك بشكل جيد ، شكراً على المُدخل وشرح كيف يؤثر التغيير على قراراتك السابقة

Use Visual Aids

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

الممارسة المنتظمة

تصميم النظام مهارة تتحسّن بالممارسة المتعمدة، إليكِ طريقة تنظيم ممارستكِ.

دراسة مشاكل التصميم المشتركة

العمل من خلال المشاكل الكلاسيكية: اختصار تصميمات " أور " ، و " تويتر " ، وأوب " ، و " توب " ، و " ماساب " ، وما إلى ذلك، وتطبيق الإطار المذكور أعلاه، وكتابة حلك ومقارنة مع الإشارات المعروفة.

المقابلات المتنقلة

ممارسة مع شريك أو استخدام منابر مثل Pramp] (مقابلات من جانب الأقران إلى الطرف الآخر) أو ] Interviewing.io. الحصول على تعليقات بشأن وضوحك وتغطيتك وعمقك.

قراءة دراسات الحالة في الهندسة المعمارية

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

وقتك

وفي المقابلات، عادة ما يكون لديك 40 إلى 60 دقيقة لسؤال التصميم، ممارسة إكمال التصميم الكامل (من توضيح متطلبات مناقشة المفاضلات) في غضون ذلك الوقت، واستخدام موقّع لبناء السرعة دون التضحية بالجودة.

خاتمة

إن أسئلة تصميم النظام المفتوح العضوية أقل عن إيجاد الإجابة عن " الحق " وأكثر عن إظهار نهج منظم ومكيف ومحكم، ومن خلال اتباع هذا الإطار، توضيح، وإلغاء، وتحديد الأولويات، والمهندس المعماري، والتصدي للتحديات، والتواصل بوضوح، يمكن أن تعالجوا على نحو واثق أي تصميم فوري، وتذكروا الممارسة المنتظمة، وتلتمسوا التعليقات، وتظلوا متسائلين عن كيفية تطور نظم العالم الحقيقي، ومع مرور الوقت، تصبح هذه العملية ذات طابع ثانٍ.