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