Tüm Yazılar
// SaaS // Supabase // PostgreSQL // Mimari

SaaS Projelerinde Multi-Tenant Mimari

20 Şubat 2026

Birden fazla kurumun aynı platformu kullanması gereken SaaS projelerinde multi-tenant mimari kritik bir karar. Kurs Takip projesinde bu yapıyı nasıl kurduğumu paylaşıyorum.

Multi-Tenant Nedir?

Tek bir uygulama instance'ı üzerinden birden fazla müşteriye (tenant) hizmet verilmesi. Her müşteri kendi verilerini görür, diğerlerinin verilerine erişemez.

Yaklaşımlar

1. Veritabanı Bazında Ayrım

Her müşteri için ayrı veritabanı. En güvenli ama en maliyetli.

2. Şema Bazında Ayrım

Aynı veritabanında her müşteri için ayrı şema. Orta seviye izolasyon.

3. Satır Bazında Ayrım (Row-Level)

Aynı tablolarda tenant_id sütunu ile ayrım. En verimli, en yaygın.

-- Row Level Security ile tenant izolasyonu
CREATE POLICY "tenant_isolation" ON customers
  USING (tenant_id = auth.jwt() ->> 'tenant_id');

Supabase ile RLS

Supabase'in Row Level Security özelliği, multi-tenant izolasyonu için mükemmel çalışıyor:

-- Her kullanıcı sadece kendi kurumunun verilerini görsün
ALTER TABLE students ENABLE ROW LEVEL SECURITY;
 
CREATE POLICY "students_tenant_policy" ON students
  FOR ALL
  USING (
    tenant_id = (
      SELECT tenant_id FROM user_profiles
      WHERE user_id = auth.uid()
    )
  );

Sonuç

Satır bazlı ayrım + Supabase RLS, küçük-orta ölçekli SaaS projeleri için en pratik çözüm. Kurs Takip'te bu yaklaşımla her müzik okulu kendi verilerini güvenle yönetebiliyor.