Multi-Tenant Sistemlerde Domain Yapılandırması ve Etkileri
Multi-tenant sistem nedir? Tek bir yazılım üzerinde birden fazla müşterinin (tenant) kendi veritabanları ve ayarlarıyla çalışabildiği sistemdir. Her müşteri kendi domain'i üzerinden erişir.
Her müşterinin kendi bağımsız domain'i. Örnek: ixtif.com, firma-a.com, firma-b.com
✅ Her müşteri tamamen izole, kendi veritabanı, kendi ayarları
Sistemin ana domain'i. Tüm müşterileri yönettiğiniz yer. Örnek: tuufi.com (ana sistem)
✅ Admin paneli, tenant oluşturma, sistem ayarları buradan
Problem: Muzibu.com.tr başta tenant domain olarak kuruldu (doğru). Sonra central domain yapıldı (yanlış).
Sonuç: Login yaptığınızda sistemin sizin giriş yaptığınızı anlayamadı çünkü cache sistemi bozuldu. "Giriş Yap" butonu ekranda kalmaya devam etti.
Çözüm: Muzibu'yu tekrar tenant domain yaptık ve sorun çözüldü. Artık düzgün çalışıyor.
tenant() helper: Tenant objesi döner (id: 1001)
tenant_1001_guest_* / tenant_1001_auth_{userId}_*
tenant1001_
tenant1001 (storage/tenant1001/app/public)
tenant() helper: NULL döner!
tenant_central_guest_* (farklı pattern!)
central_ veya prefix yok
tenant_central_guest_* olarak kaydedilir. Login olunca tenant_central_auth_{userId}_* aranır. Ama clearGuestCaches() fonksiyonu tenant_{tenantId}_guest_* pattern'ini temizler. Pattern uyuşmadığı için cache temizlenmez!
Eğer Muzibu'yu mutlaka central domain olarak çalıştırmak istiyorsanız, aşağıdaki çözümlerden birini uygulamanız gerekir:
Cache sorunlarını tamamen ortadan kaldırır ama performans kaybı olur.
Merkezi domain için de tenant'ı yükle ama DB değiştirme.
Dosya: app/Http/Middleware/InitializeTenancy.php
Cache profile'ı central domain için özel yaz.
Dosya: app/Services/TenantCacheProfile.php
Eğer mutlaka central domain olarak çalıştırmak istiyorsanız:
| Özellik | Tenant Mode | Central Mode |
|---|---|---|
| Cache Çalışması | ✓ Sorunsuz | ✗ Düzeltme gerekir |
| Login/Logout | ✓ Sorunsuz | ✗ Cache kalıyor |
| Tema Yükleme | ✓ Otomatik | ~ Özel kod gerekir |
| Session İzolasyonu | ✓ Tenant prefix | ~ Kontrol gerekir |
| Media Yönetimi | ✓ Tenant disk | ~ Özel ayar gerekir |
| Kod Karmaşıklığı | ✓ Basit | ✗ Karmaşık (+150 satır) |