sydepsystem design atlas

Team Chat (Slack-style)

Channel-based messaging with search, presence and integrations.

IntermediateSocialPlatform
ClientClientAPI GatewayNetworkingChannel ServiceComputeMessage StoreStorageSearch IndexStorageRealtime FanoutMessagingWebhook IntegrationsEdge & IoT

Messages post to channels, get indexed for search, and fan out to connected clients over a real-time connection, while a separate integrations layer lets external services post into channels via webhooks.

When to use it

  • Communication is organised around channels/workspaces rather than 1:1 threads
  • Full-text search across message history and third-party integrations are core requirements

Trade-offs

  • Search indexing lag means the newest messages may not be immediately searchable
  • Workspace-scale channels with many members stress the real-time fan-out path

Components used

Desktop AppAPI GatewayManaged App ServiceDocument DatabaseSearch IndexEvent BusEdge Function

How it works

  • Messages belong to channels rather than individuals, so delivery is a subscription problem — every connected member of a channel receives new messages.
  • A separate search index makes history queryable, since chat's value compounds with archive size.
  • Presence and typing indicators are high-frequency ephemeral signals, usually kept out of the durable message path entirely.

Used in the wild

  • Workplace collaboration platforms.
  • Community and gaming chat servers.
  • Support consoles where agents share channels.

Good to know

  • Presence generates surprising load: every status change notifies everyone who can see that user, which in a large workspace is a quadratic fan-out problem.
  • Enterprise buyers care enormously about retention policies and compliance export, which means deletion must be genuinely enforced across the message store, the search index and every cache.