וואלהארצות הברית: "יותר ממיליארד חביות נפט גולמי עברו דרך מצר הורמוז"CNN Türk19 EYLÜL GÜNÜN MAÇLARI: Bugün kimin maçı var, hangi kanalda? Bugünkü maç programı…ESPN DeportesBarcelona: tres bajas en la convocatoria para viajar a SevillaESPNOregon wins in 84-0 rout despite missing 2 key players on offenseThe Jerusalem Post'I am pro-Abraham': Meet the unlikely allies risking everything for peace with IsraelRTP DesportoFC Porto chama Froholdt, Samu e Pietu-ze-vski para o clássico com o BenficaBollywood HungamaRambola: Mahaveer Jain and Amit Upadhyay pledge 100% of personal earnings and savings from Tulsidas film to Seva projectsBBC NewsCNN, MS NOW and Politico say reporters denied White House access after Trump banned some media outletsPunchEPL: Tottenham score first goals of season but lose 3-2 to VillaDigital SpyEmmerdale reveals first look at Dawn's funeral as Joe and Graham hide a secretPremium TimesWhy sharing my November 18 birthday with Rudeboy became difficult — Mr PRai NewsRitrovate le sorelle di 12 e 8 anni scomparse a San Cataldo: stanno bene
The Daily Newsstand · Free, Always
Saturday, September 19, 2026

А какое у вас нишевое хобби? Я вот сделала курс по архитектуре мессенджера, пока готовилась к собесу

Translate

Этим летом я проходила собеседование на продакта в компанию, у которой есть свой мессенджер. Среди этапов был 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. Можно забрать себе, дополнить вопросами или адаптировать под свою подготовку.

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

View the original on Хабр

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.