Skip to content

Instantly share code, notes, and snippets.

@zolotyh
Last active September 18, 2025 10:42
Show Gist options
  • Save zolotyh/3788df729d5e618e5dbb6629026f7f58 to your computer and use it in GitHub Desktop.
Save zolotyh/3788df729d5e618e5dbb6629026f7f58 to your computer and use it in GitHub Desktop.

Задача на System Design

Спроектировать масштабируюмую систему обмена сообщениями (чат)

Референс: Slack

  1. Обмен сообщениями в реальном времени
  2. Хранение истории сообщений
  3. Уведомление о новых сообщениях
  4. Статус пользователей (offline/online)
  5. Масштабируемость до 1 000 000 пользователей
  6. Независимые огранизации
  7. (опционально) Поддержка мультимедиа
  8. (опционально) Поддержка доставки/прочтения

Требования

  1. Высокая доступность и отказоустойчивость
  2. Низкая задержка доставки сообщений
  3. Безопасность и шифрование данных
  4. Масштабируемость под рост нагрузки

Ожидания

  1. Архитектура системы и ключевых компонентов
  2. Технологии рельного времени (протоколы и инструменты)
  3. Хранение сообщений
  4. Подходы к масштабированию
  5. Обеспечение безопасности данных
  6. Решение узкий мест
  7. Реализация уведомлений

Доски

  1. excalidraw.com
  2. draw.io
  3. tldraw.com

Можно использовать что-то свое.

Шпаргалка

image
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment