Design facebook messenger

Functional Requirements:

  1. Messenger should support one-on-one conversations between users.
  2. Messenger should keep track of the online/offline statuses of its users.
  3. Messenger should support persistent storage of chat history.

Non-functional Requirements:

  1. Users should have real-time chat experience with minimum latency.
  2. Our system should be highly consistent; users should be able to see the same chat history on all
    their devices.
  3. 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.

image

Comments (4)