Этим летом я проходила собеседование на продакта в компанию, у которой есть свой мессенджер. Среди этапов был System Design, и к нему надо было подготовиться.

Просто изучать архитектуру мессенджера мне было скучно. Ну и я решила заодно забацать себе курс. Чтобы были объяснения, схема, вопросы, можно было потыкать и проверить, что запомнила. В общем, подготовка к собесу немного разрослась. Ахахах.

Получился базовый курс с интерактивным тренажёром по архитектуре мессенджера. Может, кому‑то, кто тоже готовится к собеседованиям, пригодится, конечно же бесплатно.

Десктоп версия
Десктоп версия

Что особенно в мессенджере?

У мессенджера очень понятная отправная точка: Алиса написала Бобу «привет». Хочется, чтобы Боб этот привет получил. Желательно один раз, вовремя и в нужном чате.

А дальше начинаются вопросы:

  • Боб сейчас онлайн или у него телефон без интернета?

  • Если Алиса нажала «отправить», а соединение оборвалось, сообщение уже сохранилось? Можно отправлять ещё раз?

  • Боб открыл приложение на ноутбуке. Откуда там возьмётся история с телефона?

  • Если в чате сто тысяч человек, как раздать им новое сообщение?

  • А если отправили видео?

  • А если включили сквозное шифрование?

И вот уже есть повод разбираться с соединениями, хранением, очередями, синхронизацией и шифрованием. У каждой темы появляется конкретный вопрос, на который хочется получить ответ.

Что внутри курса

Внутри 22 основных раздела и четыре дополнительных, плюс справка по сетям. Начинается всё с требований: что вообще проектируем, какие функции берём, какой масштаб предполагаем.

Разделы курса
Разделы курса

Дальше постепенно разбираются:

  • Соединение и доставка. Как клиент держит связь с сервером, как сообщение доходит до получателя, что происходит в офлайне, зачем нужны пуши и откуда берутся повторы.

  • Хранение и синхронизация. Где лежат сообщения, как распределять данные, что делать с фотографиями и видео, как подтягивать историю на нескольких устройствах.

  • Масштабирование. Группы, большие каналы, балансировка соединений, несколько регионов и отказы.

  • Безопасность. Транспортное и сквозное шифрование, Signal Protocol, Double Ratchet, подход Telegram, групповые чаты, метаданные и бэкапы.

  • Звонки. Как устроены голос и видео, что добавляется в групповых звонках и как это связано с шифрованием.

Есть отдельные разделы про API и модель данных. Чтобы после общей схемы можно было пойти глубже: какие запросы делает клиент, какие сущности храним, какие поля и ключи для этого нужны.

Если по дороге непонятно, что такое сокет или чем TCP отличается от WebSocket, справка тоже рядом.

Прочитала. А рассказать смогу?

Практика построения архитектуры
Практика построения архитектуры

Можно прочитать раздел, посмотреть на схему и подумать: ну да, понятно.

А потом закрыть её и попробовать объяснить путь сообщения своими словами. Где оно сохраняется? Как сервер находит получателя? Что будет, если получатель отключился прямо сейчас? Поэтому к текстам я добавила несколько способов себя проверить.

Тесты после разделов. Всего 156 вопросов, по шесть на раздел. Есть объяснения к ответам, раздел отмечается пройденным при результате 6/6. Можно сразу увидеть, к какой теме стоит вернуться.

Карточки с интервальными повторениями. Их 88. Сначала пробую ответить сама, потом открываю ответ и оцениваю, насколько хорошо вспомнила. Удобно именно проговаривать: в голове ответ иногда звучит гораздо убедительнее, чем вслух, хех.

Сборка схемы по памяти. Тут уже нужно расставить компоненты и восстановить связи между ними. Семь уровней: от базового скелета до нескольких устройств и звонков.

Есть режим с подсказками, а есть «Чистая доска»: сначала надо вспомнить, какие компоненты вообще понадобятся. Очень быстро обнаруживается место, где вроде всё понимала, но почему‑то не могу собрать обратно.

Можно посмотреть, куда идёт сообщение

В тренажёре есть интерактивная карта архитектуры: 21 узел с пояснениями и 15 пошаговых сценариев.

Онлайн прогон сценария
Онлайн прогон сценария

Можно пройти доставку сообщения, посмотреть на группы, шифрование и звонки. По шагам проследить, какие компоненты участвуют и что между ними происходит.

Мне хотелось связать общую картинку с конкретным действием пользователя. Вот человек отправил сообщение. Вот оно прошло через эти части системы. Вот здесь понадобилось хранение, а здесь — информация о подключении получателя.

Потом можно переключиться на сборку схемы и попробовать воспроизвести это самостоятельно.

И ещё немного практики

Кроме схемы и карточек, внутри есть ещё три режима.

API и БД. Собираешь запросы из кусочков, выбираешь поля таблиц, отвечаешь на вопросы про ключи и хранение. Внутри 22 задачи на API и восемь таблиц. Полезно, когда общие прямоугольники уже нарисовала и хочется понять, что конкретно между ними передаётся.

Прикидки нагрузки. Задачи на порядок величины. Сколько примерно сообщений будет проходить через систему, какой объём данных получается. Можно потренироваться считать и объяснять свои допущения.

Прогон интервью. Режим для репетиции целиком: собрать подготовку в один последовательный ответ и посмотреть, где начинаешь буксовать.

Я бы пользовалась так: прочитать тему, пройти тест, закрыть объяснения и попробовать рассказать самой. Потом собрать схему. Если на каком‑то шаге зависли — вернуться в нужный раздел.

Кому может пригодиться

В первую очередь таким же продактам, которым предстоит техническое интервью или хочется лучше понимать устройство мессенджера

Разработчикам, которые начинают готовиться к System Design, тоже может пригодиться как вспомогательный материал, пример: взять один знакомый сервис и пройти его от требований до более сложных вопросов.

Как попробовать

Открываете тренажёр и пользуетесь. Бесплатно, без регистрации и установки.

Сам сайт — обычные HTML, CSS и JavaScript на GitHub Pages. Прогресс хранится локально в браузере. Его можно экспортировать в файл и потом импортировать в другом браузере; автоматической синхронизации между устройствами нет.

Код и материалы лежат на GitHub. Можно забрать себе, дополнить вопросами или адаптировать под свою подготовку.

Если попробуете, расскажите, где объяснения непонятные, чего не хватает и на каких вопросах вы сами спотыкались на собеседованиях. Если найдёте ошибку в материалах, тоже приносите.

Комментарии (11)


  1. aPiks
    20.09.2026 03:28

    Сайт потыкал - типичный нейрослоп. А статья - запрос на Code Review.

    Только вы бы свой Claude и просили вам ревью делать.

    Ну и на кой продакту System Design? Или теперь продакт + клод = архитект?


    1. monrech Автор
      20.09.2026 03:28

      Продакту System Design нужен, чтобы понимать ограничения системы, обсуждать с разработчиками варианты решений и учитывать их последствия для продукта. В моём случае это ещё и был этап собеседования, к которому я готовилась. На роль архитектора я не претендую.

      В статье я делюсь учебным инструментом, который сделала для себя и судя по добавлению в закладки, возможно, пригодится кому-либо для собеса (на это и была рассчитана статья). Запроса на code review там нет


      1. aPiks
        20.09.2026 03:28

        Если в вашем комментарии поменять слово "Продакту" на слово "Архитекту" - то изречение станет верным. А если там, куда вы ходили на собеседование, требуется знание вышеперечисленного для продакта - то очевидно это соковыжималка для людей с нулевым пониманием процесса разработки.

        По поводу вашего проекта - вам было скучно просто сидеть изучать архитектуру готовых проектов, но было не скучно читать всю ту воду, что выдала вам нейронка? Ну и почему вы решили, что на собесе вам зададут мессенджер? А если бы что-то другое? Соцсеть? файло-помойку? А если бы у вас спросили, почему не рассмотрели Server Side Events + Http для пересылки сообщений?

        А вообще, всем, кто готовится к подобным интервью, я бы рекомендовал не изучать отдельно каждое решение, а прочитать пару нормальных книг о System Design. Designing Data-Intensive Applications как одна из них.


  1. alterbred
    20.09.2026 03:28

    Моему "нишевому проекту" уже почти 30 лет.

    Начинался как "фото-альбом", а привёл к альтернативе Вики-энциклопедиям. Своё устройство каталогизации информации и связей с другой информацией.

    Сделал только небольшой пример того, как могла бы выглядеть информация в такой системе

    https://www.walks.ru/wm_dr/

    На полноценный пример моих знаний и возможностей не хватило

    Много слов на эту тему по ссылке

    https://walks.ru/text/kri.html


    1. MRD000
      20.09.2026 03:28

      Так ли я понимаю, что, если обобщить, то смысл в том, что UI адаптируется на какую-то подсекцию/ тему, которая всегда остается на экране? Т.е. как если бы Wikipedia была разделена на миллиард под-сайтов?


      1. alterbred
        20.09.2026 03:28

        упс...
        Интересно, а что в моих словах могло привести к подобному выводу???
        Вообще-то там много разных "смыслов" и основной в том, что на каждую тему/смысл будет не одна статья, как в Вики, а множество разных источников.
        И все "предки" каждой темы будут определять "контекст" её понимания, а "потомки" - объяснять тему/смысл
        Что касается оформления - то оно может изменяться под необходимые условия - попробуйте понажимать на "кнопочки" правом верхнем углу и подвигать горизонтальный разделитель экрана


  1. achekalin
    20.09.2026 03:28

    Сам формат тренажёра мне нравится: даже как результат подготовки это хороший способ зафиксировать свои решения, проверить их на прочность и передать следующему человеку уже не просто набор мыслей, а основу, которую можно развивать дальше.

    Но на собеседовании я бы начал с вопроса: почему здесь вообще Kafka? Какую именно проблему она решает? Какие гарантии доставки нам нужны? Что произойдёт при повторной доставке? Где и как обеспечивается порядок сообщений? Что будет с сообщением, отправленным из метро без сети? А если пользователь одновременно сидит с телефона и ноутбука? Как синхронизируются прочтение и уведомления?

    То есть System Design мессенджера я бы начинал не с Kafka и Cassandra, а с того, что именно мы обещаем пользователю. Где хранится история? Что будет, если телефон утонет? Кто способен прочитать переписку? Совместима ли сегодняшняя модель шифрования с теми требованиями, которые могут появиться завтра?

    Дальше медиа: превью, MIME type, докачка, транскодирование, хранение, backup. И пользовательские примитивы тоже часть архитектуры: телеграмовские кружочки стали самостоятельным форматом общения. В нашем независимом мессенджере, разумеется, будут пятиугольнички.

    И ещё эксплуатация. Добавление нод, замена упавших серверов, обновления и восстановление должны быть рутинными операциями, а не подвигом дежурного администратора.

    Вот после того, как определены гарантии, пользовательские свойства и эксплуатационная модель, уже интересно обсуждать Kafka, Cassandra и остальные прямоугольники.


  1. stabuev
    20.09.2026 03:28

    Я себе такие курсы тоже штампую, но руки не доходят почистить их от нейрослопа. ))) Поэтому пока прячу