18. Discord

Medium

Design a community group chat service like Discord

Functional Requirements
  • Users should be able to join servers via invite links
  • Users should be able to send message in specific channels
  • Messages can be text and/or images
Nonfunctional Requirements
  • 99.99% availability
  • Low latency
  • Chat history should be stored indefinitely
Assumptions
  • 140 bytes per text message
  • 1 mb per image
  • Usage is spread out evenly across all servers and users
Estimated Usage
  • 24 million DAU
  • 550 million messages per day
  • 10% of messages have images

Seen this question in a real interview before?

Not all editor features are supported on mobile