Loading...
Read is crucial for the system, and there is a significant join case, so we can consider a key-value database like DynamoDB for all entities.
We normalized comments and likes instead of putting them in posts entity, because this approach can allow us to manage delete and update easily.
How to fanout
For most users, we can use push, while for celebrities and users who has tons of followers, we mark them and their feeds will be delivered when their friends request
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?