Back to problems
Slack System Design (Channels, Search & Real-Time Messages)
Design a team communication platform like Slack that enables real-time messaging, file sharing, and collaboration within teams and channels. Users can send messages, share files, create channels, and receive notifications.
Constraints
Functional
Messages to channels or DM, create/join/leave channels, file upload/share, search messages and files, notifications (mentions, DMs), threads, presence, full message history
Non-functional
< 100ms delivery, millions of teams and billions of messages, real-time (WebSockets), fast search, 99.9% uptime
Scale
10M users, 2M DAU, 100K teams; ~100M messages/day, peak ~2K/s; ~50 GB/day messages, ~90 TB over 5 years; ~1 TB/day files
Stages ahead
1Requirement Analysis
2API Design
3High-Level Design
4HLD Extensions
5Trade-offs