معمارية متعددة المستأجرين مقابل متعددة المواقع: كيفية الاختيار
لقد شاهدت فريقاً ينفقون أشهراً في النقاش حول العمارة متعددة المستأجرين مقابل متعددة المواقع، فقط ليختاروا الخيار الخاطئ وينفقوا ستة أشهر آخر في الترحيل. إنها واحدة من تلك القرارات التي تبدو مجردة حتى تكون في الثلاث رشات الثالثة وتدرك أن محررو المحتوى الخاصين بك يمكنهم نشر العلامة التجارية الخاطئة عن طريق الخطأ، أو أن خط أنابيب النشر الخاص بك يستغرق 45 دقيقة لأنك تعيد بناء اثني عشر موقعاً عندما تغير واحد فقط.
هذا ليس مقارنة نظرية. لقد بنيت كلا النمطين - أحياناً لنفس العميل عندما لم ينجح الاختيار الأول. دعني أرشدك إلى ما يهم حقاً عند اتخاذ هذا القرار.
جدول المحتويات
- تحديد المصطلحات بوضوح
- عندما تفوز العمارة متعددة المستأجرين
- عندما تفوز العمارة متعددة المواقع
- إطار صنع القرار
- أنماط العمارة عملياً
- اعتبارات نظام إدارة المحتوى
- الأداء والتوسع
- تحليل التكلفة
- استراتيجيات الترحيل
- الأسئلة الشائعة

تحديد المصطلحات بوضوح
يتم إساءة استخدام هذه المصطلحات بشكل فضفاض، لذا دعنا نحددها بدقة.
العمارة متعددة المستأجرين
نسخة تطبيق واحدة تخدم عدة مستأجرين (علامات تجارية أو عملاء أو مناطق). يشاركون نفس قاعدة الأكواد وقاعدة البيانات (عادةً) والنشر. يحدث عزل المستأجرين في طبقة التطبيق - من خلال البرمجيات الوسيطة أو مخططات قاعدة البيانات أو تصفية مستوى الصفوف.
فكر فيها كمبنى سكني. الجميع يشاركون البنية والسباكة والكهرباء. لكن كل وحدة لها قفلها الخاص.
العمارة متعددة المواقع
كل موقع عبارة عن نسخة تطبيق منفصلة بقاعدة أكواد خاصة بها (أو نسخة مشتقة من واحدة مشتركة) وقاعدة بيانات خاصة بها وخط أنابيب نشر خاص بها. قد تشارك نظام تصميم أو مكتبة مكونات، لكنها مستقلة في النشر والتشغيل.
هذا أشبه بمشروع سكني. نفس البناء، تصميمات متشابهة، لكن كل منزل يقف على أساسه الخاص.
المنطقة الهجينة
بصراحة، معظم الأنظمة في الإنتاج تقع في مكان ما بينهما. قد يكون لديك نظام إدارة محتوى متعدد المستأجرين يغذي المحتوى إلى نهايات أمامية مستقلة النشر. أو قاعدة أكواد مشتركة يتم نشرها كنسخ منفصلة لكل مستأجر. السؤال الحقيقي ليس "أيهما" بل "أين على الطيف".
عندما تفوز العمارة متعددة المستأجرين
العمارة متعددة المستأجرين مثالية عندما تكون مواقعك متشابهة أكثر من اختلافها.
متطلبات اتساق العلامة التجارية القوية
إذا كنت تدير 15 موقعاً إقليمياً لنفس العلامة التجارية وتحتاج التصميم إلى البقاء محدوداً، فإن متعددة المستأجرين هي صديقتك. قاعدة أكواد واحدة تعني مصدر حقيقة واحد للمكونات والتخطيطات وأنماط التفاعل. عندما يقوم فريق العلامة التجارية بتحديث أنماط الزر، يتم طرحه في كل مكان.
التوسع السريع للمستأجرين الجدد
عملت مع منصة امتياز تحتاج إلى إطلاق مواقع جديدة أسبوعياً. مع متعددة المستأجرين، كان إضافة موقع جديد عبارة عن إدخال قاعدة بيانات وسجل DNS. لا بنية تحتية جديدة، لا نشر جديد. انخفض الوقت اللازم للإطلاق من أسبوعين إلى حوالي 30 دقيقة.
عمليات محتوى مركزية
عندما يكون لديك فريق محتوى صغير يدير عدة ممتلكات، فإن متعددة المستأجرين تبقي كل شيء في مكان واحد. يقوم المحررون بتسجيل الدخول إلى نظام واحد ويبدلون السياق وإدارة المحتوى عبر جميع المستأجرين. لا حاجة لإدارة بيانات اعتماد لعشرات نسخ نظام إدارة المحتوى.
تطوير الميزات المشتركة
كل ميزة تبنيها تفيد جميع المستأجرين في نفس الوقت. إصلاحات الأخطاء والتحسينات المتعلقة بالأداء والتكاملات الجديدة - انشر مرة واحدة، استفد في كل مكان. العائد على الاستثمار في جهود التطوير متعدد الأضعاف.
عندما تفوز العمارة متعددة المواقع
تفوز متعددة المواقع عندما تحتاج مواقعك إلى الاختلاف بشكل كبير.
تجارب المستخدم مختلفة جذرياً
إذا كانت العلامة التجارية أ متجراً للتجارة الإلكترونية والعلامة التجارية ب نشر محتوى، فإن حشر كليهما في قاعدة أكواد واحدة يخلق فوضى. لقد رأيت قواعد أكواد متعددة المستأجرين حيث 60٪ من الأكواد كانت خلف شروط خاصة بالمستأجر. في هذه المرحلة، ليس لديك تطبيق واحد - لديك عدة تطبيقات سيئة تشارك مستودعاً.
متطلبات التكنولوجيا المختلفة
ربما يحتاج موقع واحد إلى Next.js لتجربته الديناميكية الشبيهة بالتطبيق، بينما موقع آخر هو موقع يركز على المحتوى وهو مثالي لـ Astro. تسمح متعددة المواقع لكل ممتلكة باستخدام الأداة الصحيحة. لقد بنينا محافظ حيث تعمل بعض المواقع على Next.js وأخرى على Astro، وكلها تسحب من نظام إدارة محتوى headless مشترك.
دورات إصدار مستقلة
عندما تملك وحدات أعمال مختلفة مواقع مختلفة وتحتاج إلى الشحن وفق جدولها الزمني الخاص، تخلق متعددة المستأجرين اختناقاً. لا يجب أن يتطلب النشر لميزة جديدة للمستأجر أ اختبار الانحدار للمستأجر ب من خلال z. توفر متعددة المواقع لكل فريق الاستقلالية.
عزل الامتثال والبيانات
تتطلب بعض الصناعات عزل بيانات صارماً - ليس فقط فصل طبقة التطبيق، بل قواعد بيانات منفصلة فعلياً، يحتمل أن تكون في مناطق مختلفة. غالباً ما تفرض مشاريع الرعاية الصحية والمالية والحكومية هذا. تجعل متعددة المواقع الامتثال واضحاً لأن العزل معماري وليس منطقياً فقط.
ملفات الأداء المختلفة
إذا حصل أحد المستأجرين على 10 ملايين زيارة شهرية وآخر يحصل على 50 ألف، فإن مشاركة البنية التحتية تعني أنك إما تبالغ في توفير الموارد للمستأجر الصغير أو توفير ناقص للمستأجر الكبير. تسمح النشرات المنفصلة لك بحجم كل ممتلكة بشكل صحيح.

إطار صنع القرار
إليك الإطار الذي أستخدمه فعلياً مع العملاء. اجمع نقاطاً لكل عامل في وضعك:
| العامل | يفضل متعددة المستأجرين | يفضل متعددة المواقع |
|---|---|---|
| تشابه الموقع | 80%+ واجهة مستخدم/ميزات مشتركة | أقل من 50% مشتركة |
| عدد الممتلكات | 10+ مواقع | أقل من 5 مواقع |
| معدل النمو | إضافة مواقع بشكل متكرر | مستقرة، نادراً ما تضيف |
| هيكل الفريق | فريق مركزي واحد | فرق مستقلة لكل موقع |
| نموذج المحتوى | متطابق أو شبه متطابق | مختلف بشكل كبير |
| احتياجات الامتثال | متطلبات قياسية | عزل بيانات صارم |
| مجموعة التكنولوجيا | نفس الإطار في كل مكان | أطر عمل مختلفة مطلوبة |
| إيقاع الإصدار | الإصدارات المنسقة حسناً | إصدارات مستقلة مطلوبة |
| عمق التخصيص | مستوى المظهر (الألوان والشعارات) | هيكلي (التخطيطات والميزات) |
| الميزانية | تحسين الكفاءة | تحسين المرونة |
إذا كنت تسجل في الغالب في عمود واحد، فالقرار واضح. إذا كنت منقسماً في المنتصف، فأنت على الأرجح تبحث عن نهج هجين - وهذا حسناً.
أنماط العمارة عملياً
دعني أكون محدداً بشأن ما تبدو عليه هذه في الأكواد.
متعددة المستأجرين مع Next.js
النمط الأكثر شيوعاً الذي أستخدمه هو حل المستأجرين القائم على البرمجيات الوسيطة:
// middleware.ts
import { NextRequest, NextResponse } from 'next/server';
const TENANT_MAP: Record<string, string> = {
'brand-a.com': 'brand-a',
'brand-b.com': 'brand-b',
'brand-c.com': 'brand-c',
};
export function middleware(request: NextRequest) {
const hostname = request.headers.get('host') || '';
const tenantId = TENANT_MAP[hostname] || 'default';
// Pass tenant context via headers
const response = NextResponse.next();
response.headers.set('x-tenant-id', tenantId);
// Rewrite to tenant-specific paths if needed
const url = request.nextUrl.clone();
url.pathname = `/${tenantId}${url.pathname}`;
return NextResponse.rewrite(url);
}
ثم تسحب مكونات صفحتك تكوين خاص بالمستأجر:
// lib/tenant-config.ts
export async function getTenantConfig(tenantId: string) {
// Could be from database, CMS, or config files
return {
theme: await fetchTheme(tenantId),
navigation: await fetchNavigation(tenantId),
features: await fetchFeatureFlags(tenantId),
locale: await fetchLocaleConfig(tenantId),
};
}
هذا يعمل بشكل جيد حتى يبدأ المستأجرون بحاجة هياكل صفحات مختلفة أو استراتيجيات جلب بيانات مختلفة أو تكاملات تابعة جهات خارجية مختلفة. حينئذٍ يبدأ المنطق الشرطي بالتسلل.
متعددة المواقع مع الحزم المشتركة
لمتعددة المواقع، أستخدم مستودعاً أحادياً مع حزم مشتركة:
├── apps/
│ ├── brand-a/ # تطبيق Next.js
│ ├── brand-b/ # تطبيق Astro
│ └── brand-c/ # تطبيق Next.js
├── packages/
│ ├── ui/ # مكتبة مكونات مشتركة
│ ├── cms-client/ # تكامل نظام إدارة محتوى مشترك
│ ├── analytics/ # غلاف تحليلات مشترك
│ └── config/ # تكوين TypeScript/ESLint مشترك
├── turbo.json
└── package.json
// turbo.json
{
"pipeline": {
"build": {
"dependsOn": ["^build"],
"outputs": [".next/**", "dist/**"]
},
"deploy": {
"dependsOn": ["build"]
}
}
}
يتعامل Turborepo (أو Nx) مع رسم بياني التبعية بحيث تعيد بناء فقط ما تغير. حصلت العلامة التجارية أ على ميزة جديدة؟ فقط العلامة التجارية أ تعيد بناء وتنشر. تحتوي حزمة واجهة المستخدم المشتركة على تحديث؟ يعاد بناء كل شيء يعتمد عليه.
الهجين: نظام إدارة محتوى متعدد المستأجرين، نهاية أمامية متعددة المواقع
هذا بصراحة نمطي المفضل لمعظم الحالات. تحصل على إدارة محتوى مركزية مع نشر نهاية أمامية مستقلة:
┌─────────────────────┐
│ نظام إدارة محتوى Headless│
│ (Sanity/Contentful)│
│ متعدد المستأجرين│
│ مساحات المحتوى│
└──────┬──────┬───────┘
│ │
┌───┘ └───┐
▼ ▼
┌──────┐ ┌──────┐
│الموقع أ│ │الموقع ب│
│Next.js│ │Astro │
└──────┘ └──────┘
يحصل محررو المحتوى على تسجيل دخول واحد ويمكنهم إدارة جميع الممتلكات. يحصل المطورون على قواعس أكواد مستقلة وخطوط نشر. إنها أفضل ما في كلا العالمين للفرق التي لديها الميزانية لذلك.
اعتبارات نظام إدارة المحتوى
يؤثر اختيار نظام إدارة المحتوى بشكل كبير على - أو يمكّن - اختيار العمارة الخاص بك.
دعم نظام إدارة محتوى متعدد المستأجرين
| نظام إدارة محتوى | نموذج متعدد المستأجرين | دعم متعدد المواقع | تأثير التسعير |
|---|---|---|---|
| Sanity | مجموعات بيانات لكل مستأجر | ممتاز (مجموعات بيانات متعددة في مشروع واحد) | الطبقة المجانية: مجموعتا بيانات؛ مدفوع من 99 دولار/شهر |
| Contentful | مساحات لكل مستأجر | جيد (إدارة على مستوى المنظمة) | كل مساحة تحتسب نحو الخطة؛ 300+ دولار/شهر |
| Strapi | قاعدة بيانات واحدة، يتم تصفيتها حسب المستأجر | يتطلب تنفيذاً يدوياً | مستضاف ذاتياً، يتوسع مع البنية التحتية |
| Hygraph | البيئات والمراحل | اتحاد محتوى متعدد المواقع الأصلي | من 199 دولار/شهر لخطط الفريق |
| WordPress (headless) | WordPress Multisite | ناضج لكن معقد | تكاليف الاستضافة تتوسع لكل موقع |
| Payload CMS | تعدد المستأجرين على مستوى المجموعة | الدعم المتنامي (v3.0+) | مستضاف ذاتياً، مفتوح المصدر |
نموذج Sanity للمجموعات البيانات أنيق بشكل خاص للإعدادات متعددة المستأجرين. يحصل كل مستأجر على مجموعة بيانات خاصة به مع مخطط خاص به، لكنها تعيش تحت مشروع واحد. يمكنك مشاركة تعريفات المخطط عبر مجموعات البيانات مع السماح بتخصيصات خاصة بالمستأجر. على نطاق واسع (10+ مستأجرين)، يحافظ هذا على عمليات محتوى معقولة.
يعمل نهج Contentful لمساحات منفصلة لكن يصبح مكلفاً بسرعة. كل مساحة على خطة الفريق تكلف أموالاً حقيقية، وتتطلع إلى 300 دولار/شهر على الأقل قبل حتى تبدأ في إضافة مساحات.
آثار نمذجة المحتوى
مع متعددة المستأجرين، يحتاج نموذج المحتوى الخاص بك إلى استيعاب جميع المستأجرين. هذا عادةً يعني:
- حقل
tenantأوbrandعلى كل نوع محتوى - قواعد تحقق خاصة بالمستأجر
- نمذجة إذن دقيقة حتى لا يرى المحررون سوى محتوى مستأجرهم
- أنواع محتوى مشتركة (مثل "الإعدادات العامة") تحتاج إلى تحديد النطاق حسب المستأجر
مع متعددة المواقع، لكل موقع نموذج محتوى خاص به. أبسط لكل موقع، لكنك تفقد القدرة على مشاركة المحتوى عبر المواقع دون طبقة توزيع محتوى إضافية.
الأداء والتوسع
خصائص أداء متعددة المستأجرين
أكبر خطر مع متعددة المستأجرين هو مشكلة "الجار الضجاج". إذا قام المستأجر أ بحملة فيروسية وارتفعت حركة المرور 10 أضعاف، يشعر جميع المستأجرين بها. استراتيجيات التخفيف:
- تخزين مؤقت الحافة لكل مستأجر: استخدم شبكة Vercel أو Cloudflare الحافة مع مفاتيح ذاكرة التخزين المؤقت التي تتضمن معرّف المستأجر
- ISR مع إعادة التحقق الصريحة للمستأجر: أعد التحقق فقط من الصفحات للمستأجر الذي تغير محتواه
- حد السعر لكل مستأجر: حماية الموارد المشتركة من أي مستأجر واحد يغمرها
// next.config.js - ISR مع إعادة التحقق الصريحة للمستأجر
export async function generateStaticParams() {
const tenants = await getAllTenants();
const paths = [];
for (const tenant of tenants) {
const pages = await getTenantPages(tenant.id);
paths.push(...pages.map(page => ({
tenant: tenant.slug,
slug: page.slug,
})));
}
return paths;
}
خصائص أداء متعددة المواقع
يتوسع كل موقع بشكل مستقل. تلك أخبار جيدة. الأخبار السيئة أنك تدير خطوط نشر N وعدادات N وميزانيات N الأداء. في 20+ موقع، ينتقل العبء التشغيلي إلى أن يصبح اختناقاً وليس أداء التطبيق.
من المقاييس التي أجريتها في 2025، إليك ما تتوقعه على Vercel:
| المقياس | متعددة المستأجرين (تطبيق واحد، 10 مستأجرين) | متعددة المواقع (10 تطبيقات) |
|---|---|---|
| بدء بارد (حافة) | 20-50ms | 20-50ms لكل موقع |
| وقت البناء | 8-15 دقيقة (جميع المستأجرين) | 2-4 دقائق لكل موقع |
| بناء متزايد | 30-90 ثانية | 30-90 ثانية لكل موقع |
| الذاكرة لكل نسخة | 256-512MB مشتركة | 256-512MB لكل |
| تكلفة Vercel الشهرية (Pro) | ~20 دولار | ~200 دولار (20 دولار × 10) |
هذا الفرق في التكلفة كبير. متعددة المستأجرين في خطة Vercel Pro الواحدة بقيمة 20 دولار/شهر مقابل متعددة المواقع تحتاج إلى Enterprise أو تنظيم مشروع إبداعي.
تحليل التكلفة
دعنا نتحدث عن أرقام حقيقية لمحفظة من 10 مواقع على مدار 12 شهراً.
تقدير تكلفة متعددة المستأجرين
| بند | التكلفة الشهرية | التكلفة السنوية |
|---|---|---|
| Vercel Pro (مشروع واحد) | 20 دولار | 240 دولار |
| Sanity Team (مشروع واحد، 10 مجموعات بيانات) | 99 دولار | 1188 دولار |
| التطوير (البناء الأولي) | -- | 40000-60000 دولار |
| الصيانة (جارٍ) | 2000 دولار | 24000 دولار |
| إجمالي السنة الأولى | -- | 65428-85428 دولار |
تقدير تكلفة متعددة المواقع
| بند | التكلفة الشهرية | التكلفة السنوية |
|---|---|---|
| Vercel Pro (10 مشاريع) | 200 دولار | 2400 دولار |
| Sanity Team (10 مشاريع) | 990 دولار | 11880 دولار |
| التطوير (البناء الأولي، حزم مشتركة) | -- | 50000-80000 دولار |
| الصيانة (جارٍ، 10 مواقع) | 4000 دولار | 48000 دولار |
| إجمالي السنة الأولى | -- | 112280-142280 دولار |
متعددة المستأجرين أرخص بنسبة 40-60٪ تقريباً، بشكل أساسي بسبب تقليل عبء الصيانة. لكن هذه الأرقام تنقلب إذا أدت تعقيد متعددة المستأجرين إلى المزيد من الأخطاء أو تطوير أبطأ للميزات أو ترحيل مؤلم لاحقاً.
هل تريد تقديراً أكثر دقة لوضعك المحدد؟ نقوم بتفصيل تكاليف العمارة بالتفصيل خلال عملية الاكتشاف الخاصة بنا.
استراتيجيات الترحيل
أحياناً تبدأ بنهج واحد وتحتاج إلى التبديل. إليك كيفية القيام بها دون حرق كل شيء.
متعددة المستأجرين → متعددة المواقع
هذا هو اتجاه الترحيل الأكثر شيوعاً. علامات تشير إلى أنك تحتاج إليها:
- رمز خاص بالمستأجر يتجاوز 30٪ من قاعدة الأكواس
- النشرات محجوزة باختبار الانحدار عبر المستأجرين
- الفرق يسيرون على أقدام بعضهم البعض في التغييرات
الاستراتيجية:
- استخرج الكود المشترك إلى حزم أولاً (مكونات واجهة المستخدم والأدوات والعميل CMS)
- إنشاء هيكل مستودع أحادي حول التطبيق الموجود
- شوكة التطبيق للمستأجر الأكثر تباعداً
- نقل المستأجرين الآخرين تدريجياً إلى تطبيقاتهم الخاصة
- حذف منطق تبديل المستأجر من كل تطبيق مع أنه يصبح مستقلاً
متعددة المواقع → متعددة المستأجرين
أقل شيوعاً لكن يحدث، عادةً عندما تستحوذ شركة على عدة علامات تجارية وتريد دمج العمليات.
- تدقيق جميع المواقع للأنماط المشتركة (ستجد أكثر مما تتوقع)
- بناء مكتبة المكون المشترك من أفضل التطبيقات
- إنشاء تطبيق متعدد المستأجرين بأبسط موقع أولاً
- ترحيل المواقع واحداً تلو الآخر، والتحقق من التكافؤ في كل خطوة
- إيقاف التطبيقات الفردية مع انتقال المستأجرين إلى الحي
كلا الترحيلين مزعج. ميزانية 3-6 أشهر وجهد اختبار كبير. هذا بالضبط السبب في أهمية الحصول على القرار الأولي الصحيح - إنه ليس فقط خيار معمارة، إنه التزام.
إذا كنت تواجه هذا القرار وتريد التحدث من خلاله مع شخص فعل ذلك من قبل، اتصل بنا.
الأسئلة الشائعة
ما الفرق بين العمارة متعددة المستأجرين ومتعددة المواقع؟ متعددة المستأجرين تستخدم نسخة تطبيق واحدة لخدمة عدة علامات تجارية أو عملاء، مع معالجة عزل المستأجر في طبقة التطبيق. متعددة المواقع تنشر نسخ تطبيق منفصلة لكل موقع، يحتمل أن تشارك الأكواس من خلال مستودع أحادي ومكتبات مكونات. التمييز الرئيسي هو ما إذا كنت تقوم بتشغيل تطبيق واحد أو عدة.
هل يمكنني استخدام نظام إدارة محتوى متعدد المستأجرين مع نهاية أمامية متعددة المواقع؟ بالتأكيد، وغالباً ما تكون أفضل نهج. نظام إدارة محتوى headless مثل Sanity مع مجموعات بيانات متعددة يوفر لك إدارة محتوى مركزية، بينما نشرات النهاية الأمامية المنفصلة تمنح كل موقع استقلالية من حيث خيارات التكنولوجيا وجداول النشر وتوسع الأداء. هذا النمط الهجين يعمل بشكل خاص عندما تشارك مواقعك بنية المحتوى لكن تحتاج إلى تجارب مستخدم مختلفة.
كيف تؤثر العمارة متعددة المستأجرين على تحسين محرك البحث؟ تقدم تطبيقات متعددة المستأجر محتوى مختلفاً بناءً على النطاق أو النطاق الفرعي، والذي تتعامل معه محركات البحث بشكل جيد طالما تنفذت عناوين URL قانونية صحيحة وبيانات تعريفية فريدة لكل مستأجر وخرائط موقع منفصلة. الخطر هو التكرار العرضي للمحتوى عبر المستأجرين - تأكد من أن إنشاء خريطة الموقع والملفات robots.txt تتوعي المستأجر. من منظور تحسين محرك البحث، لا تهتم محركات البحث بما إذا كانت مواقعك تشارك قاعدة أكواس؛ يهمهم المحتوى والترميز اللذان يتلقونهما.
هل متعددة المستأجرين أرخص من متعددة المواقع؟ بشكل عام نعم، غالباً ما تكون أرخص بنسبة 40-60٪ في تكاليف الاستضافة والصيانة. أنت تدفع لنشر واحد، مجموعة مراقبة واحدة، ومجموعة واحدة من البنية التحتية. ومع ذلك، يمكن أن تصبح متعددة المستأجرين أكثر تكلفة من حيث وقت التطوير إذا كان المستأجرون متباعدين بشكل كبير، لأن التعقيد في إدارة منطق خاص بالمستأجر ينمو بشكل غير خطي. تعتمد نقطة التعادل على مدى تشابه مواقعك فعلياً.
أي نهج أفضل لـ WordPress متعدد المواقع خادم headless؟ WordPress Multisite متعدد المستأجرين بطبيعته - نسخة WordPress واحدة، عدة مواقع. إذا كنت تستخدم WordPress كنظام إدارة محتوى headless، فإن شبكة Multisite توفر لك إدارة محتوى مركزية. يمكن أن تكون النهاية الأمامية إما متعددة المستأجرين (تطبيق Next.js واحد) أو متعددة المواقع (تطبيقات منفصلة لكل موقع WordPress). بالنسبة لمعظم مشاريع WordPress، أوصي بالهجين: WordPress Multisite كنظام إدارة المحتوى، نشرات نهاية أمامية منفصلة لكل موقع.
كيف أتعامل مع المصادقة المشتركة عبر تطبيق متعدد المستأجرين؟ استخدم موفر مصادقة مركزي (Auth0 أو Clerk أو NextAuth.js) مع إدارة جلسة صريحة للمستأجر. يجب أن يتضمن رمز المصادقة سياق المستأجر، وينبغي للبرمجية الوسيطة التحقق من أن المستخدم المصرح لديه حق الوصول إلى المستأجر المطلوب. الأمان على مستوى الصفوف في قاعدة البيانات الخاصة بك (Supabase و Neon كلاهما يدعم هذا) يضيف طبقة حماية ثانية ضد تسربات البيانات عبر المستأجرين.
ما هو الحد الأقصى لعدد المستأجرين الذي يمكن لتطبيق متعدد المستأجرين التعامل معه؟ لا يوجد حد صارم، لكن الحدود العملية تظهر حول أوقات البناء والتعقيد التشغيلي. مع Next.js ISR على Vercel، رأيت تطبيقات متعددة المستأجرين تتعامل مع 50+ مستأجرين بفعالية. وراء 100 مستأجر، ستريد البحث عن ISR عند الطلب بدلاً من المعالجة المسبقة لجميع الصفحات، وستحتاج إلى استراتيجيات تخزين مؤقت متطورة. تقوم منصات مثل Shopify بتشغيل آلاف المستأجرين بفعالية، لكنها استثمرت سنوات في تلك البنية التحتية.
هل يجب أن أستخدم مستودعاً أحادياً لعمارة متعددة المواقع؟ تقريباً دائماً نعم. مستودع أحادي مع Turborepo أو Nx يوفر لك فوائد مشاركة الأكواس لمتعددة المستأجرين (مكونات مشتركة وأدوات وتكوينات) مع استقلال النشر لمتعددة المواقع. المفتاح هو الحفاظ على حزم مشتركة محددة بشكل جيد ومصرح بها. بدون مستودع أحادي، ينتهي بك الحال بأكواس مكررة عبر مستودعات تتباعد على الفور وتصبح كابوساً للصيانة في غضون أشهر.