Functional vs. Non-Functional Requirements & Back-of-the-Envelope Estimation
Scoping a design problem before drawing a single box: what the system must do, how well it must do it, and roughly how big "big" is.
Beginner
| Type | Answers the question | Example (a ride-hailing app) |
|---|---|---|
| Functional requirements | What must the system let a user do? | A rider can request a trip; a driver can accept it; both can see a live map. |
| Non-functional requirements | What qualities must the system have while doing that? | A trip request must resolve to a driver match in under 2 seconds; the service must stay up during a regional outage. |
Writes per day = 5,000,000 users × 3 saves = 15,000,000 writes/day
Writes per second = 15,000,000 / 86,400 seconds ≈ 174 writes/sec (average)
Peak writes/sec = average × peak factor (often 2–3×) ≈ 350–520 writes/sec
Storage per day = 15,000,000 × 2 KB ≈ 30 GB/day
Storage per year = 30 GB × 365 ≈ 11 TB/year
| Resource | Typical estimate needed for |
|---|---|
| Servers / compute | How many app servers to handle peak requests per second, given each server's realistic throughput. |
| Storage | Total data volume today and its growth rate, to plan disk, replication, and retention. |
| Bandwidth | Network throughput for data in and out, especially for media-heavy features. |
| Memory / cache | How much of the "hot" working set can realistically fit in RAM. |