Let's summarise our Non-Functional Requirements first before moving to technologies and work out our capacity estimation.
Non-Functional Requirements
We can see our system is READ Heavy. Which will impact our system.
1. RegistrationAPI
2. LoginAPI
3. TweetAPI (CRUD for tweets)
You’re right that retrieving multiple tweets will need to be optimized, likely with pagination (e.g., ?limit=20&offset=40).
4. TwitterInteractionAPI
I'll focus on Users already being authenticated and using Twitter
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...
Client interacts with system.
CDN serves our static assets.
Request is directed to API Gateway (Load Balancer, Authenticates/Authorises requests, rate limits before redirecting to a service that hosts the APIs).
API checks cache, if cache key exists returns data, if not queries Cassandra.
Explain any trade offs you have made and why you made certain tech choices...
Try to discuss as many failure scenarios/bottlenecks as possible.
What are some future improvements you would make? How would you mitigate the failure scenario(s) you described above?