Blog
EF Core’da Multi-Tenant (Çok Kiracılı) Mimari Nasıl Kurulur?
- 27 Ekim 2025
- Yayınlayan: svahabi
- Kategori: Blog Yazıları
🚀 Giriş
Günümüzde birçok yazılım çözümü, tek bir uygulama altyapısı üzerinden birden fazla müşteriye hizmet verir.
Bu model, özellikle SaaS (Software as a Service) çözümlerde hem maliyet hem de ölçeklenebilirlik avantajı sağlar.
Ancak bu avantajın sürdürülebilmesi için, her müşterinin verisinin diğerlerinden izole edilmesi, güvenli şekilde yönetilmesi ve performansın korunması gerekir.
İşte bu noktada devreye Multi-Tenant Architecture — yani Çok Kiracılı Mimari girer.
Microsoft’un Entity Framework Core (EF Core) kütüphanesi, çok kiracılı uygulamaların veri katmanında yönetilmesi için son derece esnek bir yapı sunar.
Bu yazıda EF Core üzerinde Multi-Tenant mimarinin ne anlama geldiğini, hangi modellerle uygulanabileceğini, tasarım kararlarını ve kurumsal ölçekte nelere dikkat edilmesi gerektiğini adım adım inceleyeceğiz.
🧩 Multi-Tenant Mimari Nedir?
Multi-Tenant sistemler, aynı uygulama altyapısını birden fazla müşterinin ortak kullanabildiği, ancak her müşterinin verisinin ve yapılandırmasının izole edildiği yapılardır.
Her bir “tenant” genellikle bir kurum, şirket veya kullanıcı grubunu temsil eder.
Bu modelin ana hedefi, kaynak paylaşımını optimize ederken veri güvenliğini ve performans izolasyonunu korumaktır.
Örneğin bir eğitim yönetim sistemi düşünelim. Aynı uygulama altyapısı üzerinden birçok okul sisteme erişebilir, ancak her okul yalnızca kendi öğrencilerini, derslerini ve raporlarını görebilmelidir. Bu, Multi-Tenant yapının en klasik örneklerinden biridir.
🏗️ EF Core’da Multi-Tenant Uygulama Modelleri
EF Core, veri erişimini tamamen geliştirici kontrolünde sunduğu için, çok kiracılı mimarinin farklı modelleri esnek biçimde uygulanabilir. Temel olarak üç yaklaşım vardır:
1. Database-per-Tenant (Her Kiracıya Ayrı Veritabanı)
Her müşterinin (tenant’ın) verileri ayrı bir veritabanında tutulur.
Bu, en yüksek izolasyon seviyesini sağlar.
Bir müşterinin veritabanına erişim diğerlerini etkilemez; bu da hem güvenlik hem de performans açısından büyük bir avantajdır.
Bu modelin en önemli avantajları:
-
Tam veri izolasyonu
-
Özelleştirilebilir yedekleme ve bakım süreçleri
-
Her müşteriye özel veritabanı yapılandırması
Ancak bu modelin yönetim maliyeti yüksektir.
Yeni bir müşteri eklendiğinde yeni bir veritabanı oluşturmak, migration’ları senkronize tutmak ve bağlantı dizelerini dinamik biçimde yönetmek gerekir.
2. Schema-per-Tenant (Her Kiracıya Ayrı Şema)
Bu modelde tek bir veritabanı bulunur; ancak her müşteri için ayrı bir şema (örneğin tenant1.Orders, tenant2.Orders) tanımlanır.
Veriler fiziksel olarak aynı veritabanında bulunsa da, şemalar mantıksal bir izolasyon sağlar.
Avantajları:
-
Orta düzey veri izolasyonu
-
Yönetimi Database-per-Tenant’a göre daha kolay
-
Paylaşılan veritabanı kaynakları sayesinde daha düşük maliyet
Dezavantajları:
-
Şema sayısı arttıkça migration ve bakım süreçleri karmaşıklaşır
-
Veritabanı seviyesinde tenant geçişleri zorlaşır
Bu yaklaşım, genellikle franchise yapılarında, alt markalara sahip kurumsal sistemlerde veya orta ölçekli SaaS çözümlerinde tercih edilir.
3. Shared Schema (Ortak Şema Üzerinde Tenant Ayırımı)
En yaygın kullanılan modeldir.
Tüm müşteriler aynı veritabanı ve tabloları paylaşır; ancak her tabloda TenantId veya CompanyId gibi bir sütun yer alır.
Uygulama katmanında yapılan filtrelemeler sayesinde her kullanıcı sadece kendi verilerini görebilir.
Avantajları:
-
En kolay yönetilen modeldir
-
Minimum altyapı maliyeti
-
Yeni müşteri ekleme süreci son derece hızlıdır
Dezavantajları:
-
En düşük izolasyon seviyesi
-
Filtre hataları veri sızıntısına yol açabilir
-
Performans tuning (özellikle indeksleme) dikkatle yapılmalıdır
Bu model genellikle eğitim yönetim sistemleri, ERP modülleri veya küçük-orta ölçekli SaaS çözümlerinde tercih edilir.
🧱 EF Core ile Multi-Tenant Yapı Kurarken Dikkat Edilmesi Gerekenler
🔹 Veri Erişim Katmanı Tasarımı
Tüm veri erişim operasyonları, tenant bilgisine göre filtrelenmelidir.
Bu filtrelerin manuel olarak yazılması hataya açık olduğundan, merkezi bir mekanizma kurulmalıdır.
EF Core’un “global sorgu filtresi” özelliği, bu izolasyonu otomatik hale getirmek için sıklıkla tercih edilir.
🔹 Bağlantı Yönetimi ve Yapılandırma
Database-per-Tenant modelinde, her tenant’ın bağlantı bilgisi (connection string) güvenli biçimde saklanmalı ve dinamik olarak yüklenmelidir.
Bu bilgiler genellikle kimlik doğrulama sonrasında, JWT token veya kullanıcı kimliği üzerinden belirlenir.
🔹 Migration Stratejisi
Her tenant için ayrı veritabanı veya şema kullanılıyorsa, migration’ların senkronizasyonu kritik önemdedir.
Yeni bir tablo veya kolon eklendiğinde, tüm tenant veritabanlarının aynı şemayı kullanması sağlanmalıdır.
Aksi takdirde sorgu tutarsızlıkları oluşabilir.
🔹 Performans ve İzleme (Monitoring)
Çok kiracılı sistemlerde performans takibi, tek kiracılı sistemlere göre daha zordur.
Loglama ve telemetri mekanizmaları (örneğin Application Insights veya Serilog) her tenant için ayrı kimlikle veri kaydı tutmalıdır.
Bu sayede belirli bir müşteride yaşanan performans sorunu diğerlerinden izole biçimde analiz edilebilir.
🔹 Güvenlik ve Yetkilendirme
Tenant izolasyonunun yalnızca veri katmanında değil, kimlik doğrulama katmanında da sağlanması gerekir.
Her API isteği, ilgili tenant kimliği doğrulanmadan işlenmemelidir.
Bu durum özellikle “Shared Schema” yaklaşımında kritik önem taşır.
🧭 Doğru Modeli Seçmek
Multi-Tenant mimarilerde “tek doğru çözüm” yoktur.
Uygulamanın ölçeği, müşteri sayısı, güvenlik gereksinimleri ve operasyonel kabiliyetler model seçiminde belirleyicidir:
| Senaryo | Önerilen Model |
|---|---|
| Yüzlerce küçük müşteri, basit modüller | Shared Schema |
| 10–50 orta ölçekli müşteri, özel rapor ihtiyaçları | Schema-per-Tenant |
| Kurumsal seviyede SaaS platformu, yüksek güvenlik gereksinimi | Database-per-Tenant |
Doğru yapı seçildiğinde EF Core, bu çok kiracılı altyapının veri yönetimini performanslı, güvenli ve ölçeklenebilir biçimde yürütebilir.
💡 Sonuç
Multi-Tenant mimari, modern uygulamaların sürdürülebilirliği, güvenliği ve ölçeklenebilirliği açısından vazgeçilmezdir.
EF Core’un esnek yapısı sayesinde, ister küçük bir eğitim platformu ister büyük bir SaaS çözümü olsun, aynı temel ilkelerle sağlam bir altyapı kurulabilir.
Kritik olan, projenin başlangıcında doğru modeli seçmek ve tenant kimliğini tüm katmanlarda tutarlı biçimde yönetmektir.
Bu prensiplerle tasarlanmış bir Multi-Tenant altyapı, gelecekteki büyüme ve kurumsal gereksinimlere sorunsuz biçimde uyum sağlar.