Facebook Messenger

Design Facebook Messenger.

Practice this with AI →

Patterns

  • Fan-out
  • WebSocket Pattern
  • Presence Pattern

Expected topics

  • Facebook Messenger
  • Fan-out
  • WebSocket Pattern
  • Presence Pattern
  • Client A
  • WebSocket instance A
  • instance B
  • group chat
  • online / offline status
  • push

Self-check prompts

  • What users, scale, latency, availability, and consistency requirements should you clarify for Facebook Messenger?
  • What are the main APIs, data model, and request flow?
  • Where is the main bottleneck around Fan-out, WebSocket Pattern, Presence Pattern, and how would you scale it?
  • What failure mode matters most, and how do retry, recovery, and idempotency work?
  • Which trade-off would you choose, what do you lose, and when would you change that decision?

Common mistakes

  • Jumping into vendor names before clarifying requirements and scale.
  • Listing components without explaining the end-to-end request flow.
  • Leaving the bottleneck vague instead of quantifying capacity, partitioning, and recovery behavior.
  • Mentioning trade-offs without choosing an option and explaining the condition that would change the decision.
  • Ignoring hot fan-out paths, backpressure, and offline delivery behavior.