Design market price change notifications
Company: SoFi
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Technical Screen
Design a system that notifies users when market prices change for the symbols they track.
Context and requirements:
- Users maintain a watchlist of symbols (e.g., AAPL, TSLA).
- You have a 3rd-party market data vendor API that supports both REST polling and WebSocket streaming.
- The system should push near-real-time price change notifications to users (e.g., via mobile push, email, or in-app/WebSocket).
Design goals to address:
1. Ingesting market price updates efficiently (prefer streaming when possible).
2. Fan-out: delivering updates to only the users watching the symbol.
3. Scalability (many users, many symbols), reliability, backpressure, and rate limits.
4. Handling subscription changes (users add/remove symbols) without excessive vendor calls.
5. Deduplication/ordering expectations and retry strategy.
Provide a high-level architecture, key components, data model, and the main flows for (a) ingesting price updates and (b) notifying users.
Quick Answer: This question evaluates expertise in designing scalable, real-time data ingestion and fan-out notification systems, covering competencies such as stream processing, pub/sub architectures, subscription management, backpressure handling, rate limiting, deduplication, ordering, and reliable delivery.