System Design: проектирование масштабируемых систем
Научитесь проектировать нагруженные системы и обосновывать решения расчётом, на собеседовании и в работе. Вы оцениваете нагрузку и ёмкость, проверяете индексы, кэш и очереди на живых PostgreSQL, Redis и Kafka и смотрите, совпал ли расчёт с замером. Стенды открываются в браузере, ставить ничего не нужно. Курс для бэкенд-разработчиков от junior+ до senior.
Чему вы научитесь
- Оценка нагрузки: переводить DAU и сценарии в запросы в секунду, объём данных и трафик, считать пик и запас ёмкости до запуска.
- Ответ на собеседовании: каркас «требования → оценки → схема → узкие места → компромиссы», с которым можно идти по любой задаче.
- Хранение данных: выбирать ключи и индексы по плану запроса и понимать, когда хватит одной PostgreSQL, а когда нужны реплики, партиции или шарды.
- Кэширование: cache-aside, TTL, инвалидация и защита от лавины запросов (cache stampede). Пользу кэша проверяете по доле попаданий.
- События на Kafka: партиции и consumer groups, порядок сообщений, повторы и идемпотентная обработка.
- Устойчивость к отказам: таймауты, повторные запросы со случайной задержкой, circuit breaker, лимиты и отключение функций по приоритету.
- Надёжность в цифрах: SLI на PromQL, SLO, бюджет ошибок и алерты по скорости его расхода.
- Разбор инцидентов: находить причину деградации по метрикам и логам, подтверждать её данными и писать постмортем.
Стенды прямо в браузере
В 74 уроках из 85 есть лабораторная с автопроверкой, 39 из них идут на живых PostgreSQL, Redis, Kafka, nginx и Prometheus. Docker и локальное окружение не понадобятся: стенд открывается в браузере, вы меняете конфигурацию, а проверка прогоняет запросы и показывает результат.

**PostgreSQL.** Запускаете запрос, читаете EXPLAIN и подбираете индекс под узкое место. В разборе урока тот же запрос на 400 000 строк ускоряется с 8,9 до 0,05 миллисекунды.
**Redis.** По доле попаданий (hit rate) видно, когда кэш помогает, а когда вытеснение и устаревшие данные сами становятся проблемой.
**Kafka.** Раскладываете поток по партициям, настраиваете consumer groups и проверяете, что порядок сообщений сохраняется.
**nginx.** Таймауты, лимиты соединений, health check. Стенд прогоняет запросы через ненастроенный балансировщик и через ваш конфиг и сравнивает результат.
**Prometheus.** Описываете SLI, считаете бюджет ошибок и настраиваете на него алерты. Лабораторная на живом Prometheus есть уже в бесплатных уроках.
Как проходит обучение
Каждая тема строится вокруг задачи с числами: расчёт, решение и проверка на живом стенде, в симуляторе нагрузки или автопроверкой расчёта. Например, чтобы масштабировать сервис, вы оцениваете нагрузку и объём данных, выбираете архитектуру, запускаете прогон и сравниваете расчёт с замером.
В последних модулях те же приёмы применяются к ленте новостей, такси и геосервису, платежам, чату и поиску. Так их потом можно перенести на систему, которой в курсе не было.
Итоговый проект и экзамен
**Итоговый проект «От ТЗ до вердикта».** Вы получаете техническое задание с числами и проходите весь путь: оценка нагрузки, контракт API, план шардирования, SLO, настройка кэша, очереди и балансировщика. Промежуточный прогон в симуляторе проверяет ёмкость, кэш и шардирование. Полный прогон нагрузки выносит вердикт по потерям, p99 и стоимости, после него вы дорабатываете решение и разбираете компромиссы.

**Экзамен: расследование инцидента.** Что сломалось, заранее не говорят. У вас есть журнал событий и дамп метрик, а причиной может быть перекос партиции, лавина кэша или исчерпанный пул соединений. Нужно поставить диагноз, подтвердить его данными, посчитать ущерб и написать постмортем.
Вопросы по курсу можно задать поддержке: t.me/mentorix_support
Для кого этот курс
Бэкенд-разработчикам, которые хотят системно разобраться в архитектуре.
Тем, кто готовится к собеседованию по System Design или уже путался на вопросах про нагрузку и масштабирование.
Тем, кому поручили спроектировать сервис, и решение придётся объяснять команде.
Тем, кто знает паттерны по статьям, но ни разу не проверял их на живой базе и очереди.
Что нужно знать
Опыт бэкенд-разработки: HTTP и API, реляционная база данных.
Базовый SQL и командная строка. Планы запросов и индексы разбираются с нуля.
Язык программирования любой: задачи на код принимаются на Go, Python, Java, JavaScript, Rust, C и C++.
Знать System Design заранее не нужно.
Программа курса
Модулей: 14, уроков: 85. Задачи с кодом проверяются автоматически.
Измеримый System Design
- Первая прикидка: от DAU до QPS за 5 минут
- Зачем измерять, а не спорить
- SLI, SLO, SLA: язык измеримых решений
- Каркас интервью: требования → оценки → схема → узкие места → компромиссы
- Инструменты курса: калькулятор, симулятор, живые стенды
- Мини-кейс: первая оценка и первое решение
Оценка ёмкости и нагрузки
- QPS и профиль нагрузки: пик и среднее
- Закон Литтла: пул, очередь, задержка
- Оценка хранилища и роста данных
- Пропускная способность канала и сериализация
- Число шардов и партиций по формуле
- Бюджет ошибок и запас на рост
Требования и контракты
- Требования, которые можно измерить: FR и NFR
- Идемпотентность и контракт повторов
- Идемпотентность и семантика повторов: окна и порядок
- Версионирование и обратная совместимость
- SLO-спека как контракт с потребителем
- Ревью контракта: чек-лист вместо мнения
Хранение данных и индексы
- Модель данных и выбор ключа
- Индексы Postgres и план запроса EXPLAIN
- Составные и покрывающие индексы
- Партиционирование таблиц
- Стоимость записи vs стоимость чтения
- Живой стенд: индекс до/после на postgres:16-alpine
Репликация и консистентность
- CAP и что реально выбирают на практике
- Репликация: лидер, реплики, лаг
- Уровни консистентности и кворумы
- Read-replica и раздвоение нагрузки
- Отказ лидера: failover и его цена
- Живой стенд: репликация Postgres, измерение лага
Шардирование и масштабирование данных
- Стратегии шардирования: диапазон, хэш, справочник
- Горячий ключ: как найти и как измерить
- План шардирования как артефакт
- Ресардинг без простоя
- Кросс-шардовые запросы и их цена
- Практика: расчёт числа шардов и проверка плана
Кэширование
- Критерии эффективности кэширования: решаем, применим ли кэш вообще
- Паттерны: cache-aside, write-through, write-behind
- Инвалидация: самая частая причина багов
- TTL, вытеснение и hit rate
- Кэш и горячие ключи: защита от лавины
- Живой стенд: redis:7-alpine, измерение hit rate до/после
Очереди и потоковая обработка
- Очередь vs топик: разная семантика
- Партиции и порядок сообщений
- Consumer group и распределение нагрузки
- Backpressure: когда продюсер быстрее консьюмера
- Offset-менеджмент и идемпотентная дедупликация консьюмера
- Живой стенд: apache/kafka:3.7.0, партиции, группы и порядок
Балансировка нагрузки и сети
- Алгоритмы балансировки и их компромиссы
- Лимиты соединений и таймауты
- Ретраи на границе сети: где джиттер обязателен
- Health check и вывод узла из ротации
- L4 vs L7: что измеримо по-разному
- Живой стенд: nginx, лимиты и таймауты до/после
Надёжность: отказоустойчивость
- Каскадные отказы: как они начинаются
- Circuit breaker: состояния и пороги
- Таймауты, ретраи, джиттер вместе
- Graceful degradation и деградация по приоритету
- Симулятор нагрузки: трасса, параметры архитектуры, вердикт по p99
- Практика: подбор параметров под SLO в симуляторе
Наблюдаемость и SLO
- Метрики: что считать и как агрегировать
- PromQL для SLI: латентность, ошибки, насыщение
- Error budget: политика и её последствия
- Алерты по симптому, а не по причине
- Дашборд как артефакт для решения
- Живой стенд: prom/prometheus, расчёт SLO по метрикам
Инциденты: расследование по метрикам
- Первые минуты: метрики проверяют архитектурную гипотезу
- Логи и метрики вместе: подтверждаем, где именно сломалась архитектура
- Расчёт ущерба и приоритет починки: цена архитектурного компромисса
- Постмортем как проверка проектного решения, без поиска виноватых
- Разбор инцидента: как метрики подтвердили (или опровергли) решение из модуля про пулы соединений
- Практика: самостоятельный разбор инцидента и проверка чужого архитектурного решения
Эталонные системы и мост в реальность
- Лента новостей: перенос паттернов на новый домен
- Такси и гео-сервис: тот же шардинг, другая ось разбиения
- Платежи: репликация и очередь встречаются с деньгами
- Чат: партиционирование ради параллелизма, а не только масштаба
- Поиск: специализированный индекс как форма кэша
- Деньги и слова: сводный счёт по всем системам курса
Финальный проект: от ТЗ до вердикта под нагрузкой
- ТЗ с числами: разбор требований проекта
- Оценки ёмкости и первая схема
- Артефакты: контракт, план шардирования, SLO-спека
- Конфиги стенда: кэш, очередь, балансировщик
- Промежуточный прогон: ёмкость, кэш, шардирование
- Полный прогон нагрузки и вердикт
- Защита решения: доработка по вердикту и разбор компромиссов
Стоимость курса: 25990 ₽
Открыть курс на Mentorix · Все курсы