DEV Community

Cover image for Next.js Multi-Tenant Architecture: सबडोमेन और कस्टम डोमेन
WebVibez Softdev
WebVibez Softdev

Posted on Originally published at webvibez.com

Next.js Multi-Tenant Architecture: सबडोमेन और कस्टम डोमेन

एक मॉडर्न सॉफ्टवेयर-एज-ए-सर्विस (SaaS) प्लेटफॉर्म बनाने के लिए जटिल इंफ्रास्ट्रक्चर चुनौतियों को हल करना पड़ता है। होस्टनेम के आधार पर रिक्वेस्ट को रूट करने से लेकर पूर्ण डेटा प्राइवेसी सुनिश्चित करने तक, डेवलपर्स को अपने आर्किटेक्चरल पैटर्न का सावधानीपूर्वक मूल्यांकन करना चाहिए। एक next.js multi-tenant architecture इन चुनौतियों से निपटने के लिए एक अत्यधिक अनुकूलित (optimized) और आधुनिक आधार प्रदान करता है। एज राउटिंग (edge routing), स्टैटिक जनरेशन और फ्लेक्सिबल डेटाबेस एडेप्टर का लाभ उठाकर, इंजीनियरिंग टीमें लाखों आइसोलेटेड टेनेंट एनवायरनमेंट्स को सर्व करने में सक्षम सुरक्षित, हाई-परफॉर्मेंस प्लेटफॉर्म बना सकती हैं।

आइए गहराई से जानें कि Next.js का उपयोग करके multi-tenant SaaS एप्लिकेशन को कैसे डिजाइन, बिल्ड और स्केल किया जाए।


Next.js Multi-Tenant Architecture की आर्किटेक्चरल नींव (Architectural Foundations)

जब आप building a saas platform with nextjs (Next.js के साथ SaaS प्लेटफॉर्म का निर्माण) कर रहे होते हैं, तो पहला महत्वपूर्ण निर्णय इस बात पर केंद्रित होता है कि टेनेंट्स (tenants) अपने समर्पित वर्कस्पेस को कैसे एक्सेस करते हैं। टेनेंट्स पर्सनलाइज्ड ब्रांड एनवायरनमेंट की उम्मीद करते हैं, जो आमतौर पर दो तरीकों से दिखाई देता है:

  1. Wildcard Subdomains: जैसे, tenant1.yourplatform.com
  2. Custom Domains: जैसे, workspace.tenantbrand.com

पूरी एप्लिकेशन को दोबारा डिप्लॉय किए बिना बड़े पैमाने पर इस डायनेमिक राउटिंग को संभालने के लिए, हम nextjs middleware multi tenancy पैटर्न पर भरोसा करते हैं। स्टैटिक राउटिंग के बजाय, एप्लिकेशन एज (edge) पर आने वाली रिक्वेस्ट के होस्टनेम की जांच करता है, टेनेंट की पहचान (identity) को रिजॉल्व करता है, और रिक्वेस्ट पाथ को आंतरिक रूप से एक डायनेमिक लेआउट में रीराइट (rewrite) करता है।

उन संगठनों के लिए जो जटिल, सुरक्षित वेब इकोसिस्टम बनाना चाहते हैं, Custom Software Development के लिए सही पार्टनर चुनना यह सुनिश्चित करता है कि ये आर्किटेक्चरल निर्णय भविष्य के अनुकूल स्केलेबिलिटी के साथ निष्पादित किए जाएं।


Next.js Middleware और Custom Domains के साथ डायनेमिक राउटिंग

next.js multi-tenant architecture का दिल इसका मिडिलवेयर (middleware) है। मिडिलवेयर आने वाली HTTP रिक्वेस्ट को इंटरसेप्ट करता है, होस्टनेम को एक्सट्रैक्ट करता है, इसे टेनेंट डेटाबेस या कैश (cache) से मैच करता है, और पाथ को डायनेमिक रूप से रीराइट करता।

Next.js Edge Middleware का उपयोग करके nextjs middleware multi tenancy का एक व्यावहारिक कार्यान्वयन (implementation) यहाँ दिया गया है:

import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';

export const config = {
  matcher: [
    '/((?!api/|_next/|_static/|_image|favicon.ico|sitemap.xml|robots.txt).*)',
  ],
};

export default async function middleware(req: NextRequest) {
  const url = req.nextUrl;
  const hostname = req.headers.get('host') || '';

  // Define your base/root domain
  const rootDomain = process.env.NEXT_PUBLIC_ROOT_DOMAIN || 'platform.com';

  // Detect if the hostname is a subdomain or a custom domain
  let currentHost = hostname
    .replace(`.localhost:3000`, '')
    .replace(`.${rootDomain}`, '');

  // Treat root domain requests normally
  if (hostname === rootDomain || hostname === 'localhost:3000') {
    return NextResponse.next();
  }

  // Rewrite the path to the tenant-specific folder inside app/
  // Using nextjs dynamic routing custom domains pattern
  return NextResponse.rewrite(
    new URL(`/_sites/${currentHost}${url.pathname}${url.search}`, req.url)
  );
}
Enter fullscreen mode Exit fullscreen mode

इस सेटअप के साथ, tenant1.platform.com/dashboard पर आने वाली रिक्वेस्ट सर्वर साइड पर बिना किसी रुकावट के app/_sites/tenant1/dashboard पर रीराइट हो जाती है। यह साफ-सुथरे यूआरएल (URLs) रखने के साथ-साथ व्यवस्थित फाइल-सिस्टम बनाए रखने के लिए nextjs dynamic routing custom domains पैटर्न का लाभ उठाता है।


Multi-Tenant डेटाबेस आइसोलेशन रणनीतियाँ (Database Isolation Strategies)

राउटिंग तो केवल आधी जंग है। डेटाबेस लेयर पर सख्त tenant isolation सुनिश्चित करना अनुपालन (compliance), सुरक्षा और परफॉर्मेंस के लिए बेहद महत्वपूर्ण है। अपने डेटा लेयर को डिजाइन करते समय, आपको विभिन्न multi-tenant database isolation strategies का मूल्यांकन करना होगा।

आइसोलेशन रणनीति (Isolation Strategy) विवरण (Description) फायदे (Pros) नुकसान (Cons) आदर्श उपयोग (Ideal Use Case)
Shared Database (तार्किक अलगाव - Logical Isolation) सिंगल डेटाबेस, सिंगल स्कीमा। टेनेंट्स को एक tenant_id कॉलम द्वारा अलग किया जाता है। बेहद लागत प्रभावी (cost-effective), आसान माइग्रेशन, कम रिसोर्स ओवरहेड। डेवलपर की गलती के कारण डेटा लीक होने का खतरा ("noisy neighbor" प्रभाव)। शुरुआती दौर के SaaS, कम जोखिम वाले डेटा एनवायरनमेंट।
Schema-per-Tenant सिंगल डेटाबेस इंस्टेंस, प्रति टेनेंट आइसोलेटेड डेटाबेस स्कीमा (जैसे, PostgreSQL स्कीमा)। मजबूत लॉजिकल आइसोलेशन, शेयर्ड कंप्यूट कॉस्ट, प्रति टेनेंट आसान बैकअप। माइग्रेशन मैनेजमेंट जटिल है; स्कीमा अपडेट सभी स्कीमा पर चलाने होते हैं। मिड-मार्केट B2B SaaS, एंटरप्राइज प्लेटफॉर्म।
Database-per-Tenant प्रत्येक टेनेंट के लिए भौतिक रूप से आइसोलेटेड डेटाबेस इंस्टेंस। अधिकतम सुरक्षा, कोई नोइज़ी नेबर (noisy neighbors) नहीं, अनुपालन अनुकूल (compliance-friendly)। उच्च इंफ्रास्ट्रक्चर लागत, जटिल ऑर्केस्ट्रेशन, कनेक्शन पूलिंग की चुनौतियाँ। एंटरप्राइज, हेल्थकेयर (HIPAA), और फाइनेंशियल सर्विसेज।

जटिल डेटा इंजन के लिए, इन स्कीमा को प्रबंधित करने के लिए मजबूत डिज़ाइन पैटर्न की आवश्यकता होती है। इंजीनियरिंग टीमें अक्सर एडवांस्ड गाइड देखती हैं, जैसे Architecting a Custom Workflow Automation Engine for Scale, यह समझने के लिए कि अलग-अलग टेनेंट सीमाओं में डिकपल्ड (decoupled), इवेंट-ड्रिवन डेटा फ्लो को कैसे डिज़ाइन किया जाए।

Connection Pooling और Dynamic Runtime Configuration

Schema-per-tenant या database-per-tenant मॉडल का उपयोग करते समय, डेटाबेस कनेक्शन का समाप्त होना (exhaustion) एक प्राथमिक बाधा है। पारंपरिक सेटअप प्रति डेटाबेस इंस्टेंस लगातार कनेक्शन खोलते हैं। सैकड़ों डेटाबेस वाले multi-tenant मॉडल के तहत, यह जल्दी ही डेटाबेस सर्वर को क्रैश कर देता है।

इसे कम करने के लिए, PgBouncer जैसे सेंट्रलाइज्ड कनेक्शन पूलर को लागू करें या HTTP-आधारित डेटाबेस ड्राइवरों (जैसे Prisma Accelerate, Neon, या PlanetScale) का उपयोग करें जो डायनेमिक रनटाइम कॉन्फ़िगरेशन को संभालते हैं। यह आपके Next.js सर्वरलेस फ़ंक्शंस को सिस्टम रिसोर्सेज को समाप्त किए बिना मांग पर आइसोलेटेड टेनेंट डेटाबेस को क्वेरी करने की अनुमति देता है।


बड़े पैमाने पर SSL सर्टिफिकेट और कस्टम डोमेन का प्रबंधन

ग्राहकों को अपने कस्टम डोमेन (जैसे, app.clientcompany.com) को आपके SaaS पर मैप करने की अनुमति देना एक प्रीमियम फीचर है जिसके लिए डायनेमिक SSL प्रोविजनिंग की आवश्यकता होती है। आप यूजर-डिफाइंड डोमेन के लिए SSL सर्टिफिकेट को हार्डकोड नहीं कर सकते।

इसे सुरक्षित रूप से संभालने के लिए:

  1. Reverse Proxy / Edge Router: Cloudflare for SaaS, Vercel Platforms, या Caddy जैसे रिवर्स प्रॉक्सी का उपयोग करें। ये प्लेटफॉर्म अपरिचित होस्टनेम के लिए आने वाली रिक्वेस्ट का स्वचालित रूप से पता लगाते हैं, आपके टेनेंट एपीआई (API) के खिलाफ उन्हें सत्यापित करते हैं, और तुरंत स्वचालित, मुफ्त Let's Encrypt SSL सर्टिफिकेट प्रदान करते हैं।
  2. DNS Configuration: अपने टेनेंट्स को निर्देश दें कि वे अपने सबडोमेन से एक CNAME रिकॉर्ड को आपके मुख्य इनग्रेस डोमेन (जैसे, cname.yourplatform.com) पर इंगित (point) करें।

SSL प्रोविजनिंग को अपने एप्लिकेशन सर्वर से अलग करके, आप यह सुनिश्चित करते हैं कि आपका मुख्य Next.js एप्लिकेशन अत्यधिक उत्तरदायी (responsive) बना रहे और पूरी तरह से बिजनेस लॉजिक पर केंद्रित रहे।


परफॉर्मेंस और स्केलेबिलिटी में संतुलन बनाना

जब आप एक multi-tenant प्लेटफॉर्म बनाते हैं, तो परफॉर्मेंस इस बात से काफी प्रभावित होती है कि आप टेनेंट कॉन्फ़िगरेशन को कैसे प्राप्त (fetch) करते हैं। हर रिक्वेस्ट पर मेटाडेटा (जैसे टेनेंट स्टेटस, कस्टम थीम या एक्टिव फीचर्स) को फेच करने से महत्वपूर्ण लेटेंसी (latency) आ सकती है।

  • Edge Caching: मिडिलवेयर निष्पादन (execution) चरण के दौरान सब-मिलीसेकंड लुकअप सुनिश्चित करने के लिए एज पर (Redis या Vercel Edge Config का उपयोग करके) टेनेंट राउटिंग मेटाडेटा को कैश करें।
  • Incremental Static Regeneration (ISR): जनता के सामने आने वाली टेनेंट साइटों (जैसे पोर्टफोलियो या हमारे Website Development Services का उपयोग करके बनाई गई स्टोरफ्रंट) के लिए, मांग पर टेनेंट पेजों को स्टैटिक रूप से जनरेट करने के लिए ISR का उपयोग करें, और उन्हें विश्व स्तर पर CDN पर कैश करें।

निष्कर्ष और तकनीकी कार्यान्वयन रोडमैप (Technical Implementation Roadmap)

एक मजबूत next.js multi-tenant architecture को डिजाइन करने के लिए सुरुचिपूर्ण (elegant) राउटिंग, सुरक्षित डेटा आइसोलेशन और लो-लेटेंसी इंफ्रास्ट्रक्चर को संतुलित करने की आवश्यकता होती है। चाहे आप एक एंटरप्राइज वर्कफ़्लो प्लेटफ़ॉर्म बना रहे हों, एक विशेष CRM, या एक Coaching Class Management App, आपका बुनियादी आर्किटेक्चर आपकी दीर्घकालिक इंजीनियरिंग गति और मार्जिन को तय करता है।

WebVibez में, हम आधुनिक व्यावसायिक मांगों के अनुरूप हाई-परफॉर्मेंस, स्केलेबल SaaS आर्किटेक्चर बनाने में विशेषज्ञ हैं। हमारी सीनियर इंजीनियरिंग टीम को आपके अगले multi-tenant एप्लिकेशन को डिजाइन करने, बनाने और स्केल करने में आपकी मदद करने दें। अपना तकनीकी रोडमैप तैयार करने के लिए आज ही WebVibez से संपर्क करें।


👨‍💻 लेखक एवं संपर्क जानकारी (Author & Contact)

कस्टम सॉफ्टवेयर, कोचिंग मैनेजमेंट ऐप्स और वेब आर्किटेक्चर समाधान के लिए WebVibez से संपर्क करें।

Top comments (0)