Для кого этот курс
- Вы готовитесь к собеседованию на позицию Middle+ / Senior и хотите уверенно проходить секцию System Design
- Вы уже работаете с микросервисами, но хотите систематизировать знания и закрыть пробелы
- Вы переходите с монолита на микросервисную архитектуру и хотите избежать типичных ошибок
Что вы получите
Системный подход
Методика от требований до ADR/RFC, которую используют в продуктовых командах
Готовность к интервью
Разбор реальных задач System Design + набор вопросов для самопроверки
Практический проект
Спроектируете архитектуру музыкальной платформы от нуля до продакшена
Работа с ментором
Индивидуальные занятия, код-ревью архитектурных решений и разбор ваших кейсов
Как проходит обучение
- Компактная теория в каждом модуле: только то, что нужно для принятия архитектурных решений
- Разбор сквозной задачи на несколько занятий: формулируете требования, рисуете диаграммы, собираете архитектуру, обсуждаете риски
- Два полноценных разбора по System Design в формате, приближённом к собеседованию
На каждом этапе рядом будет ментор
Программа курса
От идеи (0) до реализации (1)
Как выявлять и приоритизировать требования, переводить FR/NFR в архитектурные решения
- Выявление функциональных и нефункциональных требований, их анализ и систематизация
- Методология сбора требований от заинтересованных сторон и валидация с бизнесом
- Использование сценариев применения и пользовательских историй для описания функциональности
Нефункциональные требования
Метрики, расчёт нагрузки, доступность, перцентили задержек, масштабируемость
- Ключевые метрики: перцентили времени отклика, DAU/MAU, RPS/RPM для оценки производительности
- Расчёт дискового пространства под базы данных с учётом индексов, резервов и буфера роста
- Анализ критических характеристик: доступность, надёжность, масштабируемость, отказоустойчивость
Описание архитектуры
Архитектурные представления, инструменты, диаграммы и роль архитектора
- Классификация архитектурных подходов: системная архитектура и архитектура решения
- Представление архитектуры через UML-диаграммы и PlantUML с визуализацией компонентов
- Диаграммы последовательности для моделирования динамического поведения и взаимодействия сервисов
Паттерны микросервисной архитектуры
Когда микросервисы уместны, ключевые принципы, компромиссы и типичные ошибки
- Определение и преимущества микросервисной архитектуры: независимость, гибкость, масштабируемость
- Сравнение микросервисов и монолитной архитектуры по характеристикам разработки и эксплуатации
- Основные критерии выбора архитектуры для разных типов приложений
Паттерны декомпозиции
Разбиение по бизнес-возможностям и доменам, bounded contexts, контекстные карты
- Разбиение по бизнес-возможностям как основная стратегия идентификации сервисов
- Разбиение по поддоменам через предметно-ориентированное проектирование (DDD) и Bounded Context
- Принципы единственной ответственности (SRP) и согласованного изменения (CCP) при проектировании
Рефакторинг при переходе на МСА
Безопасная эволюция монолита, Strangler-подходы, снижение рисков миграции
- Паттерн «Душитель» для постепенного переноса функций из монолита в микросервисы
- Паттерн «Предохранительный слой» для интеграции с устаревшими подсистемами
- Итеративный подход вместо полной переписи приложения с нуля
Управление данными
Database per Service, подходы к консистентности, саги и долгие процессы
- Database Per Service для минимизации зависимостей между микросервисами
- CQRS для разделения операций чтения и записи с независимым масштабированием
- Event Sourcing для сохранения истории изменений вместо текущего состояния
Распределённые транзакции
Saga, Transactional Outbox, компенсирующие транзакции
- Паттерн Saga с двумя подходами: хореография (децентрализованная) и оркестровка (централизованная)
- Transactional Outbox для гарантированной доставки сообщений без распределённых транзакций
- Управление компенсирующими транзакциями при сбоях в слабосвязанных системах
Коммуникация и развёртывание
API Gateway, BFF, Service Discovery, стратегии деплоя
- API Gateway для централизованной маршрутизации, агрегации данных и offloading сквозных функций
- Backends for Frontends для адаптации API под разные типы клиентов
- Service Discovery (клиентский и серверный) и паттерны развёртывания (Blue-Green, Service Per Container)
Советы по проектированию
Выбор технологий, AS-IS / TO-BE, ведение ADR, Agile и архитектура
- AS IS / TO BE диаграммы для фиксации текущей и желаемой архитектуры с заинтересованными сторонами
- Ведение Architectural Decision Record (ADR) для документирования решений, контекста и альтернатив
- Оттягивание выбора технологий до закрытия неопределённости через анализ требований
Вопросы к собеседованию
Проверенный набор вопросов по микросервисам — потренируйтесь до реального интервью
- Практические вопросы по Database Per Service, API Gateway и их недостаткам
- Message Broker, Saga и Event Sourcing в контексте интервью
- Авторские ответы с примерами реализации: Circuit Breaker, Kubernetes, мониторинг
Как пройти System Design интервью
Пошаговый план, тайминг, на что обращают внимание интервьюеры
- Пятиэтапный план: уточнение требований, описание флоу, high-level дизайн, deep dive, обсуждение
- Расчёт метрик (RPS, дисковое пространство), описание пользовательских сценариев как основа архитектуры
- Демонстрация экспертизы через обсуждение trade-offs, шардинга, репликации и отказоустойчивости
Практика: архитектура «СПОТИФАЙ»
3-5 встреч с ментором — проектируете музыкальную платформу от требований до CDN
- Драфт с защитой функциональных и нефункциональных требований, сущностей и доменов
- Разбор каталога с паттерном для высокой нагрузки на чтение
- ML-блок: рекомендации и персонализация
- Деньги и реклама: монетизация, биллинг, рекламная подсистема
- Проектирование собственного CDN для раздачи контента
Результат выпускника
Наш менти проходит секцию System Design после завершения курса.
Посмотрите, как это выглядит на практике: