Requirements Gathering
The crucial first step in system design: defining what the system should do (Functional), the constraints it must operate under (Non-Functional), and what to ignore.
Requirements Clarification
Categorize requirements and define read/write ratios to shape your architecture.
Unsorted Insights
Users can upload photos
System must support 5M DAU
Users can follow others
Video streaming processing
End-to-end latency < 200ms
Highly available (99.99%)
Push notifications for likes
Live audio chat rooms
Functional
What the system does (Features)
Non-Functional
How well it does it (Constraints)
Out of Scope
What we ignore to save time
Read / Write Ratio
Adjust ratio to see architectural implications.
Recommended Architecture
System is Read-Heavy. Prioritize adding Distributed Caches (Redis/Memcached) and CDNs. Read replicas for databases will be essential to handle the query load.
Detailed explanation about Requirements Gathering goes here. This section would explain the algorithms, trade-offs, and real-world use cases.