1 Проработка прохождения интервью
Цель урока - дать представление о всех важных этапах, которые нужно пройти при проектирование системы.
1. Выявление и разбор требований:
· Функциональных - какие возможности для пользователя даёт система
· Нефункциональных - какими качествами система обладает
2. Расчёт нагрузки - storage, throughput, rps
3. Построение верхнеуровнего API. Подробней про REST API
4. Построение схемы данных на базе PostgreSQL
5. Построение архитектуры системы - начнём с базового блока
6. Создание системы мониторинга
7. Выявление узких мест
Разберём на примере популярной задачи, которую можешь получить на реальном интервью. Плюс, углубимся в нефункциональные требования:
Получишь структуру прохождения интервью и прорешанную задачу.
Далее во всём курсе будем делать отсылки для детализации решения.
(!) Такой старт с конца поможет мозгу жадно всасывать знания из последующих лекций. Поскольку будет понятно к чему они применяются.
2 Архитектурная база
Начинаем закладывать базу, которая необходима для проектирования любой нагруженной системы:
Разбираем асинхронные взаимодействия глубже.
Цель урока - дать представление о понятии СУБД. Рассмотреть популярные типы СУБД и области их применения.
Цель урока - дать представления о репликации и шардировании
Прорешивание 2ух популярных задач на System Design Интервью
Итого:
Прорешивание ещё 2ух популярных задач на System Design Интервью
Итого:
Цель урока - проработка командного взаимодействия, навыка мозгового штурма и презентации
Получаем задания, делимся на команды и начинаем в комфортных условиях и ограниченном дедлайне проектировать ещё одну задачу.
Итого:
Цель урока - дать представление о всех важных этапах, которые нужно пройти при проектирование системы.
1. Выявление и разбор требований:
· Функциональных - какие возможности для пользователя даёт система
· Нефункциональных - какими качествами система обладает
2. Расчёт нагрузки - storage, throughput, rps
3. Построение верхнеуровнего API. Подробней про REST API
4. Построение схемы данных на базе PostgreSQL
5. Построение архитектуры системы - начнём с базового блока
6. Создание системы мониторинга
7. Выявление узких мест
Разберём на примере популярной задачи, которую можешь получить на реальном интервью. Плюс, углубимся в нефункциональные требования:
- High availability
- Fault tolerance
- Scalability
- Durability
- Consistency
- Maintainability
Получишь структуру прохождения интервью и прорешанную задачу.
Далее во всём курсе будем делать отсылки для детализации решения.
(!) Такой старт с конца поможет мозгу жадно всасывать знания из последующих лекций. Поскольку будет понятно к чему они применяются.
2 Архитектурная база
Начинаем закладывать базу, которая необходима для проектирования любой нагруженной системы:
- Аутентификация - HTTP Basic Auth, Cookie-Based Auth, Token-Based Auth (JWT)
- API Gateway vs Load Balancer. Почему must have в системе?
- Алгоритмы балансировки - Round Robin, Weighted Round Robin, Least Connections, IP Hash
- Монолитная vs микросервисная система
- Синхронное vs асинхронное взаимодействие
- Модель OSI, DNS.
- Популярные протоколы детальней - TCP/IP, UDP, HTTP, Websockets, grpc
- Service discovery
- Retry
- Rate limiting
- Circuit breaker
- Dummy
- Сможешь выбрать нужный архитектурный подход для построения системы.
- Будешь ориентироваться в протоколах и разобранных паттернах.
Разбираем асинхронные взаимодействия глубже.
- Очереди. Зачем нужны?
- Push / pull модель взаимодействия
- Кафка подробно:
- Почему быстрая?
- Где используется?
- Преимущества
- Topic, Broker, Producer, Consumer group
- Партиции, сбои узлов
- Гарантии доставки - at least once, at most once, exactly once
- Понимаешь контекст использования очередей
- Понимаешь работу кафки с её основными компонентами
Цель урока - дать представление о понятии СУБД. Рассмотреть популярные типы СУБД и области их применения.
- Модели данных:
- Модель данных - лишь абстракция (показываем пример запросов в ClickHouse, PostgreSQL, Pandas)
- Реляционная модель данных & SQL (PostgreSQL, CH)
- Key-value модель данных (Redis)
- Документоориентированная модель данных (MongoDB);
- Графовая модель данных
- Индексы и их виды. На примере PostgreSQL
- LSM-деревья. И почему важно хотя бы представлять что это
- B-деревья - базовая база всех интервью
- Обратные индексы
- Особые индексы: составные, кластерные, покрывающие, с условием
- Транзакции и уровни изоляций (base + advanced level)
- ACID - супер основа БД
- Уровни изоляции транзакций (пример с PostgreSQL)
- Нестандартные транзакции (Redis и его pipe'ы)
- СУБД на System Design Интервью - разомнём пальчики
- Оn-premise (CH, PostgreSQL, MongoDB) vs cloud (AWS)
- Чек лист по выбору СУБД
- Понимаешь контекст использования различных СУБД
- Умеешь выбрать нужную для проектирования системы
Цель урока - дать представления о репликации и шардировании
- Репликация
- Синхронная vs асинхронная
- Виды реализации репликации
- Репликация с 1 ведущим узлом (подробно, делаем в PostgreSQL)
- Репликация с 1+ ведущим узлом
- Партиционирование и шардирование (basic)
- Партиционирование данных на 1 сервере (PostgreSQL, ClickHouse)
- Шардирование данных на множестве серверов
- Методы шардирования - PostgreSQL, делаем руками
- Key-value
- Диапазоны
- Hash
- Шардирование (advanced)
- Шардирование вторичных индексов
- Проблемы шардирования: перебалансировка
- Рассказываем об production-решениях
- Репликация и шардирование на System Design Интервью
- Когда надо быть проще: embeddable СУБД (SQLite, chdb, duckdb etc и примеры на них)
- On-premise (PostgreSQL, CH, MongoDB) vs cloud (AWS)
- Основная боль System Design Интервью - когда, зачем и за сколько нужно масштабироваться
- Примеры с реальных интервью
- Понимаешь как масштабировать Базу в связи с возросшими нагрузками
- А также основные подводные камни на этом пути
Прорешивание 2ух популярных задач на System Design Интервью
Итого:
- Применяешь полученные знания в real time проектирование
- Получаешь в копилку две типовые задачи
- Становишься сильно более подготовленным к результативному прохождению интервью
Прорешивание ещё 2ух популярных задач на System Design Интервью
Итого:
- Применяешь полученные знания в real time проектирование
- Получаешь в копилку две типовые задачи
- Становишься ещё более подготовленным к результативному прохождению интервью
Цель урока - проработка командного взаимодействия, навыка мозгового штурма и презентации
Получаем задания, делимся на команды и начинаем в комфортных условиях и ограниченном дедлайне проектировать ещё одну задачу.
Итого:
- Прокачиваешь навык коммуникации
- Подытоживаешь полученные знания, закрепляешь в навыки