Requirements of Instagram’s Design
Learn about the requirements and computational needs for the Instagram service.
Requirements
We’ll concentrate on some important features of Instagram to make this design simple. Let’s list down the requirements for our system:
Functional requirements
-
Post photos and videos: The users can post photos and videos on Instagram.
-
Follow and unfollow users: The users can follow and unfollow other users on Instagram.
-
Like or dislike posts: The users can like or dislike posts of the accounts they follow.
-
Search photos and videos: The users can search photos and videos based on captions and location.
-
Generate news feed: The users can view the news feed consisting of the photos and videos (in chronological order) from all the users they follow. Users can also view suggested and promoted photos in their news feed.
Non-functional requirements
-
Scalability: The system should be scalable to handle millions of users in terms of computational resources and storage.
-
Latency: The latency to generate a news feed should be low.
-
Availability: The system should be highly available.
-
Durability Any uploaded content (photos and videos) should never get lost.
-
Consistency: We can compromise a little on consistency. It is acceptable if the content (photos or videos) takes time to show in followers’ feeds located in a distant region.
-
Reliability: The system must be able to tolerate hardware and software failures.
Having understood the requirements of Instagram’s design, answer the following question:
...