Problem nedir?
Başlangıçta tek bir müşteri için geliştirilen SaaS ürünleri, büyüdükçe her müşteri için ayrı sunucu/veritabanı yönetmek zorunda kalıyor. Bu hem maliyetli hem de yönetilemez.
Üç temel yaklaşım
1. Siloed (tam izolasyon)
Her müşteri kendi veritabanı ve sunucusuna sahip. Güvenli ama pahalı.
2. Shared schema
Tek veritabanı, tüm tablolarda tenant_id kolonu. Ucuz ama veri sızıntısı riski yönetilmeli.
3. Separate schema
Tek veritabanı motoru, her tenant için ayrı schema. İyi bir denge noktası.
Bizim tercihimiz
Mainty'de separate schema yaklaşımını benimsedik. PostgreSQL'in schema desteği bu geçişi yönetilebilir kıldı.
Geçiş süreci
tenant_idkolonlarını ekle- Row-level security politikalarını yaz
- Bağlantı havuzunu tenant-aware hale getir
- Kapsamlı test — özellikle cross-tenant veri erişimi için
