Bir SaaS fikrini çalışan ürüne dönüştürmek, yalnızca özellikleri kodlamak anlamına gelmez. Ürünün aynı anda birden fazla müşteriye hizmet etmesi, abonelik durumlarını yönetmesi, müşteri verilerini ayırması, düzenli güncellenmesi ve büyüdükçe operasyonel maliyetini kontrol altında tutması gerekir. Bu nedenle teknik yol haritası, ekran listesinden önce ürünün çalışma modelini tanımlamalıdır.
Sağlıklı bir plan; ilk sürümde neyin yapılmayacağını da açıkça belirler. Erken aşamada gereksiz mikroservisler, karmaşık fiyatlandırma veya her müşteriye özel kod geliştirmek teslim süresini uzatabilir. Buna karşılık tenant yapısı, yetkilendirme, veri sahipliği ve abonelik kuralları baştan düşünülmezse ürün müşteri kazandıkça yeniden yazım ihtiyacı doğabilir.
1. Ürünü değil, tekrar eden problemi tanımlayın
SaaS geliştirme süreci, “hangi teknolojiyi kullanalım?” sorusuyla başlamamalıdır. Önce aynı problemin birden fazla müşteri tarafından benzer şekilde yaşanıp yaşanmadığı anlaşılmalıdır. Tek bir işletmenin çok özel iş akışını aynen yazılıma taşımak, her zaman ölçeklenebilir bir SaaS ürünü oluşturmaz; bazen sonuç yalnızca internet üzerinden kullanılan müşteriye özel bir yazılım olur.
İlk analizde hedef müşteri, ana iş akışı ve ölçülebilir değer netleştirilmelidir. Örneğin bakım firmaları için geliştirilecek varsayımsal bir servis yönetimi SaaS'ında ana problem; taleplerin e-posta, telefon ve tablolar arasında kaybolması olabilir. İlk ürünün değeri, tüm ERP süreçlerini kapsamak değil; talebin açılması, teknisyene atanması, durumunun izlenmesi ve müşteriye raporlanması olabilir.
Karar filtresi: Bir özellik müşterinin ürünü denemesini, temel işi tamamlamasını, ödeme yapmasını veya üründe kalmasını doğrudan desteklemiyorsa ilk sürüm için ertelenebilir.
Bu aşamada ürün gereksinimleri, özel web yazılımı yaklaşımındaki gibi süreç analiziyle çıkarılabilir; ancak SaaS için ek soru şudur: Bu iş akışı farklı müşterilere ortak bir ürün mantığıyla sunulabilir mi?
2. MVP kapsamını kullanıcı yolculuğuna göre sınırlandırın
MVP, eksik bırakılmış büyük ürün değil; belirli bir kullanıcı grubunun temel problemini baştan sona çözebilen en küçük güvenilir sürümdür. Yalnızca giriş ekranı ve birkaç form hazırlamak yeterli değildir. Kullanıcının kayıt olması, hesabını kurması, ilk değerli işlemi tamamlaması ve gerektiğinde destek alması bütün bir akış olarak ele alınmalıdır.
İlk sürüm için aşağıdaki yolculuklar ayrı ayrı yazılabilir:
- Edinme: Kullanıcı ürünü nasıl keşfeder ve deneme hesabına nasıl geçer?
- Onboarding: Firma, ekip ve temel ayarlar nasıl oluşturulur?
- İlk değer: Kullanıcı üründe hangi işlemi tamamladığında faydayı görür?
- Günlük kullanım: Ana kayıtlar nasıl eklenir, atanır, aranır ve raporlanır?
- Yetkilendirme: Yönetici, çalışan ve müşteri hangi ekranları görebilir?
- Abonelik: Deneme, ödeme, paket değişikliği ve iptal nasıl yönetilir?
- Destek: Hata veya kullanım sorusu hangi kanal ve kayıt üzerinden takip edilir?
Bu yolculuklar netleşmeden hazırlanan özellik listesi genellikle kabarır. Buna karşılık her özelliği belirli bir yolculuğa bağlamak, tasarım ve geliştirme ekibinin aynı başarı ölçütüne göre çalışmasını sağlar. Yönetim ekranları ürünün merkezindeyse, ayrı bir yönetim paneli geliştirme kapsamı da kullanıcı rolleri ve operasyon süreçleriyle birlikte planlanmalıdır.
3. SaaS mimarisinin temel kararlarını erken verin
SaaS ile multi-tenant mimari aynı kavram değildir. SaaS bir ürün ve hizmet sunma modelidir; multi-tenancy ise kaynakların müşteriler arasında nasıl paylaşıldığını tanımlayan mimari yaklaşımdır. İlk sürümde bile “tenant kimdir?” sorusuna açık cevap verilmelidir. Tenant bir şirket, şube, marka, bayi veya bağımsız ekip olabilir.
AWS SaaS Lens, tenant izolasyonunu SaaS sistemlerinin temel konularından biri olarak ele alır ve bir müşterinin başka müşteriye ait kaynaklara erişmesinin mimari katmanlarda engellenmesi gerektiğini belirtir AWS SaaS Lens. Microsoft'un çok kiracılı çözüm rehberi de tenancy modelinin iş hedefi, ölçek beklentisi ve müşteri gereksinimlerine göre seçilmesini önerir Microsoft Azure Architecture Center.
| Mimari karar | Erken aşama seçeneği | Dikkat edilmesi gereken risk |
|---|---|---|
| Uygulama yapısı | Modüler monolit | Modül sınırları kurulmazsa kod tabanı zamanla sıkı bağımlı hâle gelebilir. |
| Tenant verisi | Ortak veritabanı, her kayıtta tenant kimliği | Sorgularda tenant filtresinin unutulması çapraz müşteri veri erişimine yol açabilir. |
| Dosya saklama | Tenant bazlı klasör veya nesne anahtarı | Yalnızca dosya adını kontrol etmek yetkilendirme için yeterli değildir. |
| Kimlik doğrulama | Merkezi kullanıcı hesabı ve tenant üyeliği | Kullanıcının hangi tenant adına işlem yaptığı her istekte doğrulanmalıdır. |
| Arka plan işleri | Kuyruk tabanlı görevler | Görev mesajında tenant bağlamı yoksa yanlış müşteri üzerinde işlem yapılabilir. |
| Özellik paketleri | Paket ve yetki tabanlı özellik anahtarları | Ödeme durumu ile özellik erişimi farklı yerlerde tutulursa tutarsızlık oluşabilir. |
İlk ürün için mikroservis zorunlu değildir. Küçük bir ekipte modüler monolit; geliştirme, test ve dağıtım süreçlerini daha anlaşılır tutabilir. Buradaki kritik nokta, faturalama, kimlik, bildirim, raporlama ve ana iş modüllerinin kod içinde sınırlarının belirlenmesidir. Trafik ve ekip büyüdüğünde gerçekten bağımsız ölçeklenmesi gereken modüller daha sonra ayrılabilir.
4. Veri izolasyonu ve yetkilendirmeyi ekran seviyesine bırakmayın
Bir butonu kullanıcıdan gizlemek güvenlik kontrolü değildir. Her API isteği, işlem yapılacak kaydın mevcut tenant'a ait olup olmadığını ve kullanıcının o işlem için yetkili olup olmadığını sunucu tarafında doğrulamalıdır. OWASP'ın multi-tenant güvenlik rehberi; tenant kimliğinin oturum bağlamından alınmasını, istemciden gelen tenant tanımlayıcılarına körü körüne güvenilmemesini ve kayıtların tenant farkındalığıyla izlenmesini önerir OWASP Multi-Tenant Security Cheat Sheet.
Rol modeli yalnızca “admin ve kullanıcı” şeklinde bırakılmamalıdır. Ürünün iş akışına göre rol, izin ve veri kapsamı ayrılabilir. Örneğin servis yönetimi senaryosunda şirket yöneticisi tüm talepleri görebilirken teknisyen yalnızca kendisine atanan işleri, müşteri temsilcisi ise kendi müşterilerine ait kayıtları görebilir. Aynı rol farklı tenant'larda farklı yetkilere sahip olabileceği için üyelik ve izin ilişkisi veri modelinde açık tutulmalıdır.
İlk güvenlik kontrol listesi şunları içermelidir:
- Her iş kaydında doğrulanabilir tenant sahipliği bulunması.
- API uçlarında kimlik doğrulama ile yetkilendirmenin ayrı kontroller olması.
- Parola, API anahtarı ve bağlantı bilgilerinin kaynak kodda tutulmaması.
- Dosya indirme ve dışa aktarma işlemlerinde tenant ve rol kontrolü yapılması.
- Kritik işlemler için kullanıcı, tenant, zaman ve işlem sonucunu içeren denetim kaydı tutulması.
- Silme, paket değiştirme ve yetki verme gibi işlemlerde ek doğrulama uygulanması.
5. Abonelik, paket ve özellik erişimini tek modelde birleştirin
SaaS ürününde ödeme almak ile özellik erişimini yönetmek aynı işlem değildir. Ödeme sağlayıcısı aboneliğin oluşturulması, yenilenmesi, başarısız ödeme ve iptal gibi durumları yönetebilir; uygulama ise bu durumların hangi özelliklere erişim sağlayacağını belirlemelidir. Stripe'ın abonelik dokümantasyonu da aboneliğin oluşturulmadan iptale kadar farklı durumlar arasında ilerlediğini ve yaşam döngüsünün uygulama tarafından izlenmesi gerektiğini gösterir Stripe Billing.
Ürün içinde en az üç ayrı kavram tanımlanmalıdır: paket, abonelik ve yetki. Paket satılan ticari teklifi; abonelik müşterinin güncel ödeme ve dönem durumunu; yetki ise belirli bir özelliği kullanma hakkını ifade eder. Bu ayrım yapılırsa “Pro paketindeki raporlama özelliği”, “ek kullanıcı kotası” veya “geçici deneme erişimi” kod içinde rastgele koşullarla yönetilmez.
Türkiye'de ödeme altyapısı seçilirken yalnızca teknik API yeterliliği değil; kullanılacak iş modeli, para birimi, faturalandırma süreci, tahsilat yöntemi ve sağlayıcının sunduğu abonelik özellikleri de değerlendirilmelidir. Entegrasyon kapsamı netleştiğinde ödeme, e-posta, muhasebe ve diğer servis bağlantıları için API entegrasyonu sınırları ayrıca dokümante edilmelidir.
6. Geliştirme, test ve yayın süreçlerini ürünün parçası kabul edin
SaaS ürünü bir kez teslim edilip kapatılan proje değildir. Aynı çalışan sistem düzenli olarak güncellenir ve her güncelleme mevcut müşterileri etkileyebilir. Bu nedenle geliştirme, test, staging ve production ortamları mümkün olduğunca benzer tutulmalı; yapılandırmalar ortam bazında yönetilmelidir. Twelve-Factor yaklaşımı da yapılandırmanın koddan ayrılmasını, geliştirme ve production ortamları arasındaki farkların azaltılmasını ve logların olay akışı olarak ele alınmasını önerir The Twelve-Factor App.
İlk günden kurulması gereken minimum teslim hattı şunları içerebilir:
- Kod değişikliklerinde otomatik statik kontrol ve testlerin çalışması.
- Veritabanı şema değişikliklerinin sürümlü migration dosyalarıyla yönetilmesi.
- Production öncesi staging ortamında temel kullanıcı yolculuklarının denenmesi.
- Yayın başarısız olduğunda geri dönüş veya ileri düzeltme planının bulunması.
- Ortam sırlarının erişim kontrollü bir secret yönetiminde tutulması.
- Yedekleme ve geri yükleme işlemlerinin yalnızca tanımlı değil, düzenli test edilmiş olması.
Test kapsamı yalnızca fonksiyonların doğru sonuç vermesine odaklanmamalıdır. Tenant izolasyonu, rol kontrolleri, başarısız ödeme sonrası erişim, yinelenen webhook olayları, aynı işlemin iki kez gönderilmesi ve veri dışa aktarma gibi SaaS'a özgü senaryolar da test edilmelidir.
7. Gözlemlenebilirlik ve destek akışını müşteri gelmeden kurun
“Sunucu çalışıyor” bilgisi, ürünün doğru çalıştığını göstermeyebilir. Kullanıcı giriş yapabiliyor ancak rapor oluşturamıyorsa veya bir tenant'ın arka plan işleri sürekli gecikiyorsa ürün operasyonel olarak sorunludur. Bu nedenle teknik metriklerle iş akışı metrikleri birlikte izlenmelidir.
OpenTelemetry, yazılımın iç durumunu anlamak için log, metrik ve trace gibi telemetri sinyallerinin kullanılmasını temel yaklaşım olarak tanımlar OpenTelemetry. SaaS uygulamasında bu sinyallere tenant kimliği eklemek faydalıdır; ancak kişisel veriler ve hassas içerikler loglara kontrolsüz biçimde yazılmamalıdır.
İlk izleme setinde aşağıdaki göstergeler bulunabilir:
- Hata oranı, yanıt süresi ve başarısız arka plan görevi sayısı.
- Tenant bazında olağan dışı kaynak kullanımı ve kota aşımı.
- Kayıt olan hesabın onboarding adımlarını tamamlama durumu.
- Başarısız ödeme, webhook ve e-posta teslim olayları.
- Yetkisiz erişim ve çapraz tenant erişim denemeleri.
- Kritik kullanıcı yolculuklarının sentetik kontrolleri.
Destek ekibinin de yalnızca serbest metinli e-postalara bağlı kalmaması gerekir. Hata kaydında tenant, kullanıcı, işlem zamanı, uygulama sürümü ve ilişkilendirilebilir olay kimliği bulunursa sorun daha hızlı yeniden üretilebilir. Bu yapı, ürün büyüdüğünde teknik ekip ile müşteri destek ekibi arasındaki bilgi kaybını azaltır.
8. 90 günlük örnek SaaS teknik yol haritası
Aşağıdaki plan kesin proje süresi değildir; ekip büyüklüğü, ürün kapsamı, entegrasyon sayısı ve güvenlik gereksinimlerine göre değişir. Amaç, geliştirme sırasını somutlaştıran örnek bir çerçeve sunmaktır.
| Dönem | Ana hedef | Somut çıktılar |
|---|---|---|
| 1-2. haftalar | Problem ve kapsam doğrulama | Hedef müşteri, ana kullanıcı yolculuğu, MVP dışı özellikler, başarı ölçütleri ve temel veri envanteri. |
| 3-4. haftalar | Mimari ve deneyim tasarımı | Tenant tanımı, rol modeli, veri şeması, modül sınırları, wireframe ve teknik risk listesi. |
| 5-8. haftalar | Çalışan çekirdek ürün | Kayıt, onboarding, ana iş akışı, yönetim ekranları, yetkilendirme, bildirim ve temel testler. |
| 9-10. haftalar | Abonelik ve operasyon | Paket-yetki modeli, ödeme olayları, loglama, izleme, yedekleme ve destek kayıtları. |
| 11. hafta | Kapalı pilot | Sınırlı müşteri grubuyla gerçek kullanım, veri izolasyonu testleri, hata ve kullanım geri bildirimleri. |
| 12-13. haftalar | Yayın hazırlığı | Kritik düzeltmeler, onboarding iyileştirmesi, geri dönüş planı, kullanım koşulları ve üretim kontrol listesi. |
Pilot aşamasında amaç mümkün olduğunca fazla müşteri almak değil, ürünün tekrar eden iş akışını gerçek ortamda doğrulamaktır. Bir müşterinin istediği her özelliği çekirdeğe eklemek yerine talebin başka tenant'larda da karşılığı olup olmadığı değerlendirilmelidir. Müşteriye özel gereksinimler gerekiyorsa bunlar yapılandırma, entegrasyon veya ayrı eklenti olarak ele alınabilir.
Yayına çıkmadan önce son kontrol listesi
- Tenant'ın neyi temsil ettiği ve verinin kime ait olduğu açık mı?
- Her API işleminde tenant sahipliği ve kullanıcı yetkisi doğrulanıyor mu?
- Paket, abonelik ve özellik yetkileri birbirinden ayrılmış mı?
- Başarısız ödeme, iptal ve yeniden etkinleştirme senaryoları tanımlı mı?
- Yedekler geri yükleme testiyle doğrulanıyor mu?
- Staging ve production yayın süreçleri dokümante mi?
- Log, metrik ve uyarılar tenant bağlamıyla izlenebiliyor mu?
- Pilot müşterilerden gelen talepler ürün stratejisine göre sınıflandırılıyor mu?
- Ürünün kullanım, destek ve veri saklama sorumlulukları açık mı?
Sonuç: SaaS yol haritası koddan önce kararları sıralar
Başarılı bir SaaS teknik yol haritası, yalnızca kullanılacak framework ve bulut servislerini listelemez. Problemin tekrar edebilirliğini, MVP sınırını, tenant modelini, veri izolasyonunu, abonelik durumlarını, yayın sürecini ve ürün operasyonunu aynı plan içinde birleştirir. Böylece ilk müşteri için çalışan çözüm ile yüzüncü müşteride yönetilebilir kalabilecek ürün arasında köprü kurulur.
En doğru başlangıç, tüm gelecek ihtimallerini çözmeye çalışmak değil; geri dönüşü maliyetli kararları erken vermek ve geri kalan alanları ölçülebilir biçimde geliştirmektir. Webioo, SaaS fikrinin ürün kapsamı ve teknik mimarisini yazılım geliştirme süreci içinde birlikte değerlendirebilir.
Sıkça Sorulan Sorular
SaaS ürünü geliştirmeye hangi aşamadan başlanmalıdır?
İlk adım teknoloji seçmek değil, tekrar eden müşteri problemini ve temel kullanıcı yolculuğunu doğrulamaktır. Hedef müşterinin hangi işi bugün nasıl yaptığı, nerede zaman veya veri kaybettiği ve ürünün ilk değerli sonucu ne kadar sürede üreteceği belirlenmelidir. Ardından MVP kapsamı, tenant tanımı, kullanıcı rolleri ve veri sahipliği çıkarılabilir. Framework ve bulut seçimi, bu gereksinimler görüldükten sonra yapılırsa teknoloji ürünün gerçek ihtiyacına göre seçilmiş olur.
SaaS ürünü için ilk günden multi-tenant mimari şart mı?
SaaS ürünü mutlaka tamamen paylaşımlı bir multi-tenant mimari kullanmak zorunda değildir. Müşteriye özel kaynakların ayrıldığı silo modeli, ortak kaynakların kullanıldığı pool modeli veya ikisinin birleşimi tercih edilebilir. Ancak tenant kavramı ve verinin hangi müşteriye ait olduğu ilk günden açık olmalıdır. Geçici olarak tek müşterili başlansa bile veri modeli, yetkilendirme ve kayıt yapısı gelecekteki tenant ayrımını imkânsız hâle getirmemelidir.
SaaS MVP'sinde hangi özellikler mutlaka bulunmalıdır?
Zorunlu özellikler ürünün problemine göre değişir; fakat kayıt ve onboarding, temel iş akışı, kullanıcı ve rol yönetimi, tenant izolasyonu, hata takibi ve destek kanalı çoğu B2B SaaS için temel kabul edilebilir. Ücretli yayına çıkılacaksa paket, abonelik durumu ve özellik erişimi de birlikte planlanmalıdır. Gelişmiş raporlar, çok sayıda entegrasyon ve ayrıntılı kişiselleştirme ise ana değeri doğrulamıyorsa sonraki sürümlere bırakılabilir.
SaaS geliştirmede mikroservis mi modüler monolit mi seçilmeli?
Küçük ekip ve doğrulanmamış ürün aşamasında modüler monolit çoğu zaman daha anlaşılır geliştirme ve dağıtım süreci sunar. Önemli olan faturalama, kimlik, bildirim ve ana iş modülleri arasında net sınırlar oluşturmaktır. Mikroservis; bağımsız ölçekleme, farklı ekip sahipliği veya ayrı yayın ihtiyacı gerçekten oluştuğunda değerlendirilebilir. Sadece gelecekte büyüme ihtimali var diye erken mikroservis seçmek operasyon, izleme ve hata ayıklama yükünü gereksiz artırabilir.
SaaS abonelik sistemi yalnızca ödeme entegrasyonundan mı oluşur?
Hayır. Ödeme sağlayıcısı tahsilat, fatura, yenileme ve ödeme durumlarını yönetebilir; uygulamanın ise bu durumları ürün erişimine çevirmesi gerekir. Paket, abonelik ve özellik yetkisi ayrı kavramlar olarak modellenmelidir. Örneğin ödeme geciktiğinde hangi özelliklerin ne zaman kapanacağı, deneme süresinin nasıl uzatılacağı, paket düşürmede kota aşımının nasıl ele alınacağı ve iptal sonrası verinin ne kadar saklanacağı ürün kurallarında tanımlanmalıdır.
Bir SaaS ürününün yayına hazır olduğu nasıl anlaşılır?
Ürün yalnızca ana özelliği çalıştığında değil, kritik kullanıcı yolculukları uçtan uca tamamlandığında yayına hazır kabul edilebilir. Tenant izolasyonu ve rol testleri geçmeli, ödeme ve iptal senaryoları tanımlanmalı, yedekleme ile geri yükleme denenmeli, hatalar izlenebilmeli ve yayın geri dönüş planı bulunmalıdır. Ayrıca pilot kullanıcıların onboarding sürecini yoğun geliştirici desteği olmadan tamamlayabilmesi, ürünün operasyonel olarak yayınlanabilir olduğuna dair önemli bir göstergedir.