System design [Тариф Стандарт] [Balun.Courses] [Повтор]
Знакомая ситуация?
Тариф Стандарт
Повтор:
Знакомая ситуация?
- На собеседованиях middle+ просят пройти system design интервью, а я ничего не знаю
- На работе нужно создавать высоконагруженные системы, а у меня не хватает опыта и знаний
- Есть база по system design, но не разбираюсь в сложных темах и деталях. Не могу спроектировать большую систему / не понимаю, правильно делаю или нет
- Не понимаю, как работают сложные приложения и сервисы по типу «WhatsApp», «ВКонтакте», «Google Drive»
- Толком не понимаю, что такое репликация и шардирование, а также все, что с этим связано
- Не могу проявить себя на работе при обсуждении высоконагруженных систем — мало знаний и нечего сказать
- Подготовишься к прохождению System Design интервью — поймешь из чего оно состоит, узнаешь его особенности и научишься проходить его на реальной практике
- Узнаешь, как проектируются большие отказоустойчивые высоконагруженные системы
- Познакомишься с огромным количеством паттернов и приемов проектирования высоконагруженных систем
- Узнаешь, как работают репликация, шардирование, транзакции и многое другое
- Научишься устанавливать требования для высоконагруженных систем, считать нагрузку и ресурсы, проектировать API, модель данных и всю систему в целом
- Повысишь текущий уровень зарплаты и увеличишь свою ценность в компании, как специалиста
- Урок 1. Основы проектирования систем
- Урок 2. Кэширование, API и Observability
- Урок 3. Хранение и поставка данных
- Урок 4. Распределение хранение данных
- Урок 5. Паттерны и приемы проектирования
- Урок 6. Проектирование популярных систем
- Урок 7. Проектирование популярных систем
- Урок 8. Проектирование популярных систем
Урок 1. Основы проектирования систем
Свойства информационных систем
Кэширование
Виды баз данных
Репликация
Архитектура информационных систем
Урок 7. Проектирование популярных систем
Урок 8. Проектирование популярных систем
Свойства информационных систем
- Надежность
- Масштабируемость
- Производительность
- Удобство сопровождения
- Безопасность
- 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
- Функциональные и нефункциональные требования
- Расчет нагрузки
- знаешь основные критерии и свойства информационных систем, без которых невозможно спроектировать большую отказоустойчивую систему.
- разбираешься в балансировке нагрузки и проксировании, а также умеешь устанавливать требования к системе и считать нагрузку.
- вместе установим функциональные и нефункциональные требования для одного популярного приложения, а также оценим будущую нагрузку на него.
Кэширование
- внутреннее / внешнее
- кэширование ошибок
- эффективность кэширования
- 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
- CRUD
- Under / over fetching
- SOAP / REST / RPC / GraphQL
- Polling / long polling / streaming (SSE, WebSockets)
- Версионирование API
- Идемпотентность
- Метрики / Логи / Трейсы
- Алертинг
- Непрерывное профилирование
- разбираешься в кэшировании, а также понимаешь основные проблемы при его использовании.
- умеешь проектировать 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
- знаешь различные паттерны и приемы проектирования, которые используются практически во время любого процесса проектирования системы
- вместе найдем применимость этим паттернам и приемам проектирования в настоящих системах.
- Проектирование ленты друзей ВКонтакте
- Проектирование WhatsApp
Урок 7. Проектирование популярных систем
- Проектирование Boocking.com
- Проектирование Google Drive
Урок 8. Проектирование популярных систем
- Проектирование Яндекс.Такси
- Проектирование Leetcode
- 8 практических уроков
- Проектирование 6-ти систем
- Подготовка к System Design интервью
- Финальный проект
https://balun.courses/courses/system_design
Повтор: