[ { "id": "url-shortener", "name": "URL Shortener", "description": "Scale your URL shortener to handle traffic spikes and ensure high availability.", "targetRps": 1000, "durationSec": 180, "maxMonthlyUsd": 300, "maxP95LatencyMs": 150, "requiredAvailabilityPct": 99.9, "mustInclude": ["database", "loadBalancer"], "encouragedComponents": ["cache"], "hints": ["Consider caching and horizontal scaling."], "interviewerRequirements": [ "The service should handle traffic spikes gracefully.", "Shortened links should resolve quickly under moderate load.", "Ensure no single point of failure in the redirect path." ], "functionalRequirements": [ "Must include a database and a load balancer", "Encouraged to add a cache in front of the database" ], "nonFunctionalRequirements": [ "Target RPS: 1000", "Max P95 latency: 150ms", "Required availability: 99.9%", "Max monthly cost: $300", "Simulation duration: 180 seconds" ] }, { "id": "chat-app", "name": "Chat App", "description": "Support real-time chat across mobile and web, with message persistence.", "targetRps": 500, "durationSec": 300, "maxMonthlyUsd": 500, "maxP95LatencyMs": 200, "requiredAvailabilityPct": 99.9, "mustInclude": ["webserver", "database", "messageQueue"], "encouragedComponents": ["cache"], "hints": ["Ensure you decouple frontend from persistence."], "interviewerRequirements": [ "Messages must be delivered in order and reliably across multiple clients.", "Frontend and backend should be decoupled via an asynchronous system.", "Messages should be persisted with low latency under load." ], "functionalRequirements": [ "Must include a webserver, message queue, and database", "Encouraged to use a cache to reduce database read pressure" ], "nonFunctionalRequirements": [ "Target RPS: 500", "Max P95 latency: 200ms", "Required availability: 99.9%", "Max monthly cost: $500", "Simulation duration: 300 seconds" ] }, { "id": "netflix-clone", "name": "Netflix Clone", "description": "Add video transcoding, caching, and recommendations.", "targetRps": 1000, "durationSec": 600, "maxMonthlyUsd": 2000, "maxP95LatencyMs": 300, "requiredAvailabilityPct": 99.9, "mustInclude": ["cdn", "data pipeline", "cache"], "encouragedComponents": ["monitoring/alerting"], "hints": ["Think about asynchronous jobs and caching strategy."], "interviewerRequirements": [ "Videos should be transcoded into multiple bitrates for adaptive playback.", "Popular content should be cached to improve performance.", "Users should receive basic recommendations based on view history." ], "functionalRequirements": [ "Must include a CDN, cache, and data pipeline (e.g. for processing viewing logs)", "Encouraged to include monitoring/alerting for system health" ], "nonFunctionalRequirements": [ "Target RPS: 1000", "Max P95 latency: 300ms", "Required availability: 99.9%", "Max monthly cost: $2000", "Simulation duration: 600 seconds" ] }, { "id": "rate-limiter", "name": "Rate Limiter", "description": "Design a rate limiter that works across multiple instances and enforces global quotas.", "targetRps": 1000, "durationSec": 180, "maxMonthlyUsd": 300, "maxP95LatencyMs": 50, "requiredAvailabilityPct": 99.9, "mustInclude": ["webserver", "cache"], "encouragedComponents": ["messageQueue"], "hints": ["Consider Redis or distributed token buckets. Account for clock drift."], "interviewerRequirements": [ "Rate limits must be enforced across multiple service instances.", "State should be centralized or synchronized (e.g., using Redis).", "System should recover cleanly from cache failures." ], "functionalRequirements": [ "Must include a shared cache (e.g., Redis) for rate limiting state", "Must include a webserver that respects global rate limits", "Encouraged to queue burst traffic using message queues" ], "nonFunctionalRequirements": [ "Target RPS: 1000", "Max P95 latency: 50ms", "Required availability: 99.9%", "Max monthly cost: $300", "Simulation duration: 180 seconds" ] }, { "id": "metrics-system", "name": "Metrics System", "description": "Design a pull-based metrics system like Prometheus that scrapes multiple services.", "targetRps": 1000, "durationSec": 300, "maxMonthlyUsd": 500, "maxP95LatencyMs": 100, "requiredAvailabilityPct": 99.9, "mustInclude": ["data pipeline", "monitoring/alerting"], "encouragedComponents": ["cache"], "hints": ["Consider time-series indexing and label-based queries."], "interviewerRequirements": [ "The system should pull metrics from external sources at regular intervals.", "Collected metrics should be queryable using labels and timestamps.", "Alert on metric thresholds (e.g., error rates > 5%)." ], "functionalRequirements": [ "Must include a data pipeline for ingesting scraped metrics", "Must include a monitoring/alerting component that triggers alerts based on thresholds", "Encouraged to cache recently queried results for performance" ], "nonFunctionalRequirements": [ "Target RPS: 1000", "Max P95 latency: 100ms", "Required availability: 99.9%", "Max monthly cost: $500", "Simulation duration: 300 seconds" ] } ]