Yalova merkezli 320 çalışanlı bir kimya + lojistik holdingi, aylık Azure faturası $48.500’a ulaştığında “duralım, bunun gerçeği nedir?” sorusu ile FinOps programını başlattı. 6 ay sonunda fatura $28.200’a düştü (%42 azalma) — kapasite veya performans kaybı olmadan. Bu yazı sahadaki kararları paylaşıyor.
Mevcut Durum: $48.500 Nereye Gidiyor?
| Servis | Aylık (USD) | Pay |
|---|---|---|
| VM compute | $18.200 | %37 |
| SQL Database / MI | $8.400 | %17 |
| Storage | $4.800 | %10 |
| App Service / Functions | $3.900 | %8 |
| AKS | $3.500 | %7 |
| Network (ExpressRoute, egress) | $2.800 | %6 |
| Backup + DR | $2.100 | %4 |
| Defender + Sentinel | $1.900 | %4 |
| Diğer (Cosmos, Redis, KV, ACR, vb) | $2.900 | %6 |
| Toplam | $48.500 | %100 |
Optimizasyon Stratejisi: 8 Aksiyon
Aksiyon 1: VM Rightsizing
Advisor + Cost Management + custom KQL ile son 30 gün CPU/RAM kullanımı düşük VM’ler:
// Last 30 days CPU avg under 15%, candidate to downsize
InsightsMetrics
| where TimeGenerated > ago(30d)
| where Name == "UtilizationPercentage" and Namespace == "Processor"
| summarize AvgCPU = avg(Val), MaxCPU = max(Val) by Computer
| where AvgCPU < 15 and MaxCPU < 50
| order by AvgCPU asc
22 VM downsize edildi (D8s_v5 → D4s_v5, D4s_v5 → D2s_v5). Aylık tasarruf: ~$3.200.
Aksiyon 2: Idle / Orphan Resources Cleanup
// Unattached managed disks
Resources
| where type == "microsoft.compute/disks"
| where properties.diskState == "Unattached"
| project name, location, sku, sizeGB = properties.diskSizeGB
// Unused public IPs
Resources
| where type == "microsoft.network/publicipaddresses"
| where properties.ipConfiguration == ""
// Orphan NICs
Resources
| where type == "microsoft.network/networkinterfaces"
| where properties.virtualMachine == ""
Bulundu: 38 unattached disk (toplam 4.8 TB), 14 unused public IP, 22 orphan NIC. Cleanup sonrası ~$420/ay tasarruf.
Aksiyon 3: Reserved Instances + Savings Plans
| Resource type | Action | Aylık tasarruf |
|---|---|---|
| Production VM (32 instance, stable workload) | 3-yıl RI | ~$3.800 (~%45 indirim) |
| App Service Plan P1v3 (4 plan) | 3-yıl RI | ~$340 |
| SQL MI (3 instance, vCore) | 3-yıl RI + Hybrid Benefit | ~$2.100 |
| Mixed compute (variable) | 1-yıl Savings Plan ($1.800/ay commit) | ~$580 |
Toplam reservation tasarrufu: ~$6.820/ay.
Aksiyon 4: Azure Hybrid Benefit
Mevcut Windows Server + SQL Server lisansları (Software Assurance ile) Azure’a uygulandı:
- Windows Server: 35 VM × ~$60/ay = ~$2.100 tasarruf
- SQL Server: 3 MI × ~$1.200/ay = ~$3.600 tasarruf
- Toplam: ~$5.700/ay
Aksiyon 5: Storage Tier Optimizasyon
{
"rules": [{
"name": "ArchiveOldData",
"definition": {
"filters": { "blobTypes": ["blockBlob"] },
"actions": {
"baseBlob": {
"tierToCool": { "daysAfterModificationGreaterThan": 30 },
"tierToArchive": { "daysAfterModificationGreaterThan": 180 },
"delete": { "daysAfterModificationGreaterThan": 2555 }
}
}
}
}]
}
4.8 TB sıcak storage → cool/archive. Aylık tasarruf: ~$280.
Aksiyon 6: Dev/Test Subscription
4 dev VM + 2 SQL DB Visual Studio Pro Dev/Test subscription’a taşındı:
- VM: ~%50 indirim (no Windows license fee)
- SQL: ~%30 indirim
- Tasarruf: ~$680/ay
Aksiyon 7: Auto-shutdown Dev/Test
az vm auto-shutdown -g rg-dev -n vm-dev-erp
--time 2000 --email "devops@firma.com.tr"
# 14 dev VM gece 20:00 - sabah 08:00 kapalı
# 12 saat × 22 iş günü × $1.20/saat = ~$316/ay tasarruf VM başına
# Toplam: ~$2.400/ay
Aksiyon 8: AKS Optimizasyonu
- Cluster autoscaler agresifleştirildi (min 3 → 2 node)
- Spot node pool (non-critical workload, %60-90 indirim)
- HPA + VPA pod resource right-sizing
- Toplam tasarruf: ~$1.100/ay
FinOps Governance
Tagging Standard
Mandatory tags:
- Environment: prod | staging | dev | test
- CostCenter: CC-XXX
- Owner: name@firma.com.tr
- Project: project-key
- DataClassification: public | internal | confidential
Azure Policy: tag eksikse resource creation block
Budget + Alert
az consumption budget create -g rg-prod
--budget-name "monthly-prod-budget"
--amount 22000 --time-grain Monthly
--start-date 2026-01-01 --end-date 2027-12-31
--notifications @notif.json
# %50, %80, %100, %110 thresholds
# Email + Teams webhook alert
Aylık FinOps Review
- Cost Management dashboard review
- Top 10 cost increase drivers
- Reservation utilization (target %95+)
- Untagged resources count (target 0)
- Anomaly detection (Cost Mgmt AI)
Sonuç (6 Ay)
| Aksiyon | Aylık tasarruf |
|---|---|
| VM rightsize | $3.200 |
| Idle/orphan cleanup | $420 |
| Reservations + Savings Plan | $6.820 |
| Hybrid Benefit | $5.700 |
| Storage tiering | $280 |
| Dev/Test subscription | $680 |
| Auto-shutdown | $2.400 |
| AKS optimizasyon | $1.100 |
| Toplam aylık tasarruf | ~$20.600 (%42) |
| Yıllıklandırılmış | ~$247.000 |
Sahada Düşülen Üç Tuzak
- Reservation’ı kullanım analizi olmadan almak: Yanlış SKU/region reservation = para çöp. Önce 30-60 gün baseline + Advisor önerisi.
- Storage’ı tek seferlik temizlik olarak görmek: Lifecycle policy yoksa storage 6 ayda yeniden şişer. Otomasyon şart.
- FinOps’u IT’nin tek başına problemi sanmak: Maliyet sahibi development team’lerdir. Cost showback (her takıma kendi maliyeti gösterilir) = davranış değişir.
CloudSpark olarak Azure FinOps programları, maliyet baseline + optimization roadmap, reservation/savings plan stratejisi, tag governance ve dashboard kurulumu için danışmanlık veriyoruz.



