إجابة تصميم نظام تتّسع لخمس وأربعين دقيقة
حدّد النطاق، ثم ارسم، ثم اضغط عليه. من ينفد وقتهم هم من بدؤوا بالرسم أولًا.
«صمّم خلفية لتطبيق نقل ركّاب» ليست سؤالًا بل إقليمًا. وخمس وأربعون دقيقة تكفي لتغطية مسار واحد فيه تغطية جيدة، أو كلّ المسارات تغطية رديئة. والبنية هي ما يفصل بين الحالتين، وهي البنية نفسها في كل مرة تقريبًا.
١. المتطلبات — خمس دقائق
قرّر ما الذي تبنيه قبل أن تبنيه. الوظيفية: أيّ فعلين أو ثلاثة للمستخدم ضمن النطاق؟ وغير الوظيفية: كم مستخدمًا، وما نسبة القراءة إلى الكتابة، وما زمن الاستجابة، أيحتاج اتّساقًا قويًا أم يكفي الاتّساق النهائي؟ اسأل ولا تفترض. وإن قال المُحاوِر «قرّر أنت»، فاذكر افتراضك بصوت مسموع ودوّنه — فيصير عقد بقية الإجابة.
٢. حساب المظروف — ثلاث دقائق
حوّل الأرقام إلى شيء تستطيع التصميم في مواجهته. عشرة ملايين مستخدم يوميًا يفتح كلٌّ منهم التطبيق خمس مرات يعني نحو ستمئة طلب في الثانية كمعدّل، فلنقل ثلاثة آلاف في الذروة. ومئة بايت للحدث بمليون حدث يوميًا تعني مئة ميغابايت يوميًا، وأربعين غيغابايت سنويًا. لا أحد يدقّق حسابك إلى منزلتين عشريتين، بل يدقّقون أنك تعرف أيتّسع هذا لآلة واحدة أم يحتاج أسطولًا.
٣. الرسم العام — عشر دقائق
العملاء، وطبقة الواجهة، والخدمتان أو الثلاث المهمّة، ومخازن البيانات، وما يقع بينها. أبقِه في حدود مربّعات تستطيع تبريرها. فكل مربّع ترسمه مربّع قد تُطالب بالدفاع عنه؛ فلا تضف طابور رسائل لأن المخطّطات عادةً فيها واحد — أضفه حين تستطيع قول ما الذي يفصله وما الذي يحدث حين يتراكم.
٤. نموذج البيانات — خمس دقائق
هنا تنكشف الإجابات الضعيفة. سمِّ الكيانات الرئيسة، وأنماط الوصول، واختيار المخزن مع سبب: «القراءات بحسب المستخدم والمدى الزمني وهي أكثر بكثير من الكتابات، فسأقسّم بحسب معرّف المستخدم وأبقي النافذة الحديثة في ذاكرة مؤقتة». واختيار SQL أو NoSQL دون تسمية نمط الوصول الذي دفع إليه هو أشهر ثغرة مفردة في هذه الجولة.
٥. اضغط عليه — الوقت المتبقي
- أين يظهر الاختناق أولًا؟ قله قبل أن يسألوا. لكل تصميم اختناق، والتظاهر بغير ذلك أقلّ ما تستطيع قوله مصداقيةً.
- ما الذي يحدث حين يفشل مكوّن — أنمط الفشل خدمة متدهورة أم فقدان بيانات؟
- كيف يتصرّف عند عشرة أضعاف الحمل؟ أيّ جزء عديم الحالة ويتوسّع أفقيًا، وأيّ جزء هو المشكلة؟
- ما الذي تتعمّد عدم معالجته، ولماذا يكون ذلك مقبولًا في هذا النطاق؟
عادات تُقرأ جيدًا
أدِر الساعة بصوت مسموع — «بقي لدينا خمس عشرة دقيقة؛ أفضّل التعمّق في خدمة المطابقة على رسم كل شيء، أينفعك ذلك؟». يقول المُحاوِرون «نعم» دائمًا تقريبًا، فيتحوّل مشكل الوقت إلى قرار مشترك. وقل «لا أعرف» حين لا تعرف، ثم قل كيف ستعرف. لا يُتوقَّع من أحد أن يكون قد شغّل كل تقنية يسمّيها، والتظاهر بذلك يسقط عند السؤال المتابع الثاني.
تصميمٌ سُمّي فيه اختناق واحد بصدق أقوى من تصميم لا اختناق فيه.