---
title: Системный дизайн — методичка (фреймворк секции, тайминг, речевые паттерны, план подготовки)
source: подготовлено 2026-09-17, TASK-45.2; основа — статья Яндекса «Как проходят архитектурные секции собеседования» (Костя Кардаманов, habr 564132); слоты — 18.09 15:30 / 21.09 15:00 / 22.09 18:00–19:00
---

# Методичка: как проходит секция системного дизайна и как к ней готовиться

Операционный документ: как устроена секция по статье Яндекса (тем же планом интервьюер будет вести и оценивать), фреймворк ответа с таймингом на 60 минут, речевые паттерны, типовые ошибки, план подготовки под каждый из слотов и протокол тренировки. Числа и паттерны — в `knowledge-base.md`, разборы сервисов — в `classic-designs.md`. Прочитать целиком один раз, перед секцией — только §1 (тайминг), §3 (паттерны) и §7 (карточка — держать перед глазами).

---

## 1. Устройство секции: 6 этапов с таймингом

**Формат.** ~60 минут, один интервьюер. Задание — спроектировать крупную высоконагруженную систему (у Яндекса берут реальную — Яндекс Go; для нас заявленный фокус: крупноблочная схема сервиса класса инстаграм/твиттер + отказоустойчивость). Ключевая роль кандидата: **интервьюер играет вторую скрипку и берёт инициативу только в крайних случаях** — молчать и ждать вопросов нельзя, говорить и вести по плану должны мы.

**План секции** (структура и названия этапов — из статьи Яндекса; тайминг статья не задаёт, это наш бюджет под 60 минут):

| # | Этап | Раздел статьи | Что происходит | Тайминг |
|---|------|---------------|----------------|---------|
| 1 | **Требования** | «Уточнение задачи: формализация требований, оценка аудитории, порядок нагрузки» | Функциональные и нефункциональные требования: DAU/RPS, latency-SLO, доступность, консистентность, лимиты. Всё **записывать** — в конце вернёмся | 8 мин |
| 2 | **Потоки и API** | «Потоки данных, API» | Что входит/выходит, основные сущности, сигнатуры базовых методов, control plane vs data plane | 7 мин |
| 3 | **Крупноблочная схема** | «…основные блоки системы» | Из каких сервисов/компонент состоит система, кто с кем говорит, где хранится, где очередь | 5 мин |
| 4 | **Детали + БД** | «Детальная схема с компонентами и их ролями, устройство наиболее важной части, структура базы данных» | Устройство 1–2 самых важных/нагруженных блоков, схема данных (DDL или модель), синхронизация хранилищ, псевдокод ключевого алгоритма | 18 мин |
| 5 | **Ресурсы и узкие места** | «Оценка объёма необходимых вычислительных ресурсов, поиск узких мест» | Back-of-envelope: storage/RPS/bandwidth/серверы, latency numbers, где бутылочное горлышко и что с ним делать | 7 мин |
| 6 | **Эксплуатация** | «Топология сервиса, вопросы эксплуатации: балансировка, обработка отказов, мониторинг, обслуживание, работа в экстремальных условиях» | ДЦ и балансировка, сценарии отказов по каждому узлу, мониторинг/метрики, релизы и миграции, поведение при превышении нагрузки в разы | 10 мин |
| — | Доп. вопросы / вопросы кандидата | «Дополнительные вопросы» | Буфер: углубление в узкое место, трейдоффы фреймворков, вопросы кандидата | 5 мин |

**Правила тайминга:**
- Если этапов не успеваем — режем **детали и ресурсы** (свернуть до 2–3 оценок), **эксплуатацию не режем никогда**: именно она отличает senior-ответ и прямо заявлена в фокусе нашей секции (отказоустойчивость).
- Интервьюер может водить по своему порядку — этапы выше это внутренний компас, не сценарий для спора. Выбили нас из колеи — мысленно вернуться к плану: «требования → API → схема → детали → числа → эксплуатация».
- Контрольные точки (проговаривать вслух): «требования зафиксировали, перехожу к потокам», «схема рабочая, теперь детали по самому нагруженному блоку», «по ресурсам сходится, перехожу к отказам и мониторингу».

**Что оценивают** (те же критерии, по которым статья описывает план): способность формализовать требования, обоснованность выбора компонентов (свойства и гарантии, а не названия), сбалансированность сложности, умение считать нагрузку и ресурсы, продуманность отказов и эксплуатации, — и что кандидат **основной участник беседы**: ясно, аргументированно, сам.

**Взгляд в четырёх измерениях** (рамка статьи, проговаривать по ходу): система не только «здесь и сейчас» — как развивается на годы (что заменить, где узкое место), и что станет причиной отказа. Плюс **metrics first**: любое изменение системы — сначала метрика, которую улучшаем (p95, доступность, стоимость), потом схема.

---

## 2. Фреймворк ответа по этапам

Карточка на каждый этап: цель → что на доске → что проговорить. Числа и паттерны — ссылками на `knowledge-base.md` (KB).

### Этап 1. Требования (8 мин)

- **Цель:** сузить задачу и получить числа, от которых считается весь дизайн. Нехватка данных — норма: «в реальной жизни решения принимаются в условиях нехватки данных» → выдвигаем обоснованные гипотезы.
- **На доске:** отдельный угол — лист требований (не стирать до конца).
- **Вопросы:** функциональные (что делает система: пользователи, сценарии, что пропускаем) и нефункциональные: масштаб (DAU, MAU), RPS чтение/запись, latency-SLO (p95/p99), доступность (сколько девяток и на что), консистентность (что строго, что eventual), retention, лимиты/абьюз.
- **Проговарить:** «запишу требования, чтобы ничего не потерять». Пример диалога из статьи — читать так: «объём переходов?» — «500 тыс. RPS в пике»; «требования к скорости?» — «150 мс для 95 % чтений»; «согласованность?» — «новые ссылки строго, модификации — допускаем лаг в секунды».
- **Грабли:** уточнить, что НЕ строим (минус-объём экономит время: «аналитику и админку отмечаем, но не детализируем»).

### Этап 2. Потоки и API (7 мин)

- **Цель:** понять, что система обрабатывает, и зафиксировать контракт — это уточнит характеристики блоков.
- **На доске:** сущности (Link, Account, Post…), 3–5 сигнатур API (`POST /links`, `GET /{id} → 302`, `GET /stats`), разделение control plane (управление) и data plane (горячий путь).
- **Проговорить:** какой протокол и почему (HTTP/2, gRPC между сервисами), идемпотентность записей, что вернём при ошибках (429, 404).
- **Грабли:** не рисовать сигнатуры дольше пары минут — они нужны как скелет, а не как код.

### Этап 3. Крупноблочная схема (5 мин)

- **Цель:** каркас из 5–8 блоков: клиенты → балансировка → сервисы → хранилища → очереди → внешние зависимости.
- **На доске:** прямоугольники и стрелки; пометить, где control plane, где data plane, где async.
- **Проговорить:** путь самого горячего запроса от клиента до ответа целиком (для ленты: запрос → балансер → сервис ленты → кэш лент → ответ; фоновый fan-out — отдельно).
- **Грабли:** не уходить в детали до этапа 4 — тут только блоки и их роли.

### Этап 4. Детали + БД (18 мин) — главная часть

- **Цель:** показать инженерную глубину на 1–2 самых важных компонентах (выбрать по нагрузке из требований).
- **На доске:** схема данных (2–4 таблицы с ключами или модель KV), устройство горячего пути, псевдокод ключевого алгоритма (обработка запроса, fan-out, лимитер).
- **Проговорить (чек-лист выбора):**
  - Хранилище по критериям, а не по названию: «источник правды — реляционная СУБД, деньги и связи; горячее чтение не тянет SQL → read-only KV-зеркало; поиск → инвертированный индекс» (KB §3).
  - Синхронизация двух хранилищ — обязательно проговорить частичный отказ: «запись в СУБД прошла, в KV нет» → outbox/CDC или коммит после majority-подтверждения + фоновая сборка мусора; 2PC называем и объясняем, почему не берём (KB §7).
  - Консистентность по требованиям: «новые объекты — строго (read-your-writes: L1-кэш или читать с лидера), остальное — eventual с лагом в секунды» (KB §5, §7).
  - Всё, что не нужно для ответа пользователю, — асинхронно: «время доступа и счётчики накапливаем в памяти воркера, раз в минуту — в очередь, отдельный процесс пишет в БД батчами».
  - Кэш: стратегия, инвалидация, stampede (KB §4). Шардирование — только если числа показывают, что надо, и через лестницу «индексы → реплики → кэш → шарды» (KB §6).
- **Грабли:** не проектировать «всё» — детализируем горячий путь, остальное держим крупно; сложность балансируем: «если есть стандартное решение — берём его, не усложняем без необходимости».

### Этап 5. Ресурсы и узкие места (7 мин)

- **Цель:** показать, что дизайн сходится арифметически, и найти бутылочное горлышко до того, как его нашёл интервьюер.
- **На доске:** 3–4 расчёта с формулами: QPS avg/peak, storage с retention и репликами, bandwidth, число нод.
- **Проговорить:** «допущение → формула → число → вывод» (KB §2). Latency numbers — для обоснований: «round-trip внутри ДЦ 0.5 мс, поэтому три синхронных хопа в горячем пути — это уже треть бюджета 150 мс» (KB §1.2).
- **Выводы-формулы:** «это терабайты — влезает в одну ноду, узкое место не storage, а RPS на чтение → кэш/зеркало»; «egress гигабиты → CDN»; «fan-out 700k вставок/с → доставка и есть дизайн, а не пост».
- **Грабли:** не считать молча; если число «не сходится» — это не провал, а сюжет: «storage ок, но CPU на SSL — доминанта, вот как меняю дизайн».

### Этап 6. Эксплуатация (10 мин)

- **Цель:** показать production-зрелость. Заявленный фокус секции — отказоустойчивость, этот этап обязателен.
- **На доске:** топология (2–4 ДЦ, балансировка), таблица «узел → отказ → что происходит → что видим в метриках».
- **Проговорить (по каждому ключевому узлу):** «что будет, если упадёт балансировщик / нода data plane / primary СУБД / очередь?»; graceful degradation — «чем жертвуем: отдаём кэш, отключаем статику, ограничиваем лимиты»; перегрузка в разы: rate limiting, load shedding, blacklist подозрительного трафика (KB §9).
- **Мониторинг:** golden signals по классам узлов, p50/p95/p99, коды ответов с защитой от шума, SLO + error budget; логи — сэмпл/ротация/холодное хранилище, трассировка каждого k-го запроса (KB §10).
- **Релизы:** canary/rolling, миграции expand/contract, тестовый контур с дублем k-х запросов из прода.
- **Финал — вернуться к листу требований:** «проверим требования: SLO по латентности обеспечен запасом 30→10 мс, доступность чтения — N+1 по всем ярусам, лимиты — rate limiter; вот чем каждое требование контролируем метрикой». Это ключевой ход, который почти никто не делает.

### Сверка с фреймворком Alex Xu (гл. 3, TASK-45.38)

Книга даёт каркас «4 шага»; наш 6-этапный фреймворк — его детализация. Полезно знать соответствие (если интервьюер опирается на книгу):

| Alex Xu «4 шага» | Наши этапы | Что совпадает / что у нас глубже |
|---|---|---|
| 1. Понять задачу и масштаб | Этап 1 | то же: функциональные/нефункциональные, вопросы интервьюеру; у нас + явные числа-гипотезы и минус-объём |
| 2. Общее решение + согласие | Этапы 2–3 | то же: API и high-level схема до деталей; у нас + control/data plane |
| 3. Глубокое проектирование | Этапы 4–5 | то же: приоритеты интервьюера; у нас + обязательная арифметика (этап 5) |
| 4. Подведение итогов | Этап 6 | у нас шире: узкие места + мониторинг + релизы + возврат к листу требований |

Шаг 4 у Alex Xu — «поговорить об узких местах, мониторинге и что улучшить при наличии времени»; наш ход «вернуться к листу требований» — это шаг 4, выполненный сильнее стандартного. Do/don't из книги: не молчать (думать вслух), уточнять до проектирования, работать с интервьюером, а не в одиночку, скромность в оценках.

---

## 3. Чек-лист речевых паттернов

Говорить «инженерным языком секции»: гипотезы явно, трейдоффы вслух, сложность минимальная, гарантии вместо брендов.

| Паттерн | Формулировка | Зачем |
|---------|--------------|-------|
| Гипотеза при нехватке данных | «Вводных нет — выдвигаю гипотезу: DAU 100 млн, пик ×3 к среднему. Поправьте, если есть реальные цифры» | Статья: гипотезы выдвигать можно и нужно; интервьюер слышит мышление, а не ступор |
| Оценка по формуле | «Допущение: 100 млн DAU × 10 чтений/сутки → 12k QPS avg, пик ~35k. Вывод: …» | Число без формулы не оценивается; формула показывает, что это расчёт, а не догадка |
| Трейдофф | «Два варианта: A — быстрее и проще, B — строже и дороже. Наши требования — X, поэтому беру A, платим Y, компенсируем Z» | Каждое решение — с альтернативой и ценой; «взвешенно и осознанно» |
| Гарантии вместо названий | «Конкретную БД не принципиализирую: нужен in-memory KV с репликацией, ~100k RPS на ноду и лагом < 1 с — подойдут Redis/Aerospike-класс» | «Нам важнее свойства и предоставляемые системой гарантии, чем конкретное название» |
| KISS | «Не усложняю без необходимости: здесь стандартный nginx/IPVS, самописное — только то, чего нет в готовом» | «Система должна быть минимально сложной и дешёвой в разработке и эксплуатации» — прямой критерий статьи |
| Критический путь | «Это не нужно для ответа пользователю → из горячего пути убираем: накапливаем в памяти, батчами раз в минуту, отдельный процесс пишет» | Главный приём статьи (счётчики, время доступа, лимиты) — асинхронизация всего второстепенного |
| Metrics first | «Метрика, которую улучшаем: p95 редиректа ≤ 150 мс / доступность чтения 99.99 %» | Подход Яндекса; каждое изменение — от метрики |
| Управление интервью | «Требования зафиксировали — перехожу к API». «Детализировать глубже X или идём к ресурсам?». «Три минуты — перехожу к отказам, вернусь к деталям, если успеем» | Кандидат — хозяин беседы; чекпоинты держат нас в тайминге, вопрос даёт интервьюеру руль легально |
| Возврат к требованиям | «Сверимся с листом: SLO закрывает запас 30→10 мс; 4 девятки — N+1 на каждом ярусе; лимиты — rate limiter. Каждое требование контролируется метрикой …» | Кольцо секции: начали требованиями — закончили проверкой; маркер senior-ответа |

**Шаблоны трейдоффов** (источник 4, habr 516604 — «добавили элемент → решает проблему → платим ценой»; проговаривать даже когда очевидно): заготовка — «добавляем X, это решает ⟨нагрузку / объём / надёжность⟩, платим ⟨поддержкой / консистентностью / сложностью⟩». Готовые пары «даёт → платим»:

| Что добавили | Даёт | Платим |
|--------------|------|--------|
| новый компонент / больше узлов | нагрузку, скорость ответа | поддержкой и деплоем |
| шардирование | нагрузку и объём | перешардированием в будущем |
| репликацию | нагрузку и надёжность | протухшими значениями, доступность vs консистентность |
| кэш | нагрузку | протухшими значениями, cache coherency |
| своё решение | заточку под себя | его надо сперва написать |
| готовое решение | оно уже есть | в нём надо разбираться |

Быстрая самопроверка речи (после каждой тренировки по протоколу §6): слышал ли я сам от себя — ≥ 2 гипотезы, ≥ 3 трейдоффа (можно из таблицы выше), ≥ 3 числа с формулой, ≥ 1 «не усложняю», гарантии вместо брендов, явные чекпоинты, возврат к требованиям.

### Правила поведения на секции (источник 5, видео Gabbard — конспект в `materials/jackson-gabbard-ep06.md`)

Пять правил сверх таблицы паттернов; источник — интервьюер Facebook, аргументация — кейсы реальных секций (§7 его конспекта):

1. **Водительское кресло.** «You are in the driver's seat… treat it like a tech talk»: мы объясняем интервьюеру, как будет устроена система, а не ждём указаний. «И что дальше?» должен звучать от интервьюера — если тянем его от нас, это минус независимо от качества кода (кейс: панель голосовала «берём», директор зарубил: «8 лет опыта — и mindset “I don't know what's next”»). Закреплено в §1: кандидат — основной участник беседы.
2. **Funny money → рабочие числа.** Массовые круглые числа из вводной (500 млн MAU) — не для железа. Проговариваем конверсию вслух: MAU → DAU (допущение 70 %) → час пика (70 % DAU) → одновременные (÷ 3 600) → ноды (÷ ёмкость ноды). Пример из видео: 500M MAU → 350M DAU → 245M/час пика → ~68k одновременных → ~68 серверов.
3. **Ошибка ×2 — не провал.** Числа — допущения, а не психометрия: мало серверов — докупим, много — пригодится на росте; провал — ошибка в порядок и больше. Каждое число сопровождаём словом «допущение» (паттерн «гипотеза при нехватке данных» из таблицы выше).
4. **Хинт лучше ступора.** Застряли — вслух фиксируем, где мы («давай зафиксирую, где мы»), и если не сдвинулись — просим подсказку. Хинт слегка ослабляет оценку, но 5 минут молчания у доски ослабляют сильнее (ошибка №2 из §4); сильный финиш после подсказки весит больше.
5. **Незнакомое — назвать вслух.** Не убегать от незнакомых частей: коротко проходим то, что знаем хорошо, и честно помечаем края («эта часть мне знакома хуже — вот как бы её раскапывал»). Секция добывает именно сигнал о краях знаний; «это не моя специальность» = сигнал отсутствия лидерства.

Итоговая калибровка (снижает тревогу): задачу не решают полностью — она на это не рассчитана; «пришлось копать глубоко» — признак хорошо прошедшей секции, а не провала. Если успели «всё» — задача была слишком лёгкой.

---

## 4. Топ-10 ошибок кандидатов

| # | Ошибка | Как выглядит | Как избежать |
|---|--------|--------------|--------------|
| 1 | Прыгнуть в схему без требований | Рисуем коробки на 20-й секунде, потом переделываем | 5–8 минут требований — это часть ответа; если данных нет — гипотезы (§3) |
| 2 | Молчать и рисовать про себя | Долгие паузы, интервьюер вынужден тянуть | Думать вслух; кандидат — основной докладчик. Молчание > 15 с — проговорить, что сейчас делаем |
| 3 | Не записать требования и не вернуться к ним | В конце секции требования «потерялись», проверять нечего | Угол доски под требования; финальный шаг этапа 6 — сверка с листом |
| 4 | Усложнение без необходимости | Самописный лимитер-кластер с консенсусом там, где хватит снимка в СУБД | «Как бы я делал в проде?»; стандартное решение по умолчанию; сложность — только от требований |
| 5 | Названия вместо свойств | «Возьмём Cassandra» — без гарантий и критериев | Гарантии/класс → критерии → примеры-кандидаты (KB §3) |
| 6 | Решения без альтернатив | «Делаем так» — и всё | Каждое ключевое решение через трейдофф-фразу (§3); минимум 3 за секцию |
| 7 | Нет арифметики вообще или числа без вывода | «Там терабайты» — откуда? | Back-of-envelope по формуле из KB §2; ≥ 3 расчёта за секцию, вслух |
| 8 | Синхронный критический путь | Счётчик обновляется в БД на каждом запросе | Фильтр «нужно ли это для ответа пользователю?» — всё остальное асинхронно/батчами |
| 9 | Застрять в деталях, не успеть эксплуатацию | 40 минут в деталях, отказы — на бегу | Жёсткий тайминг §1; чекпоинты; эксплуатацию не режем, режем детали |
| 10 | Не рассмотреть частичные отказы хранилищ | Два хранилища, синхронизация «как-нибудь реплицируется» | Проговорить расхождение явно: outbox/majority-коммит + GC, идемпотентность потребителя (KB §7–8) |

---

## 5. План подготовки под слоты

Слоты: **пт 18.09 15:30** / **пн 21.09 15:00** / **вт 22.09 18:00–19:00**. Три варианта — по тому, какой слот берём. Приоритет тренировки: URL shortener (эталон статьи, он же вероятный формат) → лента новостей (инстаграм/твиттер — заявленный фокус) → мессенджер → медиа-хостинг.

### Порядок чтения материалов

| # | Материал | Зачем | Время |
|---|----------|-------|-------|
| 1 | Статья Яндекса (habr 564132) | Каркас секции + эталонный разбор URL shortener + словарь оценочных критериев. Читать с карандашом: отмечать 6 этапов и фразы-паттерны | 60–75 мин |
| 2 | `methodology.md` (этот документ) §1–4 | Фреймворк, речевые паттерны, ошибки | 20 мин |
| 3 | `knowledge-base.md` §1–2 + Primer Appendix (TASK-45.6) | Числа и back-of-envelope до автоматизма — это скелет этапа 5 | 45 мин |
| 4 | `classic-designs.md` §1 URL shortener (TASK-45.3) | Сборка полного разбора по 6 этапам | 30 мин |
| 5 | `knowledge-base.md` §3–11 + Primer полный гайд (TASK-45.7) | Паттерны: хранилища, кэш, шардирование, консистентность, очереди, отказы | 90 мин |
| 6 | habr 516604 «Как я научился проходить архитектурные секции» (TASK-45.8) | Взгляд проходца: чек-листы, психология | 30 мин |
| 7 | Видео Gabbard (TASK-45.9) | Калибровка ожиданий + правила поведения (§3, «водительское кресло», хинты); конспект — `materials/jackson-gabbard-ep06.md` | 40 мин |
| 8 | DDIA по карте KB §12 (TASK-45.10) | Глубина для раундов 2–3 и последующих секций | по 1–2 гл/день |

DDIA — **не читать подряд перед секцией**: только по карте (KB §12): до первой секции гл. 1, 3, 5, 6; между 18.09 и 21.09 — гл. 7–9; перед 22.09 — гл. 11. Если секция 18.09 — DDIA не трогаем вовсе, время дороже. Нумерация — по 1-му изд. (рус. перевод); для 2-го издания — сдвиг на +1 (гл. 6–10 ядро), соответствие — `materials/ddia-map.md` §0, полный текст 2-го издания с выжимками — `materials/ddia-2ed/` (TASK-45.39): выжимки глав 6–10 удобно читать как «конспект за 5 минут» вместо перечитывания глав.

**Дополнение (TASK-45.12):** в треке появилась подборка learn-system-design — полный индекс и приоритеты в `materials/learn-system-design-index.md` (задачи 45.11–45.37). Встраивание в план: в вариант А — карточка-памятка §7 этого документа (15 мин вечером, она же перед глазами на секции; источник — TASK-45.22) и шпаргалка vasanthk 45.23 (15 мин), и проход KB §13 (5 мин); в Б — плюс статья Поломодова 45.20 (60 мин), одно видео мока karpov.courses 45.26 (40 мин; конспект с топ-3 разборами — `materials/lsd-karpov-mocks.md`), числа 45.25 (10 мин); в В — плюс видео Поломодова/Тинькофф 45.27 (60 мин), habr 655663 45.21 (45 мин), визуальный повтор system-design-101 45.15 по слабым местам. Каты 45.29 (§6.5): в вариантах Б/В — один раунд по кате №1 или №2 накануне слота (стресс-тест незнакомого брифа). Учебники и подписки (45.11, 45.13–45.19, 45.30–45.37) — только после секций.

### Вариант А — «Завтра» (слот пт 18.09 15:30), интенсив ~4 ч

- **Чт 17.09 вечер (2.5–3 ч):**
  1. Статья Яндекса целиком (60–75 мин) — конспективно: 6 этапов, фразы, разбор URL shortener.
  2. Этот документ §1–4 (20 мин).
  3. KB §1–2: числа и back-of-envelope — 3 примера из §2.2–2.4 прогнать вслух с формулами (45 мин).
  4. Одна тренировка у доски: URL shortener по протоколу §6 (60 мин) + self-review по рубрике (10 мин).
- **Пт 18.09 утро (30–40 мин):** шпаргалка KB §11 + чек-лист паттернов §3 этого документа; легкий прогон примера ленты (KB §2.3). **После 12:00 ничего нового не читать.**
- **Важно:** 18.09 — рабочий формат «с листа»: цель — не знать всё, а провести секцию по фреймворку без пауз. URL shortener, прогнанный вслух по 6 этапам, покрывает 80 % успеха.

### Вариант Б — «Понедельник» (слот пн 21.09 15:00), ~8 ч на 4 дня

- **Чт 17.09 вечер:** пункты 1–3 из варианта А (≈2.5 ч).
- **Пт–сб:** KB §3–11 / Primer гайд (90 мин); habr 516604 (30 мин); DDIA гл. 1, 3 (по 45–60 мин); тренировка 1: URL shortener.
- **Вс:** DDIA гл. 5, 6; classic-designs §2 лента; тренировка 2: лента новостей (60 мин) + self-review.
- **Пн до 12:00:** шпаргалки, чек-лист §3, спринт 20 мин у доски (крупноблочная схема ленты с нуля). Дальше — пауза, к 15:00 прийти свежим.

### Вариант В — «Вторник» (слот вт 22.09 18:00/19:00), полный курс ~12 ч

- **Чт–пт:** как в Б (пункты 1–3 + KB §3–11 + habr 516604); тренировка 1: URL shortener.
- **Сб–вс:** видео Gabbard (40 мин); DDIA гл. 5–6, затем 7; classic-designs: мессенджер; тренировки 2–3: лента, мессенджер.
- **Пн:** DDIA гл. 8–9 (конспект по KB §12); **mock-сессия с ассистентом 60 мин + разбор** (§6.3).
- **Вт:** DDIA гл. 11 (потоковая обработка — прямо ложится на вопросы про очереди); лёгкий спринт у доски; к 18:00 — свежим, перед секцией только шпаргалки.

Во всех вариантах: последняя полная тренировка — не позднее чем за 3 часа до секции; записи тренировок — в `training/` рядом с этим файлом (по образцу `../algo-exam/`).

---

## 6. Протокол само-тренировки

### 6.1 Формат раунда

1. **Место:** настоящая доска или большой лист (статья прямо советует: «большой лист бумаги или маркерную доску»). Телефон — на запись голоса: проговаривать вслух, как на секции, иначе тренировка не засчитывается.
2. **Билет:** один сервис из `classic-designs.md` (URL shortener, лента, мессенджер, медиа-хостинг). Порядок — случайный; повтор — по слабым местам прошлых раундов.
3. **Таймер 60 минут** (при нехватке времени — спринт 40: те же этапы, детали и ресурсы свёрнуты). Клацнул старт — дальше как на секции.
4. **Доска фотографируется**, голосовая запись сохраняется — до разбора не пересматривать (как в algo-exam: разбор только в конце раунда).
5. **Self-review сразу после раунда** (10 мин): рубрика ниже + чек-лист. Затем сверить с эталоном из `classic-designs.md` и записать 3 улучшения.

### 6.2 Рубрика self-review (0–3 за каждый из 6 этапов, максимум 18)

| Балл | Значение |
|------|----------|
| 3 | Этап закрыт полностью: трейдоффы проговорены, числа с формулами, гарантии вместо названий |
| 2 | Этап закрыт частично: есть схема/решения, но без альтернатив, чисел или последствий отказов |
| 1 | Поверхностно: названо, не обосновано |
| 0 | Пропущен (типично: эксплуатация — см. ошибку №9) |

**Порог готовности к слоту:** сумма ≥ 13/18, этап 6 (эксплуатация) ≥ 2, тайминг соблюдён ±3 мин. Ниже порога — повтор раунда по тому же сервису на следующий день: цель повторного раунда — не вспомнить разбор, а удержать тайминг и паттерны речи.

**Чек-лист после раунда (да/нет):** требования записаны и не стёрты? ≥ 3 расчёта вслух с формулами? каждый ключевой узел получил сценарий отказа? эксплуатация уложилась в 10 минут? финальный возврат к требованиям прозвучал? паттерны §3 — минимум по одному разу?

### 6.3 Mock-сессия с ассистентом

Для раундов 2–3 и перед слотами 21–22.09 предлагаю **mock-сессию со мной**: я играю интервьюера по протоколу статьи —
- выдаю билет (сервис + масштаб), отвечаю на уточняющие вопросы нейтрально и в стиле статьи («500 тыс. RPS в пике», «четыре девятки на чтение»), на трейдоффы не реагирую;
- слежу за таймингом молча, могу один раз напомнить «время»;
- в конце — разбор по 6 этапам с баллами рубрики, список слабых мест и 3 конкретных улучшения к следующему раунду. Фидбек только после завершения раунда (правило как в `../algo-exam/README.md`).

Запуск: сказать «давай mock по системному дизайну» и указать сервис или «случайный».

### 6.4. Внешние мок-сессии: Pramp → Aced (Exponent Practice)

Материал 24 (TASK-45.28, проверено 17.09.2026). **Pramp как отдельная платформа больше не существует:** с июля 2024 все сессии проводятся на Exponent Practice — сайт переименован в Aced, pramp.com остался витриной-редиректом на `tryexponent.com/practice`. Старые аккаунты Pramp привязываются к Aced, для новых — обычная регистрация.

**Формат сессии** (по FAQ платформы):
- живое видео 1:1 на сайте; партнёр подбирается автоматически (расписание, роль, уровень опыта, история сессий) — выбирать нельзя, но есть режим «practice with a friend»;
- ~60 минут: **30 мин в роли кандидата + 30 мин в роли интервьюера**, роли случайны, переключение в середине; комната доступна до 2 ч;
- для System Design код-редактора нет (он только для DSA/SQL/Frontend): вопросы предлагаются из базы реальных FAANG-вопросов до и во время сессии, **можно принести свой**;
- после сессии — взаимный фидбек по рубрике; AI-оценка транскрипта — платная фича, не нужна;
- peer-практика бесплатна: у free-аккаунта ежемесячные кредиты, на наши 1–2 сессии хватает.

**Сетка SD-слотов** — ежедневно в 02:00, 08:00, 12:00, 18:00 PT (сентябрь: PDT = UTC−7, МСК = PT + 10) → **12:00, 18:00, 22:00, 04:00(+1) МСК**. Удобные для нас: 18:00 и 22:00 МСК. Зайти в комнату можно за 10 мин до старта; если пара не собралась — сессия отменяется, кредит возвращается.

**Оценка под нашу задачу:**

| За | Против |
|---|---|
| Живой незнакомый человек: стресс, темп, «думать вслух под взглядом» — то, чего не даёт ни доска, ни мок с ассистентом | Только английский; секция будет на русском |
| Роль интервьюера: чужой ответ со стороны — калибрует, что выглядит сильным, а что слабым | Партнёр — такой же кандидат, не интервьюер Яндекса: рубрика и пул вопросов не яндекс-формат |
| Вопрос из FAANG-пула + можно принести свою тему (news feed — наш фокус) | Матч не гарантирован, сетка жёсткая — бронировать заранее |
| Английская SD-лексика — прямо работает на зарубежный трек (GitLab, Pennylane, Cleo) | Кандидатских минут всего 30 из 60: половина сессии уходит на интервьюирование партнёра (тоже полезно, но считать в бюджете) |

**Рекомендация:** это **дополнение к §6.3, а не замена**. Мок с ассистентом калибрует под яндекс-формат (6 этапов, рубрика, русский), Aced добавляет то, чего дома нет, — незнакомца и живой темп. Для зарубежного трека — обязательный инструмент и после этой секции.

**План сессий** (по слоту этапа 2):

| Слот | Сессии Aced | Примечание |
|---|---|---|
| А — пт 18.09 15:30 | пропускаем | поздно регистрироваться и рисковать вечером перед секцией; максимум — присоединиться к сегодняшней 22:00 МСК при запасе сил |
| Б — пн 21.09 15:00 | 1 сессия: **сб 19.09 22:00 МСК** | при несобравшемся матче — повтор вс 20.09 22:00; регистрация до утра субботы |
| В — вт 22.09 18:00 | 2 сессии: **вс 20.09 22:00 + пн 21.09 18:00 МСК** | вторая — за сутки до секции; после неё только шпаргалки |

**Как проводить сессию:**
- в роли кандидата: попросить тему из наших приоритетов («news feed / Instagram-like», запасная — URL shortener); идти по тому же кольцу §1 с таймингом вдвое короче — требования 5 → API/схема 8 → детали 9 → числа и отказы 8; паттерны §3 те же;
- в роли интервьюера: дать партнёру его вопрос из базы, наблюдать и фиксировать, что сам искал бы в ответе; фидбек — конкретный, по-честному;
- после: 10 мин self-review по чек-листу §6.2 (переносимое: паттерны речи, ≥ 3 числа с формулой, трейдоффы) + 3 улучшения записать в `training/`.

**Регистрация (действие пользователя, ~5 мин):** `tryexponent.com/practice` → Sign up (Google или email) → Schedule practice session → тип System Design, дата/время (18:00 или 22:00 МСК), уровень → подтверждение и напоминания на email → за 10 мин до старта вернуться на страницу Practice → Join. Десктоп (мобильные не поддержаны), Chrome/Firefox/Edge, разрешить камеру и микрофон; видео — P2P WebRTC, нужен стабильный канал; при недоступности сайта из РФ — VPN.

### 6.5. Архитектурные каты: раунд по незнакомому брифу

Материал 25 (TASK-45.29, проверено 18.09.2026). **Architectural Katas** — банк упражнений «спроектируй систему по брифу заказчика»: [architecturalkatas.com](https://www.architecturalkatas.com/) (Ted Neward, 38 кат) и [nealford.com/katas](https://nealford.com/katas/) (Neal Ford, 20 кат). Ката — это бриф без эталона и без подсказок: ближайший к реальной секции формат тренировки, потому что на интервью тоже дают незнакомый бриф. Полный разбор сборников, тексты кат и резерв — `materials/architectural-katas.md`.

**Выбранные каты** (критерий: веб-масштаб с числами + не пересекаются с эталонами `classic-designs.md`):

| # | Ката | Домен | Что давит | Когда брать |
|---|---|---|---|---|
| 1 | **Concert Comparison** | продажа билетов на концерты | burst до 10 000 RPS, «не продать место дважды», эластичность; контекст сам требует сравнить Space-Based vs Microservices с трейдоффами | основная; первая |
| 2 | **I Can Haz Cheezborger?** | UGC-платформа интернет-трендов | read-heavy ~1000:1 (миллионы читателей), CDN/кэш, асинхронная модерация, аналитика | вторая |
| 3 | **Going, Going, Gone!** | аукционы online + live, real-time | порядок ставок (linearizability), fan-out пуша, видео, платежи, аудит после иска о мошенничестве | третья, самая сложная |

Резерв (в `materials/architectural-katas.md` §4): Gird The Grid (четыре девятки, телеметрия), Who's Your Daddy? (граф), Make the Grade (batch/очереди).

**Протокол раунда по кате** — тот же §6.1, отличия три:
1. **Билет = текст каты** (EN, читается в первые 2 минуты раунда и остаётся перед глазами). Брифы — в `materials/architectural-katas.md` §3, перепечатывать не надо.
2. **Масштаб не полный** — это фича, не баг: недостающие числа фиксируются как допущения на этапе 1 и записываются в угол доски вместе с требованиями («допустим, 5% мест возвращаются в продажу…»). В моке с ассистентом (§6.3) вопросы задаются ему — он играет модератора-заказчика, как в правилах оригинала.
3. **Эталона нет** — self-review §6.2 идёт по чек-листу этапов и KB-паттернам: какие разделы брифа ката покрыла, где числа с формулами, где трейдоффы; сверка с `classic-designs.md` — только по переносимым паттернам (например, fan-out из ленты — в пуш ставок аукциона).

**Место в подготовке:** ката — стресс-тест после эталонов, не вместо них. Порядок: 1–2 раунда по `classic-designs.md` (каркас ответа + есть с чем сверять) → 1 раунд по кате №1 или №2 **накануне слота**. Ката №3 — если останется время в варианте В (вт 22.09) или после секции. Правило оригинала «any technology is fair game — just be prepared to defend its use» — буквально наш §3: любой выбор технологий, но каждый defended.

---

## 7. Карточка-памятка на секцию

Адаптация шаблона LeetCode 229177 («My System Design Template», конспект — `materials/lsd-leetcode-template.md`) под 6 этапов Яндекса: позвоночник — этапы §1, начинка — чек-листы шаблона. Назначение — не учить новое, а **собирать изученное перед глазами**: открыть рядом на секции и на каждой тренировке, идти по пунктам сверху вниз. Фразы курсивом — говорить вслух как есть. Расшифровки — §2 этого документа, числа — KB.

**Перед стартом:** угол доски — лист требований (не стирать до конца); таймер; руль у нас — «и что дальше?» должно звучать от интервьюера.

### Этап 1. Требования — 8 мин

- [ ] Use cases, 3–5 сценариев + что НЕ строим (аналитику/админку отметили — не детализируем)
- [ ] Кто и сколько: DAU, паттерны использования (вечерние пики? read-heavy?)
- [ ] Грубые числа: RPS чтение/запись, read/write ratio (KB §2.1)
- [ ] SLO: латентность p95/p99, доступность — сколько девяток и на что
- [ ] CAP-декларация: «консистентность — строгая для X, eventual для Y; доступность — репликация и failover»
- [ ] *«Запишу требования в угол доски, к ним вернёмся в конце»*

### Этап 2. Потоки и API — 7 мин

- [ ] Сущности + 3–5 сигнатур API (read- и write-сценарии)
- [ ] Control plane vs data plane — горячий путь отдельно
- [ ] Протокол (HTTP/gRPC), идемпотентность записи, коды ошибок
- [ ] *«API — скелет, не код: две минуты — и к схеме»*

### Этап 3. Крупноблочная схема — 5 мин

- [ ] 5–8 блоков: DNS → LB → шлюз/сервисы → кэш → БД → очереди
- [ ] Путь горячего запроса чтения и записи — каждый целиком, отдельно
- [ ] Базовый алгоритм одной строкой (fan-out on write / on read, …)
- [ ] *«Схема рабочая — перехожу к деталям самого нагруженного блока»*

### Этап 4. Детали + БД — 18 мин

Детализируем 1–2 блока по узкому месту из требований; по каждой компоненте — A/C/S-история (доступность, консистентность, масштаб). Чек-лист меню (что прогнать мысленно):

- [ ] БД по гарантиям, не по названию (KB §3); мнемоника шаблона: RAM-bounded → Redis/Memcached; AP → Cassandra-класс; CP → HBase/MongoDB
- [ ] Лестница масштабирования: индексы → реплики → кэш → шарды (KB §5–6); RDBMS-приёмы: master-slave/master-master, federation, шардирование, денормализация
- [ ] Кэш: паттерн (aside/through/behind) + вытеснение (LRU) + защита от stampede; слои: application → database (дефолт СУБД) → in-memory (KB §4)
- [ ] Асинхронность: всё не нужное для ответа — очереди, батчи, back pressure (KB §8)
- [ ] Периферия меню: DNS, CDN (push/pull), LB (L4/L7; реализация: software — дефолт, smart client, hardware), reverse proxy, service discovery — называем, если ложится на нагрузку
- [ ] Трейдофф на каждое решение: *«два варианта: A проще, B строже; беру A, платим Y, компенсирую Z»*

### Этап 5. Ресурсы и узкие места — 7 мин

- [ ] QPS avg/peak; storage с retention и репликами; bandwidth; RAM под кэш; ноды (KB §2)
- [ ] Послойный justify: throughput каждого слоя + латентность между слоями → бюджет против SLO («три синхронных хопа × 0.5 мс внутри ДЦ — треть бюджета 150 мс»)
- [ ] Узкое место раньше интервьюера: «storage ок — горло в read-RPS → кэш/зеркало»
- [ ] *«Допущение → формула → число → вывод»*

### Этап 6. Эксплуатация — 10 мин (в шаблоне отсутствует — наше добавление)

- [ ] Топология: 2–4 ДЦ, балансировка; по каждому узлу: упал → что происходит → что в метриках
- [ ] Перегрузка в разы: rate limiting, load shedding, graceful degradation (KB §9)
- [ ] Мониторинг: golden signals, SLO + error budget; релизы: canary, expand/contract (KB §10)
- [ ] Security одним блоком: authn/z, лимиты, абьюз (KB §13.7)
- [ ] Финал: возврат к листу требований — каждое закрыто метрикой. *«Сверимся: SLO обеспечен запасом …, доступность — N+1, лимиты — rate limiter»*

**Самопроверка после секции/тренировки:** ≥ 2 гипотезы, ≥ 3 трейдоффа, ≥ 3 числа с формулой, гарантии вместо брендов, чекпоинты прозвучали, возврат к требованиям состоялся (критерии — §3, §6.2).

**Что печатать на секцию** (решение по материалам 18–19, TASK-45.22/45.23; конспекты `materials/lsd-leetcode-template.md`, `materials/lsd-cheatsheet-vasanthk.md`): **один лист А4 с двух сторон** — лицевая: эта карточка §7 (позвоночник 6 этапов + чек-листы), оборот: KB §1.2 (латентность) + KB §11 (мини-шпаргалка «что назвать»). Vasanthk-шпаргалку и LeetCode-шаблон целиком не печатать: их шаги дублируют §1/§7, фронтенд-разделы не про нашу секцию, уникальное (кэш по слоям, типы LB) уже внесено в чек-лист этапа 4. Смысл листа тот же, что у шпаргалок: не учить, а собирать изученное перед глазами.

---

## Связанные документы

- `knowledge-base.md` — числа, back-of-envelope, хранилища, паттерны, карта DDIA (TASK-45.1)
- `classic-designs.md` — эталонные разборы: URL shortener (по статье), лента, мессенджер, медиа-хостинг (TASK-45.3)
- `../interview-materials.md` — карта материалов по вакансии
- `../algo-exam/README.md` — протокол экзаменации по алгоритмам (этап 1; рубрика и правила раунда адаптированы отсюда)
- Pramp → Aced (Exponent Practice) — внешние peer-моки на английском: оценка формата и план сессий — §6.4 (TASK-45.28)
- Architectural Katas — банк незнакомых брифов для раундов на доске: выбор кат и протокол — §6.5, полный разбор — `materials/architectural-katas.md` (TASK-45.29)
- Источник: К. Кардаманов, «Как проходят архитектурные секции собеседования в Яндексе» — habr 564132 (конспект в `materials/`, TASK-45.5)
