System Design
О чём курс
О чём курс
Владимир Балун разбирает проектирование высоконагруженных отказоустойчивых систем и подготовку к архитектурным секциям технических интервью в крупные IT-компании, такие как Яндекс, Ozon, ВКонтакте, Тинькофф или Kaspersky Lab. Программа объединяет инженерные практики, разбор архитектурных шаблонов и пошаговые расчёты ресурсов для реальных сервисов.
По словам автора, обучение охватывает до 95% вопросов по системному дизайну, помогает структурировать разрозненные знания и готовит к уверенной защите технических решений перед интервьюерами.
Кому подойдёт
Курс рассчитан на IT-специалистов с квалификацией уровня middle и выше:
- разработчиков бэкенда;
- системных архитекторов и системных аналитиков;
- системных администраторов и инженеров эксплуатации;
- QA-инженеров;
- технических продакт-менеджеров.
Для комфортного прохождения обучения необходимо владеть основами программирования, понимать принципы работы компьютерных сетей, знать базовые алгоритмы и структуры данных, а также обладать практическим опытом работы с ними.
Что внутри
Обучение состоит из 8 практических уроков с домашними заданиями и разбором реальных архитектурных задач.
В первой части программы рассматриваются свойства информационных систем: надёжность, масштабируемость, производительность, удобство сопровождения и безопасность. Разбирается классификация нагрузок, L4- и L7-балансировка трафика, прямое и обратное проксирование, а также методики сбора требований и предварительного расчёта ресурсов.
Следующий блок охватывает организацию сетевого взаимодействия и Observability:
- архитектурные стили API (REST, RPC, GraphQL) и механизмы стриминга через WebSockets и SSE;
- многоуровневое кэширование, инвалидацию по TTL и событиям, алгоритмы вытеснения данных и решение проблемы thundering herd;
- непрерывный сбор метрик, трейсинг, логирование и алертинг.
Отдельное внимание уделено работе с данными. Автор рассматривает характеристики реляционных, документоориентированных, колоночных и in-memory баз данных, работу с индексами и уровнями изоляции транзакций. В теме распределённого хранения разбираются репликация, партиционирование, шардирование, согласованность по CAP и PACELC, а также интеграция очередей сообщений и сетей доставки контента (CDN).
В разделе архитектурных паттернов изучаются микросервисная и событийно-ориентированная архитектуры, распределённый консенсус, саги, двухфазный коммит и паттерны отказоустойчивости, включая circuit breaker, rate limiting и bulkheads.
Практические разборы и итоговый проект
Теоретические концепции закрепляются на разборе архитектуры популярных продуктов. На занятиях детально анализируются решения, используемые в ленте друзей ВКонтакте, мессенджере WhatsApp, платформах Booking.com, Google Drive, Яндекс Такси и LeetCode.
В рамках сквозного домашнего задания выполняется верхнеуровневое проектирование социальной сети с применением C4 Model: от фиксации функциональных требований и расчёта необходимого серверного оборудования до выбора стратегий шардирования баз данных и моделирования API.
Программа обучения
- Основы проектирования систем Свойства информационных систем Надежность Масштабируемость Производительность Удобство сопровождения Безопасность Критерии информационных систем Data / compute intensive Read / write intensive Low latency High throughput Балансировка нагрузки клиентская / серверная DNS и geoDNS балансировка L4 / L7 балансировка алгоритмы балансировки - random / round robin / weighted round robin / least connections / least response time / least bandwidth / sticky sessions / power of two choises Проксирование forward / reverse Функциональные и нефункциональные требования Расчет нагрузки Результат: знаешь основные критерии и свойства, без которых невозможно спроектировать большую отказоустойчивую систему разбираешься в балансировке нагрузки и проксировании, а также умеешь устанавливать требования и считать нагрузку Бонус: вместе установим функциональные и нефункциональные требования для одного популярного приложения, а также оценим будущую нагрузку на него Домашнее задание: установить функциональные и нефункциональные требования, а также рассчитать нагрузку для будущей социальной сети
- Кэширование, API и Observability Кэширование внутреннее / внешнее кэширование ошибок эффективность кэширования thundering herd problem многомерные кэш алгоритмы вытеснения - алгоритм Белади (OPT), random, LRU, SLRU, TLRU, LRU-k, MRU, LFU, LIFO, FIFO, 2Q, Second Chance, Clock инвалидация - по TTL / по событию / версионирование кэша / тегирование кэша взаимодействие с кэшем - cache aside / cache through / cache ahead API CRUD Under / over fetching SOAP / REST / RPC / GraphQL Polling / long polling / streaming (SSE, WebSockets) Версионирование API Идемпотентность Observability Метрики / Логи / Трейсы Алертинг Непрерывное профилирование Результат: разбираешься в кэшировании, а также понимаешь основные проблемы при его использовании. умеешь проектировать API и мониторить сервисы. Бонус: вместе спроектируем REST API для одного из популярных приложений. Домашнее задание: спроектировать REST API для будущей социальной сети
- Хранение и поставка данных Виды баз данных Реляционные Документоориентированные Key-value Time series Колоночные Wide-column Object storage Характеристики баз данных ACID / BASE OLAP / OLTP / HTAP Persistent / in-memory базы данных Embedded / single file базы данных Индексы BTree / Hash / Bitmap / Spatial / Reversed кластерные / некластерные селективность индекса функциональные покрывающие разряженные Транзакции WAL Deferrable MVCC / 2PL Изоляции транзакций - READ_UNCOMMITTED / READ_COMMITTED / REPEATABLE_READ / SERIALIZABLE Очереди сообщений Сценарии использования Гарантии доставки Data retention Паттерны хранения и поставки данных Сжатие данных Охлаждение данных Запись батчами Расчет железа Хранимые процедуры Materialized view Тригеры Результат: понимаешь, где их и как лучше хранить данные, а также сколько потребуется железа для хранения. знаешь различные виды баз данных, а также понимаешь, когда и какую из них следует выбирать на практике. Бонус: вместе спроектируем базу данных одного из популярных приложений, а также посчитаем сколько потребуется железа для хранения данных приложения. Домашнее задание: спроектировать базу данных для будущей социальной сети, а также оценить необходимое железо
- Распределенное хранение данных Репликация синхронная / асинхронная / полу-синхронная с одним ведущим узлом / с несколькими ведущими узлами / без ведущих узлов логическая (SBR / RBR) / физическая hot standby / warm standby фильтрация репликаций split brain failover Партиционирование Вертикальное / горизонтальное Range based / key based / directory based Шардирование перебалансировка (virtual buckets) resharding (consistent / randezvous hashing) роутинг (client / proxy / coordinator routing) Бэкапы CAP теорема PACELC теорема CDN (Content Delivery Network) CDC (Change Data Capture) Результат: понимаешь, как хранить данные распределенно на нескольких хостах, а также умеешь считать, сколько потребуется хостов для хранения этих данных. Бонус: вместе выберем стратегии репликации и шардирования базы данных одного из популярных приложений, а также посчитаем сколько потребуется хостов для хранения данных. Домашнее задание: выбрать стратегии репликации и шардирования базы данных для будущей социальной сети, а также посчитать сколько потребуется хостов для хранения данных
- Паттерны и приемы проектирования Архитектура информационных систем Файл-сервер / клиент-сервер / P2P Паттерны развертывания сервисов Rolling / blue-green / канареечный Архитектура бэкенда Монолитная / микросервисная (MSA) / SOA Событийно-ориентированная архитектура Event notification / state transfer / event collaboration Консенсус Выбор лидера Распределенная блокировка Распределенные транзакции - SAGA хореография и оркестрация / 2PC / 3PC Асинхронные паттерны point-point / pub-sub / request-response отложенное выполнение задач Dead letter queue Паттерны отказоустойчивости fallback bulkheads backpressure self-healing rate limiting retries (backoff) feature toggles circuit breaker gracefull degradation Результат: знаешь различные паттерны и приемы проектирования, которые используются практически во время любого процесса проектирования Бонус: вместе найдем применимость этим паттернам и приемам проектирования в настоящих системах. Домашнее задание: Итоговый проект — сделаешь верхнеуровневое проектирование социальной сети с использованием C4 Model 6-8. Проектирование популярных систем Лента друзей ВКонтакте WhatsApp Boocking.com Google Drive Яндекс.Такси LeetCode Результат: применяешь все знания с уроков на практике, умеешь строить большие высоконагруженные системы и понимаешь, как спроектированы популярные сервисы, которыми ты пользуешься каждый день. Домашнее задание: Продолжаем делать итоговый проект
Теги курса
Другие материалы автора 12
ВБ Владимир Балун Все материалыОтзывов пока нет. Будьте первым!
Этот курс сейчас в процессе организации складчины. Нажмите кнопку «Записаться» и ожидайте старта — вам придёт уведомление. Когда складчина стартует, в карточке курса будет указан актуальный взнос. Текущая цена пока в процессе формирования и может отличаться от финальной.
Да, мы стремимся, чтобы финальный взнос был не больше ≈10% от оригинальной цены курса. Чем больше участников записывается в складчину, тем ниже выходит взнос для каждого.
Нажмите кнопку «Записаться» и авторизуйтесь на сайте через email (через ту же почту, которую будете использовать для входа). В личном кабинете вас будут ждать инструкции, как пригласить других участников — чем больше людей записалось, тем быстрее стартует складчина и тем ниже взнос. Как только складчина готова к приобретению, вам придёт уведомление.