Магистратура
2025/2026





Проектный семинар
Статус:
Курс обязательный (Компьютерные системы и сети)
Кто читает:
Департамент компьютерной инженерии
Когда читается:
1-й курс, 1-4 модуль
Охват аудитории:
для своего кампуса
Преподаватели:
Старых Владимир Александрович
Язык:
русский
Кредиты:
3
Контактные часы:
42
Программа дисциплины
Аннотация
В рамках данного курса рассматриваются различные аспекты проектирования, разработки и эксплуатации высоконагруженных систем, он направлен на формирование у студентов целостного понимания ключевых аспектов создания и сопровождения сложных информационных систем. Программа структурирована в частей, каждая из которых раскрывает критически важные компетенции для будущих ИТ-специалистов. Основной раздел посвящен системному дизайну: от анализа функциональных и нефункциональных требований до проектирования распределенных архитектур с учетом масштабируемости, отказоустойчивости и экономических ограничений. В другом разделе курса акцент сделан на организацию производственных процессов разработки ПО, включая методологии Agile и DevOps, управление техническим долгом, а также развитие soft skills для эффективного взаимодействия в кросс-функциональных командах. Третий блок рассматривает проблемы сетевой безопасности через призму практического анализа уязвимостей, методов защиты и этичного хакинга, что позволяет студентам глубже понять риски высоконагруженных систем в реальных условиях. Завершающий модуль ориентирован на научно-методическую подготовку: студенты осваивают принципы структурирования исследований, критического анализа существующих решений и защиты магистерских диссертаций в области высоконагруженных технологий.
Цель освоения дисциплины
- Освоить методы проектирования высоконагруженных систем с акцентом на выбор архитектурных паттернов, управление нефункциональными требованиями и обеспечение масштабируемости и отказоустойчивости в соответствии с индустриальными стандартами.
- Научиться проводить анализ и оптимизацию производительности через нагрузочное тестирование, диагностику узких мест и применение стратегий (кэширование, шардирование, балансировка), основанных на метриках и CAP-теореме.
- Развить навыки аргументированного выбора технологий и интеграционных решений (микросервисы, брокеры сообщений, SQL/NoSQL), учитывая компромиссы между согласованностью, доступностью и стоимостью владения.
- Сформировать способность эффективно коммуницировать архитектурные решения с кросс-функциональными командами, обосновывая их через призму бизнес-требований, технических ограничений и ролевых специфик (DevOps, разработка, управление).
Планируемые результаты обучения
- Знать критерии выбора архитектурных паттернов (микросервисы, монолит, серверлесс) в зависимости от требований к масштабируемости, отказоустойчивости и стоимости владения
- Знать особенности применения DDD и принципов loose coupling в контексте высоконагруженных систем.
- Уметь проектировать high-level архитектуру с использованием нотации C4, включая идентификацию сервисов, интеграционных точек, компонентов хранения данных и распределения нагрузки
- Владеть методиками масштабирования stateful и stateless сервисов, включая стратегии шардирования, репликации и кэширования, а также оценкой компромиссов между согласованностью данных (CAP-теорема) и доступностью системы.
- Уметь аргументировать архитектурные решения перед кросс-функциональными командами, коррелируя технические ограничения (аппаратные ресурсы, сетевые задержки) с бизнес-целями и особенностями ролей
- Знать ключевые метрики устойчивости высоконагруженных систем (латентность, пропускная способность, уровень ошибок), критерии их нормирования и методы измерения в трехзвенной архитектуре
- Уметь проводить нагрузочное тестирование с использованием профилей, имитирующих пиковую нагрузку, выявлять узкие места (CPU, сеть, БД) и интерпретировать метрики для диагностики нестабильности системы.
- Уметь проектировать и обосновывать долгосрочные стратегии модернизации архитектуры (внедрение CDN, очередей сообщений, шардирования БД) с учетом компромиссов между производительностью, стоимостью и сложностью интеграции.
- Знать классификацию интеграционных подходов (синхронные/асинхронные), архитектурные стили (REST, gRPC, event-driven), паттерны обеспечения отказоустойчивости (circuit breaker, dead-letter queues, exponential backoff) и их влияние на метрики системы (латентность, согласованность, стоимость)
- Уметь обоснованно выбирать тип интеграции (например, синхронный вызов vs. шина сообщений) на основе анализа требований к надежности, скорости обработки и сложности сценариев взаимодействия микросервисов.
- Владеть методами настройки и эксплуатации брокеров сообщений (Kafka)
- Знать фундаментальные принципы CAP-теоремы и PACELC, различия между ACID и BASE, архитектурные особенности SQL/NoSQL-систем
- Знать механизмы распределенных транзакций, консенсуса (Raft, Paxos) и обеспечения согласованности данных.
- Уметь обоснованно выбирать тип СУБД (реляционная/NoSQL) и стратегию масштабирования (репликация, шардирование) на основе анализа требований к согласованности, доступности и латентности в высоконагруженных сценариях.
- Знать функциональные особенности ключевых инфраструктурных компонентов (кэши, балансировщики, CDN, системы безопасности, CI/CD-конвейеры)
- Знать методологию оценки стоимости владения (TCO), рисков и критериев успешности Proof of Concept.
- Уметь проектировать сквозные архитектурные решения, интегрируя дополнительные компоненты (например, многоуровневое кэширование, распределенные очереди) с учетом требований к безопасности, производительности и бюджетных ограничений.
- Владеть техниками анализа компромиссов между техническими решениями и бизнес-целями, включая оценку trade-off’ов «надежность vs. стоимость», «скорость вывода на рынок vs. технический долг» и формирование стратегий митигации рисков.
- Знать архитектурные особенности и компромиссы при проектировании массовых сервисов (социальные сети, платформы доставки), а также специфику требований к системам в зависимости от ролей (DevOps, разработчик, менеджер продукта).
- Уметь применять методы системного дизайна для решения комплексных задач, включая декомпозицию требований, выбор компонентов и обоснование решений в условиях ограниченных ресурсов на примере кейсов вроде Twitter или Яндекс Go.
- Владеть техниками проведения и прохождения систем-дизайн интервью, включая структурирование ответов, визуализацию архитектуры (C4, блок-схемы) и аргументацию решений через призму бизнес-метрик и технических ограничений.
Содержание учебной дисциплины
- Введение в системный дизайн
- High Level Design
- Технические метрики
- Архитектурные стратегии высоконагруженных систем
- Диагностика и оптимизация высоконагруженных систем: от выявления узких мест к стратегиям масштабирования
- Интеграционные стратегии в распределенных системах
- Управление данными в распределенных системах: выбор СУБД, стратегии масштабирования и интеграция кэширования
- Интеграция инфраструктурных компонентов и управление бизнес-техническими компромиссами
- Профессиональный практикум по системному дизайну
Элементы контроля
- домашние задания
- активность на семинарах
- бонусные баллыза особые успехи. Например, участие в mock-интервью семинара 17.
- экзамен 2опрос по первой части курса
- задания блока разработка ПО как произв процесс
- доклад второй год
- домашние задания 2й год
Промежуточная аттестация
- 2025/2026 4th module0.12 * активность на семинарах + 0.001 * активность на семинарах + 0.06 * бонусные баллы + 0.001 * домашние задания + 0.36 * домашние задания + 0.398 * задания блока разработка ПО как произв процесс + 0.06 * экзамен 2
- 2026/2027 3rd module0.1 * активность на семинарах + 0.45 * доклад второй год + 0.45 * домашние задания 2й год
Список литературы
Рекомендуемая основная литература
- 97 этюдов для программистов : опыт ведущих экспертов, Гудлиф, П., 2012
- System Design : подготовка к сложному интервью, Сюй, А., 2023
- Высоконагруженные приложения : программирование, масштабирование, поддержка, Клеппман, М., 2019
Рекомендуемая дополнительная литература
- Разработка требований к программному обеспечению : пер. с англ., Вигерс, К., 2019