Design a Hotel Booking System (Airbnb/Booking.com)

System Design
Hard
Airbnb
115K views

Design a system for inventory management and room reservations. Focus on complex filtering/searching, managing availability, and guaranteeing reservations.

Why Interviewers Ask This

Interviewers at Airbnb ask this to evaluate your ability to handle high-concurrency distributed systems where data consistency is critical. They specifically want to see how you manage race conditions during simultaneous bookings, design efficient indexing for complex geo-spatial filtering, and ensure inventory integrity without blocking user experience under heavy load.

How to Answer This Question

1. Clarify Requirements: Immediately define scope, such as distinguishing between real-time availability checks versus cached views, and specify constraints like latency targets for search results. 2. Estimate Scale: Calculate rough QPS (Queries Per Second) and storage needs based on global hotel inventory to justify database choices. 3. High-Level Architecture: Propose a microservices split separating Search, Inventory, and Booking services, emphasizing API gateways and load balancers. 4. Data Modeling & Consistency: Detail the schema for rooms and reservations, focusing on how to prevent double-booking using optimistic locking or distributed locks like Redis. 5. Advanced Filtering: Explain how to index location-based queries efficiently, perhaps using geohashing or specialized spatial databases like Elasticsearch. 6. Edge Cases: Discuss handling payment failures, overbooking scenarios, and system recovery during outages.

Key Points to Cover

  • Explicitly address race conditions and double-booking prevention mechanisms
  • Demonstrate understanding of geo-spatial indexing for location-based filtering
  • Propose a clear separation of concerns between read-heavy search and write-heavy booking services
  • Discuss specific trade-offs between eventual consistency and strong consistency for inventory
  • Mention concrete technologies like Redis for locking and Elasticsearch for search

Sample Answer

To design a scalable booking system similar to Airbnb's, I would start by defining the core entities: Hosts, Properties, Rooms, and Reservations. Given the need for sub-second search responses across millions of listings…

Common Mistakes to Avoid

  • Ignoring the complexity of concurrent access, leading to potential double-bookings
  • Focusing solely on database schema without addressing high-level service architecture
  • Overlooking the performance implications of real-time date range calculations on large datasets
  • Failing to discuss error handling strategies when a payment or inventory check fails mid-flow

Sound confident on this question in 5 minutes

Answer once and get a 30-second AI critique of your structure, content, and delivery. First attempt is free — no signup needed.

Try it free

Related Interview Questions

Browse all 190 System Design questionsBrowse all 33 Airbnb questions