“Azure SQL kullanacağız” dediğinde aslında 4-5 farklı service arasında karar veriyorsun. Yanlış tier seçimi aylık fatura 2-3 kat fazla geleceği veya performans yetersiz kalacağı anlamına geliyor. Bu yazı son 18 ayda 3 farklı SaaS müşterimizde verdiğimiz Azure SQL kararlarını karşılaştırma yaparak anlatıyor.
Üç Ana Deployment Modeli
| Model | Ne için | Tipik aylık başlangıç |
|---|---|---|
| Single Database | Tek uygulama, tek DB | $15-200 |
| Elastic Pool | Multi-tenant SaaS, çok DB | $300-1500 |
| Managed Instance | SQL Server’dan lift-and-shift | $680-4000 |
| SQL Server on Azure VM | Tam kontrol, custom config | VM + lisans |
Müşteri 1: SaaS Startup → Single Database
Ankara merkezli ilk müşterimiz 8 aylık startup, tek uygulama, ~~3.000 kullanıcı, ~~10 GB veri. Karar: Single Database, General Purpose tier, 2 vCore, ~~$370/ay.
DTU vs vCore karar: vCore tercih edildi çünkü görünürlük daha iyi, Azure Hybrid Benefit (mevcut SQL Server lisansı ile) var.
az sql db create
--resource-group rg-prod
--server sql-startup-prod
--name app-db
--service-objective GP_Gen5_2
--backup-storage-redundancy Geo
--max-size 100GB
--license-type LicenseIncluded
1 yıl sonra büyüyünce Hyperscale tier’a geçildi (40+ GB veri, daha yüksek IOPS ihtiyacı).
Müşteri 2: B2B SaaS → Elastic Pool
İstanbul’daki B2B SaaS, 80 müşterisi var, her müşteriye dedicated database (data isolation gereksinimi). 80 ayrı Single Database satın almak çok pahalı + her birinin uyguladığı vCPU ortalama %12. Elastic Pool ideal:
- Tüm 80 DB tek bir resource pool’u paylaşıyor.
- Bir DB peak attığında pool’dan resource alıyor, başka bir DB idle iken ona bırakıyor.
- Her DB için min/max DTU/vCore ayarlanabiliyor.
az sql elastic-pool create
--resource-group rg-prod
--server sql-saas-prod
--name tenants-pool
--edition GeneralPurpose
--family Gen5
--capacity 16
--db-min-capacity 0.25
--db-max-capacity 4
--max-size 1TB
Aylık fiyat: 16 vCore × $370 (LicenseIncluded) = ~~$5.900. 80 DB × ayrı 1-vCore Single DB = $14.800. Tasarruf ~$8.900/ay.
Müşteri 3: Legacy ERP → Managed Instance
İzmir’de bir üretici, on-prem’de SQL Server 2016 üzerinde çalışan ERP’sini Azure’a taşıyacaktı. Çok stored procedure, SQL Agent job, linked server, cross-database query var. Single Database / Elastic Pool bu özellikleri tam desteklemiyor. Managed Instance şart.
Managed Instance, SQL Server’la %100 uyumlu (Always On AG, SQL Agent, Service Broker, CLR, cross-DB query, cross-instance query). Lift-and-shift için ideal.
az sql mi create
--resource-group rg-prod
--name sql-mi-prod
--location turkeywest
--vnet-name vnet-prod
--subnet snet-mi
--license-type LicenseIncluded
--edition GeneralPurpose
--family Gen5
--capacity 8
--storage 256GB
Aylık ~$1.200. Lisansı Hybrid Benefit ile alınca $700. On-prem’de DBA + lisans + donanım maliyeti $2.800/ay’dan az. Tasarruf %75.
Performance Tier’ları
| Tier | vCore | IOPS | Tipik kullanım |
|---|---|---|---|
| General Purpose | 2-80 | ~~500/vCore | OLTP standart |
| Business Critical | 2-128 | ~~5000/vCore | OLTP yüksek throughput, low latency |
| Hyperscale | 2-128 | Otomatik | 100 GB+ veri, hızlı backup/restore |
Hyperscale’in özel avantajı: 100 TB DB için backup <5 dakika (snapshot benzeri), restore aynı şekilde. Geleneksel SQL’de 10 TB DB restore 2-3 saat sürerdi.
Backup ve PITR
Azure SQL otomatik backup yapıyor, default 7 gün retention. Long-term retention (LTR) 10 yıla kadar. PITR (point-in-time restore) saniye precision’da herhangi bir zamana restore.
# PITR: 2 saat önceki haline restore
az sql db restore
--resource-group rg-prod
--server sql-prod
--name app-db-restored
--source-database app-db
--time "2026-04-24T10:00:00Z"
Restored DB ayrı bir DB olarak gelir. Üzerinde test yapıp original’i replace edebilirsin.
Auto-Tuning ve Index Recommendations
Azure SQL, query plan’ları izleyerek otomatik index önerisi yapıyor (CREATE_INDEX, DROP_INDEX, FORCE_LAST_GOOD_PLAN). Auto-tuning enabled iken Microsoft otomatik uyguluyor.
az sql db update -g rg-prod -s sql-prod -n app-db
--auto-pause-delay -1
--read-scale Enabled
# Auto-tuning ayarları
az sql db tde set -g rg-prod -s sql-prod -d app-db --status Enabled
Sahada Düşülen Üç Tuzak
- vCore’u performansla orantılamamak: 2 vCore’da çalıştırılan ağır iş yükü timeout/throttle. Query Performance Insight ile tier’ı doğrula.
- Geo-replication maliyeti unutmak: Active geo-replication secondary replica primary kadar maliyetli. DR için kullanılıyorsa bütçeyi 2x.
- Auto-pause production’da: Serverless tier auto-pause düşük trafikte ucuz ama ilk request 30-60 sn yavaş olur. Production user-facing app’te kapalı tut.
CloudSpark olarak Azure SQL deployment tier seçimi, on-prem SQL Server migration, Managed Instance kurulumu ve performans tuning konularında danışmanlık veriyoruz.



