Given these estimations, the total number of requests per user could be calculated as follows:
Total Approximate Requests Per User Per Day: 1 + 10 + 5 + 2 + 1 + 1 = 20 requests per user per day
For a single tweet containing text and an image:
twitter/usertwitter/tweettwitter/tweet/like?tweetIDtweetID parameter identifies which tweet is being liked.twitter/followtwitter/tweet/retweet?tweetIDtwitter/searchUser : +int RecordID PK
User : +int UserID FK
User : +String UserName
User : +String HashedPassword
User : +String Email Index
User : +DateTime CreatedAt Index
User : +int mediaLink(profile picture) FK
Tweet : +int RecordID PK
Tweet : +int CreatorID FK
Tweet : +int TweetID FK
Tweet : +int LikeCounterID FK
Tweet : +String TweetData
Tweet : +DateTime createdAt
LikeCounter: +int RecorID PK
LikeCounter: +int TweetID FK
LikeCounter: +int likes
LikeCounter: +int dislikes
FollowerRecord : +int RecordID PK
FollowerRecord : +int FollowerID FK
FollowerRecord : +int FolloweeID FK
MediaMetadata : +int RecordID PK
MediaMetadata : +int mediaID FK
MediaMetadata : +int tweetID FK
MediaMetadata : +DateTime createdAt
MediaMetadata : +String link
Explain how the request flows from end to end in your high level design. Also you could draw a sequence diagram using the diagramming tool to enhance your explanation...
Explain any trade offs you have made and why you made certain tech choices...
What are some future improvements you would make? How would you mitigate the failure scenario(s) you described above?