Travel Booking Saga ve Compensation Patterns

Travel booking, payment, cancellation ve refund akışlarında rollback yerine Saga ve compensation desenlerini tasarlayın.

Editoryal bilgi
Advertisement

Travel booking distributed transaction'ı rollback edilemez. Supplier booking, payment capture, ticketing veya refund farklı sistemlerde gerçekleştiği için başarısızlık sonrası compensating action gerekir.

Saga flow

Travel booking SagaTravel booking Saga

Mermaid source (.mmd)

Compensation rollback değildir

Booking cancel:

  • fee doğurabilir,
  • inventory'i aynı koşulla geri vermeyebilir,
  • supplier'da async tamamlanabilir.

Refund:

  • settlement sonrası gecikebilir,
  • FX farkı yaratabilir,
  • payment fee'lerini geri döndürmeyebilir.

Bu yüzden compensation outcome ayrıca izlenmelidir.

Orchestration vs choreography

Orchestration

Central Saga orchestrator hangi step'in sırada olduğunu bilir.

Avantaj:

  • debugging kolay,
  • explicit state,
  • ops görünürlüğü yüksek.

Risk:

  • orchestrator karmaşıklaşır.

Choreography

Servisler event'lerle birbirini tetikler.

Avantaj:

  • loose coupling.

Risk:

  • global flow'u anlamak zor,
  • duplicate/out-of-order event etkisi büyür.

Travel booking için kritik financial workflow'larda explicit orchestration çoğu zaman daha okunabilirdir.

Saga step modeli

Her step:

  • operation,
  • status,
  • forward action,
  • compensation action,
  • idempotency key,
  • attempt count,
  • last evidence,
  • next retry time saklamalıdır.

Forward recovery mi compensation mı?

Capture fail olduysa hemen booking cancel etmek yerine:

  1. capture retry güvenli mi?
  2. alternate payment path var mı?
  3. traveler liability korunuyor mu?
  4. cancellation fee var mı?
  5. ops müdahalesi daha güvenli mi?

kararı verilmelidir.

Compensation matrix

Forward stepFailureCompensation
authorizebooking failedvoid
capturebooking later cancelledrefund/void
booking confirmedpayment unrecoverablecancel booking
ticket issuedservicing failedprovider-specific servicing
cancellation confirmedrefund failedrefund reconciliation

UNKNOWN compensation

Original outcome UNKNOWN iken compensation da blind yapılmamalıdır. Örneğin booking UNKNOWN iken "cancel" göndermek, booking yaratılmadıysa anlamsız; yaratıldıysa doğru olabilir. Önce authoritative evidence toplanmalıdır.

Failure modes

  • compensation'ın duplicate çalışması,
  • compensation'ın kendisinin UNKNOWN olması,
  • cancel fee'nin hesaba katılmaması,
  • forward recovery mümkünken erken rollback,
  • choreography event loop,
  • partial compensation sonrası local state'in COMPLETED görünmesi.

Observability

  • saga completion rate,
  • compensation rate,
  • compensation success/failure,
  • forward recovery rate,
  • manual intervention rate,
  • time in RECOVERY_REQUIRED,
  • compensation financial loss/cost.

Production checklist

  • explicit Saga state,
  • idempotent forward/compensation actions,
  • compensation policy per provider,
  • UNKNOWN-safe recovery,
  • financial impact visibility,
  • manual escalation,
  • audit trail,
  • replay-safe event handling.
Teknik danışmanlık

Benzer bir entegrasyon mu planlıyorsunuz?

Gereksinim, feed/API tasarımı ve production yaklaşımını birlikte değerlendirebiliriz.

Projenizi konuşalım →

İlgili içerikler

architecture

Payment + Booking Distributed Transaction

Travel booking'de payment ve supplier booking adımlarını distributed transaction olarak modelleyin; authorize, capture, compensation, UNKNOWN outcome ve reconciliation desenlerini uygulayın.

paymentbookingdistributed-transaction
İncele →
troubleshooting

Payment Authorized/Captured ama Booking Unknown/Failed

Payment başarılı görünürken booking unknown veya failed olduğunda divergence'ı diagnose edin, recovery ve compensation kararlarını güvenli verin.

paymentbookingdivergence
İncele →
distribution-api

Hotelbeds API Suite: Bedbank Dağıtım Profili

developer.hotelbeds.com

B2B konaklama dağıtımı için booking, content ve cache API'lerini kapsayan HBX Group Hotelbeds API Suite teknik profili.

hotelbedshbxbedbank
İncele →
distribution

OTA vs Metasearch vs Travel Marketplace: Farklar

OTA, metasearch ve travel marketplace modellerini transaction ownership, supplier relationship, monetization, handoff ve teknik architecture açısından karşılaştırın.

otametasearchtravel-marketplace
İncele →
distribution

Package Holiday vs Hotel Metasearch: Mimari Farklar

Paket tatil dağıtımı ile hotel metasearch modelini offer identity, pricing, supplier topology, booking ownership ve cancellation açısından karşılaştırın.

package-holidayhotel-metasearchtour-operator
İncele →
distribution-api

Sabre Travel APIs: GDS ve Travel Distribution Profili

developer.sabre.com

Air, lodging, car, booking ve agency workflow'larını kapsayan Sabre Travel APIs için teknik GDS ve dağıtım profili.

sabregdsflight-api
İncele →