Системный дизайн интервью: 8 шагов, блоки и цифры. Научитесь проходить Design X без паники. Читайте и применяйте на практике!
Большинство людей проваливают интервью по системному дизайну не из-за незнания технологий, а из-за отсутствия метода. Вы слышите «Спроектируйте Twitter», сразу переходите к «давайте использовать базу данных», детально прорабатываете один случайный угол, игнорируете остальное и выходите с половиной нарисованной схемы на доске. Кандидаты, которые проходят, не умнее — они следуют повторяемой последовательности, проговаривая её вслух каждый раз. В этой статье — сжатый фреймворк; полное руководство (каждый шаг в деталях, строительные блоки, числа для запоминания и полный пример) доступно на моём сайте.
«Спроектируйте Twitter» не имеет единственного правильного ответа, объём огромен, а у вас 45 минут. В этом суть — интервьюер проверяет не то, запомнили ли вы архитектуру Twitter. Он наблюдает, как вы ориентируетесь в неопределённости, принимаете компромиссы и общаетесь. Дайте ему чёткое, структурированное прохождение задачи — и вы пройдёте, даже если итоговый дизайн не «идеален».
| Шаг | Что делать | Время (~45 мин) |
|---|---|---|
| 1 | Уточнить требования (функциональные + нефункциональные) и сузить объём | ~5 мин |
| 2 | Оценки «на конверте» (QPS, хранилище, пропускная способность) | ~5 мин |
| 3 | Проектирование API — несколько ключевых эндпоинтов | ~5 мин |
| 4 | Модель данных — сущности, SQL vs NoSQL и почему | ~5 мин |
| 5 | Высокоуровневая архитектура — рисуем блоки | ~10 мин |
| 6 | Углубление в сложную часть — 1–2 интересных момента | ~10 мин |
| 7 | Узкие места и масштабирование — кэш, шардирование, репликация, очереди | ~5 мин |
| 8 | Компромиссы и завершение | ~3 мин |
Никогда не начинайте проектировать — начните задавать вопросы. Функциональные (что делает) + нефункциональные (масштаб, задержка, консистентность, соотношение чтения и записи). Затем безжалостно сократите до 2–4 фич, а остальное отложите вслух. Самая частая ошибка — пропустить этот шаг и красиво спроектировать не ту систему.
Вам нужен порядок величины, а не точность. Быстрый способ: в сутках ~86 400 секунд ≈ 10^5, поэтому запросов в день ÷ 100 000 ≈ средний QPS, а пик ≈ 2–3×. Например, 1 000 000 000 чтений в день ÷ 86 400 ≈ 11 600 QPS в среднем. Пик ≈ 3× ≈ ~35 000 QPS. Уже это число говорит: ни одна база данных не справится в одиночку — нужны кэширование, реплики, шардирование.
Сначала определите контракт (курсорная пагинация вместо offset, явная аутентификация). Затем выберите хранилище и обоснуйте выбор: «твиты — это append-heavy, читаются по ключу, без join, поэтому wide-column store масштабируется лучше, чем реляционная». Оценивается рассуждение, а не выбор.
Клиент → балансировщик нагрузки → stateless серверы приложений → кэш/БД → ответ. Тяжёлые или медленные задачи (медиа, уведомления, фан-аут) отправляйте в очередь + воркеры, чтобы путь запроса оставался быстрым.
В каждом «Design X» есть 1–2 вещи, которые делают его интересным; остальное — сантехника. Например: URL shortener — генерация коротких кодов и коллизии; Rate limiter — алгоритм и распределённые счётчики; News feed — фан-аут на запись или чтение (проблема знаменитостей); Чат — доставка в реальном времени, порядок, присутствие; Uber — геопространственное индексирование и матчинг; Платежи — идемпотентность и журнал; YouTube — пайплайн транскодинга и CDN. Одно хорошо продуманное углубление лучше десяти поверхностных блоков.
Спросите «что сломается первым?» → кэширование (укажите инвалидацию), реплики для чтения, шардирование (укажите ключ шарда), асинхронные очереди, CDN, устранение единых точек отказа. Затем завершите, назвав компромиссы, которые вы приняли, и что бы вы пересмотрели. Поднятие узких мест до того, как это сделает интервьюер, — признак senior-уровня.
Выучите их наизусть, и каждый «Design X» станет задачей сборки.
RAM ~100 нс, случайное чтение SSD ~100 мкс, round trip в том же ЦОД ~500 мкс, HDD seek ~10 мс, межконтинентальный round trip ~150 мс. Память быстрая, диск медленный, сеть тем медленнее, чем дальше — поэтому агрессивно кэшируйте и держите данные рядом с пользователями.
2^10 ≈ 1 КБ, 2^20 ≈ 1 МБ, 2^30 ≈ 1 ГБ, 2^40 ≈ 1 ТБ.
99.9% ≈ 8.7 ч простоя в год · 99.99% ≈ 52 мин · 99.999% ≈ 5 мин. Каждая девятка ~ в 10 раз сложнее — спросите, сколько вам реально нужно.
Интервью по системному дизайну — это направляемый разговор о компромиссах, а не тест с ключом ответов. Интервьюер — ваш соавтор, а не экзаменатор. Три привычки отделяют pass от fail: уточняйте и сужайте перед проектированием, позволяйте числам управлять решениями и постоянно общайтесь (никакого молчаливого рисования на доске). Освойте 8 шагов, 10 строительных блоков и несколько чисел — и «Design X» станет одним и тем же проторённым путём, применённым к новому месту назначения.
Прямо сейчас: возьмите таймер на 45 минут, выберите «Design Pastebin» и пройдите все 8 шагов вслух. Начните с уточнения требований, сделайте оценки, нарисуйте архитектуру и углубитесь в одну сложную часть. Запишите, где вы споткнулись, и повторите через день. Через три тренировки вы заметите, что действуете по фреймворку автоматически. Полное руководство с детальным разбором каждого шага, таймлайном, диаграммами и полным примером — на моём сайте.
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →