Системный дизайн
О чём курс
Авторы курса разбирают проектирование распределённых систем на сквозном кейсе сервиса такси и готовят к прохождению секции System design. Обучение построено вокруг поэтапной эволюции архитектуры: от работы монолита на одном сервере до масштабирования платформы в нескольких регионах.
В процессе работы над проектом вы научитесь рассчитывать нагрузку по метрикам RPS, DAU и объёмам хранения, выбирать базы данных и брокеры сообщений, а также заранее закладывать сценарии частичных сбоев и отказов отдельных зон доступности. Отдельное внимание уделено аргументации архитектурных решений и компромиссов на технических ревью и собеседованиях.
Кому подойдёт
Материал рассчитан на специалистов с опытом коммерческой разработки, пониманием устройства сетей, протокола HTTP, баз данных и процессов деплоя. Конкретный стек технологий и язык программирования не имеют значения:
- бэкенд-, фронтенд- и фулстек-разработчикам уровня middle и middle+, чтобы научиться проектировать сервисы под высокую нагрузку, находить узкие места архитектуры и обосновывать решения на ревью;
- тимлидам и техническим лидерам для проведения дизайн-ревью, своевременной оценки архитектурных рисков и планирования масштабирования сервисов при росте продукта;
- инженерам перед техническими собеседованиями, чтобы освоить регламент секции System design, научиться укладываться в тайминг и уверенно защищать архитектурные компромиссы.
Как устроено обучение
Программа рассчитана на пять месяцев и включает пять тематических модулей с 54 уроками и практическими заданиями. Практика разбита на четыре последовательных сквозных проекта для портфолио:
- проектирование масштабируемого монолита с расчётом системных лимитов сервера и поиском узких мест;
- создание событийного контура с обработкой потока координат в реальном времени и аналитической подсистемой;
- разделение монолита на сервисы и запуск мультисервисного приложения в нескольких зонах доступности;
- настройка глобальной маршрутизации, CDN, репликации между регионами и защита от каскадных сбоев.
Финальный модуль отведён под подготовку к интервью. В нём разбираются шаги прохождения секции: сбор и уточнение требований, расчёт порядков нагрузки, формирование верхнеуровневой архитектуры, выбор темы для детального погружения и защита проекта.
Авторы
Основной автор курса — Кирилл Мокевнин, сооснователь Хекслета с 18-летним стажем в коммерческой разработке, в прошлом вице-президент по инжинирингу в undev и разработчик в Skype.
Соавтор курса — Виталий Лихачев, SRE-инженер в международном тревел-сервисе с опытом более 10 лет в бэкенде, фронтенде и инфраструктуре. В прошлом работал старшим разработчиком платформы авторизации в Avito Tech и создавал системы складского учёта в EPAM. Он регулярно проводит секции по архитектуре на технических собеседованиях.
Другие авторы
- Кирилл Мокевнин
Программа обучения
- Монолитное приложение:
- Спроектируете первую версию сервиса такси и разберётесь, где находится реальный предел одного сервера. Подготовите монолит к росту нагрузки.
- Работа сервера: CPU, память, процессы, потоки, сеть и системные лимиты
- Требования и оценка нагрузки: DAU, RPS, пики и объём данных
- Первая архитектура, модель поездки, транзакции и уровни изоляции
- Индексы, планы запросов, нагрузочное тестирование и поиск узких мест
- Горизонтальное масштабирование, балансировка, кэш и реплики
- Выбор хранилищ, геопоиск, полнотекстовый поиск, конфигурация и секреты
- Результат: масштабируемый монолит сервиса такси, рассчитанный на рост нагрузки.
- События и стриминг:
- Добавите в сервис такси событийный контур, обработку координат в реальном времени и отдельную систему аналитики.
- Доменные события и контракты, надёжная публикация через transactional outbox и CDC
- Очередь и распределённый журнал: партиции, порядок, consumer groups, offset и replay
- Гарантии доставки, идемпотентность и обработка ошибок через dead-letter queue
- Поток координат: event time, окна, watermarks и опоздавшие события
- Пересчёт ETA и динамического тарифа, потоковые представления
- Аналитический контур и вебхуки для внешних систем: подпись запроса, retries, backoff
- Результат: событийный контур, поток координат и аналитика сервиса такси.
- Распределённая система:
- Разделите монолит на сервисы, распределите данные и подготовите приложение к работе в нескольких зонах доступности.
- Границы сервисов и владение данными
- API Gateway и внешние контракты
- Межсервисное взаимодействие
- Сеть и частичные отказы
- Модели согласованности
- Репликация данных
- Кворумы и конфликты записи
- Партиционирование данных
- Распределённые транзакции и SAGA
- Service discovery и внутренний DNS
- Зоны доступности
- Результат: мультисервисное приложение такси, работающее в нескольких зонах доступности.
- Глобальная система:
- Запустите сервис такси в нескольких регионах и спроектируете глобальную маршрутизацию, отказоустойчивость и безопасность.
- Глобальная маршрутизация
- CDN и edge кэширование
- Мультирегиональные данные
- Мультирегиональный событийный контур
- Timeouts, deadlines и retries
- Rate limiting и load shedding
- Каскадные отказы и graceful degradation
- Disaster recovery
- Наблюдаемость и управление инцидентами
- Безопасные изменения и миграции
- Модель угроз и границы доверия
- Пользовательские и сервисные identity
- Защита чувствительных данных
- Результат: глобальная маршрутизация, надёжность и безопасность сервиса такси.
- System design интервью:
- Перенесёте архитектурный подход на новые задачи и подготовитесь к прохождению секции System design.
- Устройство секции и критерии оценки
- Уточнение требований
- Оценка нагрузки
- High level design
- Проектирование API и модели данных
- Архетипы систем
- Выбор deep dive
- Презентация решения и защита компромиссов
- Результат: готовое решение System design задачи и понятный план его презентации на собеседовании.
Теги курса
Другие материалы автора 2
ВЛ Виталий Лихачев Все материалыОтзывов пока нет. Будьте первым!
Этот курс сейчас в процессе организации складчины. Нажмите кнопку «Записаться» и ожидайте старта — вам придёт уведомление. Когда складчина стартует, в карточке курса будет указан актуальный взнос. Текущая цена пока в процессе формирования и может отличаться от финальной.
Да, мы стремимся, чтобы финальный взнос был не больше ≈10% от оригинальной цены курса. Чем больше участников записывается в складчину, тем ниже выходит взнос для каждого.
Нажмите кнопку «Записаться» и авторизуйтесь на сайте через email (через ту же почту, которую будете использовать для входа). В личном кабинете вас будут ждать инструкции, как пригласить других участников — чем больше людей записалось, тем быстрее стартует складчина и тем ниже взнос. Как только складчина готова к приобретению, вам придёт уведомление.