HLDArena
HLD-129·Messaging & Queues
Easy · 500 pts

Global Podcast RSS Episode Catalog & Update Notifier

Design a podcast directory ingestion and episode catalog API that ingests newly published RSS episodes and serves show metadata to mobile apps.

Max p99
≤ 50 ms
Availability
≥ 99.5%
Budget
≤ $2,550

Functional Requirements

  • FR-1POST /shows/{show_id}/episodes — Ingests newly detected RSS episode metadata and enqueues notifications.
  • FR-2GET /shows/{show_id}/episodes — Returns paginated episode list for mobile podcast players.
  • FR-3PATCH & DELETE /shows/{show_id}/episodes — Updates, revokes, or deletes show_id entries with bounded TTL or explicit cache/index invalidation.
  • FR-4Must absorb top-of-hour release spikes and survive primary database failure.

Workload Profile

Baseline App Traffic16,000 Read RPS / 2,000 Episode Ingest RPS
Morning Commute Drop46,000 Read RPS / 6,000 Write RPS
Active Working Set14 GB hot show catalogs
Traffic DistributionZipfian skew on top-100 chart show_id feeds

Consistency Model

Eventual episode listing visibility (< 5s) acceptable; ingested episodes durably persisted.

Design Write-up
0 boxes · 0 edges
0 words
Hidden Cases #4–#7 run automatically on Submit
Case 1: Smoke & API ContractInput Workload
Read RPS
1,600 rps
Write RPS
200 rps
Key Distribution
Uniform (Low Skew)
Chaos Fault
None (Healthy Cluster)
Expected Pass CriteriaASSERTIONS
• Tail Latency: p99 ≤ 100 ms
• Availability: ≥ 99.5%
Valid end-to-end Client → Compute → Storage topology