...

>

Requirements of WhatsApp’s Design

Requirements of WhatsApp’s Design

Define the functional and non-functional requirements for a highly scalable chat service like WhatsApp. Learn how to balance consistency, security, and low-latency needs. Practice resource estimation to calculate the necessary storage, bandwidth, and server capacity for billions of daily messages.

Requirements

Let’s scope the WhatsApp design by identifying the following requirements.

Functional requirements

  • Conversation: Support one-on-one and group conversations.

  • Acknowledgment: Provide message delivery status (sent, delivered, and read).

  • Sharing: Enable sharing of media files, including images, videos, and audio.

  • Chat storage: Persist messages for offline users until they are successfully delivered.

  • Push notifications: Notify offline users of new messages when they reconnect.

Note: “Offline” refers to users disconnected from the internet. The system sends push notifications when they reconnect. “Online” users are actively connected and receive real-time messages.

Non-functional requirements

  • Low latency: Deliver messages with minimal delay.

  • Consistency: Deliver messages in order and ensure chat history is consistent across all user devices.

  • Availability: Prioritize high availability, though trade-offs may be made to ensure consistency.

  • Security: Implement end-to-end encryption so only communicating parties can access message content.

  • Scalability: Support an increasing number of users and daily messages.

The non-functional requirements of the WhatsApp system
The non-functional requirements of the WhatsApp system

Resource estimation

For capacity ...