Ticketmaster / BookMyShow — Notes
Functional
- Browse events, view seat map, hold, pay, get ticket.
- Wait-list, refund, resale.
- Anti-bot, fair queueing for hot drops.
Non-functional
- Strict no-double-booking.
- Survive flash crowds (10–100× normal traffic) for marquee events.
- p99 hold response < 1 s under load.
Capacity
- Big drop: 500k+ concurrent users in queue.
- Seat catalog: 100k+ seats for a stadium.
Schema
events(id, venue_id, time, status)
shows(id, event_id, hall, sale_start)
seats(show_id, seat_id, state, held_by, held_until, version)
bookings(id, user_id, show_id, seat_ids[], payment_id, status, idempotency_key)
Trade-offs
- Strong consistency on seats non-negotiable; pay the latency.
- TTL holds prevent permanent leaks but require sweepers.
- Virtual queue is mandatory for big drops or service melts down.
- Resale complicates ticket identity → unique IDs, key rotation per transfer.
Refs
- Ticketmaster engineering "Verified Fan" posts.
- BookMyShow architecture talks.
- ByteByteGo "Design ticketing", Alex Xu Vol 2.