Design the read path for a news feed where users pull a timeline assembled from the people they follow, under heavy read load with a large fan-out of authors per reader.
Design the read (pull) path of a news feed. Each user follows many authors; when a user opens their feed, the system assembles a timeline by reading recent posts from the authors that user follows and returning them in order. This is a pull (fan-out-on-read) model: the timeline is computed at read time rather than precomputed on write.
The workload is read-dominated and read-expensive: a single feed load may touch posts from hundreds of followed authors, and feed loads vastly outnumber posts created. The primary datastore cannot serve this read volume alone : reads must be scaled out across replicas, and recently-requested feeds and hot authors' posts must be served from cache. The write path (creating a post) is comparatively light and simply persists the post.
Design the serving architecture with an emphasis on scaling reads: how the read tier is balanced, how database read capacity is multiplied beyond a single node, and how caching reduces repeated assembly cost. Then show your capacity math, your storage/replication model, and the trade-offs of pull-vs-push and read-replica staleness.