Azure Maliyet Optimizasyonu 2026: Reservations, Savings Plans ve Spot VM Rehberi

Azure faturanızı %30-72 düşüren saha tecrübeli rehber: Reservations, Savings Plans, Spot VM, Hybrid Benefit, right-sizing ve Cost Management ile FinOps disiplini.

Azure Maliyet Optimizasyonu 2026

Güncellendi: 10 Haziran 2026

Azure maliyet optimizasyonu, doğru taahhüt modeli (Reservations veya Savings Plans), iş yüküne göre VM tipi seçimi, Spot kapasitesinden faydalanma ve Cost Management ile sürekli takip yoluyla bulut harcamasını %30 ile %72 arasında düşürme pratiğidir. Bu rehberde, üç farklı kurumda Azure faturasını yedi haneli rakamlardan tek başına milyonlu rakamlara çektiğim somut taktikleri paylaşacağım. Hangi taahhüt modelinin hangi iş yüküne uyduğunu, Hybrid Benefit ile lisans tasarrufunu, B-serisi ile burstable iş yüklerini ve hangi raporun gerçekten para kazandırdığını adım adım göreceksiniz.

  • 1 yıllık Azure Reservation tipik olarak %40-45, 3 yıllık ise %62-72 tasarruf sağlar. İş yükü stabilse 3 yıl her zaman daha iyi.
  • Compute Savings Plans, Reservations'a göre %20 daha az indirim verir ama VM tipi, bölge ve OS değişikliklerinde esneklik sunar.
  • Spot VM'ler liste fiyatına göre %60-90 ucuzdur ancak 30 saniye önceden bildirimle kesilebilir. Yalnızca durdurulabilir iş yükleri için kullanın.
  • Azure Hybrid Benefit, mevcut Software Assurance'lı Windows Server ve SQL Server lisanslarınızla VM fiyatını %40'a kadar düşürür.
  • Azure Advisor önerilerinin %80'i gerçekten para kazandırır. Haftalık olarak gözden geçirin, ancak körü körüne uygulamayın.
  • Cost Management ile FOCUS 1.0 formatlı export, çok bulutlu raporlama için 2026'da standart hâline geldi.

Azure fatura yapısını anlamak: ilk adım

Bir kurumun Azure faturasına ilk kez baktığımda yaptığım şey çok basit. Faturanın %80'ini hangi 5-6 hizmet oluşturuyor sorusunu sormak. Tecrübeme göre üç bulutta da Pareto dağılımı aynı şekilde çıkıyor; birkaç hizmet harcamanın büyük çoğunluğunu yutuyor. Azure'da bu liste genellikle şöyle: Virtual Machines, Azure SQL Database, Azure Kubernetes Service (AKS), Storage, ExpressRoute/Bandwidth ve App Service. Optimizasyona burada başlamazsanız, yan hizmetlerde mikro-tasarruflar yaparken esas faturayı kaçırırsınız.

Azure'da harcamanızı görmenin en hızlı yolu Cost Analysis'e gidip "Service name" boyutunda gruplama yapmak. Ben her zaman üç görüntü oluşturuyorum: kümülatif aylık trend, kaynak grubu bazında ilk 10 ve etiket boyutunda (cost-center veya environment etiketi). Etiket bazlı bir görünüm yoksa önce bulut etiketleme ve maliyet tahsisi rehberini uygulayın; aksi takdirde sayıların kime ait olduğunu kimse bilmez ve optimizasyon politik bir tartışmaya dönüşür.

Bir başka önemli alışkanlık: Microsoft Cost Management + Billing API'sini günlük olarak çekip Snowflake veya BigQuery'e yazmak. 2026 itibarıyla Microsoft, FOCUS 1.0 spec uyumlu export sunuyor. Bu standart, AWS CUR ve GCP BigQuery export ile aynı şema üzerinden çok bulutlu raporlama yapmanızı sağlıyor. Tek bulutlu dahi olsanız FOCUS ile başlayın; gelecek yıl AWS veya GCP geldiğinde dashboard'unuzu yeniden yazmak zorunda kalmazsınız.

Azure Reservations ve Savings Plans arasındaki fark nedir?

Bu, müşterilerimden en sık aldığım soru. Kısa cevap: Reservations daha çok indirim verir ama daha az esnektir; Savings Plans daha az indirim verir ama her şeyle uyumludur. İkisi de 1 veya 3 yıllık taahhüt ister ve faturanızı doğrudan düşürür.

ÖzellikAzure ReservationCompute Savings Plan
Tipik indirim (1 yıl)%40-45%20-25
Tipik indirim (3 yıl)%62-72%45-50
VM tipi değiştirebilir mi?Aynı seri içinde evet (instance size flexibility)Evet, tüm seriler arası
Bölge değiştirebilir mi?HayırEvet
OS değişikliğiHayır (Linux/Windows ayrı)Evet
Kapsadığı hizmetlerVM, SQL DB, Cosmos DB, Storage, App Service, AKS vb.Yalnızca compute (VM, Container Instances, App Service plan)
İptal/değişim$50.000 yıllık limit dahilindeİptal yok, sadece kalan süreyi başkasına yönlendirebilirsiniz
İdeal iş yüküSabit, öngörülebilir baselineModernizasyon süresince değişen, esneklik gerektiren

Saha tecrübemden bir formül: tabanı %70 doluluk üzerinde olan kapasiteyi Reservations'a alın, kalanı Savings Plan ile kapatın. Ben tipik olarak 12 aylık kullanım grafiğini çıkarıp 7'inci persentil (P7) hattını çiziyorum. Günün ve yılın yedi gününde her zaman çalışan bu hat, Reservation'a güvenle alınabilir. Onun üstünü Savings Plan ile kapatıyorum çünkü mimari değişimleri (örneğin AKS'e geçiş, VM serisi değiştirme) Savings Plan'ı bozmaz, Reservation'ı boşa düşürür.

AWS tarafında aynı kararı verirken kullandığım çerçeveyi merak ediyorsanız, AWS Savings Plans ve Reserved Instances karşılaştırmasını okumanızı öneririm. Azure'da mantık paralel, sadece terminoloji farklı.

Azure Spot VM nedir ve ne zaman kullanılır?

Spot VM, Azure'ın atıl kalan kapasitesini liste fiyatından %60 ile %90 arası indirimle kiraya verdiği mekanizmadır. Karşılığında Azure, kapasite ihtiyacı doğduğunda VM'inizi 30 saniye uyarıyla geri alır (eviction). 2026'da Spot fiyatlandırması "max price" modeli üzerine kuruluyor: ödemeye razı olduğunuz tavan fiyatı belirliyorsunuz ve gerçek piyasa fiyatı bunu aşarsa VM düşürülüyor.

Hangi iş yüklerini Spot'a koyarım:

  • Batch işleme ve ETL: Azure Batch veya Databricks job cluster'ları
  • CI/CD runner'ları: Self-hosted GitHub Actions runner'ları (10 dakikalık iş için tutar)
  • Render farms ve ML training (checkpointing'li): Checkpoint alıp devam edebilen iş yükleri
  • AKS dev/test node pool'ları: Stateless deployment'lar için
  • Web crawler / data ingestion fleet'leri

Kesinlikle Spot'a koymadığım iş yükleri: production databases, primary application tier, stateful workload'lar, license server'lar. AKS production node pool'unu mix yapıyorum: %30 regular, %70 Spot ve PodDisruptionBudget ile kritik pod'ları regular tarafa zorluyorum. (Bu konfigürasyon birden fazla cluster'da işe yaradı, sıfırdan başka bir formül uydurmama gerek kalmadı.)

Spot VM oluşturma örneği (Azure CLI):

# Spot VM oluştur, max price liste fiyatı olarak ayarla (-1)
az vm create \
  --resource-group rg-prod-batch \
  --name vm-spot-worker-01 \
  --image Ubuntu2204 \
  --size Standard_D8s_v5 \
  --priority Spot \
  --max-price -1 \
  --eviction-policy Deallocate \
  --admin-username azureuser \
  --generate-ssh-keys

# AKS Spot node pool ekle
az aks nodepool add \
  --resource-group rg-prod-aks \
  --cluster-name aks-prod \
  --name spotpool \
  --priority Spot \
  --eviction-policy Delete \
  --spot-max-price -1 \
  --enable-cluster-autoscaler \
  --min-count 0 \
  --max-count 50 \
  --node-vm-size Standard_D16s_v5 \
  --node-taints kubernetes.azure.com/scalesetpriority=spot:NoSchedule

Bir e-ticaret müşterimde gece batch işlemlerini Spot'a taşıdık. Aylık $38.000 olan compute faturası $9.200'e indi. Eviction rate %4 civarındaydı ve checkpoint mekanizması sayesinde toplam iş süresi yalnızca %6 uzadı. Açıkçası ben de bu kadar düşük bir eviction beklemiyordum, ama akşam saatlerinde D-serisi havuzu tipik olarak boş kalıyor.

Hybrid Benefit ile ne kadar tasarruf edilir?

Azure Hybrid Benefit (AHB), şirketinizin Software Assurance'lı Windows Server veya SQL Server lisanslarını Azure'a getirip lisans bedelini ödememenize izin verir. Tipik tasarruf Windows Server VM'lerde %40, SQL Server'da %55'e kadar ulaşır. 2026'da ek olarak Red Hat ve SUSE Linux abonelikleri de AHB kapsamında.

Çoğu kurumda Hybrid Benefit kullanılmıyor çünkü kimse on-prem lisans envanteriyle bulut faturasını birleştirmiyor. Bir banka müşterimde envanter audit'i sonrası 142 Windows Server VM'ini AHB'ye geçirdik ve aylık fatura $61.000 düştü. Herhangi bir yeniden mimari yapmadan, yalnızca bir checkbox işaretleyerek.

Mevcut VM'inizi AHB'ye dönüştürmek için (önceden lisans uygunluğunu doğrulayın):

# Tek VM için AHB aç
az vm update \
  --resource-group rg-prod \
  --name vm-app-01 \
  --license-type Windows_Server

# Tüm Windows VM'leri otomatik dönüştür
az vm list --query "[?storageProfile.osDisk.osType=='Windows'].{name:name, rg:resourceGroup}" -o tsv | \
  while read name rg; do
    az vm update -g "$rg" -n "$name" --license-type Windows_Server
  done

# SQL Server için (AHB SQL Database/Managed Instance)
az sql mi update \
  --resource-group rg-prod \
  --name sql-mi-prod \
  --license-type BasePrice

Right-sizing: kullanılmayan kapasite avı

Sektörde yaptığım her FinOps incelemesinde aynı bulgu çıkıyor: kuruluşların %40 ile %60'ı arasında VM, gerçek ihtiyacın iki kat üstünde boyutlandırılmış. Bunun nedeni basit. Geliştirici "biraz yastık olsun" diyerek D8s_v5 isterken aslında D2s_v5 yeter. Right-sizing, bu farkı bulup düzeltmektir.

Azure Advisor, sağdaki "Cost" sekmesinde her hafta size right-sizing önerileri sunuyor. Ancak körü körüne uygulamayın; ben şu kuralı kullanıyorum:

  • Son 30 günde CPU P95 < %20 ve memory P95 < %40 ise iki beden küçült (örn. D8s_v5 → D4s_v5)
  • CPU P95 < %5 ve memory P95 < %20 ise iki ila üç beden küçült ya da B-serisine (burstable) geçir
  • 14 gün hiç CPU aktivitesi yoksa kaynağı durdur ve sahibine sor. Büyük olasılıkla unutulmuş.

B-serisi (burstable) VM'ler, baseline'ın altında çalışıp ihtiyaç anında CPU credit harcayarak yükselen iş yükleri için Azure'ın en pazarlanmayan ama en kârlı seçeneklerinden biri. Geliştirme ortamları, düşük trafikli internal admin paneller ve raporlama servisleri için neredeyse her zaman %30-50 ucuza çıkarlar.

Right-sizing'i otomatikleştirmek için kullandığım Log Analytics sorgusu:

// 30 günlük CPU P95 - right-sizing aday VM'ler
Perf
| where TimeGenerated > ago(30d)
| where ObjectName == "Processor" and CounterName == "% Processor Time"
| summarize p95_cpu = percentile(CounterValue, 95),
            avg_cpu = avg(CounterValue),
            samples = count() by Computer
| where samples > 500 and p95_cpu < 20
| join kind=inner (
    Heartbeat
    | summarize arg_max(TimeGenerated, *) by Computer
    | project Computer, ResourceGroup, ComputerEnvironment, _ResourceId
  ) on Computer
| project Computer, ResourceGroup, p95_cpu, avg_cpu, _ResourceId
| order by p95_cpu asc

Azure Cost Management nasıl kurulur?

Yeni bir kuruma girdiğimde ilk 48 saatte üç şey kuruyorum: scope-level budget, kaynak grubu bazlı action group ve günlük FOCUS export. Azure Cost Management ücretsiz, kullanmamak için bahaneniz yok.

Adım adım:

  1. Subscription veya MCA scope'unda budget oluşturun: Aylık tahmini harcamanın %80, %100 ve %120'sinde alert'leri yapılandırın.
  2. Action group bağlayın: %120 alert'i mutlaka FinOps Slack/Teams kanalına ve finansa gitsin. %100 alert'i sahip ekibe, %80 sadece FinOps'a.
  3. FOCUS export'u Storage Account'a yazın: Günlük partition'lı, append-only. Synapse veya Fabric ile Power BI'a bağlayın.
  4. Tag inheritance policy aktifleştirin: Kaynak grubu etiketleri alttaki kaynaklara otomatik kopyalansın.
  5. Azure Policy ile zorunlu tag tanımlayın: cost-center, environment, owner üçlüsü olmayan kaynak deploy edilemesin.

Budget API üzerinden programatik kurulum (Bicep):

targetScope = 'subscription'

resource monthlyBudget 'Microsoft.Consumption/budgets@2023-11-01' = {
  name: 'prod-monthly-budget'
  properties: {
    timeGrain: 'Monthly'
    timePeriod: {
      startDate: '2026-06-01'
      endDate: '2027-12-01'
    }
    amount: 85000
    category: 'Cost'
    notifications: {
      'warning-80': {
        enabled: true
        operator: 'GreaterThan'
        threshold: 80
        contactEmails: ['[email protected]']
        thresholdType: 'Actual'
      }
      'critical-100': {
        enabled: true
        operator: 'GreaterThan'
        threshold: 100
        contactEmails: ['[email protected]', '[email protected]']
        thresholdType: 'Forecasted'
      }
    }
  }
}

Microsoft'un resmi referansı için Azure Cost Management dokümantasyonuna bakın. Özellikle "Allocation rules" bölümü merkezi IT maliyetlerini iş birimlerine dağıtmak için son derece kullanışlı.

Advisor önerileri ve otomasyon

Azure Advisor, FinOps'un ücretsiz danışmanıdır. Her hafta pazartesi sabah, "Cost" kategorisinde Advisor'a bakıyorum. Tipik öneriler:

  • Kullanılmayan public IP'ler (her biri ~$3.65/ay)
  • Bağlı olmayan managed disk'ler (büyük flotalarda binlerce dolar gizli)
  • İdle SQL Database'ler (DTU/vCore tüketmeyenler)
  • Eski nesil VM serileri (örn. D_v3 → D_v5, aynı fiyata %20 daha hızlı)
  • Underutilized App Service Plan'lar

Advisor'ın çıkarmadığı ama benim aradığım gizli giderler: orphan Application Gateway'ler, kullanılmayan Log Analytics workspace'leri, "test" amaçlı oluşturulup unutulan ExpressRoute circuit'leri. Bunları bulmak için Resource Graph kullanıyorum:

// Bağlı olmayan managed disk'ler
Resources
| where type =~ 'microsoft.compute/disks'
| where properties.diskState == 'Unattached'
| extend sizeGB = toint(properties.diskSizeGB), sku = sku.name
| project name, resourceGroup, subscriptionId, sizeGB, sku, location
| order by sizeGB desc

// Hiç kullanılmayan public IP'ler
Resources
| where type =~ 'microsoft.network/publicipaddresses'
| where isnull(properties.ipConfiguration)
| project name, resourceGroup, subscriptionId, location, properties.publicIPAllocationMethod

Bu sorguları Logic App veya Function ile haftalık çalıştırıp sonucu kaynak sahibine e-posta gönderiyorum. "30 gün içinde temizlenmezse silinecek" politikası kuvvetli bir motivasyon.

Depolama, network ve egress maliyetleri

Compute optimizasyonundan sonra ikinci en büyük tasarruf kaynağı genellikle depolama ve egress. Azure'da dikkat edilmesi gereken üç başlık:

Blob Storage tier'ları

Hot, Cool, Cold ve Archive arasında lifecycle management policy yazın. 30 gün okunmayan blob Cool'a, 90 gün okunmayan Cold'a, 180 gün okunmayan Archive'a gitsin. Cold tier 2024'te eklendi ve Hot'a göre %75 ucuz. AWS S3 lifecycle ve Intelligent-Tiering rehberinde anlattığım disiplinler birebir Azure'a da uygulanır.

Egress bandwidth

Azure'dan internete giden ilk 100 GB ücretsiz, sonrası bölgeye göre $0.05-0.087/GB. CDN (Azure Front Door veya Microsoft CDN) ile cache hit oranını %85+'e çıkarırsanız bandwidth ücretini dramatik olarak düşürürsünüz. Bir SaaS müşterimde aylık $24.000 olan egress faturası, Front Door + asset versioning ile $5.800'e indi.

Cross-region ve cross-AZ trafiği

Mimari hatalar burada gizlenir. Bir AKS cluster'ı eu-west'te, database eu-north'taysa her query üzerinde para ödüyorsunuz. Resource Graph ile her servisin hangi bölgede olduğunu çıkarın ve veri yakınlığını gözden geçirin. Private Endpoint kullanmak, Public IP üzerinden çıkışı engellediği için bazen %40 egress tasarrufu sağlar.

FinOps disiplini: aylık ritüel

Tüm bu taktikler tek seferlik bir spring cleaning değil; sürdürülebilir bir FinOps pratiği gerektirir. Benim kurumlarda kurduğum aylık ritüel:

  1. Ayın 1'i: Geçen ayın fatura kapanışı. Bütçeye karşı sapma raporu, kaynak grubu bazında winners/losers.
  2. Ayın 7'si: Reservation/Savings Plan utilization raporu. %95 altı varsa neden tartışılır.
  3. Ayın 14'ü: Right-sizing önerileri review. Advisor + custom KQL sorguları, sahiplere atanmış aksiyonlar.
  4. Ayın 21'i: Orphan kaynak avı (unattached disk, idle IP, kullanılmayan workspace).
  5. Ayın 28'i: Önümüzdeki ay için forecast ve action plan.

Bu ritüel olmadan tasarrufların %30-40'ı 6 ay içinde geri eriyor. Yeni iş yükleri, yeni VM'ler, unutulan PoC'ler... FinOps bir araç değil, bir disiplindir. Microsoft'un Well-Architected Framework Cost Optimization pillar'ı bu ritüeli formalize etmek için iyi bir başlangıç noktası.

Sıkça Sorulan Sorular

Azure'da maliyetler nasıl düşürülür?

Sırasıyla: (1) sabit baseline kapasiteyi 3 yıllık Reservation'a alın, (2) değişken yükü Compute Savings Plan ile kapatın, (3) durdurulabilir iş yüklerini Spot VM'lere taşıyın, (4) Windows ve SQL Server iş yüklerinde Hybrid Benefit'i etkinleştirin, (5) Advisor önerilerini haftalık uygulayın. Bu beş adım tipik olarak toplam faturanın %35-50'sini düşürür.

Azure Reservation iptal edilebilir mi?

Evet, ancak sınırlamalarla. Microsoft yıllık $50.000 değerinde Reservation iptal/değişim limiti tanır. Bu sınırı aşmak için Reservation'ı başka bir abonelik veya scope'a "exchange" edebilirsiniz. 3 yıllık taahhütlerde dikkatli olun; büyük portföylerde bu limit yetmez.

Spot VM ile Reservation aynı VM'de kullanılabilir mi?

Hayır, bir VM ya Spot ya da Reservation kapsamındadır. Ancak aynı node pool veya scale set içinde mix VM'ler kullanabilirsiniz. AKS'te genellikle "system pool" Reservation, "user pool" Spot konfigürasyonu en kârlı sonucu verir.

Compute Savings Plan AWS Savings Plan ile aynı mı?

Konsept aynı, detaylar farklı. İkisi de saatlik dolar taahhüdü karşılığında indirim verir. AWS Compute Savings Plan EC2, Fargate ve Lambda'yı kapsarken Azure Compute Savings Plan VM, App Service ve Container Instances'ı kapsar. AWS'in indirim oranları biraz daha yüksek olma eğiliminde.

Azure Hybrid Benefit kimler kullanabilir?

Aktif Software Assurance'lı veya abonelik bazlı Windows Server, SQL Server, Red Hat Enterprise Linux veya SUSE Linux Enterprise lisansına sahip kurumlar. Lisans envanterinizi denetlemeden uygulamayın; kullanım haklarınızı aştığınızda Microsoft true-up ücreti uygulayabilir.

Jordan Reeves
Yazar Hakkında Jordan Reeves

FinOps practitioner who's cut seven-figure cloud bills more than once. Believes most cost overruns are an architecture problem in disguise.