Push vs Pull vs Hybrid: Travel Distribution Veri Akışı
Push, pull ve hybrid distribution modellerini freshness, latency, rate limit, cache, reconciliation ve operasyonel ownership açısından karşılaştırın.
Push, pull ve hybrid aynı distribution problemini farklı freshness ve ownership modeliyle çözer. Seçim yalnız trafik hacmine göre değil, state volatility + latency budget + retry/reconciliation cost birlikte değerlendirilerek yapılmalıdır.
Karşılaştırma matrisi
| Boyut | Push | Pull | Hybrid |
|---|---|---|---|
| Trigger | Source değişiklik gönderir | Consumer/provider talep eder | Stable data push/cache, volatile state live pull/recheck |
| Freshness | Event delivery kadar iyi | Request anındaki source state | Katmana göre değişir |
| Read latency | Düşük olabilir | Upstream latency'ye bağlı | Cache hit düşük, miss/recheck daha yüksek |
| Write complexity | Retry/order/idempotency yüksek | Daha düşük outbound state management | İki model birlikte yönetilir |
| Rate-limit pressure | Change volume etkiler | Search/read volume etkiler | Her iki tarafta bounded |
| Drift riski | Lost/out-of-order event | Stale cache / timeout | Boundary yanlışsa iki tarafta |
| Reconciliation | Zorunlu | Faydalı | Zorunlu |
Push ne zaman mantıklı?
ARI, inventory, restriction ve durable property/content değişiklikleri source-driven ise push verimlidir.
Source state changes
-> event/delta
-> queue
-> partner adapter
-> delivery ledger
-> acknowledgementAna risk delivery success ile business-state convergence'ı karıştırmaktır.
Pull ne zaman mantıklı?
Price/availability çok volatile ve consumer request'i zaten hangi entity/date bağlamının gerektiğini belirliyorsa live pull daha doğru olabilir.
User search
-> provider request
-> live response
-> normalize
-> renderAna risk slow provider'ın tüm search latency budget'ını tüketmesidir.
Hybrid neden yaygın?
Travel metasearch için doğal pattern:
Property/content master -> feed/push/cache
Broad price coverage -> cached/pushed state
User-selected context -> live search/reprice
Final handoff -> validation/reconciliationStable ve volatile datayı aynı sync modeliyle taşımak genellikle gereksiz maliyet veya stale state üretir.
Idempotency ve ordering
Push modelinde event identity + source version gerekir.
Pull modelinde repeated request idempotent read gibi görünse de cache fill, analytics ve downstream side-effect'ler duplicate olabilir.
Hybrid modelde source-of-truth sınırı açık değilse eski pushed state yeni live observation'ı ezebilir.
Failure modes
Push
- lost event,
- out-of-order delta,
- retry storm,
- silent drift.
Pull
- provider timeout,
- quota exhaustion,
- thundering herd,
- partial result.
Hybrid
- cache/source conflict,
- stale pushed state overriding live truth,
- inconsistent TTL/revalidation.
Observability
Update delivery latency, stale-data age, polling volume, webhook/event failure rate, retry count, duplicate-event rate ve reconciliation backlog birlikte izlenmelidir.
Karar kuralı
Data değişim frekansı düşük + consumer read yüksekse push/cache ekonomik olabilir.
Data çok volatile + request context yüksek cardinality ise live pull/reprice daha doğru olabilir.
Çoğu production travel system'da cevap hybrid olur, fakat hangi field'ın hangi source/time modeline ait olduğu explicit olmalıdır.
Checklist
- Her field için source of truth belli mi?
- Freshness budget tanımlı mı?
- Event ordering/version var mı?
- Cache invalidation/revalidation tanımlı mı?
- Rate-limit pressure ölçülüyor mu?
- Partial result davranışı var mı?
- Periodic reconciliation var mı?
Bu problemi production’da mı yaşıyorsunuz?
Semptomu, veri akışını ve entegrasyon davranışını birlikte teknik olarak inceleyebiliriz.