In Interview Camp's Live Session today, we discussed a common problem - Design a ticket booking system. Here is the problem statement:
You want to design a website for booking movie tickets - Ticketmaster for movies. Users can browse movies. They can also pick seats and book them. We will focus on scaling this design. Let’s say you have a blockbuster movie release. How can we ensure that tickets are booked on a first-come-first-serve basis in a sudden surge of traffic?
We went quite deep into the ticket reservation system:
- What happens if many users try to book a seat at the same time?
- We ended up following the approach of reserving seats during checkout. When a user checks out, there will be a countdown. For example, you have 5 minutes to complete checkout or the seat is released.
- This led to discussions about how to use Memcached and In Memory DBs to help reserve these seats faster.
- We discussed several tradeoffs that are likely to help in interview discussions.
We hope you found these useful. To access these sessions live, please sign up at Interview Camp