Middle — Senior
Designing a scalable video hosting architecture
livecode
Task condition
Develop a video hosting architecture capable of serving over 100 million users, providing upload and viewing functions, as well as ensuring scalability and fault tolerance.
Functional requirements:
- Ability to upload video materials to the system.
- Viewing video content by users.
- Video rating (likes/dislikes).
- Adding comments to videos.
- Recommendation system based on viewing history.
- Search videos by keywords and metadata.
- Storage and streaming of videos in different qualities (480p, 720p, 1080p, 4K).
Expected loads:
- Over 100 million registered users.
- About 50 million active users daily.
- Each active user watches an average of 5 videos per day.
- The volume of stored data is measured in petabytes.
Additionally: formulate a set of non-functional requirements (reliability, security, latency, availability, scalability, monitoring, etc.) that need to be considered when designing the system.