I started with DAU and per-user request rate to get QPS, which felt fine, but then they wanted me to explicitly cost out CPU and memory per request and I fumbled around for a bit.
Start by clarifying assumptions about user activity patterns and system architecture, then break down the workload into per-user resource consumption for each component. Use a bottom-up calculation with peak-to-average ratios and add redundancy for high availability.
Pro tip: Always state your assumptions explicitly and show how you'd validate them with real metrics (e.g., load testing or monitoring). This demonstrates practical experience and avoids over-engineering.
Ask about user activity distribution, peak concurrency, data retention, and SLAs. Assume typical values if not provided, such as 10% daily active users and 5x peak-to-average ratio.
Estimate CPU, memory, disk IOPS, and network bandwidth per active user based on the application's operations (e.g., API calls, database queries). Use benchmarks or analogous systems.
Multiply per-user consumption by the number of concurrent users (peak) to get total resource requirements. Include overhead for OS, middleware, and replication.
Apply a safety factor (e.g., 2x) for redundancy, failover, and expected growth. Consider horizontal scaling and sharding strategies.
Propose a validation plan using load testing, monitoring, and capacity planning tools. Highlight that estimates should be refined with real data.
AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.