eBay / Auction — Notes
Functional
- List item (auction / Buy It Now).
- Bid placement, proxy bidding.
- Live leaderboard, countdown.
- Winner determination + payment + shipping.
- Disputes & buyer/seller protection.
Non-functional
- Strict ordering of bids per listing.
- p99 bid placement < 500 ms.
- Active listings: tens of millions.
Capacity
- 1B+ listings/yr; tens of millions live concurrently.
- Bid storm at auction close: 1000s bids/s on hot items.
Schema
listings(id, seller, type, start, end, current_high_bid, status)
bids(id, listing_id, bidder, amount, max_amount, ts) partition by listing_id
payments(...) similar to Amazon
Trade-offs
- Single-owner per listing is required for correctness.
- Eventual consistency on viewer leaderboard is fine.
- Anti-snipe extension keeps fairness but breaks fixed-time scheduling.
Refs
- eBay engineering blog (Cassandra rollouts, auction architecture talks).
- "Designing Data-Intensive Applications" ch.7 (transactions).
- ByteByteGo "Design an auction".