Design Twitter

Design a simplified version of Twitter where users can post tweets, follow/unfollow other users and is able to see the tweets of its followings.

Functional requirement:

  • Tweeting: Users should be able to write a new tweet.
  • Follow/Unfollow: Users should be able to follow or unfollow other users.
  • Timeline: Users should be able to view a list of tweets from the people they follow, as well as content recommended by the recommendation algorithm.

Scale requirement:

  • 300M Daily Active Users
  • Read:write ratio = 100: 1
  • Data retention for 5 years
  • Assuming each user posts 1 tweet per day
  • Assuming each tweet is about 140 characters (280 bytes)
1. Resource Estimation