Streaming vs batch: musluk vs kova
Streaming vs batch
Bu derste neler öğreneceksin
- Latency throughput kavramlarını açıklar
- Gerçek zamanlı ne zaman gerekli açıklar
- Stream + batch hibrit mimari tasarlar
Musluk mu, Kova mı?
Elif’in limonatasında iki çeşit su ihtiyacı var. Bazen kova ile su taşırsın: gidip kuyuya bir kova indirirsin, yukarı çıkarırsın, bahçeye dökersin. Bazen de musluk açarsın: su her an akar, bardak dolduğu anda içersin.
Veri mühendisliğinde de iki yol var:
- Batch (kova): Veriyi biriktirirsin, belirli bir zamanda (gece yarısı gibi) toplu olarak işlersin. Patronun sabah raporu = kova yöntemi.
- Streaming (musluk): Veri her an gelir, sen de her an işlersin. Müşteri sipariş verdiği anda ekrana düşmesi = musluk yöntemi.
Hangisi daha iyi? Hiçbiri! Duruma göre değişir. Bugünkü ders: hangisini ne zaman kullanacağını öğrenmek.
Latency: “Ne Kadar Geç?”
Latency, bir olayın gerçekleşmesiyle sistemin ona cevap vermesi arasındaki süredir. Düşük latency = hızlı cevap.
- Batch rapor: latency 12 saat (gece yarısı topla, sabah 8’de rapor).
- Streaming musluk: latency 200 milisaniye (sipariş geldi, anında ekrana düştü).
Gecikme olayını şöyle düşün: Elif müşteriye “siparişinizi aldık” mesajı gönderecek. Mesaj batch ile gelirse müşteri 5 saat sonra görür — belki çoktan susamışlığı geçmiştir. Streaming ile gelirse müşteri bardak elindeyken okur.
Throughput: “Bir Anda Ne Kadar?”
Throughput, birim zamanda işlenen veri miktarıdır. Yüksek throughput = çok veri.
- Batch: bir gecede 10 milyon satır işleyebilir (gece boyunca boş makine).
- Streaming: saniyede 1000 satır işler (sürekli aynı hız).
Musluğun saniyede 1 bardak su verir, ama günde 86.400 bardak eder. Kova ise günde 1 seferde 50 bardak taşır. Sürekli akan musluk throughput olarak kovayı geçebilir, ama tek seferde kova daha fazla taşır.
Hangi Durumda Hangisi?
| Durum | Yöntem | Neden? |
|---|---|---|
| ”Dünkü satış toplamı” raporu | Batch | Saatlik doğruluk yeterli, gece işlenir. |
| ”Şu an sepette kaç ürün var” | Streaming | Sayı her an değişiyor. |
| ”Dolandırıcılık tespiti” | Streaming | 5 dakika geç kalırsan zarar büyür. |
| ”Aylık müşteri segmenti” | Batch | Aylık özet, gece işlenir. |
| ”Canlı skor / sohbet” | Streaming | Her saniye yenileme gerekir. |
Genel kural: anlık karar gerekiyorsa streaming, dönemsel rapor gerekiyorsa batch.
Hibrit Mimari: İkisi Bir Arada
Gerçek projelerde çoğu zaman ikisini birlikte kullanırsın. Elif’in limonatası için hibrit plan:
Müşteri sipariş veriyor
│
▼
[Kafka / Redpanda] ← olay günlüğü (akış)
│
├─────────────────────────┐
▼ ▼
[Streaming iş] [Gecelik batch]
Anında bildirim Gece toplu rapor
"Siparişiniz alındı" "Bu ay en çok ne satıldı"
Akış tarafı musluğu açar: her sipariş anında işlenir, müşteriye bildirim gider. Batch tarafı geceleyin kovayı doldurur: tüm günün verisinden özet çıkarır, patronun raporu hazırlanır.
Basit Bir Akış İşi (Pseudo-code)
Streaming’in ne olduğunu hissetmek için Python’da basit bir örnek:
import time
# Musluktan akan olayları simüle et
def musluk_ac():
olaylar = ["sipariş: limonata", "tıklama: menü", "ödeme: 25 TL"]
while True:
for olay in olaylar:
yield olay # her seferinde bir olay ver
time.sleep(0.5) # yarım saniye bekle
# Akan olayları işle
for olay in musluk_ac():
print(f"[anında] {olay}") # anında işle
Çıktı:
[anında] sipariş: limonata
[anında] tıklama: menü
[anında] ödeme: 25 TL
[anında] sipariş: limonata
...
Burada önemli olan: döngü bitmiyor. Veri aktıkça işlemeye devam ediyor. Batch’te for döngüsünün sonu vardı (günde bir kapanırdı), streaming’de while True musluğu sürekli açık tutar.
Özet
Bugün öğrendik:
- Batch = kova: biriktir, zamanı gelince toplu işle (gece raporu).
- Streaming = musluk: veri her an gelir, sen de her an işlersin (anlık bildirim).
- Latency: olay-cevap arasındaki süre. Streaming’de düşük (ms), batch’te yüksek (saat).
- Throughput: birim zamanda işlenen miktar. Batch tek seferde yüksek olabilir.
- Hibrit: çoğu gerçek projede ikisi yan yana çalışır (akış + gecelik batch).
Küçük Ödev
- Yukarıdaki
musluk_ac()örneğini çalıştır. Çıktıdaki her satır arasında kaç saniye var? time.sleep(2)yapsan latency nasıl değişir? Bir cümle yaz.- Bir senaryo düşün: okul kantini için “streaming mi batch mi?” kararı ver, nedenini yaz.
Sıradaki
Musluğu açtık, peki akan veriyi nerede tutacağız? Kafka / Redpanda olay günlüğü geliyor →