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.