Складчина: System design [Тариф Стандарт] [Balun.Courses] [Повтор]
Знакомая ситуация?
- На собеседованиях middle+ просят пройти system design интервью, а я ничего не знаю
- На работе нужно создавать высоконагруженные системы, а у меня не хватает опыта и знаний
- Есть база по system design, но не разбираюсь в сложных темах и деталях. Не могу спроектировать большую систему / не понимаю, правильно делаю или нет
- Не понимаю, как работают сложные приложения и сервисы по типу «WhatsApp», «ВКонтакте», «Google Drive»
- Толком не понимаю, что такое репликация и шардирование, а также все, что с этим связано
- Не могу проявить себя на работе при обсуждении высоконагруженных систем — мало знаний и нечего сказать
95% вопросов по system design закроешь на этом обучении
- Подготовишься к прохождению System Design интервью — поймешь из чего оно состоит, узнаешь его особенности и научишься проходить его на реальной практике
- Узнаешь, как проектируются большие отказоустойчивые высоконагруженные системы
- Познакомишься с огромным количеством паттернов и приемов проектирования высоконагруженных систем
- Узнаешь, как работают репликация, шардирование, транзакции и многое другое
- Научишься устанавливать требования для высоконагруженных систем, считать нагрузку и ресурсы, проектировать API, модель данных и всю систему в целом
- Повысишь текущий уровень зарплаты и увеличишь свою ценность в компании, как специалиста
Программа:
- Урок 1. Основы проектирования систем
- Урок 2. Кэширование, API и Observability
- Урок 3. Хранение и поставка данных
- Урок 4. Распределение хранение данных
- Урок 5. Паттерны и приемы проектирования
- Урок 6. Проектирование популярных систем
- Урок 7. Проектирование популярных систем
- Урок 8. Проектирование популярных систем
Спойлер: Программа подробно Урок 1. Основы проектирования систем
Свойства информационных систем
- Надежность
- Масштабируемость
- Производительность
- Удобство сопровождения
- Безопасность
Критерии информационных систем
- 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
- Функциональные и нефункциональные требования
- Расчет нагрузки
Результат:
- знаешь основные критерии и свойства информационных систем, без которых невозможно спроектировать большую отказоустойчивую систему.
- разбираешься в балансировке нагрузки и проксировании, а также умеешь устанавливать требования к системе и считать нагрузку.
Бонус:
- вместе установим функциональные и нефункциональные требования для одного популярного приложения, а также оценим будущую нагрузку на него.
Урок 2. Кэширование, 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 для одного из популярных приложений.
Урок 3. Хранение и поставка данных
Виды баз данных
- Реляционные
- Документоориентированные
- 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
- Тригеры
Результат:
- понимаешь, где их и как лучше хранить данные, а также сколько потребуется железа для хранения.
- знаешь различные виды баз данных, а также понимаешь, когда и какую из них следует выбирать на практике.
Бонус:
- вместе спроектируем базу данных одного из популярных приложений, а также посчитаем сколько потребуется железа для хранения данных приложения.
Урок 4. Распределение хранение данных
Репликация
- синхронная / асинхронная / полу-синхронная
- с одним ведущим узлом / с несколькими ведущими узлами / без ведущих узлов
- логическая (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)
Результат:
- понимаешь, как хранить данные распределенно на нескольких хостах, а также умеешь считать, сколько потребуется хостов для хранения этих данных.
Бонус:
- вместе выберем стратегии репликации и шардирования базы данных одного из популярных приложений, а также посчитаем сколько потребуется хостов для хранения данных.
Урок 5. Паттерны и приемы проектирования
Архитектура информационных систем
- Файл-сервер / клиент-сервер / 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
Результат:
- знаешь различные паттерны и приемы проектирования, которые используются практически во время любого процесса проектирования системы
Бонус:
- вместе найдем применимость этим паттернам и приемам проектирования в настоящих системах.
Урок 6. Проектирование популярных систем
- Проектирование ленты друзей ВКонтакте
- Проектирование WhatsApp
Результат: применяешь все знания с уроков на практике, умеешь строить большие высоконагруженные системы и понимаешь, как спроектированы популярные сервисы, которыми ты пользуешься каждый день.
Урок 7. Проектирование популярных систем
- Проектирование Boocking.com
- Проектирование Google Drive
Результат: применяешь все знания с уроков на практике, умеешь строить большие высоконагруженные системы и понимаешь, как спроектированы популярные сервисы, которыми ты пользуешься каждый день.
Урок 8. Проектирование популярных систем
- Проектирование Яндекс.Такси
- Проектирование Leetcode
Результат: применяешь все знания с уроков на практике, умеешь строить большие высоконагруженные системы и понимаешь, как спроектированы популярные сервисы, которыми ты пользуешься каждый день.
Тариф Стандарт
- 8 практических уроков
- Проектирование 6-ти систем
- Подготовка к System Design интервью
- Финальный проект
Цена 51400 руб.
Повтор: