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