System Design: Multi‑Tenant B2B Team Messaging (Slack‑like)
Design a multi‑tenant, enterprise‑grade team messaging platform similar to Slack.
Functional Requirements
-
Workspaces (organizations) with members and roles
-
Channels (public/private) and direct/group messages
-
Message fan‑out to channels with thousands of members
-
Real‑time presence and typing indicators
-
Reactions and threaded replies
-
Full‑text search across messages/files
-
File sharing and previews
-
Push notifications (mobile/desktop)
Enterprise Requirements
-
SSO/SAML and SCIM user provisioning
-
Role‑based access control (RBAC)
-
Audit logs (tamper‑evident) and eDiscovery/compliance exports
-
Data retention policies, legal hold
-
Cross‑workspace federation (shared channels)
Non‑Functional Goals
-
50M DAU, up to 10M concurrent connections
-
p99 intra‑workspace delivery under 200 ms
-
Durable storage with RPO = 0 across availability zones
-
Cost efficiency (resource utilization, tiered storage)
What to Cover
-
Overall architecture (edge/gateway, WebSocket vs HTTP/2, message queues)
-
Data modeling (users, workspaces, channels, messages, indexes)
-
Fan‑out patterns (write vs read; hybrids)
-
Ordering and idempotency
-
Offline delivery and pagination
-
Search indexing pipeline
-
Media storage and CDN
-
Rate limiting and abuse prevention
-
Multi‑region strategy (latency, failover, data residency)
-
Observability (metrics, tracing, logging)
-
Backfill/migration strategies
-
Provide key APIs and schema sketches