Requirements Gathering
Pick a product, select requirements, and watch the architecture evolve live. Every requirement you add changes the infrastructure — that's the point.
Step 1 — Pick a product
Requirements depend on what you're building.
2B+ users · Read-heavy, large payloads · Massive video streaming with global delivery needs.
Step 2 — Choose requirements
Toggle on/off — the architecture updates live.
Step 3 — Architecture
Hover any node to understand its role.
System metrics
Response Time
20ms
Availability
97.5%
Est. Cost
$164/mo
Complexity
Moderate
Step 4 — Design insights
Mini Challenges
Can you build an architecture that satisfies each goal?
< 120ms at global scale
Add CDN + cache so response time drops below 120ms.
99.9%+ availability
Reach 99.9% availability with at least a read replica.
Media upload pipeline
Upload files without blocking the app server (object storage + queue).
Why this exists
Requirements gathering exists because architecture is a response to constraints, not a blank-canvas exercise. Functional requirements tell you what the system must do. Non-functional requirements tell you how well it must do it under real load, latency, reliability, and cost limits.
Functional vs non-functional
Functional requirements define user-visible behavior. Non-functional requirements define throughput, latency, durability, consistency, availability, and budget.
Scope is an engineering tool
Explicitly saying what you are not building prevents over-design. Good scope cuts away features that would otherwise distort the system.
Requirements drive trade-offs
A low-latency read-heavy system wants very different infrastructure than a write-heavy financial ledger. The architecture follows the constraints.
Key takeaways
- Start by clarifying users, traffic, reads vs writes, and failure tolerance.
- Non-functional requirements are what force real architectural trade-offs.
- Undefined scope produces vague systems and vague interviews.
- If you cannot state the requirements cleanly, the rest of the design will drift.