المدونة

منتج واحد، وعملاء كثير

عيادة، محل، مدرّب، فرع مورّد — كل واحد جهة لحاله، والتطبيق واحد. كذا البيانات ما تختلط، والكود ما يتفرّع.

  • بنية
  • خلفية
  • SaaS
قنوات تركواز في سطح داكن، كل واحدة لحاله.

في منتجات تخدم أكثر من جهة من نفس التطبيق. كل جهة تشوف شغلها بس. المستخدم يدخل، والبيانات ما تعبر الجدار. هذا مو إعداد Microsoft Entra، ومو كلمة SaaS على سلايد. SaaS طريقة تبيع فيها. هالشكل طريقة تبني فيها. يجون مع بعض كثير. مو نفس الشيء.

هذا اللي يسمونه multi-tenant. نبنيه عشان العيادات والمحلات والمدرّبين والمورّدين يشتغلون على نفس الكود، وكل واحد بياناته لحاله. الجوال واللوحة والخلفية نظام واحد. الفصل يصير في الخلفية.

وش يعني جهة

الجهة عادة شركة أو عيادة أو محل — مو المستخدم. المستخدم عام. العضوية تربطه بجهة. صلاحياته جوا هالجهة. يقدر يكون في أكثر من جهة. كلمة «أدمن» ما تعني شيء لين تقول أدمن أي جهة.

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

أربعة أشياء لازم تنفصل

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

ثلاث طرق تفصل فيها البيانات

الأسماء تختلف. المعنى واحد.

جدول واحد، وعمود للجهة

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

سكيما لكل جهة

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

قاعدة لكل جهة

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

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

أمان الصفوف، على اللي نشتغل عليه

أمان صفوف Postgres شرط WHERE المحرّك يطبّقه لحاله. مكانه جدول واحد وعمود جهة. ما يغني عن العمود ولا الفهرس. هو شبكة أمان ليوم المطوّر ينسى الفلتر.

على Supabase، جدول مكشوف بدون أمان صفوف يقدر يقرأه ويكتب فيه أي أحد معه المفتاح العام. تشغّل الأمان وما تحط سياسات، ما ينشاف شيء. مالك الجدول يعدّي الأمان إلا إذا أجبرته. التطبيق ما يتصل كمالك. مفتاح service role يعدّي الأمان ومكانه السيرفر بس.

الصلاحيات وعضوية الجهة ما تعيش في حقل المستخدم يعدّله. تعيش في مكان السيرفر يتحكم فيه، أو جدول عضوية. توكن JWT يَقدم. تغيّر العضوية ما يعيش لين يتجدّد التوكن. سياسة غلط تفشل بهدوء: الواسعة ترجع صفوف زيادة، والضيّقة ترجع ولا شيء وما تطلع خطأ. اختبر الاتجاهين.

متى من أول يوم

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

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

اللوحة والجوال والخلفية — شيء واحد

الجهة تتحدد في الخلفية. لوحة React فيها مدخلين: صاحب المنصة يضيف جهة ويوقفها، ومدير الجهة يدير شغله. تطبيق Flutter يستقبل الاسم والشكل والعضوية. ما يخترع الفصل. الجهة الخامسة إعداد، مو ريبو جديد.

كيف يطلع هالكلام في الشغل

Naqrah.app — كل عيادة جهة على منصة حجز في عُمان. المريض يبحث ويحجز. كل عيادة تدير مواعيدها.

T-CODE — تجّار بفروع. تطبيق المتسوق ولوحة التاجر منتج واحد. تخفي فرع بدون ما تلمس محل ثاني.

Oxygen Academy — مدرّب وطالب وسفير. صلاحيات، مو ثلاثة تطبيقات. عربي وإنجليزي. الدفعات عند المدرّب، مو في صندوق مشترك.

WOSTA — مشترين ومورّدين. المورّد يدير أكثر من مستودع أو فرع، كل واحد طلباته وعروضه وفواتيره. العربي هو الأساس. التسجيل برمز جوال.

إذا انعمل عدل، ما ينشاف

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

أخبرنا عن مشروعك.

اكتب لنا وش تبي تبني. يرد عليك اللي بيسوون الشغل.

تواصل معنا