Тренажёр

System Design

Десять задач по нарастающей сложности: от кэша и одной таблицы до распределённой координации. В каждой — условие с цифрами, канвас для схемы прямо в браузере, эталонное решение и разбор того, что должно прозвучать на собеседовании.

Порядок не обязателен, но задачи выстроены лестницей: приёмы из первых нужны в последних.

01 Сократитель ссылок Начальный Классика на разогрев: 10 000 переходов в секунду против 100 созданий — вся архитектура вырастает из этого перекоса. кэшгенерация ключейасинхронная аналитика 02 Хранилище и раздача картинок Начальный Файлы не должны ходить через ваше приложение. Задача про объектное хранилище, CDN и асинхронную обработку. объектное хранилищеCDNфоновая обработка 03 Ограничение частоты запросов Начальный Маленькая задача с большим количеством граблей: алгоритм окна, общее состояние на 20 инстансов и атомарность. алгоритмы окнаобщее состояниеатомарность 04 Сервис уведомлений Средний Первая задача, где всё держится на очередях: приоритеты, ретраи, дедупликация и внешние провайдеры, которые падают. очереди и приоритетыретраиидемпотентность 05 Лента новостей Средний Главный вопрос: раскладывать пост по лентам подписчиков при записи или собирать ленту при чтении. И что делать со звёздами. fanout on write / on readкэш ленткурсорная пагинация 06 Бронирование мест Средний Задача не про масштаб, а про конкурентность: 500 человек одновременно жмут на одно место, и продать его можно ровно один раз. блокировкитранзакциивременная бронь 07 Поиск по каталогу Средний Отдельное хранилище для поиска, его наполнение из основной БД и жизнь с тем, что индекс всегда чуть отстаёт. поисковый индексCDC и outboxотставание данных 08 Оплата заказа Продвинутый Деньги нельзя ни потерять, ни списать дважды. Распределённой транзакции с банком не существует — отсюда идемпотентность, outbox и сага. идемпотентностьoutboxсага и компенсации 09 Аналитика в реальном времени Продвинутый 100 000 событий в секунду и требование считать уникальных. Задача про то, где точность не стоит своих денег. потоковая обработкаприблизительные структурыопоздавшие события 10 Планировщик отложенных задач Продвинутый Пять инстансов смотрят в одну таблицу задач. Самая распределённая задача набора: координация, аренда и отсутствие exactly-once. координацияаренда и блокировкиat-least-once

Теория к этим задачам — в боте

Кэш, очереди, репликация, шардирование и транзакции разобраны карточками с интервальным повторением.