الأمان والخصوصية وتعدّد المستأجرين
لا تقلق إذا بدت هذه الكلمات مخيفة — سنشرح كلّاً منها في الطريق. في هذا الدرس نتعلّم كيف نتحدّث في المقابلة عن الحفاظ على نظام آمن وخاص. سنبدأ بـ authn/authz — وهو اختصار لأمرين: authentication (التحقّق من هويتك، مثل إبراز بطاقة الهوية عند المدخل) و authorization (تحديد ما يُسمح لك بفعله بعد دخولك).
System Design (التخطيط لكيفية بناء برمجيات كبيرة تخدم كثيراً من الناس) يشبه تخطيط مدينة: طرق، ومخازن، وإشارات مرور، وفرق صيانة، حتى تظل المدينة تعمل بسلاسة حتى في ساعة الذروة، حين يخرج الجميع في الوقت نفسه.
- الأمان والخصوصية
- الفكرة الأساسية لهذا الدرس: كيف نحافظ على أمان النظام وخصوصية بيانات المستخدمين. ويشمل ذلك: المصادقة والتفويض (authn/authz — من أنت وما يُسمح لك بفعله)، وحفظ الأسرار وكلمات المرور في مكان محمي (secrets)، وتشفير البيانات (encryption)، وفصل العملاء المختلفين (tenant isolation)، ومنع إساءة الاستخدام (abuse prevention)، وكم من الوقت نحتفظ بالبيانات ومتى نحذفها (retention).
- Trade-off
- Trade-off (مفاضلة) — اختيار واعٍ تكسب فيه شيئاً وتدفع مقابله شيئاً آخر، مثل اختيار الوجبات السريعة بدلاً من وجبة مطبوخة في المنزل: توفّر الوقت لكنك تخسر بعض الجودة. في المقابلة تشرح ما الذي كسبته وما الذي كلّفك.
- مقياس تشغيلي
- مقياس تشغيلي — رقم يوضّح ما إذا كان القرار يعمل فعلاً حين يكون النظام حياً ويخدم مستخدمين حقيقيين (يُسمى هذا production). على سبيل المثال: latency (كم من الوقت يستغرق الحصول على إجابة)، error rate (نسبة الطلبات التي تفشل)، queue lag (كم عدد المهام المنتظرة في الطابور)، cache hit ratio (كم مرة وجدنا الإجابة في الذاكرة السريعة)، وغير ذلك.