Для кого этот курс
- Вы готовитесь к собеседованию на позицию 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, CQRS, Event Sourcing, Saga
- Database Per Service для минимизации зависимостей между микросервисами
- API-композиция: как собрать ответ из нескольких сервисов
- CQRS для разделения операций чтения и записи с независимым масштабированием
- Event Sourcing для сохранения истории изменений вместо текущего состояния
- Сага: хореография против оркестровки и компенсирующие транзакции
Паттерны коммуникации микросервисов
API Gateway и Backends for Frontends
- API Gateway для централизованной маршрутизации, агрегации данных и сквозных функций
- Backends for Frontends: адаптация API под разные типы клиентов
- Чем платят за шлюз: единая точка отказа и рост связности
Ещё немного паттернов
Service Discovery, развёртывание, отказоустойчивость
- Обнаружение сервисов на стороне клиента и на стороне сервера
- Паттерны развёртывания: экземпляр сервиса на хост, сине-зелёное развёртывание
- Отказоустойчивость: автоматический выключатель (Circuit Breaker) и переборка (Bulkhead)
- Transactional Outbox для гарантированной доставки сообщений
Советы по проектированию
Выбор технологий, 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, шардинга, репликации и отказоустойчивости
Практика: архитектура музыкальной платформы «ТУНЕЦ»
Две встречи с ментором в формате архитектурного комитета: черновик — обратная связь — защита финального решения
- Прослушивание по запросу, плейлисты, персональные рекомендации и полнотекстовый поиск
- Реклама между треками, премиум-подписка и CDN для раздачи контента
- Первая встреча: анализ требований, состав сервисов, схема взаимодействия, выбор стека
- Вторая встреча: защита архитектуры, риски и стратегии масштабирования
- На выходе — детальная схема, документация по сервисам и презентация с обоснованием решений
Результат выпускника
Наш менти проходит секцию System Design после завершения курса.
Посмотрите, как это выглядит на практике: