PracHub
QuestionsPremiumCoachesLearningGuidesInterview Prep
|Home/System Design/Discord

Design Slack-like chat system

Last updated: Jun 15, 2026

Quick Overview

An onsite system-design interview question asking you to design the chat subsystem for a Slack/Discord-like app: workspaces, channels, 1:1 and group DMs, full message history, real-time updates, and edit/delete. It tests data modeling, storage and partitioning, fanout strategy, real-time WebSocket delivery, and per-conversation ordering and consistency.

  • easy
  • Discord
  • System Design
  • Software Engineer

Design Slack-like chat system

Company: Discord

Role: Software Engineer

Category: System Design

Difficulty: easy

Interview Round: Onsite

##### Question Design the **chat subsystem** for an app like Slack/Discord. State your assumptions (scale, retention, consistency needs) and propose an end-to-end architecture, then expect deep follow-ups on the trade-offs. **Product requirements** 1. The product has **workspaces**; each workspace contains **channels**. Users can join a workspace and view all channels they have access to (public and private channels). 2. Users can send **plain-text messages** in any channel they are a member of, and the channel may have many members (some "announcement" channels can reach 100k+). 3. Users can also have **direct messages** — 1:1 and small group DMs. 4. Users can **scroll back and read the full message history** (assume no expiration / long retention). 5. Users should **see new messages in real time without refreshing**. 6. Support **editing and deleting** messages. **Design areas to cover (expect a deep dive on each)** 1. **Core APIs** — send message, fetch history (pagination), subscribe for real-time, edit/delete. 2. **Data model** for workspaces, channels/conversations, membership, and messages. 3. **Storage choice**, sharding/partitioning, and how history queries stay efficient. 4. **Real-time delivery** (WebSocket / pub-sub) and connection/subscription management. 5. **Fanout strategy** — write fanout vs read fanout — and the trade-offs at different channel sizes. 6. **Ordering and consistency** guarantees (per-conversation ordering, read-your-writes) and handling **edits/deletes**. 7. **Indexing / full-text search** over message history (if asked). 8. **Hot channels** and performance bottlenecks — how you mitigate very large or very active conversations.

Quick Answer: An onsite system-design interview question asking you to design the chat subsystem for a Slack/Discord-like app: workspaces, channels, 1:1 and group DMs, full message history, real-time updates, and edit/delete. It tests data modeling, storage and partitioning, fanout strategy, real-time WebSocket delivery, and per-conversation ordering and consistency.

Related Interview Questions

  • Design a Local Leader Election System - Discord (medium)
  • Design Video Call Analytics Tables - Discord (hard)
  • Design a TCP Discord-like chat server - Discord (medium)
  • Design leader election using Redis leases - Discord (medium)
Discord logo
Discord
Mar 1, 2026, 12:00 AM
Software Engineer
Onsite
System Design
21
0
Question

Design the chat subsystem for an app like Slack/Discord. State your assumptions (scale, retention, consistency needs) and propose an end-to-end architecture, then expect deep follow-ups on the trade-offs.

Product requirements

  1. The product has workspaces ; each workspace contains channels . Users can join a workspace and view all channels they have access to (public and private channels).
  2. Users can send plain-text messages in any channel they are a member of, and the channel may have many members (some "announcement" channels can reach 100k+).
  3. Users can also have direct messages — 1:1 and small group DMs.
  4. Users can scroll back and read the full message history (assume no expiration / long retention).
  5. Users should see new messages in real time without refreshing .
  6. Support editing and deleting messages.

Design areas to cover (expect a deep dive on each)

  1. Core APIs — send message, fetch history (pagination), subscribe for real-time, edit/delete.
  2. Data model for workspaces, channels/conversations, membership, and messages.
  3. Storage choice , sharding/partitioning, and how history queries stay efficient.
  4. Real-time delivery (WebSocket / pub-sub) and connection/subscription management.
  5. Fanout strategy — write fanout vs read fanout — and the trade-offs at different channel sizes.
  6. Ordering and consistency guarantees (per-conversation ordering, read-your-writes) and handling edits/deletes .
  7. Indexing / full-text search over message history (if asked).
  8. Hot channels and performance bottlenecks — how you mitigate very large or very active conversations.

Solution

Show

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...

Browse More Questions

More System Design•More Discord•More Software Engineer•Discord Software Engineer•Discord System Design•Software Engineer System Design
PracHub

Master your tech interviews with 8,000+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities
  • Student Access

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.