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 available listings (hotels, flights, appointments) by criteria (date, location, category, price).
- Display detailed availability: dates available, prices, capacity.
- Reserve/hold a listing for a user during checkout (time-limited hold, e.g., 10 minutes).
- Prevent double-booking: only one user can book the same slot/room/seat.
- Process payment securely and verify before confirming booking.
- Generate booking confirmations and send via email/SMS.
- Support cancellations with refund policy (full, partial, non-refundable).
- Enable modifications (date change, room upgrade) with repricing.
Non-functional requirements
- Availability search: p99 < 200ms for millions of listings.
- Booking confirmation: latency < 5 seconds including payment processing.
- Prevent double-booking: 100% consistency for inventory (no concurrent overbooking).
- Availability: 99.9%+; brief outages should queue bookings, not reject them.
- Scalability: handle 10x spike during sales (flash deals, holidays) without degrading.
- Data consistency: bookings are immutable; cancellations create reverse transactions.
- Resilience: payment service down → queue booking for later; email service down → queue notification.