← Все навыки

Системный дизайн

курс по секции 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, объём, и что из них следует
  • Квиз 1.4. Расчёты на салфетке
  • Практика 1. Этап 1: требования и расчёты

Модуль 2. Данные: модель, хранилище, контракты

  • Лекция 2.1. Моделирование данных: сущности, ключи, денормализация
  • Квиз 2.1. Моделирование данных
  • Лекция 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: повторы и идемпотентность, распределённая транзакция, согласованность базы и брокера

Как проходит обучение

  • Занятия один на один с ментором под ваш темп и пробелы
  • Материалы курса открываются в личном кабинете, практику разбираете на встречах
  • Программа собирается под цель: подготовка к собеседованию или рабочая задача