Airbnb / Booking — Notes
Functional
- Search by location, date, filters.
- View listing detail, availability calendar.
- Quote → reserve → pay → confirm.
- Host calendar, smart pricing.
- Messaging, reviews, support.
Non-functional
- Strong consistency: no double-booking.
- p99 search < 500 ms; quote < 300 ms.
- 99.99% availability.
Capacity
- Listings: 7M+ active (Airbnb), Booking 28M+.
- Searches: many millions/day, bursty at peak travel.
Schema
listings(id, host_id, geo, amenities, price)
calendar(listing_id, date, state, version)
bookings(id, listing_id, guest_id, dates[], total, status, idempotency_key)
reviews(id, listing_id, ratings[], text)
Trade-offs
- Date-range locking: lock the whole window, not single date — careful with concurrency.
- Search vs canonical stores: ES index for search, SQL for truth; sync via CDC.
- Pricing rules are a complex DSL; isolate as a service.
Refs
- Airbnb engineering blog (search ranking, RECs, MySQL sharding via Vitess).
- Booking.com engineering posts on A/B & search.
- ByteByteGo "Design Airbnb".