للمجموعات وعدة علامات
عدة شركات، تركيب واحد، بلا زبائن مشتركين
المجموعات عادةً تحل هذا مرتين بشكل سيء: إما خمسة تركيبات منفصلة وخمسة كل شيء منفصل، أو تركيب واحد ووعد رسمي أن التطبيق دايماً يفلتر صح. الأولى غالية. الثانية وعد، والوعود ماشي نموذج أمن.
إذا تشغّل أكثر من شركة — قابضة مع فروع، امتياز (فرانشيز)، علامتين موجهتين لأسواق مختلفة، وكالة والشيء اللي الكالة فصلته منها — أنت أصلاً تعرف شكل المشكلة. العلامات تشارك الناس والأدوات وإدارة المالية. ما تشاركش الزبائن، ولازم ما يبان إنها تشارك.
iKonekt يشغلهم كلهم من تركيب واحد، والفصل بينهم محفوظ في قاعدة البيانات ماشي في الكود. هذا التمييز يبان أكاديمي حتى اليوم اللي ما يبقاش كذلك.
علاش الطبقة مهمة
الفلتر على مستوى التطبيق جملة في استعلام. يخدم ما دام كل استعلام راح يُكتب يحتويها — بما فيها المكتوب على عجلة، والمكتوب من المطور الجديد، والمكتوب لتقرير كان راح يُستخدم مرة واحدة فقط.
لما تدفع الحدود لقاعدة البيانات، الحساب ينقلب. السياسة تُنفذ على كل قراءة وكل كتابة، تحت كل شيء. الاستعلام اللي نسي الشركة ما يرجعش صفوف غلط؛ يرجع ولا شيء. نمط الفشل يولي شاشة فارغة ومطور محيّر، وهذا هو نمط الفشل الصحيح.
الشاشات الفارغة ميزة. نفضّل نشرح شاشة فارغة لمهندس منا، من نشرح قائمة زبائن لزبونين ما كانوا ما يتوقعوا يلتقوا.
- 1الزبائن والمحادثاتمحدودة. البائع في العلامة A ما يقدرش يوصل لتاع العلامة B، بالبناء ماشي بالإعدادات.
- 2المطالبات على الزبون"عندنا هذا الحساب من قبل" قفل محفوظ لكل شركة — بحيث علامتين يقدروا يخدموا نفس السوق بلا تصادم.
- 3التعليمات والإعداداتكل شركة تعدل تاعتها. المكان الوحيد اللي كان مشترك فيه هذا كان خطأ، وهو الخطأ اللي هذا النظام أكثر فخامة باكتشافه.
- 4برامج الشركاءوحدة (موديل) لكل شركة، ماشي وحدة عامة الكل يرثها.
الحد مفروض تحت التطبيق
شنو المجموعة فعلاً تقدر تشارك
الفصل ماشي عزل لغرضه. الأشياء اللي تستحق المشاركة عبر المجموعة تُشارك عمداً، وأغلبها الأشياء المملة — وهذا بالضبط صح، لأن المملة هي فين التكلفة المكررة تسكن:
- تركيب واحد للتشغيل والتحديث. نشر واحد، مجموعة بيانات دخول واحدة للاعتناء بها، شيء واحد للترقيع.
- فريق واحد من الناس، بقلب قبعات مختلفة. الشخص يقدر يخدم في أكثر من شركة؛ اللي ما يقدرش هو يشوف الاثنين مرة واحدة عبر استعلام نسى يسأل.
- مجموعة عادات واحدة. طريقة إسناد العميل المحتمل، طريقة كتابة الملاحظة، طريقة وصول الخدمة للفاتورة — تتعلم مرة، تُطبق في كل مكان، وهذا يقصّر التهيئة لصباح واحد تقريباً.
- علاقة واحدة مع بقية العائلة. castomAPI تحته، نفس الحساب، نفس الموصلات — مهيأة لكل شركة فين ما يهم.
السؤال اللي المجموعة دايماً تسأله ثانياً
"نقدروا نعمل تقارير عبرهم كلهم؟" نعم — من نقطة نظر المجموعة نفسها، عمداً وبشكل صريح، ماشي كأثر جانبي لحد مسرّب. هذا التمييز هو التصميم كله: عبور الخط لازم يكون فعل أحد قام به عمداً، وبالصلاحية لذلك. ما يجب أبداً يكون شيئاً يحققه معرّف طائش بالصدفة.
والسؤال اللي يسألوه ثالثاً: "شنو يصير إذا بِعنا إحدى العلامات؟" الحد اللي قاعدة البيانات تحفظه هو أيضاً حد تقدر تطلع منه نسخة نظيفة. هذا ماشي صدفة — الفصل وقابلية النقل هما نفس الخاصية من اجتماعين مختلفين.
تحت الأرضية
شنو اللي شايل الخط بالضبط
ماشي دعوى، قائمة. إذا المورّد ما يقدر يطلّع هذي القائمة على منتوجه نفسه، هذا الشي يستاهل الانتباه.
26
جداول تحمل شركة تاعها، مع الفحص مفروض شغّال ماشي مجرد متوفر.
72
سياسات مكتوبة وحدة وحدة باش كل وحدة قريها شخص، ماشي مولّدة في حلقة.
942
اختبارات تُشغّل على قاعدة بيانات معاد بناؤها من الصفر كل مرة يتغير فيها أي حاجة.
0
شركات افتراضية. الطلب بلا نطاق يرمي خطأ قبل ما يوصل للبيانات — ما كاينش احتياطي تنسى تعطّله.

«خمس شركات، خمس تنصيبات، خمس فواتير من عندك.»
تنصيب واحد. خمس حدود قاعدة البيانات تحافظ عليها.
ناس مشتركين، عادات مشتركة، منصة مشتركة — وما كاينش ولا عميل مشترك. تجاوز هاد الخط لازم يكون حاجة شخص عملها بقصد، عمرها حاجة معرّف دارها بالغلط.
كيفاش الفصل مبني ←