System Design Space
Граф знанийНастройки

Обновлено: 30 апреля 2026 г. в 07:40

System Design Interview: An Insider's Guide (краткий обзор)

средний

Книга Alex Xu стала почти канонической не потому, что в ней собраны «правильные решения», а потому что она очень последовательно показывает, как строить ответ на интервью по системному дизайну. Эта глава разбирает книгу как рабочий шаблон мышления, а не как набор заученных кейсов.

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

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

Практическая польза главы

Ритм разбора кейса

Закрепляет последовательность: требования, масштаб, общая схема, углубление, риски и дальнейшая эволюция.

Каркас ответа

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

Инженерные компромиссы

Держит в фокусе задержку, согласованность, стоимость и эксплуатационную сложность решения.

Перенос на другие кейсы

Даёт устойчивый формат ответа, который хорошо переносится на другие интервью-кейсы и практические разборы.

Источник

System Design Interview Review

Обзор книги Alex Xu от Александра Поломодова: первая и вторая части разбора.

Перейти на сайт

System Design Interview: An Insider's Guide (System Design. Подготовка к сложному интервью)

Авторы: Alex Xu, Sahn Lam
Издательство: Independently Published
Объём: 276 страниц

Подробный разбор книги Alex Xu: рост системы от одного сервера до больших нагрузок, грубые оценки масштаба, ограничение запросов, согласованное хеширование и проектирование хранилищ.

Оригинал
Перевод

Книга Alex Xu ценится не за набор готовых ответов, а за понятный способ думать вслух на . Она помогает сначала зафиксировать требования и масштаб, затем собрать каркас решения, а уже после этого углубляться в сложные места.

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

Структура книги

Главы 1-3
Фундаментальные принципы

Масштабирование, грубые оценки нагрузки и базовый фреймворк ответа

Главы 4-15
Практические задачи

Набор классических кейсов по проектированию систем под интервью

Глава 16
Дополнительные материалы

Источники, которые помогают уйти глубже после обзорного прохода

1. От одного сервера к миллионам пользователей

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

Ключевые темы главы

Базовая работа интернета — DNS, HTTP, IP
Базы данных — Реляционные и NoSQL-подходы
Масштабирование — Вертикальное и горизонтальное
Балансировщик нагрузки — Как распределять входящий трафик между серверами
Репликация БД — Подходы с ведущим узлом и несколькими ведущими узлами
Кэширование — Уровни кэша и стратегии
CDN — Раздача статики
Архитектуры — Сервисы с хранением состояния и без него
Датацентры — Несколько площадок ради устойчивости
Очереди сообщений — Асинхронная обработка
Мониторинг — Логи, метрики, алерты
Шардинг — Горизонтальное масштабирование БД

Резюме автора

  • Держите веб-слой без хранения состояния, если это возможно
  • Закладывайте резервирование на каждом уровне архитектуры
  • Агрессивно используйте кэш там, где это действительно снижает нагрузку
  • Поддерживайте несколько дата-центров для отказоустойчивости
  • Раздавайте статические ресурсы через сеть доставки контента
  • Масштабируйте слой данных через шардирование, когда одного узла уже недостаточно
  • Разделяйте систему на сервисы с понятной ответственностью
  • Наблюдайте за системой и автоматизируйте рутинные операции

2. Грубые оценки нагрузки

Глава о напоминает, что хороший ответ начинается не с красивой схемы, а с понимания порядка величин.

Степени двойки

Соответствие между двоичными и десятичными порядками величин: KB, MB, GB, TB и их связь с 2¹⁰, 2²⁰, 2³⁰ и 2⁴⁰.

Типичные задержки

Таблица Jeff Dean о типичных задержках помогает почувствовать разницу между доступом к памяти, сети и диску и не ошибиться на несколько порядков при проектировании.

Доступность

Расчёт доступности помогает связать проценты с реальным временем простоя: если равно 99.99%, допустимый простой составит 52.56 минуты в год.

Рекомендация

Для более свежих ориентиров по стоит посмотреть rule-of-thumb latency numbers от команды Google SRE.

3. Фреймворк прохождения интервью

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

1

Понять задачу

3-10 мин
Уточнить требования, ограничения и границы решения
2

Наметить архитектуру

10-15 мин
Показать верхнеуровневую схему и согласовать её с интервьюером
3

Углубиться в детали

10-25 мин
Разобрать 2-3 критичных компонента подробнее
4

Подвести итог

3-5 мин
Обсудить узкие места, рост нагрузки и обработку ошибок

Rate Limiter

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

Открыть кейс

4. Ограничитель запросов

Первая практическая задача книги посвящена : как ограничивать трафик так, чтобы защитить сервис и не испортить пользовательский опыт.

Базовые алгоритмы

Token Bucket

Токены добавляются с фиксированной скоростью, запросы расходуют токены

Leaky Bucket

Запросы обрабатываются с постоянной скоростью, излишек отбрасывается

Fixed Window Counter

Счетчик запросов в фиксированном временном окне

Sliding Window Log

Журнал временных меток запросов в скользящем окне

Sliding Window Counter

Комбинация фиксированного окна и журнала запросов

Мнение автора обзора

Ограничитель запросов чаще выступает не отдельной системой, а важным строительным блоком для других решений. Но при глубоком разборе тема быстро становится нетривиальной. Например, можно почитать про YARL от Яндекса, чтобы увидеть, как такие алгоритмы усложняются в промышленной эксплуатации.

5. Согласованное хеширование

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

Что это даёт на практике

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

Ключевые идеи

  • Кольцо хешей связывает пространство ключей в непрерывный цикл
  • помогают ровнее распределять ключи между физическими серверами
  • Подход используется в Cassandra, DynamoDB и других распределённых системах

6. Хранилище типа «ключ-значение»

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

Требования к системе

  • Размер пары «ключ-значение» меньше 10 KB
  • Система должна хранить очень большой объём данных
  • Высокая доступность
  • Высокая масштабируемость
  • Автоматическое расширение при росте нагрузки
  • Настраиваемая консистентность
  • Низкая задержка

CAP Theorem

  • CP — система не обслуживает часть запросов, но сохраняет консистентность
  • AP — система ослабляет консистентность ради доступности
  • Устойчивость к сетевому разделению для распределённых систем обязательна

Модели консистентности

Строгая консистентность

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

Слабая консистентность

Последующие чтения могут не видеть последние обновления.

Согласование со временем

При достаточном времени все реплики станут консистентными.

Дополнительные темы главы

  • Настраиваемая консистентность: при W + R > N можно получить более сильные гарантии чтения
  • помогают отслеживать причинность и разрешать конфликты версий
  • Обнаружение отказов через сигналы присутствия, ping и
  • выравнивает реплики после расхождений
  • SSTable & LSM Trees — структуры хранения данных

7. Генератор уникальных идентификаторов

На примере генератора идентификаторов книга показывает, как сравнивать решения не только по простоте, но и по порядку сортировки, масштабу и рискам отказа.

Требования

  • Идентификаторы должны быть уникальными
  • Допускаются только числовые значения
  • Идентификатор должен помещаться в 64 бита
  • Идентификаторы желательно упорядочивать по времени
  • Система должна выдавать более 10 000 идентификаторов в секунду

Multi-master Replication
Просто

Каждый из k серверов генерирует ID с шагом k:

  • Сервер 1: 1, k+1, 2k+1...
  • Сервер 2: 2, k+2, 2k+2...
⚠️ Идентификаторы не упорядочены по времени и плохо масштабируются при росте числа узлов

UUID
Популярно

128-битный идентификатор, который можно генерировать без координации.

123e4567-e89b-12d3-a456-426655440000
⚠️ 128 бит (не 64), не числовой, не упорядочен

Ticket Server
Централизованно

Единый сервис генерирует последовательные ID для всех.

⚠️ Единая точка отказа

Twitter Snowflake
Рекомендуется

64-битный идентификатор со структурой:

  • 1 бит — знак
  • 41 бит — временная метка в миллисекундах
  • 10 бит — идентификатор машины
  • 12 бит — порядковый номер
✓ Упорядочены по времени, компактны, масштабируемы

Итоги по первой части книги

Первые семь глав формируют рабочую базу для подготовки к интервью по системному дизайну:

Сильные стороны

  • ✓ Понятный 4-шаговый фреймворк
  • ✓ Хорошее введение в масштабирование
  • ✓ Практичные алгоритмы вроде ограничителя запросов
  • ✓ Полезные строительные блоки

На что обратить внимание

  • ⚠ Модели консистентности объясняются довольно обзорно
  • ⚠ Некоторые главы полезнее как строительные блоки, чем как самостоятельные большие кейсы
  • ⚠ Рекомендуется дополнить "Database Internals"

Разбор

System Design Interview Review — Part 2

Подробный обзор практических задач из второй части книги.

Читать обзор

Часть 2: Практические задачи (Главы 8-16)

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

URL Shortener

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

Открыть кейс

8. Сокращатель ссылок

Один из самых узнаваемых кейсов интервью: сервис вроде bit.ly или tinyurl, который должен быстро создавать короткие ссылки и надёжно обрабатывать редиректы.

Требования

  • 100 миллионов новых URL в день
  • Соотношение чтений к записям — 10:1
  • Средняя длина исходного URL — около 100 символов
  • Данные нужно хранить 10 лет

API

  • POST /api/shorten — создание короткой ссылки
  • GET /:shortUrl — редирект на длинный URL

Варианты хеширования

ПодходОписаниеОсобенности
Base62[a-zA-Z0-9]62⁷ ≈ 3.5 триллиона комбинаций
MD5/SHAХеширование с обрезкой результатаВозможны коллизии
Counter + Base62Инкрементный IDПредсказуемость

Дополнительные вопросы

  • Ограничение частоты запросов
  • Шардирование базы данных
  • Аналитика использования ссылок

Web Crawler

Кейс о краулере: очередь URL, дедупликация, бережный режим обхода и масштабирование конвейера.

Открыть кейс

9. Веб-краулер

Система для парсинга страниц в интернете — основа поисковых движков.

Требования

  • 1 миллиард страниц в месяц
  • Хранение 5 лет
  • Средний размер страницы — 500 KB
  • Только HTML (расширяемо)

Компоненты системы

Seed URLs — Стартовые URL для обхода
URL Frontier — Очередь URL для загрузки с приоритетами
HTML Downloader — Загрузка страниц
DNS Resolver — Получение IP из доменов
Content Parser — Парсинг и валидация контента
Content Seen — Проверка дубликатов
URL Extractor — Извлечение ссылок из HTML
URL Filter — Фильтрация неправильных URL

Очередь URL: приоритеты и бережный режим обхода

Prioritizer распределяет URL по очередям с разным приоритетом. Front Queue Selector поддерживает : запросы к одному домену идут последовательно и не перегружают внешний сайт.

Notification System

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

Открыть кейс

10. Система уведомлений

Система, которая ежедневно отправляет миллионы push-уведомлений, SMS и электронных писем.

10M
Push в день
1M
SMS в день
5M
Email в день

Архитектура

  • Notification API — приём заданий, аутентификация и ограничение частоты запросов
  • Очереди сообщений — отдельные очереди для iOS, Android, SMS и Email
  • Workers — обработчики очередей для каждого канала
  • 3rd Party Services — APNs, FCM, Twilio, SendGrid
  • Analytics Service — отслеживание доставки и метрик

Twitter/X

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

Открыть кейс

11. Лента новостей

Лента новостей из социальных сетей — один из базовых кейсов про смешанную нагрузку на запись и чтение.

Требования

  • 10M DAU
  • До 5000 друзей
  • Посты с текстом, фото, видео
  • Сортировка по времени

Стратегии раздачи постов

  • Push — пишем в ленты всех подписчиков
  • Pull — собираем ленту при запросе
  • Hybrid — смешанный подход для пользователей с очень большой аудиторией

Ключевые компоненты

Post Service — хранение постов
Сервис раздачи постов — распределение постов по лентам подписчиков
News Feed DB — предагрегированные ленты пользователей
Feed API — получение ленты с пагинацией

Chat System

Разбор чата в теме 3: транспорт реального времени, узлы с хранением состояния, очереди и доставка сообщений офлайн.

Открыть кейс

12. Чат

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

Способы получения данных

Polling

Периодический опрос сервера. Просто, но неэффективно.

Long Polling

Запрос держится открытым до появления данных или до наступления тайм-аута.

WebSocket ✓

Двусторонний канал. Рекомендуется для чатов.

Компоненты

  • Connection API — HTTP для аутентификации и выдачи нужного chat server
  • Chat API — WebSocket для сообщений и сигналов присутствия
  • Message Queue → Keeper Worker, Push Notification Worker
  • Heartbeat Queue → Online Presence Worker → Presence DB

Чат-серверы с хранением состояния

Серверы чата хранят активные WebSocket-соединения, поэтому они работают с сохранением состояния. Значит, нужен отдельный механизм маршрутизации сообщений на правильный узел.

Search System

Кейс поисковой системы: приём данных, индексация, извлечение контекста, ранжирование и бюджет задержки.

Открыть кейс

13. Автодополнение поиска

Система подсказок для автозаполнения в поисковой строке.

Требования

  • 10M DAU
  • 10 поисков / пользователь / день
  • Топ-5 подсказок по частотности
  • Только английский язык

Ключевая структура данных

Trie (Prefix Tree)

Позволяет эффективно искать по префиксу и хранить частотность запросов

Архитектура

  • Поисковые запросы попадают в очередь Search Queue
  • Workers обновляют префиксное дерево и поддерживают частотность запросов
  • Менеджер шардов выбирает нужный шард для обработки
  • Autocomplete API возвращает топ-5 подсказок по выбранному префиксу

Video Hosting

Практическая архитектура видеоплатформы: конвейер загрузки, транскодирование, сеть доставки контента и лента рекомендаций.

Открыть кейс

14. Видеохостинг

Видеоплатформа с акцентом на конвейер обработки видео, доставку через сеть доставки контента и рекомендации.

Ключевые аспекты

Video Transcoding Pipeline

Параллельная обработка видео в разных форматах и разрешениях

CDN Distribution

Раздача видео через глобальную сеть доставки контента

DAG Processing

Граф задач для параллельной обработки

Video Feed

Лента рекомендаций и подписок

Distributed File System

Кейс с акцентом на хранение блоков, метаданные, репликацию и восстановление после сбоев.

Открыть кейс

15. Облачное файловое хранилище

Облачное хранилище с синхронизацией файлов между устройствами.

Требования

  • 10M DAU
  • 10 GB на пользователя
  • Загрузка и скачивание файлов
  • Синхронизация между устройствами
  • Совместный доступ для нескольких пользователей

Ключевые компоненты

Block Servers — разбивают файлы на блоки для
Cloud Storage (S3-like) — хранение блоков файлов
Metadata DB — информация о файлах, версиях и правах доступа
Notification Service — уведомления об изменениях
Sync Service — управление версиями и конфликтами

16. Что читать дальше

В финальной главе автор делится источниками для дальнейшего изучения.

Рекомендации автора

Итоги по книге Alex Xu

Книга Alex Xu — сильная отправная точка для подготовки к , если использовать её как тренировочный каркас, а не как список заученных ответов.

Сильные стороны

  • ✓ Чёткий 4-шаговый фреймворк
  • ✓ 12 практических задач
  • ✓ Понятные диаграммы
  • ✓ Хорошее введение в грубые оценки нагрузки
  • ✓ Дополнительные вопросы к каждой задаче

Рекомендации

  • ⚠ Дополнить DDIA для теории
  • ⚠ Изучить Database Internals для БД
  • ⚠ Практиковаться на пробных интервью
  • ⚠ Читать инженерные блоги

Источники и дополнительные материалы

Связанные главы

Где найти книгу

Чтобы отмечать прохождение, включи трекинг в Настройки