بناء منصة بالاشتراك الشهري مختلف جوهرياً عن بناء موقع أو نظام لشركة واحدة. الفرق مش في المميزات، الفرق في إن عندك عملاء كتير بيستخدموا نفس النظام وبياناتهم لازم تفضل منفصلة تماماً — ودي مشكلة تقنية حقيقية.
التحدي الأول: عزل البيانات
لو عميلين على منصتك، وعميل شاف بيانات التاني ولو مرة واحدة — منصتك خلصت. السمعة مابترجعش.
فيه تلات طرق للعزل:
1. قاعدة بيانات منفصلة لكل عميل. أقوى عزل، لكن صيانة صعبة: أي تحديث في الهيكل لازم يتطبّق على كل قاعدة. مناسب للعملاء الكبار اللي بيدفعوا كتير.
2. قاعدة واحدة بعمود `tenant_id` في كل جدول. الأكثر شيوعاً والأسهل صيانة. الخطر: نسيان الفلترة في استعلام واحد = تسريب بيانات.
الحماية الصح إنك ماتعتمدش على ذاكرة المبرمج. استخدم فلترة تلقائية على مستوى النموذج (global scope) بحيث إن أي استعلام بيتفلتر بالمستأجر الحالي افتراضياً، ويبقى لازم نية صريحة عشان تتخطاها.
3. مخطط منفصل لكل عميل. حل وسط، أقل شيوعاً.
نصيحتنا للأغلبية: الطريقة التانية مع فلترة تلقائية إجبارية، واختبارات بتتأكد إن عميل مايقدرش يشوف بيانات غيره.
التحدي التاني: الاشتراكات والفوترة
ده الجزء اللي الناس بتستهين بيه وبياخد وقت أكتر من المتوقع. فكّر في الحالات دي من البداية:
- العميل رقّى باقته في نص الشهر — بيدفع كام؟
- نزّل باقته والباقة الجديدة حدودها أقل من استخدامه الحالي — نعمل إيه؟
- الدفع فشل — نقفل الحساب فوراً؟ ولا فترة سماح؟ كام يوم؟
- ألغى وعايز يرجع بعد 3 شهور — بياناته لسه موجودة؟
- فترة تجريبية خلصت من غير دفع.
كل حالة من دول قرار عمل قبل ما يكون قرار تقني، ولازم تتحدد قبل البرمجة.
التحدي التالت: التوسّع
النظام اللي شغال مع 10 عملاء مش بالضرورة يشتغل مع 1000. المشكلة الأشهر: استعلام شغال كويس على 5000 صف وبيقع على 5 مليون.
الحاجات اللي بتتعمل من البداية: - فهرسة صح على `tenant_id` وأعمدة البحث. - طابور مهام للعمليات التقيلة (تقارير، إرسال رسائل) بدل ما تتعمل في نفس الطلب. - تخزين مؤقت للبيانات اللي بتتقرا كتير وبتتغيّر قليل. - مراقبة وتنبيهات عشان تعرف بالمشكلة قبل العميل.
حاجات بتتنسى وبتوجع بعدين
لوحة تحكم المنصة (super admin). محتاج تشوف العملاء، توقف حساب، تمدّد تجربة، تدخل كعميل لتشخيص مشكلة. مش «إضافة بسيطة» — دي وحدة كاملة.
تصدير بيانات العميل. لو عميل قرر يمشي، لازم ياخد بياناته. ده بيبني ثقة، وفي بعض الأسواق بيبقى مطلب قانوني.
السجلات (audit log). مين عمل إيه وإمتى. أول ما يحصل خلاف مع عميل، السجل ده هو مرجعك.
الإشعارات. بريد وواتساب للتنبيهات والفواتير. منظومة كاملة لوحدها.
التكلفة الواقعية
منصة SaaS بسيطة بعزل صح واشتراكات وفوترة ولوحة إدارة: من 250 إلى 600 ألف جنيه، ومن 4 لـ8 شهور. ولو حد سعّر لك منصة اشتراكات بسعر موقع عادي — هو مش حاسب العزل والفوترة ولوحة الإدارة.
الخلاصة
الـSaaS مشروع طويل النفس، وأغلب تكلفته في الحاجات اللي العميل مابيشوفهاش: العزل، الفوترة، التوسّع، والإدارة. ابدأ بعميل واحد حقيقي يستخدم المنصة فعلاً قبل ما تبني «منصة للعالم كله» — تعلّم منه، وبعدين كبّر.
