Practice: Design Ticket Booking for Concerts
Concert ticketing for flash on-sales, inspired by Ticketmaster and similar platforms: CDN event pages, atomic seat holds in memory, a virtual waiting room, background payment with hold expiry, and bot protection. A teaching design.
Build this system yourself on the canvas below. Add components, connect them, and run traffic simulations to see where your design holds up and where it breaks.
Functional requirements
- Search events by artist, venue, city and date, with remaining availability.
- Show an event's seat map with live seat status and prices by section.
- Put fans in a virtual waiting room for high-demand on-sales and admit them in a fair, random order.
- Hold the seats a fan picks for a limited time (8 minutes) while they check out.
- Never sell the same seat twice, even when thousands of fans pick it at the same moment.
- Charge the card and issue tickets only after the payment is confirmed.
- Deliver tickets by email and in the fan's account after purchase.
- Release unpaid holds automatically and enforce a per-account ticket limit.
Non-functional requirements
- Seat map loads in under 500 ms (p99), even at the moment an on-sale opens.
- A seat hold answers in under 100 ms; checkout confirms within 2 seconds, with the charge finishing in the background.
- Zero oversells: the inventory database is the source of truth and a sale commits with a conditional update.
- Absorb a 10x surge when a big on-sale opens without the site going down.
- Availability 99.95% during on-sales; a payment or email provider outage must not lose holds, orders or tickets.
- Fairness: per-account and per-IP limits and bot challenges, so scripts can't jump the line.