Тренажёр system design · открытый код
Нарисуйте архитектуру —
и прогоните её под нагрузкой
На собеседовании мало сказать «тут поставим кэш». Соберите схему, выкрутите трафик и посмотрите, что сломается первым, какие у запросов p95 и p99 и сколько всё это стоит в месяц.
Без регистрации · работает в браузере · MIT
- p99
- Ошибки
- В месяц
- Узкое место
Поднимите трафик до 6k rps и посмотрите, кто сдастся первым.
Как это работает
Три шага от стрелочек к цифрам
-
01
Соберите схему
13 компонентов: CDN, балансировщик, API-шлюз, сервисы и воркеры, кэш, SQL и реплики, NoSQL, очередь, хранилище, поиск. Перетащите на доску и соедините порт в порт.
-
02
Дайте нагрузку
Трафик от 50 до 20 000 rps, всплеск ×4 на 8 секунд, отказ любого узла одним тумблером. Чтения и записи можно пустить разными путями.
-
03
Объясните цифры
У каждого узла есть «Как посчитано»: формула и подставленные числа. Именно об этом спросит интервьюер — почему здесь очередь и сколько нужно реплик.
Учебные сценарии
Классика с собеседований, которую можно сломать
Каждая задача открывается на доске в один клик. Дальше её можно ломать и чинить.
Сокращатель ссылок
Сколько реплик выдержат 2k rps и что будет, если hit ratio упадёт до 50%.
ОткрытьЛента новостей
Чтения идут через кэш ленты, публикации через очередь. Кто не выдержит, когда кэш промахивается.
ОткрытьЧат
Сообщение параллельно пишется в историю и в очередь доставки. Почему растёт backlog, а клиент этого не видит.
ОткрытьТелеметрия
Одна очередь и два набора воркеров. Индексатор отстаёт — найдите, на сколько и что с этим делать.
ОткрытьВеб-приложение
Две копии API, общий кэш и очередь событий. Хорошая отправная точка для своей схемы.
ОткрытьПустая доска
Возьмите вопрос с последнего собеседования и проверьте свой ответ под нагрузкой.
НачатьМодель открыта
Цифрам можно верить, когда видно, откуда они
Формулы не прячутся: каждый узел показывает расчёт, а движок — открытый код с тестами на эталонных сценариях.
Чего модель пока не умеет
- Она стационарная: нет прогрева кэша, автоскейлинга, таймаутов и ретраев.
- Пресеты компонентов пока не откалиброваны по бенчмаркам: это оценки порядка величины.
- Циклы в схеме не считаются: редактор не даёт их создать.
ρ = λ / (c · μ)загрузка узла: поток делить на ёмкость репликW = t₀ / (1 − ρ)время ответа растёт, когда загрузка подходит к 100%ρ ≥ 1 → ошибкилишний поток отклоняется, а за очередью копится в backlogp99 ← Монте-Карлосквозные перцентили по тысячам запросов через графНичего не теряется
Схема автосохраняется в браузере. Её можно выгрузить файлом .loadline.json и открыть снова.
Ссылка на схему
Отправьте схему ментору или напарнику по подготовке: ссылка открывает её на доске.
Без аккаунта
Не нужно ни регистрироваться, ни ставить: всё считается прямо в браузере.
Проверьте свой ответ под нагрузкой
Пять готовых задач, тринадцать компонентов и формулы, которые не стыдно показать интервьюеру.
Открыть доску