İki yıl önce büyük bir perakende müşterisinde her sabah 09:00’da datawarehouse refresh işi 6 saat sürüyor, finans ekibi öğleden sonra 15:00’e kadar gün kapanış raporunu bekliyordu. Klasik SSIS + on-prem SQL Server. “Spark’a geçelim” dedik ama açıkça konuşalım: ilk POC bir felaketti. Cluster sürekli açık kalıyor, kimse “job cluster” ne diye bilmiyor, notebook’lar production’a kopyalanıyor, ay sonunda Azure faturası iki katına çıktı. İkinci denememizde Databricks’i “araç” olarak değil “platform disiplini” olarak ele aldık. Bugün aynı iş 22 dakikada bitiyor, aylık compute maliyeti POC’tan %60 daha düşük. Bu yazı o iki yılın notlarını içeriyor.
Databricks tam olarak nedir?
Apache Spark üzerine inşa edilmiş, üzerine Delta Lake, MLflow, Unity Catalog ve serverless SQL eklenmiş tam yönetimli analitik platformu. Microsoft ile ortak ürün olarak Azure’da first-party hizmet — yani Azure portal entegrasyonu, AAD SSO, VNet injection, billing tek faturada. HDInsight veya kendi Spark cluster’ından farkı: çalışmıyorsanız ödeme yok (job cluster), notebook’larda gerçek zamanlı işbirliği var, model registry hazır, photon runtime ile vanilla Spark’tan 2-3x hızlı.
Cluster türleri — para burada kazanılır veya kaybedilir
All-Purpose Cluster
İnteraktif notebook geliştirme için. Birden fazla kullanıcı aynı cluster’a bağlanabilir, kalıcı (auto-termination süresi geldiğinde durur). Sahada en pahalı hata: autoTerminationMinutes: 120 default değerini olduğu gibi bırakmak. Her ekipte 4-5 kişi öğleden sonra notebook kapatıp evine gidiyor, cluster gece yarısına kadar boşta yanıyor.
Standardım: autoTerminationMinutes: 30, hatta dev için 15. Yıllık tasarruf bir orta ölçekli müşteride $18.000.
Job Cluster
Her workflow çalışmasında otomatik oluşur, iş bitince silinir. Pricing tier de daha ucuz (Job Compute SKU All-Purpose’dan ~%50 daha az DBU/saat). Tüm scheduled ETL ve ML training işleri job cluster’da olmalı. Tek istisna: notebook’la canlı debug yapan bir veri bilimcinin geçici cluster’ı.
Serverless SQL Warehouse
BI sorguları için. Sıcak cache’lenmiş, saniyeler içinde başlar, sorgu yoksa durur. Power BI bağlantısı için classic warehouse’a göre çok daha ekonomik. Bir müşterimde Power BI raporları için açtığımız classic warehouse aylık $2.800, serverless’a geçince $700.
Delta Lake — neden sahada vazgeçilmez
Geleneksel Parquet üzerinde data lake’in üç kronik derdi vardır: ACID yok, schema enforcement yok, time travel yok. ETL ortasında cluster düşerse yarım dosyalarla kalırsın, aynı tabloya iki ayrı job yazınca tutarsızlık olur, dünkü duruma dönmek için backup’tan restore yapman gerekir.
Delta Lake tüm bunları transaction log ile çözüyor:
from delta.tables import DeltaTable
# Upsert (MERGE) — günlük CDC pattern
delta_tbl = DeltaTable.forName(spark, "silver.customers")
(delta_tbl.alias("target")
.merge(
source=df_changes.alias("source"),
condition="target.customer_id = source.customer_id"
)
.whenMatchedUpdate(
condition="source.updated_at > target.updated_at",
set={"name": "source.name", "email": "source.email",
"updated_at": "source.updated_at"}
)
.whenNotMatchedInsertAll()
.execute())
Bu MERGE atomik. Yarısında düşerse hiç olmamış sayılır. Aynı tabloya başka bir job yazsa Delta optimistic concurrency ile çakışmayı yakalar.
Time travel ile dünkü hataya kolay dönüş:
-- Yanlış update yapıldı, dünkü versiyona dön
RESTORE TABLE silver.orders TO VERSION AS OF 142;
-- Veya zamanla
SELECT * FROM silver.orders TIMESTAMP AS OF '2026-04-15 09:00:00';
Bir müşterimde finans ekibi yanlış bir update sonrası bütün mart kapanışını bozdu. RESTORE komutu ile 4 saniyede geri döndük; SQL Server backup’tan restore yapsaydık 6 saatlik downtime olurdu.
Medallion Architecture — Bronze, Silver, Gold
Üç katmanlı veri organizasyonu sahada hayatımızı çok kolaylaştırıyor:
- Bronze: Ham veri, kaynaktan ne geldiyse o. Append-only, dokunulmaz.
- Silver: Temizlenmiş, dedupe edilmiş, schema enforced. Birleştirilmiş referans veri burada.
- Gold: İş kuralları uygulanmış, agregasyonlar, BI ve ML feature’ları için hazır.
Bronze → Silver dönüşümünü Delta Live Tables (DLT) ile deklaratif yazıyoruz:
import dlt
from pyspark.sql.functions import col
@dlt.table(name="silver_orders")
@dlt.expect_or_drop("valid_amount", "amount > 0")
@dlt.expect_or_fail("customer_not_null", "customer_id IS NOT NULL")
def silver_orders():
return (dlt.read_stream("bronze_orders")
.filter(col("status") != "test")
.dropDuplicates(["order_id"]))
expect_or_drop kalitesiz satırları sessizce düşürür, expect_or_fail pipeline’ı durdurur. Veri kalitesi sorunlarını downstream’e taşımıyoruz.
MLflow — model lifecycle disiplini
Veri bilimi ekibinin en sevdiği derdim: “Geçen ay deploy ettiğimiz model şimdi nerede, hangi parametrelerle eğitildi?” Cevap genelde “Ali’nin laptopunda bir notebook’taydı.” MLflow bu yarayı kapatır.
import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier
mlflow.set_experiment("/Shared/churn-prediction")
with mlflow.start_run(run_name="rf-baseline-v3"):
mlflow.log_param("n_estimators", 200)
mlflow.log_param("max_depth", 12)
model = RandomForestClassifier(n_estimators=200, max_depth=12)
model.fit(X_train, y_train)
auc = roc_auc_score(y_test, model.predict_proba(X_test)[:, 1])
mlflow.log_metric("auc", auc)
mlflow.sklearn.log_model(
sk_model=model,
artifact_path="model",
registered_model_name="churn_classifier"
)
Sonra model registry’de Staging → Production transition’ı UI veya API ile. Production endpoint olarak yayınlamak tek tıklık. Bir müşterimde 14 farklı modelin eğitim tarihçesini, performans metriklerini ve hangi feature setiyle çalıştığını MLflow ile yönetebildik — eskiden bu bilgi kaybolurdu.
Unity Catalog — kurumsal veri yönetişimi
Eski Hive metastore tek workspace ile sınırlıydı, audit zayıftı, lineage yoktu. Unity Catalog üç seviyeli (catalog → schema → table) yapı ile workspace üstü yönetim getiriyor:
- Tek satır SQL ile fine-grained yetki:
GRANT SELECT ON TABLE prod.silver.customers TO `data_analysts`; - Lineage: Hangi gold tablosu hangi silver’dan, hangi bronze’dan beslendiği görsel akış. Bir Power BI raporu kırıldığında upstream sebebi 30 saniyede bulunuyor.
- Row/column-level security: KVKK uyumu için PII kolonlara mask uygulamak SQL ile.
- External locations: ADLS Gen2 storage’a erişim merkezi olarak Unity üstünden, her notebook’ta service principal kopyalamaya son.
Maliyet — DBU disiplini
Databricks faturası iki kalem: DBU (Databricks tüketim birimi) + alttaki Azure VM. Dört kuralım:
- Job Cluster zorunlu. Tüm scheduled işler için. All-Purpose’a iş atamayan bir politika ile başlar tüm müşteri projelerime.
- Photon runtime. Vectorized engine, vanilla Spark’tan 2-3x hızlı, DBU saatlik biraz daha pahalı ama toplam çalışma süresi düştüğü için fatura azalır.
- Spot instance worker’lar. Driver on-demand, worker’lar spot. Spot fiyatı %60-80 ucuz; çekildiğinde Spark task retry yapıyor, kabul edilebilir.
- Auto-termination 30 dakika. Tartışmasız.
Bu dört kuralla bir orta ölçek müşteride aylık $14.000’lık Databricks faturasını $5.800’a düşürdük. İş yükü değişmedi, sadece disiplin.
Workflows — orkestasyon katmanı
Eski projelerde Azure Data Factory ile Databricks notebook tetikleniyordu. Şimdi mümkün olduğunca Databricks Workflows kullanıyoruz: aynı platformda task bağımlılıkları, retry, alert, lineage. ADF’yi sadece Databricks dışı kaynaklar için (on-prem SQL, SAP, Salesforce kopyaları) tutuyoruz.
Sıkça Sorulan Sorular
Synapse mi, Databricks mi?
Sade SQL DW iş yükü ve Power BI ağırlıklı kullanım için Synapse Dedicated SQL Pool yeterli olabiliyor. Spark, ML, gerçek time-series, geniş veri mühendisliği için Databricks daha olgun. Çoğu müşterimde her ikisi birlikte yaşıyor — Databricks veriyi Gold’a getiriyor, Synapse veya Fabric o gold üzerinden serve ediyor.
Notebook’ta production kodu yazılır mı?
POC ve keşif evet, production hayır. Production kodu modüler Python paketleri olarak repo’da, notebook sadece entry-point veya orchestrator olarak kalmalı. Bu disiplin testlenebilirlik ve code review için kritik.
Delta Lake’i Databricks dışında kullanabilir miyim?
Evet, Delta Lake açık kaynak. Ama Photon, Liquid Clustering, deletion vectors gibi performans özellikleri Databricks’e özel. Sahada vanilla Spark + Delta’dan Databricks’e geçenler tipik 2-3x performans iyileşmesi raporluyor.
Sonuç
Databricks bir araç değil bir disiplin meselesi. Job Cluster + Photon + Spot + 30 dakika auto-termination + Unity Catalog + Delta Lake medallion mimarisi — bu altı pratik birlikte uygulandığında platformun gerçek değeri ortaya çıkıyor. Saha deneyimim: doğru kurulan Databricks projesi geleneksel ETL süresini 3-10 katı, maliyetini ise %30-60 oranında düşürüyor. Yanlış kurulan ise faturayı patlatır ve veri ekibinin moralini bozar.
CloudSpark veri ve yapay zeka platformu danışmanlığı ile Databricks ortamınızın tasarımını, Unity Catalog göçünü ve maliyet optimizasyonunu sürdürülebilir biçimde kuruyoruz.



