курс по секции System Design для бекендера: собрать требования, посчитать нагрузку, выбрать хранилище и довести решение до схемы, которую можно защитить. Отдельный большой блок — конкурентный доступ и распределённые транзакции.
5 модулей, 42 темыMiddleИндивидуально с ментором
Программа
О курсе
Модуль 1. Как устроена секция и как собрать требования
Лекция 1.1. Секция System Design: канва целиком
Квиз 1.1. Канва секции System Design
Лекция 1.2. Функциональные требования: из задачи в список сценариев
Квиз 1.2. Функциональные требования и скоуп
Лекция 1.3. Нефункциональные требования: от пожеланий к числам
Квиз 1.3. Нефункциональные требования и числа
Лекция 1.4. Расчёты на салфетке: RPS, объём, и что из них следует
Лекция 2.2. Типы данных, в которых ломаются деньги и идентификаторы
Квиз 2.2. Типы данных: деньги, идентификаторы, время
Лекция 2.3. Выбор хранилища: критерии, а не мода
Квиз 2.3. Выбор хранилища
Лекция 2.4. Карта классов NoSQL
Квиз 2.4. Карта классов NoSQL
Лекция 2.5. Дизайн API: контракты главного потока
Квиз 2.5. Дизайн API: контракты главного потока
Практика 2. Этап 2: модель данных, хранилище и контракты
Модуль 3. Схема: от требований к компонентам
Лекция 3.1. Как описывать архитектуру: C4, уровни детализации, читаемая схема
Квиз 3.1. Описание архитектуры: C4, читаемость, ADR
Лекция 3.2. Трассировка: у каждого требования есть адрес на схеме
Квиз 3.2. Трассировка требований в архитектуру
Лекция 3.3. Границы сервисов: кто владеет данными
Квиз 3.3. Границы сервисов и владение данными
Практика 3. Этап 3: схема, трассировка и границы сервисов
Модуль 4. Конкурентный доступ и распределённые транзакции
Лекция 4.1. Двое покупают одно место: конкуренция за ресурс
Практика 4.1. Этап 4: конкуренция за ресурс
Квиз 4.1. Конкуренция за ресурс
Лекция 4.2. Распределённые блокировки, аренды и fencing
Практика 4.2. Этап 4: координация вне одной базы
Квиз 4.2. Распределённые блокировки и fencing
Лекция 4.3. Идемпотентность и семантика доставки
Практика 4.3. Этап 4: повторы и идемпотентность
Квиз 4.3. Идемпотентность и семантика доставки
Лекция 4.4. Распределённая транзакция: почему не 2PC и что вместо
Практика 4.4. Этап 4: распределённая транзакция
Квиз 4.4. Распределённая транзакция и сага
Лекция 4.5. Согласованность между базой и брокером: Outbox, Inbox, CDC
Практика 4.5. Этап 4: согласованность базы и брокера
Квиз 4.5. Outbox, Inbox и CDC
Что разбираем
Канва секции целиком, функциональные требования из задачи в список сценариев, нефункциональные требования от пожеланий к числам, расчёты на салфетке (RPS, объём) и что из них следует
Моделирование данных — сущности, ключи, денормализация, типы данных, в которых ломаются деньги и идентификаторы, выбор хранилища по критериям, карта классов NoSQL, дизайн API
Описание архитектуры по C4, трассировка требований на схему, границы сервисов и владение данными
Конкуренция за ресурс, распределённые блокировки, аренды и fencing, идемпотентность и семантика доставки, распределённая транзакция вместо 2PC, согласованность базы и брокера через Outbox, Inbox и CDC
Практика
Этап 1: требования и расчёты
Этап 2: модель данных, хранилище и контракты
Этап 3: схема, трассировка и границы сервисов
Этап 4: конкуренция за ресурс и координация вне одной базы
Этап 4: повторы и идемпотентность, распределённая транзакция, согласованность базы и брокера
Как проходит обучение
Занятия один на один с ментором под ваш темп и пробелы
Материалы курса открываются в личном кабинете, практику разбираете на встречах
Программа собирается под цель: подготовка к собеседованию или рабочая задача