0
0
HLDsystem_design~10 mins

Requirements gathering (functional and non-functional) in HLD - Scalability & System Analysis

Choose your learning style9 modes available
Scalability Analysis - Requirements gathering (functional and non-functional)
Growth Table: Requirements Gathering Impact
UsersFunctional RequirementsNon-Functional RequirementsImpact on Design
100 usersBasic features, simple workflowsMinimal performance, basic securitySimple architecture, monolithic app possible
10,000 usersMore features, user roles, error handlingImproved performance, availability, securityModular design, caching, load balancing
1,000,000 usersComplex workflows, integrations, multi-tenancyHigh availability, scalability, strict securityMicroservices, distributed systems, CDN
100,000,000 usersGlobal features, personalization, complianceExtreme scalability, disaster recovery, complianceMulti-region deployment, sharding, automation
First Bottleneck: Incomplete or unclear requirements

When requirements are not well gathered, the system design may miss critical features or constraints. This leads to rework, poor scalability, and user dissatisfaction. At small scale, this causes delays. At large scale, it causes costly redesigns and failures.

Scaling Solutions: Improving Requirements Gathering
  • Stakeholder Interviews: Engage all users and stakeholders early to capture needs.
  • Use Cases & User Stories: Define clear scenarios to understand functional needs.
  • Non-Functional Workshops: Discuss performance, security, and compliance early.
  • Prototyping: Build simple models to validate assumptions.
  • Iterative Refinement: Continuously update requirements as feedback arrives.
  • Documentation & Traceability: Keep clear records to track changes and decisions.
Back-of-Envelope Cost Analysis

Good requirements reduce costly redesigns. For example, a missed security requirement can cause expensive fixes later. Early investment in gathering requirements saves time and money during scaling.

  • Time spent interviewing: ~10-20 hours per major stakeholder group
  • Prototyping cost: Low compared to rework
  • Documentation effort: Ongoing but small compared to development
  • Cost of missed requirements: Can be 10x or more in rework and downtime
Interview Tip: Structuring Scalability Discussion on Requirements

Start by explaining the difference between functional and non-functional requirements. Then discuss how incomplete requirements cause bottlenecks. Next, describe how improving requirements gathering scales the system design process. Finally, give examples of techniques and their impact on cost and time.

Self Check Question

Your project has 1000 users and basic requirements. Now you expect 10x growth and new security needs. What is your first action?

Answer: Revisit and expand the requirements gathering process to include new functional and non-functional needs, especially security. This ensures the design can scale properly without costly rework.

Key Result
Clear and complete requirements gathering is the foundation for scalable system design; missing or unclear requirements become the first bottleneck as user scale grows.