Az archívumból6 rész · 2 percÍrta: Dezső Mező · Megjelent .mdWebSaaSNext.jsMulti-tenant
Ha a te SaaS-ed 10+ tenant fölé skálázik, a multi-tenant architektúra nem luxus, hanem túlélés. Itt az általunk használt referencia-stack [Next.js](https://nextjs.org/docs/app)-szel és [Postgres Row-Level Security](https://www.postgresql.org/docs/current/ddl-rowsecurity.html)-vel. Ugyanezt szállítjuk a [Web és webalkalmazás szolgáltatásunk](/szolgaltatasok/web) keretében.
011. Tenant-felismerés: subdomain vs custom domain
A subdomain (acme.app.com) a default. A custom domain (app.acme.com) szerepel a Growth csomagban. Next.js middleware-ben feloldjuk a tenant-et és hozzá-csapjuk a request-hez.
// middleware.ts · tenant resolution
import { NextResponse, type NextRequest } from "next/server";
export async function middleware(req: NextRequest) {
const host = req.headers.get("host") || "";
const subdomain = host.replace(/\.app\.com$/, "");
const tenant = await resolveTenantBySubdomain(subdomain);
if (!tenant) return NextResponse.redirect(new URL("/404", req.url));
const res = NextResponse.next();
res.headers.set("x-tenant-id", tenant.id);
return res;
}022. Adatizoláció: Row-Level Security vs schema-per-tenant
Postgres RLS (PolicyScope) jól működik ~500 tenant-ig. Efölött schema-per-tenant (vagy cluster-per-tenant nagy ügyfeleknek). Mi default RLS-t használunk, kritikus ügyfeleknek dedikált schema-t.
033. Feature flag per-tenant
A Growth csomag más feature-t lát, mint az Enterprise. Ezt NEM if-elseif-ben csináljuk · PostHog feature flag + tenant group. A kód tiszta marad.
044. Billing: Stripe + per-seat + usage
- Stripe Subscription per-tenant, customer = tenant.
- Metered billing a usage-alapú termékekhez.
- Webhook → Postgres → cache invalidation.
055. Background job per-tenant
Ne egy globál queue-ban fussanak a tenant-job-ok. BullMQ per-tenant queue vagy Temporal namespace. Így egy csapkodó tenant nem dönti be a többit.
06Összefoglaló
Ez az architektúra 2-8 hét alatt felállítható. Ha most indítasz SaaS-t, kezdettől multi-tenant legyen · később átállni sokkal többe kerül.
Amit érdemes elvinni
- Subdomain vs custom domain, Postgres Row-Level Security vs schema-per-tenant, feature flag per-tenant, Stripe metered billing, izolált background queue. A teljes referenciastack Next.js-szel, amin a SaaS-ügyfeleinket 10k tenant-ig skálázunk.
Az írásban használt fogalmak
Több a laborból
Összes bejegyzés- Core Web Vitals Next.js-szel: hogyan lett 4.5s-ből 0.9s LCP
Core Web Vitals egy igazi Next.js oldalon- Next.js 16 teljesítménycsapdák minden projektben
- Server vs. kliens komponensek 2026: a döntési szabályunk
Megnézzük ugyanezt a te rendszereden?Kezdjünk bele
