0 неделя: Введение в проектирование систем
0 неделя: Мини-курс по Kafka
- Термины, термины, термины
В проектировании все пестрит словами, которые ты мог до этого не знать. Разложим по полочкам все MAU/DAU/RPS/NFR и много чего еще. Чтобы дальше ты уверенно понимал любой design doc
- Масштабирование системы
Мы не будем ограничиваться одним серверов и посмотрим, как наша система будет работать в рамках распределенности
- Расчеты — база для проектирования
Не умеешь считать нагрузку на чтение и запись? Или же не уверен, а что вообще нужно считать еще? Разберем все по полочкам, чтобы не упускать особенности системы
0 неделя: Мини-курс по Kafka
- Почему это важно
Kafka — самый популярный message broker современности. Им пользуются PayPal, LinkedIn и многие другие BigTech. Разберем на примере из практики пошаговое внедрение и улучшение
- Одна Kafka в поле не воин
А вместе с паттернами микросервисов очень даже. Изучим, как их применять вместе для создания системы с нагрузкой 10k RPS/write
- Kafka + DB = много проблем
Покажу, как незнание особенностей БД может привести к проблемам при росте нагрузке и как этого избежать
- Вездесущая кросс-кластерная синхронизация
Все Big Tech компании держат системы в разных кластерах. Посмотрим, как данные перетекают из одного в кластера в другой и как здесь участвует Kafka
- Почему это важно
Без понимания данного процесса невозможно выстроить масштабируемую систему. Именно здесь будут наши первые шаги, чтобы выстроить надежную систему, которая будет справляться с нагрузкой и адаптироваться под разные формы нагрузки
- Разберемся в сетях
Многие считают, что сети ушли в прошлое. Но без этого знания ты не сможешь построить систему, которая работает на несколько континентов. Также сети лежат в основе балансировки. А еще нам нужно понимать, что важнее: скорость (UDP) и надежность (TCP)
- Выбираешь правильный способ балансировки — где-то важнее скорость, а где-то умное распределение
Именно от правильной балансировки будет зависеть распределение нагрузки на твой backend. А еще благодаря autoscaling ты сможешь учитывать увеличение реплик приложения
- Учитываешь возможные скачки нагрузки
Бывает, что нагрузка на систему выше, чем мы закладывали. Именно тогда вступает в силу rate limiting и load shedding
- Почему это важно
Микросервисы — они везде. Без понимания, как их строить, когда они нужны, а когда нет — невозможно представить современного senior разработчика
- Разберем CAP теорему и модели консистентности
При разработке распределенных систем важно понимать правила, по которым они работают. Нормально ли, что часть системы будет содержать неактуальные данные. А стоит ли нам закрывать систему на запись, если произошла авария в ДЦ
- Виды интеграций
В реалиях современной разработки обычный REST over HTTP далеко не всегда подходит. Разберем с тобой другие формы коммуникации, а также посмотрим на их сильные и слабые стороны, так как не бывает ультимативного оружия
- Почему это важно
Без хранения данных невозможно представить практически никакую систему. И здесь кроются детали: как выбрать наиболее правильный формат, как работа с индексами может помочь нам. А еще есть кеширование, которое позволит оптимизировать IO нагрузку на систему
- Будешь понимать, что БД — не черный ящик
БД это такой же сервис, который делится на слои. Для отладки и тонкой настройки нам нужно понимать, где и как происходят процессы внутри этой системы
- Оптимизация работы БД
Ненастроенная БД без всяких настроек может и вывезет MVP, но при высоких нагрузках нам нужно применять дополнительные подходы: индексирование, пулы соединений, партицирование и шардирование — все это разберем, чтобы ты мог проектировать системы от 10k RPS
- Кеширование как база в современных системах
Большинство систем, которыми ты пользуешься, под капотом держат кеш для оптимизации работы. Но недостаточно поставить кеш и забыть. Нужно продумать политику очистки кеша, ограничить его объем
- Почему это важно
Событийная архитектура идет рука об руку с микросервисами. Большая часть паттернов и подходов связана именно с ней
- EDA или event driven architecture
Для работы с "событийкой" нам необходимо понять элементы системы. Также у данного подхода огромное число особенностей, не зная которых можно сделать некачественную систему
- CQRS, event sourcing, transactional outbox — лишь вершина айсберга
Посмотрим с тобой, как устроены паттерны поверх базовой "событийки". А также как их стоит сочетать с остальной архитектурой
- SAGA — те же транзакции, только для микросервисов
В распределенных системах ты не можешь все делать в рамках одной транзакции. Нам нужны новые способы настройки этого механизма. Посмотрим, как это делается и в каких системах можно применить
- Почему это важно
Надежность и прозрачность текущего состояния системы — must-have. Без это тебя не пустят в production.
- SRE — 3 буквы, за которыми стоит uptime систем
Работа с надежностью и здоровьем системы — обязанность каждого разработчика. Мы вооружимся всем необходимым для этого: SLO, postmortem, RED и много чего еще
- Security не только в ИБ
Нужно понимать базовые принципы обеспечения безопасности системы. А также какие механизмы существуют
- CDN или как улучшить UX клиента
Netflix разработал собственный CDN для хранения контента. Это необходимый механизм, без которого Spotify, Pinterest не смогли бы работать
Для просмотра скрытого содержимого необходимо Войти или Зарегистрироваться.