Consistency وReplication وCAP
لا تقلق إذا بدت هذه الكلمات مخيفة — سنشرح كل واحدة منها على طول الطريق. في هذا الدرس نتعلم كيف نتحدث في مقابلة عمل عن بعض الأفكار الأساسية: replication (الاحتفاظ بنسخ من البيانات نفسها في عدة أماكن، بحيث إذا تعطل جهاز واحد يوجد نسخة احتياطية)، quorum (عدد النسخ التي يجب أن تتفق قبل أن نقول إن العملي
System Design (التخطيط لكيفية بناء برمجيات كبيرة تخدم عدداً كبيراً من الناس) يشبه تخطيط مدينة: طرق، ومخازن، وإشارات مرور، وفرق صيانة، بحيث تستمر المدينة في العمل بسلاسة حتى في ساعة الذروة، عندما يكون الجميع في الخارج في الوقت نفسه.
- الاتساق والنسخ المتماثل
- الفكرة الأساسية لهذا الدرس: كيف نحتفظ بنسخ من البيانات (replication)، كم عدد النسخ التي يجب أن تتفق (quorum)، لماذا تتحدّث النسخ أحياناً بعد لحظة فقط (eventual consistency)، أي مقايضة نختار أثناء وجود مشكلة في الشبكة (CAP)، وكيف ننتقل إلى نسخة احتياطية تلقائياً عندما يتعطل شيء ما (failover).
- Trade-off
- Trade-off (مقايضة) — اختيار واعٍ تكسب فيه شيئاً وتدفع مقابله بشيء آخر، مثل اختيار الوجبات السريعة بدلاً من وجبة مطبوخة في المنزل: توفّر الوقت لكنك تفقد بعض الجودة. في المقابلة تشرح ما الذي كسبته وما الذي كلّفك إياه.
- مقياس تشغيلي
- مقياس تشغيلي — رقم يوضّح ما إذا كان القرار يعمل فعلاً عندما يكون النظام حياً ويخدم مستخدمين حقيقيين (يُسمى هذا production). على سبيل المثال: latency (كم من الوقت يستغرق للحصول على إجابة)، error rate (نسبة الطلبات التي تفشل)، queue lag (كم عدد المهام المنتظرة في الطابور)، cache hit ratio (كم مرة وجدنا الإجابة في الذاكرة السريعة)، وغيرها.