Functional Requirements:
- Messenger should support one-on-one conversations between users.
- Messenger should keep track of the online/offline statuses of its users.
- Messenger should support persistent storage of chat history.
Non-functional Requirements:
- Users should have real-time chat experience with minimum latency.
- Our system should be highly consistent; users should be able to see the same chat history on all
their devices.
- Messenger’s high availability is desirable; we can tolerate lower availability in the interest of
consistency.
Here is my proposed design. Please let me know for improvements.
