Kilis merkezli sınır ticareti + esnaf finansman fintech şirketi, 14 microservice’inin SQL DB’sini Azure SQL Database üzerinde 6 ayda yeniden tasarladı. SKU seçimi, replikasyon, monitoring ve sahadaki notlar aşağıda.
Azure SQL Database Servis Tier’ları
| Tier |
Use case |
Storage |
Compute |
| Basic |
Dev, light workload |
Max 2 GB |
Düşük |
| Standard (S0-S12) |
Stable workload |
Max 1 TB |
DTU bazlı |
| Premium (P1-P15) |
Mission-critical OLTP |
Max 4 TB |
DTU yüksek + IO |
| General Purpose (vCore) |
Standart OLTP |
Max 4 TB |
vCore |
| Business Critical (vCore) |
HA + low latency |
Max 4 TB local SSD |
vCore + read replica dahil |
| Hyperscale |
Çok büyük (100 TB) |
100 TB |
Storage compute ayrı, hızlı backup/restore |
| Serverless |
Intermittent workload |
— |
Auto-pause + auto-scale |
Sahadaki Workload Profil
| Microservice |
DB tipi |
Boyut |
Tier seçimi |
| identity-svc |
OLTP, küçük |
~~12 GB |
GP S2 (vCore 2) |
| account-svc |
OLTP, orta |
~~80 GB |
GP S4 |
| transaction-svc |
OLTP, yoğun |
~~~~280 GB |
BC vCore 8 (HA + read replica) |
| ledger-svc |
Analytical + büyük |
~~12 TB (büyüyor) |
Hyperscale 8 vCore |
| kyc-svc |
OLTP, az erişim |
~~28 GB |
Serverless GP (auto-pause) |
| notification-svc |
Yazma yoğun |
~~18 GB |
Elastic Pool (5 servis paylaşır) |
| … 8 küçük servis |
OLTP küçük |
~~5-15 GB her biri |
Elastic Pool |
Elastic Pool (8 Küçük DB Birleştir)
Pool: small-services-pool
Tier: General Purpose, 8 vCore (paylaşımlı)
DTU/vCore range/DB:
- Min: 0
- Max: 4 vCore (her DB)
Avantaj:
- 8 DB her biri ayrı GP S2 alsa: 8 × $200 = $1.600
- Pool 8 vCore: ~$700
- Tasarruf: ~%~~56
Çalışma prensibi:
- DB'ler farklı zamanlarda yoğun (örn günü sabah account, gece raporlama)
- Aynı pool'da kaynak paylaşımı
- Her DB max'a kadar burst edebilir
Hyperscale (Ledger Servisi)
Avantajları:
- Storage compute'tan ayrı (10 TB+ storage hızlı)
- Backup/Restore hızlı (rapid restore)
- Read replica'lar (4'e kadar)
- Aynı sürede DB büyür, performans düşmez
Sınırlama:
- Cross-DB query yok
- Bazı premium feature'lar (TDE BYOK) farklı
- Long-term retention farklı
Bu vakada:
- 12 TB ledger data
- Aylık ~~600 GB büyüme
- Read replica analytics raporları için
Active Geo-Replication (DR)
Primary: Northeurope (TR'ye yakın)
Secondary: Westeurope (failover hedef)
Replication:
- Async (RPO ~~~~5 sn)
- Read-only access secondary'de
- Manual failover (planned) veya
- Auto-failover group (failover policy)
Failover test (quarterly):
- Planned failover: 1 dk
- Application connection string update: 0 (failover group endpoint kullanılır)
- Smoke test: 10 dk
- Total downtime: ~~12 dk
Query Store + Performance
-- Top expensive query
SELECT TOP 10
q.query_id,
qt.query_sql_text,
rs.avg_duration / 1000 AS avg_duration_ms,
rs.count_executions
FROM sys.query_store_query q
JOIN sys.query_store_query_text qt ON q.query_text_id = qt.query_text_id
JOIN sys.query_store_plan p ON q.query_id = p.query_id
JOIN sys.query_store_runtime_stats rs ON p.plan_id = rs.plan_id
WHERE rs.last_execution_time > DATEADD(hour, -24, SYSUTCDATETIME())
ORDER BY rs.avg_duration DESC;
-- Plan regression detect
-- Sentinel/Azure Monitor alert: avg_duration 24h öncesinden %~~50+ arttıysa
Index Tuning (Auto)
Azure SQL otomatik index önerileri sunar:
DROP_INDEX recommendations: 14 (kullanılmayan indeks)
CREATE_INDEX recommendations: 8 (eksik indeks)
Auto-tuning ON:
- Auto-create index: Enabled
- Auto-drop unused index: Enabled
- Force last good plan: Enabled (regression rollback)
3 ay sonra etki:
- Avg query duration: %~~38 düşüş
- DTU/vCore kullanımı: %~~22 düşüş
Backup + Retention
| Tip |
Retention |
| Point-in-time |
7-35 gün (tier’a göre) |
| Long-term retention (LTR) |
Weekly 12w, monthly 12m, yearly 10y (compliance) |
| Geo-redundant backup |
Otomatik |
Maliyet Optimizasyonu
| Optimizasyon |
Tasarruf |
| Reserved Capacity (3 yıl, predictable workload) |
%~~33 |
| Hybrid Benefit (mevcut SQL Server lisans) |
%~~25 (BC tier) |
| Elastic Pool (küçük DB’leri grupla) |
%~~50+ |
| Serverless (intermittent workload, auto-pause) |
%~~60+ (kullanılmayan saatler) |
| Right-size (Query Store + DMV ile) |
%~~15-25 |
5 Neden — Sahada Test Edilmiş
- HA built-in: Business Critical 99.99% SLA, manuel patch yok, otomatik failover
- Auto-tuning: Index + plan regression manuel DBA müdahalesi azaltır
- Geo-replication kolaylığı: 5 dakikada cross-region replica
- Hyperscale ile büyüme: 100 TB’a kadar performans düşmez
- Pay-as-you-go + Reserved: Stable workload Reserved, burst pay-as-you-go
Sahada Düşülen Üç Tuzak
- Tüm DB’leri Premium tier’a koymak: Workload analiz edilmeden over-provision = ay sonu fatura şoku. Önce DTU/vCore baseline + scale.
- Auto-tuning’i kapatmak: “Microsoft index’imi yönetemez” yaklaşımı eski. Auto-tuning ON + monitor + nadiren override.
- Geo-replication’ı failover test etmemek: Replicate var ama failover prosedürü test edilmemiş = DR günü kaos. Quarterly drill şart.
CloudSpark olarak Azure SQL Database mimarisi, tier seçimi, Elastic Pool tasarımı, Hyperscale göçü, Active Geo-Replication ve performance tuning için danışmanlık veriyoruz.