Non-Functional System Characteristics
When designing systems, we don't just solve for "what it does" (Functional Requirements); we must heavily solve for "how well it does it" (Non-Functional Requirements).
### Key Characteristics
- **Performance:** How fast is the system? (Latency, Throughput) - **Scalability:** Can it handle growth? - **Availability:** Is it up when users need it? - **Reliability:** Does it perform its function without failure? - **Security:** Is user data protected from unauthorized access? - **Maintainability:** How easy is it for developers to update and fix the system over time?
A successful architect balances these tradeoffs. For example, encrypting all data (Security) might slightly reduce Performance. High Availability requires redundancy, which increases cost.

