Jump to a problem, path or page
Jump to a problem, path or page
Updates as you edit. Run the review to record it; passing every check completes the problem.
Not yet passed: Client responsibility
Add Client and define its responsibility.
Not yet passed: CDN responsibility
Add CDN and define its responsibility.
Not yet passed: Load balancer responsibility
Add Load balancer and define its responsibility.
Not yet passed: API service responsibility
Add API service and define its responsibility.
Not yet passed: Cache responsibility
Add Cache and define its responsibility.
Not yet passed: Metadata database responsibility
Add Metadata database and define its responsibility.
Not yet passed: Object storage responsibility
Add Object storage and define its responsibility.
Not yet passed: Event stream responsibility
Add Event stream and define its responsibility.
Not yet passed: Analytics worker responsibility
Add Analytics worker and define its responsibility.
Not yet passed: Client → CDN
A directed path must connect Client to CDN. Arrows represent requests, dependencies, or event flow.
Not yet passed: CDN → Load balancer
A directed path must connect CDN to Load balancer. Arrows represent requests, dependencies, or event flow.
Not yet passed: Load balancer → API service
A directed path must connect Load balancer to API service. Arrows represent requests, dependencies, or event flow.
Not yet passed: API service → Cache
A directed path must connect API service to Cache. Arrows represent requests, dependencies, or event flow.
Not yet passed: Cache → Metadata database
A directed path must connect Cache to Metadata database. Arrows represent requests, dependencies, or event flow.
Not yet passed: API service → Object storage
A directed path must connect API service to Object storage. Arrows represent requests, dependencies, or event flow.
Not yet passed: API service → Event stream
A directed path must connect API service to Event stream. Arrows represent requests, dependencies, or event flow.
Not yet passed: Event stream → Analytics worker
A directed path must connect Event stream to Analytics worker. Arrows represent requests, dependencies, or event flow.
Not yet passed: Analytics worker → Object storage
A directed path must connect Analytics worker to Object storage. Arrows represent requests, dependencies, or event flow.
Not yet passed: Where should audio bytes be served from?
Not yet passed: How should play events be recorded?
Not yet passed: What makes a play countable for royalties?
Not yet passed: API and data model notes
Write at least 80 characters describing concrete operations, inputs, outputs, state and errors. This check measures completeness, not semantic correctness.
Not yet passed: Trade-offs and failure cases
Write at least 80 characters about alternatives, failure handling and edge cases. Review the reasoning yourself using the reference discussion.
Rule-based educational feedback. Notes are checked by length only; topology checks confirm directed reachability. These checks do not validate semantics, latency, reliability or every valid design.
Serve immutable audio from object storage through a CDN, serve metadata from a cached database, and record play events on a stream that workers aggregate off the request path. Store each track in several encodings in object storage under content-addressed keys; the CDN caches popular files near listeners. The API serves catalog and playlist metadata through a cache in front of the metadata database; playlists are small documents read far more than written. Clients send play events with a unique play id to the API, which appends them to an event stream and returns immediately. Analytics workers consume the stream, deduplicate by play id, apply the listen threshold, and write aggregates to object storage for royalty and recommendation jobs.
There is no single correct diagram. Explain where yours differs and which requirement justifies it.