Define the APIs expected from the system. This is your chance to analyze and define the read and write paths so that you can come up with the high-level design...
There are a few major functions in this app
We can summarize these as the following:
Models
Describe the overall system architecture. Identify the main components needed to solve the problem end-to-end. Use the diagramming tool to create a block diagram.
Deep dive into 2-3 key components. Explain how they work, how they scale, discuss tradeoffs, capacity, and any relevant algorithms or data structures.
The fanout service uses a message queue to publish and subscribe to any changes that would impact the user's feed. We don't need real-time responses, so we send the request to a message queue to fan out workers to work on updating the feed cache. The fanout service should also check the user DB to update the user's followers' feeds.
The feed service will need to search for the latest tweets with the highest likes, maybe we can do a search timeboxed to tweets posted today and sort them by likes and then the time posted