🏢 Ситуация
Лена зовёт вас в переговорку:
«Тебе полтора года в команде — пора думать как мидл. Мидл отличается от джуна не знанием алгоритмов, а умением спроектировать систему целиком: от бизнес-метрики до архитектуры и рисков. Тренировка: Виктор хочет "умную ленту товаров" в мобильном приложении. Вот тебе вводная одним предложением — как на собеседовании. Разложи задачу по фреймворку, я побуду злым интервьюером.»
🎯 Ваша задача
Освоить фреймворк ML system design из 7 шагов и применить его к «умной ленте».
📚 Теория: фреймворк из 7 шагов
1. Уточнить требования (никогда не пропускать!)
Вопросы, которые джун не задаёт, а мидл задаёт всегда:
- Какова бизнес-цель? (выручка? вовлечённость? удержание?)
- Масштаб: сколько пользователей/товаров/запросов в секунду?
- Латентность: лента должна собраться за сколько мс?
- Что есть из данных и инфраструктуры уже сейчас?
2. Перевести бизнес-метрику в ML-метрики
Цепочка: бизнес-метрика (выручка на сессию) → онлайн прокси-метрики (CTR, add-to-cart rate) → офлайн-метрики модели (NDCG@k, recall@k). Понимать, где цепочка может порваться: CTR растёт на кликбейте, а выручка — нет.
3. Данные
Источники, объём, разметка, свежесть. Здесь же: холодный старт, петли обратной связи, приватность.
4. Модель: от простого к сложному
Всегда проговариваем лестницу: правила/топ → простая модель → сложная. Двухэтапная архитектура для рекомендаций: retrieval (сотни кандидатов из миллионов, лёгкая модель/ANN-индекс) → ranking (тяжёлая модель точно сортирует кандидатов).
5. Обучающий пайплайн и признаки
Как собирается train set, как считаются признаки, где живёт feature store (одни и те же признаки для обучения и инференса — иначе training/serving skew!), как часто переобучение.
6. Serving и инфраструктура
Онлайн (real-time API) vs офлайн (пересчёт ночью, отдаём из кэша)? Латентность/стоимость/свежесть. Фолбэки при отказе модели.
7. Оценка, выкладка, мониторинг
Офлайн-оценка → A/B-тест → постепенная раскатка (canary). Мониторинг качества, дрейфа, бизнес-метрик; план отката.