Sync vs Async Travel Booking Architecture
Travel booking akışlarında synchronous ve asynchronous orchestration modellerini latency, failure recovery, UX ve provider capability açısından karşılaştırın.
Travel booking'de sync ve async yaklaşım bir framework tercihi değil, provider response semantics ile kullanıcıya verdiğiniz booking contract arasındaki sınırdır.
Kısa cevap
Provider birkaç saniye içinde kesin CONFIRMED/FAILED sonucu döndürüyor ve timeout sonrası authoritative lookup sunuyorsa synchronous orchestration yeterli olabilir. Provider booking'i daha sonra kesinleştiriyor, webhook ile sonuç veriyor veya confirmation latency değişkense async state machine gerekir.
Sync booking
Synchronous booking flow
Avantajları:
- basit UX,
- daha az state,
- daha az queue/event altyapısı.
Riskleri:
- long-running HTTP request,
- timeout ambiguity,
- retry ile duplicate booking,
- provider latency'nin client latency'ye doğrudan yansıması.
Async booking
Asynchronous booking flow
Async modelde client'a terminal olmayan bir state dönebilir: PENDING, PROCESSING veya UNKNOWN.
Decision matrix
| Sinyal | Sync daha uygun | Async daha uygun |
|---|---|---|
| Provider kesin response latency | düşük/stabil | değişken/yüksek |
| Final result aynı request'te | evet | hayır |
| Webhook desteği | gerekmez | değerli |
| Lookup/reconciliation | fallback | temel mekanizma |
| Client UX | immediate | pending state desteklemeli |
| Failure recovery | basit | explicit state machine |
Hybrid model
Çoğu production sistem hybrid'dir:
- kısa bir sync budget içinde final response beklenir,
- budget aşılırsa booking
UNKNOWN/PENDINGolur, - background reconciliation devam eder,
- webhook gelirse state güncellenir.
Failure modes
- HTTP timeout sonrası blind retry,
- async result gelmeden FAILED gösterme,
- webhook gelmezse sonsuz pending,
- client disconnect'i booking cancel sanma,
- aynı booking için hem sync response hem webhook'u iki kez uygulama.
Observability
- sync completion rate,
- async fallback rate,
- provider confirmation latency p50/p95/p99,
- pending/unknown age,
- reconciliation resolution time,
- duplicate event count.
Production checklist
- explicit terminal/non-terminal states,
- request timeout ile business timeout ayrımı,
- provider-specific latency budget,
- idempotency,
- webhook dedup,
- reconciliation fallback,
- client polling/backoff contract,
- manual ops threshold.
Mimarinizi birlikte review edelim.
Travel distribution ve metasearch mimarinizi ölçeklenebilirlik, hata senaryoları ve operasyon açısından değerlendirebiliriz.