Design a scalable real-time chat system
Company: Lyft
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design a scalable real-time chat system supporting 1:1 and group messaging. Cover: API design (send, receive, ack), message ordering and idempotency, read receipts and typing indicators, online presence, fan-out architecture (write vs read), storage (hot vs cold, media handling), indexing and data model, replication and sharding strategy, consistency vs availability trade-offs, offline delivery and retries via push notifications, rate limiting and spam/abuse controls, end-to-end encryption considerations, back-of-the-envelope capacity estimates for 100M DAU, monitoring, observability, and disaster recovery.
Quick Answer: This question evaluates skills in designing scalable real-time distributed systems, covering API design, message ordering and idempotency, fan-out strategies, storage tiers, indexing, sharding and replication, consistency vs.