Design an extensible ticketing system

Read the full interview experience this question came from →

Quick Overview

This question evaluates software architecture and system-design competencies, covering extensibility patterns, concurrency control for high-throughput ticketing, transactional and idempotency guarantees, persistence/schema modeling, API design, and pluggable pricing strategies.

Design an extensible ticketing system

Company: Amazon

Role: Software Engineer

Category: System Design

Difficulty: hard

Interview Round: Technical Screen

Design an extensible EventTicketSystem for selling tickets to concerts, movies, and sports events. Support creating events, listing inventory, holding/reserving seats, purchasing with idempotency, and refunds. Show a class/interface design that allows adding new ticket types without modifying existing code (e.g., a factory or registration mechanism). Prices should be determined by pluggable strategies so each ticket type can have distinct pricing rules (e.g., dynamic pricing, fees, discounts). Discuss concurrency control for seat contention, persistence schema, transactions and rollback, error handling, and core REST/gRPC APIs. Provide complexity considerations, test strategy (unit/integration), and how you would evolve the system as new ticket types and pricing policies are introduced.

Overview: This question evaluates software architecture and system-design competencies, covering extensibility patterns, concurrency control for high-throughput ticketing, transactional and idempotency guarantees, persistence/schema modeling, API design, and pluggable pricing strategies.

Read the full Amazon Software Engineer interview experience this question came from

|Home/System Design/Amazon
Amazon logo
Amazon
Sep 6, 2025
hardSoftware EngineerTechnical ScreenSystem Design
9
0

System Design: Extensible EventTicketSystem

Context

Design a ticketing platform that sells tickets for concerts, movies, and sports. The system must support both reserved seating and general admission. It should be easy to extend with new ticket types and pricing policies without modifying core code.

Assume web/mobile clients, high read/write concurrency during popular on-sales, and integration with a payment provider.

Requirements

  1. Core features
    • Create/list events and venue inventory.
    • Show inventory by event (seats, sections, GA counts).
    • Hold/reserve seats with TTL and automatic expiry.
    • Purchase tickets with idempotency guarantees.
    • Refunds (full/partial) with proper accounting.
  2. Extensibility and pricing
    • New ticket types can be added via a factory/registration mechanism without code changes to core services.
    • Pluggable pricing strategies per ticket type (dynamic pricing, fees, discounts).
  3. Concurrency and reliability
    • Concurrency control for seat contention (avoid oversell; high throughput during on-sale).
    • Transactions, rollback behavior, and idempotency for purchases.
    • Persistence/schema design for events, inventory, holds, orders, payments, refunds.
    • Error handling strategy and API error semantics.
  4. Interfaces and APIs
    • Propose core REST and/or gRPC APIs.
  5. Engineering considerations
    • Complexity considerations and scalability.
    • Test strategy (unit, integration, concurrency tests).
    • Evolution path for new ticket types and pricing policies.

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...