Harika bir B2B yazılım fikrini tek bir müşteri için çalıştırmak kolaydır; peki aynı anda 5.000 farklı şirketin (tenant) birbirinin verisine asla erişemeden, kendi özel alan adlarıyla (custom domain), saniyeler içinde abone olup kullandığı bir SaaS platformunu nasıl inşa edersiniz? Gerçek SaaS mühendisliği, sıradan bir web uygulamasından çok daha derin bir mimari disiplin gerektirir.
SaaS yazılım geliştirme; bulut tabanlı bir yazılımın çok kiracılı (multi-tenant) veri izolasyonu, otomatik abonelik ve tahsilat motoru, rol tabanlı yetkilendirme (RBAC) ve yatay ölçeklenebilir sunucu altyapısıyla binlerce kuruma aynı çekirdek üzerinden güvenli hizmet vermesini sağlayan mühendislik sürecidir.
Çok Kiracılı (Multi-Tenant) Veritabanı İzolasyon Modelleri
Bir SaaS ürününün kalbi, kiracı (müşteri organizasyonu) verilerinin nasıl izole edildiğidir. Kling Digital olarak SaaS platformu ve bulut yazılım geliştirme projelerinde ürünün regülasyon ve ölçek ihtiyacına göre üç temel izolasyon mimarisi kurguluyoruz:
- Paylaşımlı Şema & Satır Düzeyinde İzolasyon (Row-Level Security / Tenant ID): Tüm kiracıların aynı PostgreSQL kümesinde
tenantIdindeksleriyle ayrıldığı, başlangıç ve hızlı büyüme aşamasındaki B2B SaaS ürünleri için en maliyet-etkin model. - Şema Bazlı İzolasyon (Schema-per-Tenant): Tek bir veritabanı sunucusunda her kurumsal müşteriye bağımsız şema atanan hibrit yapı.
- Veritabanı Bazlı Tam İzolasyon (Database-per-Tenant): Finans, sağlık ve kurumsal holding müşterileri için her kiracının fiziksel olarak ayrı bir PostgreSQL veritabanına yönlendirildiği yüksek güvenlikli (Master-Tenant) mimari.
// Çok kiracılı (Multi-Tenant) dinamik bağlantı çözümleme örneği
export async function resolveTenantContext(hostname: string) {
const tenant = await masterPrisma.tenant.findUnique({
where: { customDomain: hostname },
select: { id: true, status: true, planTier: true, dbConnectionUrl: true },
});
if (!tenant || tenant.status !== "ACTIVE") {
throw new Error("TENANT_ISOLATION_BOUNDARY_REJECTED");
}
return getPrismaClientByTenantId(tenant.id);
}
Float (kayan noktalı) veri tipi kullanmak kuruş kayıplarına ve mutabakat hatalarına yol açar. Tüm abonelik tutarları, KDV hesaplamaları ve kullanım kotaları veritabanında tam sayı (Kuruş / Cent — Int) olarak tutulmalıdır.
SaaS Mimarisi: İzolasyon ve Ölçekleme Karşılaştırma Tablosu
| Mimari Katman | Paylaşımlı Tablo (Row-Level) | Şema İzolasyonu | Tam Veritabanı İzolasyonu (DB-per-Tenant) |
|---|---|---|---|
| Veri İzolasyon Seviyesi | Mantıksal (Uygulama & RLS) | Yarı-Fiziksel (PostgreSQL Schema) | %100 Fiziksel İzolasyon |
| Sunucu Altyapı Maliyeti | Çok Düşük (Yüksek kar marjı) | Orta | Kurumsal Lisans (Enterprise Tier) |
| Yedekleme & Geri Yükleme | Toplu anlık görüntü (Snapshot) | Şema bazlı pg_dump | Kiracı Bazlı Bağımsız Yedekleme |
| Hedef Müşteri Segmenti | PLG, KOBİ ve Hızlı Büyüyen SaaS | Orta Ölçekli B2B | Holding, FinTech, Regüle Sektörler |
Üretim Seviyesinde Bir SaaS Platformunun 4 Olmazsa Olmaz Modülü
1. Tekrarlayan Ödeme (Recurring Billing) ve Otomatik Yenileme Motoru
Aylık ve yıllık abonelik paketleri, deneme süresi (trial) yönetimi, başarısız kart çekimlerinde otomatik tekrar deneme (dunning management) ve PayTR / Stripe webhook senkronizasyonu SaaS nakit akışının omurgasıdır.
2. Kiracı Kendi Kendine Kurulum (Self-Onboarding) ve Özel Alan Adı
Yeni bir müşterinin kayıt olduktan sonra 30 saniye içinde kendi çalışma alanını açabilmesi, ekibini davet edebilmesi ve CNAME yönlendirmesiyle kendi alan adını bağlayabilmesi büyüme hızını doğrudan belirler.




