Booking Lifecycle Event Model

Travel booking state'ini create, confirm, modify, cancel, fail ve reconcile event'leriyle izleyen lifecycle modelini tasarlayın.

Editoryal bilgi
Advertisement

Booking lifecycle event model, rezervasyonu tek bir mutable status alanına indirgemek yerine hangi olayların hangi sırada gerçekleştiğini ve state'in hangi kanıttan türetildiğini saklar.

Production senaryosu

Booking create request timeout oluyor; provider rezervasyonu oluşturmuş olabilir. Daha sonra webhook CONFIRMED geliyor, ardından cancellation ve refund event'i oluşuyor. Tek status alanı bu sürecin audit trail'ini kaybeder.

Mimari akış

text
Booking Attempt
 -> CREATE_REQUESTED
 -> provider call
 -> CREATED / UNKNOWN / FAILED
 -> CONFIRMED
 -> MODIFIED?
 -> CANCEL_REQUESTED?
 -> CANCELLED?
 -> REFUND/SETTLEMENT?
 -> RECONCILED

Temel entity'ler

  • Booking
  • BookingAttempt
  • BookingEvent
  • ProviderBookingReference
  • PaymentReference
  • ReconciliationRecord

Event örneği

json
{
  "eventId": "evt-123",
  "bookingId": "bk-42",
  "type": "CONFIRMED",
  "provider": "supplier-a",
  "providerReference": "ABC123",
  "occurredAt": "2026-09-26T10:00:00Z",
  "receivedAt": "2026-09-26T10:00:02Z",
  "source": "webhook"
}

State türetme

Current booking state event history'den materialize edilmelidir. Her event geçerli bir transition üretmeyebilir.

Örneğin CANCELLED event'i CONFIRMED öncesi gelebiliyorsa out-of-order handling gerekir.

Idempotency

Webhook tekrarları normaldir. eventId, provider event key veya deterministic dedup key ile aynı event'in iki kez uygulanması engellenmelidir.

Unknown state

Timeout sonrası UNKNOWN first-class state olmalıdır. FAILED demek duplicate booking riskini artırır.

Unknown state lookup/reconciliation ile çözülmelidir.

Payment ile booking'i ayırın

Payment authorized olması booking confirmed anlamına gelmez. Booking ve payment lifecycle'ları ayrı state machine'ler olmalı, reconciliation katmanında bağlanmalıdır.

Failure modes

  • duplicate webhook,
  • out-of-order event,
  • provider reference değişimi,
  • payment/booking divergence,
  • cancellation confirm olmadan UI'da cancelled gösterme,
  • retry ile duplicate create.

Concurrency

Event processing optimistic version veya sequence ile korunmalıdır. Aynı booking üzerinde iki consumer paralel state update yapıyorsa deterministic ordering gerekir.

Observability

  • unknown booking age,
  • duplicate event rate,
  • out-of-order event rate,
  • booking/payment divergence,
  • reconciliation latency,
  • invalid transition count.

Alternatifler

Basit single-provider, düşük hacimli sistemde event table + materialized status yeterlidir. Tam event sourcing yalnız audit/replay ihtiyacı gerçekten varsa kullanılmalıdır.

Production checklist

  • immutable event log
  • explicit transition rules
  • idempotency
  • ordering/version strategy
  • unknown state
  • separate payment lifecycle
  • reconciliation job
  • audit trail
  • replay tooling
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 →
architecture

Travel Event Reconciliation Architecture

Booking, payment, cancellation ve supplier event'lerini kaynaklar arasında uzlaştıran deterministic reconciliation mimarisini tasarlayın.

reconciliationbookingpayment
İ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 →