Multi-Tenant Veritabanı Mimarisi Nasıl Kurulur?
B2B SaaS platformlarının en kritik ve en zorlu bileşeni veritabanı mimarisidir. Birbirini tanımayan yüzlerce şirketin (kiracı / tenant) verisini tek bir sistemde nasıl güvenli, hızlı ve izole bir şekilde tutarsınız? İşte modern "Multi-Tenant" (Çok Kiracılı) mimarilerin anatomisi.
İzolasyon Stratejileri
SaaS mimarisinde tenant verilerini ayırmanın üç temel yolu vardır. Her birinin maliyet, güvenlik ve ölçeklenebilirlik açısından artıları ve eksileri bulunur.
1. Silo Mimarisi (Her Tenant İçin Ayrı Veritabanı)
Bu yöntemde A şirketinin veritabanı ile B şirketinin veritabanı fiziksel olarak ayrıdır.
- Avantaj: Maksimum veri güvenliği. Sıkı regülasyonlara (örneğin sağlık verileri - HIPAA) tabi şirketler için idealdir.
- Dezavantaj: Altyapı maliyetleri çok yüksektir ve veritabanı şemasında bir güncelleme yapmak istediğinizde yüzlerce ayrı veritabanını aynı anda güncellemeniz gerekir (Migration Nightmare).
2. Schema-Based İzolasyon (Ortak Veritabanı, Ayrı Şemalar)
PostgreSQL gibi ilişkisel veritabanlarında çok sık kullanılan bir yöntemdir. Tüm şirketler aynı veritabanındadır, ancak her şirketin (tenant) kendine ait bir "Şeması" (Schema) vardır. Maliyet ve izolasyon arasında iyi bir dengedir, ancak tenant sayısı binleri geçtiğinde performans sorunları yaratabilir.
3. Pool Mimarisi (Ortak Veritabanı ve Şema + Tenant ID)
Modern B2B SaaS ürünlerinin (örneğin Slack veya Notion) çoğunun kullandığı yapıdır. Tüm veriler aynı tabloda durur ve her satırda bir `tenant_id` kolonu bulunur.
- Avantaj: İnanılmaz derecede düşük maliyetli ve yönetimi kolaydır. Veritabanı güncellemeleri saniyeler sürer.
- Dezavantaj: Bir yazılımcı SQL sorgusunda "WHERE tenant_id = ?" filtresini eklemeyi unutursa, A şirketinin verileri yanlışlıkla B şirketine sızabilir. Bu, SaaS dünyasındaki en büyük korkudur.
Çözüm: Row-Level Security (RLS)
TCN Labs olarak, Pool mimarisinin maliyet avantajını kullanırken, Silo mimarisinin güvenliğini sağlamak için PostgreSQL'in Row-Level Security (RLS) özelliğini kullanıyoruz.
RLS sayesinde, güvenlik kuralları yazılım kodunda değil, doğrudan veritabanının çekirdeğinde tanımlanır. Uygulama katmanında (Node.js/Next.js) bir geliştirici hata yapsa ve tüm verileri sorgulasa bile, veritabanı sadece o an sisteme giriş yapmış olan kullanıcının `tenant_id`'sine ait satırları döndürür. Bu mimari, B2B projelerinde veri sızıntılarını teknik olarak imkansız hale getirir.
Özet
Doğru mimari seçimi, SaaS projenizin hedef kitlesine ve veri hassasiyetine bağlıdır. TCN Labs olarak, kurumsal projelerinizi geleceğe taşımak için en modern ve güvenli veritabanı stratejilerini uyguluyoruz.