
Video Calling Apps System Design
Table of content:
- Functional Requirements
- Non Functional Requirements
- Capacity Estimation
- High Level System Design
- Algorithms
Video Calling applications such as zoom/skype uses adaptive streaming to improve users realtime experience.
Functional Requirements
- Video calling should support peer-to-peer and video conferences
- System should support 300M video calls/day
- System should support Adaptive streaming
- System should adopt Scalable Video Coding
Non-Functional Requirements
- System should be highly reliable and scalable
- System should be highly available, loosing some frames is acceptable.
Capacity Estimation
Throughput
- Throughput : 300M/10^5= 3000 Calls/sec.
Storage
- Video recording stored in their local machines
High Level System Design

IMPORTANT NOTES
- Adjusting resolution based on device type and bandwidth is called adaptive streaming.
- Number of pixels in a video frame is called resolution
- Sending many video streams for different resolutions isn’t scalable
- System should use Scalable Video Coding (SVC) to stream video.