Skip to main content

Real World Examples

Clarifications​

  • DAU: 50M
  • Messages: 100M/day
  • Media: 5% of messages

Functional Requirements​

  • chat with one person or a group (up to 100 people)
  • share photos, videos, and other files
  • See when your messages are sent, delivered, and read
  • See when other users are online
  • Get notifications for new messages

Non-functional Requirements​

  • fast and reliable
  • handle a lot of users and traffic

Assumptions​

  • Core Features: Group chat, file sharing
  • Sharing & Notifications: Share files and get alerts on edits/changes
  • Fast & Efficient: Quick file sync with minimal bandwidth use
  • Rock-Solid Reliability: No data loss
  • Load: HA and scalability

Estimations​

  • Traffic:
    • Activity: 50M(users)∗40 messages/day=2B messages/day50M (users) * 40\ messages/day = 2B\ messages/day
    • Media: 2B/day (activity)∗5%(content with media)=100M media/day2B/day\ (activity) * 5\% (content\ with\ media) = 100M\ media/day
    • RPS: 2B/day (activity)24h∗3600sec=24K req/sec\frac{2B/day\ (activity)}{24h * 3600sec} = 24K\ req/sec
  • Storage:
    • Messages: 2B/day (activity)∗100byte(message size)=200GB/day2B/day\ (activity) * 100byte (message\ size) = 200GB/day
    • Media:
      • Media: 100M/day(messages)∗100KB(media size)=10TB/day100M/day (messages) * 100KB (media\ size) = 10TB/day
      • 10 years: (10TB/day(media)+0.2TB/day(messages))∗10(years)∗365(day)=38PB(10TB/day (media) + 0.2TB/day (messages)) * 10 (years) * 365 (day) = 38PB
  • Bandwidth: 10TB/day(media)+0.2TB/day(messages)24h∗3600sec=120MB/sec\frac{10TB/day (media) + 0.2TB/day (messages)}{24h * 3600sec} = 120MB/sec