قاعدة بيانات واحدة، مئات المستأجرين، صفر تسرب للبيانات — أساس كل عمل SaaS قابل للتطوير.

أنت تبني منصة تخدم عدة عملاء من نشر واحد. يتوقع كل عميل بيانات معزولة، وتجارب ذات علامة تجارية، وفوترة لكل مستأجر — ولكن لا يمكنك تحمل تكلفة تشغيل بنية تحتية منفصلة لكل منهم. أنت بحاجة إلى اقتصاديات البنية التحتية المشتركة مع ضمانات العزل للأنظمة المخصصة. هذا هو التوتر الأساسي في هندسة SaaS، وارتكاب خطأ في نموذج العزل مبكرًا هو أحد أغلى الأخطاء في تطوير المنصات.
يمكن لفريق معماري لدينا مساعدتك في تصميم وبناء الأنظمة باستخدام هذا النمط لمتطلباتك المحددة.
تواصل معناتوفر هندسة SaaS متعددة المستأجرين فصلاً منطقيًا أو ماديًا بين المستأجرين مع مشاركة موارد الحوسبة والتخزين والشبكات الأساسية. يشمل النمط توفير المستأجرين، وعزل البيانات، وإدارة الميزات، وقياس الفواتير، والتخصيص ذو العلامة البيضاء (white-label). القرار التصميمي الأساسي هو نموذج العزل: قاعدة بيانات مشتركة مع أمان على مستوى الصف (row-level security)، أو مخطط لكل مستأجر (schema-per-tenant)، أو قاعدة بيانات لكل مستأجر (database-per-tenant). كل نموذج يوازن بين قوة العزل مقابل التعقيد التشغيلي وكفاءة التكلفة.
يتكون النظام من ثلاث طبقات. يتعامل البوابة الواعية بالمستأجرين (tenant-aware gateway) مع المصادقة، وتحديد المستأجر (عبر النطاق الفرعي subdomain، أو مطالبة JWT، أو مفتاح API)، وتوجيه الطلبات. تعمل طبقة التطبيق (application layer) بالكامل ضمن سياق المستأجر — كل استعلام، كل مفتاح تخزين مؤقت (cache key)، كل رسالة قائمة انتظار (queue message) محددة للمستأجر المحدد. تفرض طبقة البيانات (data layer) العزل على مستوى التخزين من خلال سياسات أمان على مستوى الصف (row-level security)، وتجميع الاتصالات لكل مستأجر (connection pooling per tenant)، وتقسيم البيانات المشفرة في وضع السكون (encrypted-at-rest partitioning).
tenant_id. لـ schema-per-tenant: توجيه اتصال ديناميكي مع إدارة تجميع الاتصالات. لـ database-per-tenant: أتمتة التوفير باستخدام Terraform/Pulumiacme.yourapp.com) أنظف لمنتجات العلامة البيضاء (white-label) وتسمح بشهادات TLS لكل مستأجر. النمط القائم على المسار (Path-based) (yourapp.com/acme/) أبسط في التنفيذ ويتجنب تعقيد wildcard DNS. توصي MW بتحديد المستأجر على أساس النطاق الفرعي لـ B2B SaaS مع متطلبات العلامة البيضاء، والنمط القائم على المسار للأدوات الداخلية متعددة المستأجرين.tenant_id. قد يبدو هذا واضحًا، لكن تصادمات مفتاح التخزين المؤقت عبر المستأجرين هي أحد أكثر الأخطاء شيوعًا في الأنظمة متعددة المستأجرين. نفرض ذلك من خلال مصنع لمفاتيح التخزين المؤقت يقوم بإضافة سياق المستأجر تلقائيًا.| الطبقة | التقنيات |
|---|---|
| الحوسبة (Compute) | Node.js (NestJS), Python (FastAPI), يتم تشغيله في حاويات على ECS Fargate أو Kubernetes |
| البيانات (Data) | PostgreSQL مع RLS، Redis (محدد بالمستأجر)، S3 (دلاء مقسمة بالمستأجر) |
| الهوية (Identity) | Clerk، Auth0، أو Okta مع منظمات محددة بالمستأجر |
| الفوترة (Billing) | Stripe Connect (نموذج السوق)، Stripe Billing (اشتراكات مقاسة) |
| المراقبة (Observability) | Datadog مع علامات أبعاد المستأجر، تسجيل منظم مع tenant_id على كل إدخال |
| تستخدم عندما | تتجنب عندما |
|---|---|
| بناء منصة B2B تخدم 10+ عملاء من بنية تحتية مشتركة | يتطلب كل عميل بنية تحتية مخصصة بالكامل (امتثال/تعاقدي) |
| تحتاج إلى علامة تجارية بيضاء (white-label branding)، نطاقات مخصصة، وتحكم في الميزات لكل مستأجر | لديك أقل من 3 عملاء — قد يكون النشر الأبسط لكل عميل كافيًا |
| يتطلب التسعير القائم على الاستخدام أو المتدرج قياسًا لكل مستأجر | المنتج هو تطبيق استهلاكي بحسابات على مستوى المستخدم، وليس مستأجرين على مستوى المؤسسة |
| تريد مسار نشر واحد، مكدس مراقبة واحد، دورة استدعاء واحدة | لدى المستأجرين مخططات (schemas) أو منطق عمل (business logic) مختلف جوهريًا (وليس مجرد تكوين) |
تعتبر MW التعددية المستأجرة (multi-tenancy) اهتمامًا شاملاً (cross-cutting concern)، وليست ميزة. نقوم بتنفيذ نشر سياق المستأجر على مستوى الوسيط (middleware) بحيث لا يقوم رمز التطبيق بتصفية يدوية حسب المستأجر — يتم فرض ذلك بواسطة الإطار (framework). تتضمن تطبيقات RLS لدينا مجموعات اختبار آلية تحاول الوصول إلى البيانات عبر المستأجرين في كل تشغيل CI. لقد قمنا ببناء منصات متعددة المستأجرين تخدم أكثر من 500 مستأجر على بنية تحتية مشتركة مع عدم وجود حوادث تسرب بيانات، وقمنا بترحيل الأنظمة المتجانسة ذات المستأجر الواحد (single-tenant monoliths) إلى معماريات متعددة المستأجرين باستخدام نمط التين الخانق (strangler fig pattern).
يعتمد الخيار الأمثل على متطلبات عزل المستأجرين وحجم العمل لديك. توصي MicrocosmWorks عادةً بنهج 'قاعدة بيانات مشتركة، مخططات منفصلة' (shared-database, separate-schema) لمعظم منتجات B2B SaaS لأنه يوازن بين كفاءة التكلفة وعزل البيانات، على الرغم من أننا نطبق 'قاعدة بيانات لكل مستأجر' (database-per-tenant) للعملاء في الصناعات المنظمة مثل الرعاية الصحية أو المالية حيث يكون الفصل الصارم للبيانات إلزاميًا. يقوم مهندسونا المعماريون بتقييم احتياجات الامتثال لديك، والعدد المتوقع للمستأجرين، وأنماط الاستعلام قبل التوصية بنموذج الاستئجار الصحيح.
تطبق MicrocosmWorks تحديد معدل الاستخدام المدرك للمستأجرين (tenant-aware rate limiting)، وتجميع الاتصالات (connection pooling) بحصص لكل مستأجر (per-tenant quotas)، وعزل الموارد على طبقة الحوسبة (compute layer) لمنع مشاكل 'الجيران المزعجين' (noisy-neighbor problems). نستخدم تقنيات مثل الجدولة العادلة المرجحة (weighted fair queuing) وطبقات التخزين المؤقت الخاصة بالمستأجرين (tenant-specific caching tiers) حتى لا يؤدي الارتفاع المفاجئ من عميل واحد إلى زمن انتقال (latency) للآخرين. بالنسبة للمستأجرين من فئة المؤسسات (enterprise-tier tenants)، يمكننا توفير أقسام حوسبة مخصصة (dedicated compute partitions) مع الحفاظ على مستوى التحكم المشترك (shared control plane) سليمًا.
تقدم MicrocosmWorks خدمات تصميم وتنفيذ البنية بأسعار استشارية تتراوح بين 15 و 45 دولارًا في الساعة، اعتمادًا على التعقيد وخبرة الفريق المطلوبة. تستغرق مشاريع بنية SaaS متعددة المستأجرين النموذجية — والتي تغطي تصميم قاعدة البيانات، وعزل المستأجرين، والمصادقة، ومسارات النشر (deployment pipelines) — من 8 إلى 16 أسبوعًا مع فريق متعدد الوظائف (cross-functional team). نحن نحدد نطاق كل مشروع من خلال مرحلة اكتشاف بسعر ثابت (fixed-price discovery phase) ليكون لديك رؤية كاملة للتكلفة قبل الالتزام بالبناء.
تبني MicrocosmWorks مسارات مؤتمتة لتزويد المستأجرين (automated tenant provisioning pipelines) تتعامل مع إنشاء المخطط (schema creation)، وتكوين DNS، وتهيئة علامات الميزات (feature flag initialization)، ونشر البيانات الأولية (seed data deployment) في غضون دقائق من التسجيل الجديد. نستخدم أدوات البنية التحتية كتعليمات برمجية (infrastructure-as-code tools) مثل Terraform أو Pulumi جنبًا إلى جنب مع مسارات العمل المعتمدة على الأحداث (event-driven workflows) حتى يحصل كل مستأجر جديد على بيئة مهيأة بالكامل دون تدخل يدوي. يتيح هذا النهج لعملائنا التوسع من 10 مستأجرين إلى 10,000 دون تغيير عملية الإعداد (onboarding process).
تطبق MicrocosmWorks طبقة تخصيص تعتمد على التكوين (configuration-driven customization layer) باستخدام علامات الميزات (feature flags)، والبيانات الوصفية الخاصة بالمستأجر (tenant-specific metadata)، وبنية المكونات الإضافية (plugin architecture) التي تسمح بسلوك خاص بكل مستأجر (per-tenant behavior) دون تفريع الكود (code branching). نصمم نقاط التوسع (extensibility points) في تنسيق واجهة المستخدم (UI theming)، ومحرك سير العمل (workflow engine)، وطبقات التكامل (integration layers) حتى يتمكن المستأجرون من الحصول على علامة تجارية فريدة (unique branding)، وقواعد عمل (business rules)، واتصالات طرف ثالث (third-party connections) تُدار جميعها من خلال التكوين. هذا يبقي فريق الهندسة لديك يدير قاعدة كود واحدة (single codebase) مع دعم متطلبات العملاء المتنوعة.