Networking cables plugged into a patch panel, showcasing data center connectivity.
Azure

“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

  1. 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.
  2. Geo-replication maliyeti unutmak: Active geo-replication secondary replica primary kadar maliyetli. DR için kullanılıyorsa bütçeyi 2x.
  3. 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.

🇹🇷 Türkçe🇬🇧 English🇩🇪 Deutsch🇫🇷 Français🇸🇦 العربية🇷🇺 Русский🇪🇸 Español