Skip to content
playdsa
Preferences

Make yourself comfortable.

Saved on this browser. Your device’s reduced-motion preference is always respected.

Theme
Advanced settings

Seat Lock Bastion

Learn
Play
Prove
Problem context and objectives
Mission briefing

Lead systems engineer · Seat Lock Bastion

Design the reservation path for event tickets when millions of users arrive at once and payment providers may time out.

The design must survive burst 2M users/min and inventory 50K seats. Every box must earn its place by satisfying a requirement or containing a failure.

How you win

  1. 1Trace one user action from request to durable outcome
  2. 2Connect every component to a stated requirement
  3. 3Explain the losing tradeoff, not only the chosen technology

Rules and pressure

  • burst: 2M users/min
  • inventory: 50K seats
  • No overselling
  • Expiring holds

New words in this mission

Open a term for a plain-language explanation.
idempotent operation+

Repeating the same request has the same final effect as doing it once. This makes automatic retries safe.

Lesson 1 of 3

Live architecture trace

Seat Lock Bastion: request to outcome

1/5
◉Buyersclient◇Admission gateedge⬡Reservation servi…serviceDBInventory ledgerdata⇥Payment workflowqueueWKHold reaperworker
LIVE EVENTenter

Buyers sends “enter” to Admission gate. Admission control protects the scarce reservation path and makes overload behavior intentional.

burst = 2M users/min

Design the reservation path for event tickets when millions of users arrive at once and payment providers may time out. Follow one real user action through the complete architecture; a component is useful only when you can explain the request, state, or failure it handles.

Help shape PlayDSA

Something confusing, broken, or missing? Leave a quick note without leaving your lesson.

Please leave out passwords, payment details and other private information.

Page included: /

Sign in to save feedback here, or send it with your email app. Your draft stays here while you sign in.

Open email instead