Scale -> 500M
10M concurrent streams
100M+songs
Search latency < 200ms
Highly available system
Song start time ~200ms
Support audio for lower network bandwidth as well
100M songs 5 min avg len and 128KbPS
500M * 16KB * 60 ~ 8000GB * 60 ~480TB for one bit rate
Other bit rate will also be there
/search?search_term
GET /songs/recommendation
GET /songs
POST /playlist , body {name}
GET /playlist
PATCH /playlist/{name}, body {list of songs}
-> play any songs
GET /song/{songId}?quality={bitrate} -> Signed CDN urls, song MD
GET /song/{songId}/link
Describe the overall system architecture. Identify the main components needed to solve the problem end-to-end. Use the diagramming tool to create a block diagram.
Define the data model. Identify the main entities, their attributes, and relationships. Consider the choice of database type (SQL vs NoSQL) and justify your decision based on access patterns...
Deep dive into 2-3 key components. Explain how they work, how they scale, discuss tradeoffs, capacity, and any relevant algorithms or data structures.