Introduction to Instagram [backup]
Understanding functional and computational needs for the Instagram service.
What is Instagram?
Instagram is a free social networking application that allows users to post photos and short videos. Users can add a caption for each post and utilize hashtags or location-based geotags to index them and make them searchable within the application. A user’s Instagram posts display in their followers’ feeds and can be seen by the general public if they are tagged with hashtags or geotags. Alternatively, users can choose to make their profile private, limiting access to those who have chosen to follow them.
The following illustration shows the Instagram userbase in different countries as of January 2022 (source: Statista).
Requirements
We will concentrate on some important features of Instagram to make this design simple. Let’s list down our requirements for that.
Functional requirements
-
Post photos/videos: The users can post photos and videos on Instagram.
-
Follow/unfollow users: The users can follow and unfollow other users on Instagram.
-
Like/dislike post: The users can like and dislike posts of the accounts they follow.
-
Search photos/videos: The users can search photos and videos based on captions and location.
-
Generate newsfeed: The users can view the newsfeed 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 newsfeed.
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 newsfeed 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 should be able to tolerate hardware and software failures.
Estimation
Our system is read-heavy because service users spend substantially more time looking at the feeds of others than creating and posting new content. Our focus will be to design a system ...
Create a free account to access the full course.
By signing up, you agree to Educative's Terms of Service and Privacy Policy