Fabric Maliyeti: Forumlarda Patlayan Konu

Microsoft Fabric'e geçen organizasyonların forumda en çok paylaştığı sorun: _"Fabric faturamız beklediğimizden 3 kat fazla geldi!"_ Bu sorun genellikle kapasite yönetimini ve CU (Capacity Unit) tüketimini anlamamaktan kaynaklanır.

Bu rehberde Fabric'in maliyet yapısını açıklıyor, CU tüketimini kontrol altına almak için kanıtlanmış stratejiler paylaşıyoruz.

CU (Capacity Unit) Nedir?

Fabric'te her şey CU ile ölçülür. CU, Fabric kapasitesinin işlem gücü birimidir. Hangi iş yükünü çalıştırırsanız çalıştırın — Notebook, Pipeline, Warehouse sorgusu, Power BI raporu — hepsi CU tüketir.

Kapasite Boyutları ve Fiyatlandırma

| SKU | CU | Yaklaşık Aylık Fiyat (USD) | Uygun Kullanım |

|---|---|---|---|

| F2 | 2 | ~$260 | Geliştirme, test |

| F4 | 4 | ~$520 | Küçük ekipler |

| F8 | 8 | ~$1040 | Orta ölçek |

| F16 | 16 | ~$2080 | Büyük ekipler |

| F32 | 32 | ~$4160 | Kurumsal |

| F64 | 64 | ~$8320 | Enterprise |

💡İpucu: Azure portal üzerinden reserved capacity alarak %40'a kadar indirim sağlayabilirsiniz (1 yıllık veya 3 yıllık).

CU Tüketimi: Kim Ne Kadar Harcıyor?

Her iş yükünün CU tüketim profili farklıdır:

| İş Yükü | CU Tüketimi | Açıklama |

|---|---|---|

| Power BI Rapor | Düşük | Kullanıcı sorgu anında |

| DirectLake | Çok Düşük | Sadece Delta okuma |

| Notebook (Spark) | Yüksek | Çalıştığı süre boyunca |

| Warehouse Sorgusu | Orta-Yüksek | Sorgu karmaşıklığına bağlı |

| Data Factory Pipeline | Orta | Veri hacmine bağlı |

| Dataflow Gen2 | Orta | Dönüşüm karmaşıklığına bağlı |

Throttling: En Büyük Sorun

CU tüketiminiz kapasitenizi aştığında throttling devreye girer. Fabric, iş yüklerinizi yavaşlatır veya kuyruğa alır.

Smoothing ve Bursting

Fabric, kısa süreli CU aşımlarını tolere eder (bursting). Tüketim 10 dakikalık pencereler üzerinden ortalaması alınarak hesaplanır (smoothing). Yani 2 dakika yoğun çalışıp 8 dakika boş kalırsanız throttling olmaz.

⚠️Forum Hatası: "Notebook'um aniden çok yavaşladı" — Muhtemelen başka bir ekip üyesi büyük bir Pipeline çalıştırdı ve kapasite throttling'e girdi. Capacity Metrics App ile kontrol edin.

Maliyet Optimizasyon Stratejileri

1. Doğru SKU Seçimi

Çoğu proje F4 ile başlayıp ihtiyaca göre büyütebilir. Geliştirme ortamı için F2 yeterli.

2. İş Saatleri Dışında Kapasiteyi Duraklatın

Azure portal veya REST API ile kapasiteyi programatik olarak başlatıp durdurabilirsiniz:

Python
class="code-comment"># Azure REST API ile kapasite yönetimi
import requests

class="code-comment"># Kapasiteyi duraklat (mesai sonrası)
def suspend_capacity(subscription_id, resource_group, capacity_name, token):
    url = fclass="code-string">"https:class="code-comment">//management.azure.com/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.Fabric/capacities/{capacity_name}/suspend?api-version=class="code-number">2023-class="code-number">11-class="code-number">01"
    headers = {class="code-string">"Authorization": fclass="code-string">"Bearer {token}"}
    response = requests.post(url, headers=headers)
    return response.status_code

class="code-comment"># Kapasiteyi başlat (mesai başı)
def resume_capacity(subscription_id, resource_group, capacity_name, token):
    url = fclass="code-string">"https:class="code-comment">//management.azure.com/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.Fabric/capacities/{capacity_name}/resume?api-version=class="code-number">2023-class="code-number">11-class="code-number">01"
    headers = {class="code-string">"Authorization": fclass="code-string">"Bearer {token}"}
    response = requests.post(url, headers=headers)
    return response.status_code
💡Kapasiteyi hafta sonları ve mesai saatleri dışında duraklatmak, aylık maliyeti %50-60 azaltabilir.

3. Spark Notebook Optimizasyonu

Notebook'lar en büyük CU tüketicisi. Optimizasyon fırsatları:

Python
class="code-comment"># ❌ KÖTÜ: Tüm veriyi okuyup filtrele
df = spark.read.format(class="code-string">"delta").load(class="code-string">"Tables/buyuk_tablo")
df_filtered = df.filter(class="code-string">"Yil = class="code-number">2024")

class="code-comment"># ✅ İYİ: Partition pruning ile sadece gerekeni oku
df = spark.read.format(class="code-string">"delta").load(class="code-string">"Tables/buyuk_tablo").filter(class="code-string">"Yil = class="code-number">2024")

class="code-comment"># ✅ İYİ: Sadece gerekli kolonları seç
df = spark.read.format(class="code-string">"delta").load(class="code-string">"Tables/buyuk_tablo") \
    .select(class="code-string">"SiparisID", class="code-string">"Tutar", class="code-string">"Yil") \
    .filter(class="code-string">"Yil = class="code-number">2024")

4. Warehouse Sorgu Optimizasyonu

SQL
-- ❌ KÖTÜ: SELECT * ile tüm kolonları çek
SELECT * FROM FactSatis WHERE Yil = 2024;

-- ✅ İYİ: Sadece gerekli kolonlar
SELECT SiparisID, Tutar, MusteriKey 
FROM FactSatis 
WHERE Yil = 2024;

-- ✅ İYİ: Result set cache kullan
SET result_set_caching ON;
SELECT ... -- Aynı sorgu cache'den döner

5. Pipeline Zamanlama

Yoğun pipeline'ları düşük kullanım saatlerine kaydırın:

| Saat | Aktivite | CU Yükü |

|---|---|---|

| 02:00-06:00 | ETL Pipeline | Yüksek (ama throttling riski düşük) |

| 09:00-18:00 | Power BI Raporlama | Düşük-Orta |

| 18:00-02:00 | Kapasite Duraklatılabilir | 0 |

Capacity Metrics App

Microsoft'un ücretsiz Capacity Metrics App'ini kurun. Bu uygulama CU tüketiminizi detaylı görselleştirmeyle gösterir:

  • Hangi iş yükü ne kadar tüketiyor?
  • Throttling ne zaman gerçekleşti?
  • Hangi kullanıcı/işlem en çok CU harcıyor?
Fabric Capacity Metrics Dashboard
Toplam Satış₺2.4M▲ %12Müşteri Sayısı1,842▲ %8Ortalama Sipariş₺1,305▼ %3Dönüşüm%4.2▲ %1.5

Sonuç

Fabric maliyet yönetimi, kapasite boyutlandırma ve CU tüketim optimizasyonu gerektirir. Mesai dışı kapasiteyi duraklatmak, Notebook'ları optimize etmek, Pipeline'ları düşük yük saatlerine planlamak ve Capacity Metrics App ile izlemek — bu dört strateji aylık maliyetinizi %50'ye kadar düşürebilir. Fabric projelerinizin maliyet-performans dengesini birlikte optimize edelim.