Учебник System Design Interview для начинающих
Этот курс — не про теорию распределённых систем вообще, а про то, как пройти system design собеседование: как за 40–50 минут у доски структурировать ответ, собрать требования, прикинуть масштаб на салфетке, спроектировать API и схему данных, выбрать БД и кэш, обсудить узкие места. Внутри — пошаговый фреймворк ответа, шпаргалки по нагрузке и компонентам, а также разборы классических задач (сократитель ссылок, лента, мессенджер, хранилище фото). Курс для тех, кто готовится к собеседованиям на middle/senior backend, но боится открытого вопроса «спроектируйте Twitter».
Курс «System Design Interview» состоит из 7 разделов и 22 уроков: Как устроено system design интервью, Требования и оценка масштаба, API и данные, Масштабирование: кэш, балансировка, репликация, Согласованность, очереди и доставка контента, Разбор классических задач и Финал: ошибки и чек-лист. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Как устроено system design интервью
- Что такое system design интервью и зачем оно
Формат system design собеседования: открытая задача без единственного ответа, 40–50 минут, диалог с интервьюером. Чем оно отличается от алгоритмического.
- Чего на самом деле ждёт интервьюер
Скрытый чек-лист интервьюера: структура, компромиссы, оценка масштаба, узкие места. Сигналы senior-уровня и красные флаги на system design.
- Фреймворк ответа: 7 шагов у доски
Универсальный каркас ответа на system design: требования, оценка масштаба, API, данные, высокоуровневая схема, детализация, узкие места.
- Что такое system design интервью и зачем оно
2 Требования и оценка масштаба
- Сбор требований: функциональные и нефункциональные
Как собирать требования на system design: функциональные (что система делает) и нефункциональные (масштаб, латентность, доступность, согласованность).
- Оценка нагрузки на салфетке: QPS
Как прикинуть QPS на собеседовании: из DAU и числа действий вывести средний и пиковый RPS, понять, читающая или пишущая нагрузка.
- Оценка хранилища и пропускной способности
Прикидка объёма хранилища и сетевого трафика на system design: байты на запись, рост за год, ширина канала из QPS и размера ответа.
- Сбор требований: функциональные и нефункциональные
3 API и данные
- Дизайн API: контракты эндпоинтов
Как проектировать API на собеседовании: ключевые эндпоинты, методы, тело запроса и ответа, пагинация, идемпотентность.
- Выбор БД: SQL против NoSQL
Как выбрать базу данных на system design: SQL против NoSQL, когда нужны транзакции и JOIN, а когда масштаб и гибкая схема.
- Моделирование данных и индексы
Как набросать модель данных на собеседовании: сущности и связи, ключи, индексы под запросы, нормализация против денормализации.
- Дизайн API: контракты эндпоинтов
4 Масштабирование: кэш, балансировка, репликация
- Кэширование: паттерны и инвалидация
Кэширование на system design: cache-aside, write-through, write-back, TTL и инвалидация, проблема холодного старта и stampede, Redis.
- Балансировка нагрузки и горизонтальное масштабирование
Балансировка нагрузки и горизонтальное масштабирование: алгоритмы (round-robin, least connections), stateless-сервисы, вертикальное против горизонтального.
- Репликация и шардирование БД
Репликация и шардирование баз данных: master-replica для чтений, отставание реплики, шардирование по ключу, hotspot и ребалансировка.
- Кэширование: паттерны и инвалидация
5 Согласованность, очереди и доставка контента
- Теорема CAP и уровни согласованности
Теорема CAP простыми словами: согласованность, доступность, устойчивость к разделению. CP против AP, сильная и итоговая согласованность.
- Очереди сообщений и асинхронность
Очереди сообщений на system design: развязка сервисов, сглаживание пиков, асинхронная обработка, at-least-once, идемпотентность, Kafka и RabbitMQ.
- CDN и хранение файлов
CDN и объектное хранилище на system design: раздача статики у границы сети, кэширование, presigned URL, прямая загрузка в S3.
- Rate limiting: защита от перегрузки
Rate limiting на system design: токен-бакет, скользящее окно, защита от злоупотреблений, распределённый лимитер на Redis, заголовки 429.
- Теорема CAP и уровни согласованности
6 Разбор классических задач
- Сократитель ссылок (TinyURL)
Разбор задачи TinyURL на собеседовании: генерация короткого кода, редирект, кэш горячих ссылок, оценка масштаба, выбор хранилища.
- Новостная лента
Разбор новостной ленты на собеседовании: fan-out on write против fan-out on read, проблема знаменитостей, кэш ленты, ранжирование.
- Мессенджер и онлайн-чат
Разбор мессенджера на собеседовании: WebSocket-соединения, доставка и порядок сообщений, статусы доставлено/прочитано, presence, хранение истории.
- Загрузка и хранилище фотографий
Разбор фотосервиса на собеседовании: прямая загрузка в S3, асинхронная обработка превью, метаданные в БД, раздача через CDN, масштаб трафика.
- Сократитель ссылок (TinyURL)
7 Финал: ошибки и чек-лист
- Типичные ошибки кандидата
Главные ошибки на system design собеседовании: проектирование без требований, технологии без обоснования, потеря времени, молчание, спор с интервьюером.
- Финальный чек-лист и репетиция
Финальный чек-лист system design собеседования: пройти по 7 шагам, обосновать компоненты, назвать узкие места. Как репетировать вслух по таймеру.
- Типичные ошибки кандидата