Çok Kiracılı (Multi-Tenant) CRM Mimarisi: "Verileriniz Ayrı Tutulur" Cümlesi Nerede Biter?
- Kategori
- Teknoloji
- Yayın tarihi
- 24 Ağustos 2026
- İlgili yazı 1
- SaaS Nedir ve Bir Yazılımı Kiralamak Neyi Değiştirir?
Bir CRM sağlayıcısıyla yapılan görüşmede duyulan bir cümle var: verileriniz ayrı tutulur. Bu cümle yanlış değil. Eksik olan, nerede bittiği.
Çok kiracılı (multi-tenant) bir yazılımda tek bir uygulama, tek bir sunucu ve tek bir işletim ekibi çok sayıda müşteriye aynı anda hizmet eder. Ayrım bu yüzden bir yerde kurulur ve bir yerde biter. Hangi katmanda kurulduğu yazılmadıkça alıcı en geniş anlamı varsayar, sağlayıcı da gerektiğinde en dar anlamı savunur; ikisinin arasındaki fark alıcının riskidir.
Bu yazı kendi kurulumumuzu ölçerek yazıldı. Aşağıdaki sayıların tamamı Rapitek CRM'in üretim ortamından alındı ve aleyhimize olanlar da olduğu gibi duruyor. Amaç bir güvenlik broşürü yazmak değil; bir alıcının sağlayıcısına soracağı soruları, cevabın nerede biteceğini bilerek sormasını sağlamak.
"Verileriniz ayrı tutulur" bir mimari tarifi değil, bir kapsam cümlesidir. Kapsamı yazılmadığında üç ayrı mimarinin üçüne birden uyar — ve bir yıl sonra kimin ne kastettiği tartışılamaz hale gelir.
İçindekiler
Çok kiracılı (multi-tenant) mimari nedir?
Çok kiracılı mimari, tek bir yazılım kurulumunun birden fazla müşteriye — kiracıya — aynı anda hizmet vermesidir. Alternatifi tek kiracılıdır: her müşteri için ayrı bir kurulum, ayrı bir sürüm, ayrı bir bakım hattı. Çok kiracılı olmak bir kusur değil, bulut yazılımının maliyet ve güncelleme modelidir; yeni bir sürüm tek seferde bütün kiracılara ulaşır.
Ayrımın nasıl kurulduğu ise sabit değil. Üç yaklaşım tarif edilir ve üçü de "verileriniz ayrı tutulur" cümlesiyle anlatılabilir.
1. Paylaşılan tablo, kiracı sütunu
Bütün müşterilerin kayıtları aynı tablolarda durur; her satırda bir kiracı kimliği sütunu vardır ve ayrım tamamen uygulama kodunun o sütunu doğru filtrelemesine bağlıdır. En ucuz ve en esnek olan budur. Ayrımı koruyan tek şey koddur: filtreyi unutan tek bir sorgu sınırın karşı tarafını görür ve bunu veritabanı tarafında durduran bir kural yoktur.
2. Ortak veritabanı sunucusu, kiracı başına ayrı veritabanı
Her müşterinin kendi veritabanı ve kendi tablo dosyaları vardır; hepsi aynı veritabanı sunucusu üzerinde çalışır. Ayrım artık uygulama filtresine değil, bağlantının hangi veritabanına açıldığına bağlıdır. Uygulamada unutulan bir kiracı filtresi bu kurguda karşı tarafın kayıtlarını getirmez, çünkü o kayıtlar bağlantının veritabanında bulunmaz. Sınır burada da mutlak değildir: sunucu, işletim sistemi ve veritabanı kullanıcısı ortaktır.
3. Kiracı başına ayrı kurulum
Ayrı sunucu, ayrı veritabanı sunucusu, ayrı ağ. Ayrımın en katı hâli budur ve maliyeti de en yüksek olan budur; her müşteri ayrı bir işletim yükü demektir. Bir sağlayıcı bunu yapıyorsa o maliyet bir yerde fiyata yansır.
Bir sağlayıcı hangisini kastettiğini söylemiyorsa, cümle üçüne de uyar.
Bu fark alıcı için nerede ortaya çıkar?
Günlük kullanımda üç model de aynı görünür: aynı ekranlar, aynı hız, aynı adres. Fark üç anda görünür.
Birincisi olay anında. Bir arıza, bir kaynak tükenmesi ya da bir bakım penceresi kaç müşteriyi aynı anda etkiler? Ayrım ne kadar aşağı katmanda kurulmuşsa etki alanı o kadar dar olur.
İkincisi ayrılırken. Sözleşme bittiğinde verinizin çıkarılması ve silinmesi, ayrı bir veritabanında tek bir işlem; paylaşılan bir tabloda ise satır satır bir ayıklama işi. Sağlayıcının size ne kadar hızlı ve ne kadar eksiksiz cevap verebileceğini büyük ölçüde bu belirler.
Üçüncüsü denetim sırasında. Bir müşteriniz ya da denetçiniz "verimiz kimin verisiyle aynı yerde duruyor" diye sorduğunda vereceğiniz cevap, sağlayıcınızın mimarisinden daha ileri gidemez. Bu yüzden cevabın kapsamını sözleşme aşamasında öğrenmek, olaydan sonra öğrenmekten ucuzdur.
Rapitek CRM'de ayrım hangi katmanda kuruluyor?
Kendi mimarimiz yukarıdaki ikinci gruba giriyor. Siteye yazdığımız cümle bunu kapsamıyla birlikte söylüyor:
CRM verileriniz size ait ayrı bir veritabanında tutulur: ayrı tablo dosyaları, ayrı yedek ve ayrı dosya alanı. Bu ayırım veritabanı düzeyindedir; bir isteğin hangi müşterinin veritabanına gideceğini ise uygulama, isteğin geldiği web adresine göre seçer.
Ölçülen hâli şu: 24 kiracı, 24 ayrı veritabanı şeması, ayrı tablo dosyaları. Kayıt sayıları bunu doğruluyor — aynı tablo bir kiracıda 5.865 aday kaydı taşırken diğerinde sıfır satır. Yüklenen dosyalar için de aynı ayrım kurulu: dosya deposunda kiracı başına ayrı bir alan açılıyor. Buraya bir not düşmek gerekiyor: ölçüm günü dosya deposunda 69 alan sayıldı, yani bugünkü kiracı sayısından fazla. Bu farkın nereden geldiğini ölçmedik; sayıyı olduğu gibi yazıyor, açıklamasını uydurmuyoruz.
Cümlenin dikkatle seçilmiş iki parçası var. Birincisi CRM verileriniz: kapsam sizin CRM kayıtlarınızdır — firma, kişi, fırsat, teklif, yüklediğiniz dosyalar. Bütün veri değil. İkincisi veritabanı düzeyindedir: veri, bağlantının açıldığı ayrı bir veritabanında duruyor; bağlantının hangi veritabanına açılacağını ise uygulama seçiyor. Yazının geri kalanı, bu iki parçanın dışarıda bıraktığı yeri anlatıyor.
Bu ayrımın nereye kadar gittiğini de yazalım. Veritabanı düzeyinde kurulmuş olması, sınırın koddan bağımsız olduğu anlamına gelmez: kiracıyı doğru veritabanına yönlendiren şeyin kendisi de koddur. İddiamız, ayrımın bir uygulama ayarından daha aşağıda kurulmuş olması; sıfır riskli bir mimari olduğu değil. Ortak kalan katmanları "Ayrımın bittiği üç yer" bölümünde tek tek yazıyoruz.
Bileşenlerin hangi ülkede durduğu ayrı bir sorudur; kırılımı aşağıda.
Hangi bileşen nerede duruyor
| Bileşen | Konum | Barındıran |
|---|---|---|
| Uygulama ve CRM veritabanı | Helsinki, Finlandiya | Hetzner |
| Yüklenen dosyalar (ek, görsel, toplantı ses kaydı) | Frankfurt, Almanya | DigitalOcean Spaces |
| Veritabanı yedekleri | Falkenstein, Almanya | Hetzner Storage Box |
| Hata izleme (kişisel veri gönderimi kapalı) | Almanya; şehir kırılımı ölçülmedi | Sentry |
| Platformun gönderdiği e-posta | Frankfurt, Almanya (AB) | AWS SES |
Ayrımın bittiği üç yer
1. Ayrı veritabanı, ayrı sunucu demek değil
Kiracı veritabanlarının hepsi (23 Eylül 2026'da 25) aynı MySQL örneği üzerinde çalışıyor ve uygulama hepsine tek bir veritabanı hesabıyla bağlanıyor. Kiracıya özel bir sunucu, kiracıya özel bir donanım ya da kiracıya özel bir veritabanı parolası yok. Pratik anlamı şu: ayrım veritabanı düzeyinde gerçek, ama veritabanı sunucusunun kendisi ortak bir kaynak. Sunucuyu etkileyen bir olay — yük, kaynak tükenmesi, bakım penceresi — bütün kiracıları aynı anda etkiler. Bunu "ayrı sunucu" diye yazamayız, yazmıyoruz da.
2. İşletim günlükleri paylaşılan bir tabloda duruyor
CRM kayıtlarınız ayrı bir veritabanında. Uygulamanın kendi hata kayıtları öyle değil. Ana veritabanındaki tek bir hata günlüğü tablosunda ölçtüğümüz değerler: 39.842 satır, 26 farklı kiracı, 26.357 kullanıcı e-posta adresi, 26.908 IP adresi ve 13.597 istek gövdesi — hepsi aynı paylaşılan tabloda.
Buradaki 26 sayısı, bugün sistemde bulunan 24 kiracıdan fazla. Sebebi rahatsız edici ölçüde basit: ayrılmış müşterilerin satırları hâlâ orada. Ayrılan kiracının CRM veritabanına ne olduğunu ölçmedik ve silindiğini yazmıyoruz; ölçtüğümüz tek şey, günlük satırlarının silinmemiş olduğu.
Bu neden önemli: bir hata günlüğü satırı yalnızca bir hata mesajı değildir. İçinde kimin, hangi adresten, hangi isteği yaptığı durur; bu kişisel veridir. "Verileriniz ayrı tutulur" cümlesi o satırları kapsamaz. Bizim cümlemiz de kapsamadığını söylüyor — CRM verileriniz derken kastedilen dar kapsam tam olarak budur. Bu yazıdaki hukuki nitelendirmeler ve sözleşmeye ilişkin öneriler bilgilendirmedir, hukuki görüş değildir; kendi yükümlülüğünüzü kendi hukuk danışmanınızla değerlendirin.
3. Diskte şifreleme yok
Veritabanının tamamı üzerinde ölçtük: 23 Eylül 2026'da Rapitek CRM'in 6.412 veritabanı tablosunun hiçbiri veritabanı düzeyinde şifreli değildi ve diskte bir disk şifreleme katmanı yok. Yani veriniz ayrı bir veritabanında duruyor, ama düz metin olarak duruyor. Uygulama düzeyinde şifrelenen dar bir grup var; başlıcaları: e-posta hesabı OAuth jetonları; WhatsApp Business, Instagram ve Meta erişim jetonları ile webhook sırları; ödeme ve İYS sağlayıcı kimlik bilgileri; iki adımlı doğrulama sırları ve yedek kodları; ses izleri — bunlar veritabanına yazılmadan önce Fernet ile şifreleniyor. Parolalar ise geri çözülemeyen özet olarak saklanır. Bunun dışında "verileriniz şifreli saklanır" cümlesini yazamayız ve yazmıyoruz.
Bu sayıları neden yazıyoruz?
Üçü de aleyhimize. Yine de yazıyoruz, çünkü bu üç sınırı yazmayan bir sağlayıcının "verileriniz ayrı tutulur" cümlesi ile bizimki okur açısından ayırt edilemez hale gelir. Ayırt edilebilir olmasının tek yolu, cümlenin nerede bittiğini de söylemek.
Bunların bir kısmı kapatılabilir sınırlar: işletim günlüklerinin kiracı başına ayrılması ya da eski kayıtların silinmesi bir mühendislik işidir ve yapılabilir. Bir kısmı ise mimari tercihtir — kiracı başına ayrı sunucu, bugünkü fiyat ve işletim modelimizle uyuşmuyor. Hangisinin hangisi olduğunu şimdiden söylemek, sonradan "zaten öyleydi" demekten daha dürüst.
Sağlayıcınıza sorulacak beş soru
-
1
Ayrım hangi katmanda kuruluyor?
Üç cevaptan birini isteyin: paylaşılan tabloda kiracı sütunu, kiracı başına ayrı veritabanı, ya da kiracı başına ayrı kurulum. "Verileriniz ayrı tutulur" cevabı bu soruyu kapatmaz — üç mimariye de uyar.
-
2
Ayrı veritabanı deniyorsa, sunucu da ayrı mı?
Ayrı veritabanı ile ayrı sunucu aynı şey değildir. Aynı veritabanı sunucusunda duran ayrı veritabanları kaynak ve bakım penceresi bakımından ortak davranır. Cevap "aynı sunucu" ise bu bir kusur değil; yazılı olması yeter.
-
3
İşletim günlükleri ve hata kayıtları hangi tarafta?
Uygulama günlükleri, hata izleme kayıtları ve arka plan iş kayıtları CRM verisiyle aynı katmanda da durabilir, ayrı bir katmanda da; kategorik bir cevabı yok. Hangisi olduğunu yazılı isteyin. İçlerinde kullanıcı adresi, IP ve istek gövdesi bulunabilir; bu katman kiracı başına ayrılıyor mu, sorun.
-
4
Sözleşme bittiğinde silme işlemi hangi katmanları kapsıyor?
CRM veritabanının silinmesi, ortak katmandaki kayıtların da silindiği anlamına gelmez. Silmenin kapsamını katman katman yazılı isteyin: CRM kayıtları, yüklenen dosyalar, işletim günlükleri.
-
5
Durağan şifreleme açık mı, neyi kapsıyor?
"Verileriniz şifrelenir" cümlesi aktarımdaki şifrelemeyi de anlatabilir, diskteki şifrelemeyi de. İkisini ayrı ayrı sorun ve diskteki şifrelemenin hangi alanları kapsadığını isteyin.
Bizim sınırlarımız
Yukarıdaki soruları kendi kurulumumuza da sorduk. Bu yazının konusunda söyleyemediklerimiz şunlar.
- Kiracıya bölge ya da ülke seçimi sunmuyoruz: kiracı kaydının 30 alanının hiçbirinde bölge ya da ülke alanı yok.
- Platformun gönderdiği e-postalar ayrı bir gönderim servisinden (AWS SES) çıkıyor; 23 Eylül 2026 ölçümüne göre bu servis Frankfurt bölgesinde (AB) çalışıyor. Yine de bileşenlerin tamamı için tek bir konum cümlesi kurmuyoruz: trafik Cloudflare'in küresel ağından geçer, yapay zekâ özelliği açılırsa istek ABD'ye gider.
- Ayrılan bir kiracının CRM veritabanına ne olduğunu ölçmedik. Silindiğini de, durduğunu da yazmıyoruz.
- Denetim kaydımız "değiştirilemez" değil. Kayıt tablosu sıradan bir veritabanı tablosu: veritabanında doğrudan yapılan yazımlar denetim kaydına girmez ve ekibimiz, destek talebi üzerine bir CRM kaydına ait satırları bu tablodan silebilir; ürün içinde bunu yapan bir kullanıcı yolu yok.
- Paylaşılan işletim günlüğü için yazılı bir saklama süresi politikamız yok; bu kararı henüz almadık.
- ISO 27001 ya da SOC 2 sertifikamız yok ve alana kadar da iddia etmeyeceğiz.
- Yazılı bir çalışma süresi (SLA) taahhüdü vermiyoruz; kiracı adreslerini dışarıdan izleyen bağımsız bir servis kurulu değil.
Sık sorulan sorular
Çok kiracılı (multi-tenant) mimari nedir?
Rapitek CRM'de verilerim başka müşterilerin verisiyle aynı tabloda mı duruyor?
"Ayrı veritabanı" ile "ayrı sunucu" aynı şey mi?
Verilerim sunucuda şifreli olarak mı saklanıyor?
Verilerim hangi ülkede tutuluyor, bölge seçebilir miyim?
Bir müşterinin kullanıcısı başka bir müşterinin kayıtlarını görebilir mi?
Bir sağlayıcının bu konuda söylediğini nasıl doğrularım?
Bu ayrım kurulumda ne zaman netleşiyor?
İlgili içerikler
- Güvenlik — barındırma, yedekleme ve erişim denetimi ölçümlerinin tamamı.
- SaaS nedir — bir yazılımı kiralamanın veri tarafındaki karşılığı.
- PaaS nedir — platform katmanının bir CRM alıcısını nerede ilgilendirdiği.
- Rapitek CRM ürün sayfası — nesneler, yetkilendirme ve denetim kaydı.
Kendi kurulumunuzun katmanlarını ekranda birlikte geçelim
Rapitek CRM'i kuran ekip, Salesforce döneminde 200'den fazla kurumsal CRM projesi tamamladı. Ürün yeni, ekip değil: alanları, aşamaları ve raporları biz yapılandırıyoruz, verinizi biz aktarıyoruz, ekibinize Türkçe eğitimi biz veriyoruz.
Keşifte hangi verinin hangi katmanda duracağını katman katman çıkarırız.
Kerim Yıldırım
Kurucu, Rapitek CRM · Salesforce döneminde 200'den fazla kurumsal CRM projesi
Kaynaklar
Bu yazıdaki dış olgular şu birincil kaynaklara dayanıyor:
