Design BookMyShow
Design a ticket booking system where users pick seats for a show and pay.
Movie and event ticketing · Hard
Functional requirements
- Browse shows and seat maps
- Hold seats for 10 minutes during checkout
- Pay and confirm the booking
Scale & non-functional requirements
- Popular releases cause huge traffic spikes
- A seat must never be sold twice
- Checkout stays responsive under load
Hints
- How do you lock a seat without a global lock?
- What happens when a hold expires?
- How do you queue users during a spike?