Practice

Design TicketMaster

Design a event ticketing system like TicketMaster

Functional requirement:

  • Users must be able to search for events
  • Users should be able to get all available seats for an event
  • User should be able to reserve and then book seats for an event (using some blackbox payment provider).
  • There must not be any double booking: one ticket can only be booked by one user
  • (follow-up question) If a seat is reserved, the attempted booker joins a waiting list for that event. If the reservation doesn’t go through then the next user on the waiting list that can be fulfilled should reserve and be given a chance to book the seat.

Scale requirement:

  • 10,000,000 DAU
  • 100,000 peak concurrent users
  • 20,000 users are concurrently trying to book. The rest are only viewing. 5:1 read/write ratio This means this is a read access heavy system.
  • Assuming each user makes 5 write requests per day
  • Assuming each write's event and user data take 1KB
Step1
Step2
Step3
Step4
1. Resource Estimation