ETL vs ELT vs Streaming Mimarileri
ETL (Extract-Transform-Load): veriyi kaynaktan çek, iş kurallarıyla dönüştür, hedef veri ambarına yükle. Klasik kurumsal yaklaşım; dönüşüm mantığı merkezi ve belirlidir. ELT (Extract-Load-Transform): ham veriyi önce veri gölüne yükle, dönüşümleri talep bazlı uygula. Büyük ölçekli makine öğrenimi projelerinde tercih edilir; esneklik sağlar. Streaming (Akış): Kafka veya Kinesis üzerinden gerçek zamanlı veri işleme; gecikmesi 10ms-1sn düzeyinde. Online öğrenme ve gerçek zamanlı öneri sistemleri için gerekli.
ML Veri Hattının Kritik Bileşenleri
Veri alımı: SQL veritabanı, API, CSV/Parquet dosya, mesaj kuyruğu. Veri doğrulama: Great Expectations ile şema, null oranı, dağılım kontrolü. Özellik mühendisliği: normalizasyon, encoding, embedding üretimi. Özellik deposu (Feature Store): Feast, Tecton veya Hopsworks — eğitim/çıkarım tutarlılığı için kritik. Veri sürümleme: DVC ile hangi veri sürümünün hangi modeli eğittiği izlenir. İzleme: veri kalitesi metrikleri, veri drifti alarmları, boru hattı gecikme grafikleri.
Training-Serving Skew: En Büyük Üretim Riski
Eğitim sırasında uygulanan ön işleme (normalizasyon parametreleri, kategorik encoding haritaları, eksik değer stratejileri) çıkarım zamanında birebir aynı şekilde uygulanmazsa model başarısız olur. Bu 'eğitim-servis çarpışması' (training-serving skew), üretim ML sorunlarının en yaygın kaynağıdır. Çözüm: özellik hesaplamayı tek Python/Java fonksiyonuna koy ve her iki ortamda aynı kodu çalıştır. Feature store bu problemi merkezi özellik hesaplamasıyla çözer.
Orkestrasyon Araçları: Airflow, Prefect, Dagster
Apache Airflow: DAG (Yönlü Asiklik Graf) tabanlı, Python ile tanımlanır; cron tetikleyici, yeniden deneme, bağımlılık yönetimi. En yaygın kullanılan ama kurulum karmaşık. Prefect: Airflow'dan daha Pythonic; dekoratör tabanlı (@task, @flow); bulut yönetilen seçenek mevcut. Dagster: varlık odaklı (asset-based) yaklaşım; veri varlıklarını ve bağımlılıklarını birinci sınıf nesne olarak tanımlar; ML için güçlü. Küçük projeler: Makefile veya Python cronjob yeterli olabilir.
Modern Veri Hattı Araçları
Apache Airflow
Python tabanlı iş akışı orkestratörü; DAG tanımı, zamanlama, izleme ve yeniden deneme politikalarıyla endüstri standardı.
dbt (Data Build Tool)
Dönüşüm katmanını SQL ile yönetir; sürüm kontrolü, test, lineage dokümantasyonu ve modüler paketlerle analitik mühendisliği standardize eder.
Apache Kafka + Flink
Gerçek zamanlı akış hattı; Kafka mesaj kuyruğu ile Flink durum makineli akış işleme kombinasyonu yüksek verimli olay güdümlü mimariler için.
Prefect / Dagster
Modern Python-first orkestratörler; dinamik iş akışı oluşturma, gözlemlenebilirlik ve varlık odaklı veri hattı yönetimi.
Sık Sorulan Sorular
- check_circle Data pipeline ile ETL arasındaki fark nedir? ETL belirli bir veri dönüşüm mimarisidir (çıkar-dönüştür-yükle). Data pipeline daha geniş bir kavramdır: ETL, ELT veya streaming dahil veriyi kaynaktan hedefe taşıyan her türlü otomatik süreç zinciridir.
- check_circle Training-serving skew neden oluşur? Eğitimde kullanılan ön işleme adımları (örn. standart sapma ile normalizasyon) üretimde farklı parametrelerle uygulanırsa model hatalı tahmin üretir. Feature store veya ortak kütüphane kullanımı bu riski ortadan kaldırır.
- check_circle Küçük bir ML projesi için hangi orkestrasyon aracı uygun? Başlangıç için Prefect veya basit Python cronjob yeterlidir. Ekip büyüdükça Airflow veya Dagster'a geçiş yapılabilir. Kubernetes kullanıyorsanız Argo Workflows değerlendirilebilir.
- check_circle Feature store ne zaman gerekli? Birden fazla model aynı özellikleri kullanıyorsa, eğitim-servis tutarlılığı kritikse veya özellik hesaplama maliyetliyse feature store ciddi değer sağlar. Feast açık kaynak ve başlangıç için iyi seçimdir.
- check_circle Veri doğrulama neden otomatikleştirilmeli? Manuel kontrol ölçeklenmez; üretimde günlük milyonlarca satır veri gelir. Great Expectations veya Pandera ile otomatik şema ve istatistik kontrolü, kötü verinin modele ulaşmadan tespit edilmesini sağlar.
- check_circle Batch pipeline ile streaming pipeline farkı nedir? Batch: belirli aralıklarla büyük veri yığınları işlenir (dakika-saat gecikmesi); basit ve maliyeti düşük. Streaming: veri gelir gelmez işlenir (milisaniye-saniye gecikme); Kafka/Flink gerektirir; karmaşık ama gerçek zamanlı kararlar için zorunlu.