ML recommendation system вайб-кодингом: учебный проект production-уровня
Этот сервис построен на корпоративной тренировочной сессии — чтобы показать командам, что вайб-кодинг тянет серьёзные системы. Полный MLOps-стек: ALS + LightGBM, Feast feature store, Celery-воркеры, Prometheus + Jaeger. С честным списком, где он ломается.
Проблема
На корпоративных тренингах по вайб-кодингу один из первых скептических аргументов звучит предсказуемо: «окей, лендинг — понятно, но production-ML так не строят». Рекомендательная система требует ML-пайплайна, feature store, async-обработки событий, observability. Тренировочная сессия отвечает на этот аргумент прямо — готовым кодом.
Методика
Next-best-offer сервис: персонализированные предложения в реальном времени для роста конверсии и LTV. Задача тренировочной сессии — построить его вайб-кодингом от архитектуры до работающих контейнеров. Bottleneck на сессии не скорость набора кода, а правильное архитектурное решение: что строить и в каком порядке.
Проект спроектирован по методике SDD (Spec-Driven Development) через GitHub Spec Kit. Спека — источник истины, код — её выход; приёмы цепочки specify → clarify → plan → tasks — в разборе #12.
-
specifyфиксирует что строить и зачем, без деталей реализации -
clarifyагент расставляет в спеке маркеры[NEEDS CLARIFICATION]— вынуждает явно назвать неопределённости вместо того чтобы молча делать допущения -
planтехнический план: каждое архитектурное решение сопровождается задокументированным обоснованием — не «решили так», а «вот почему именно так» -
tasksразбивка плана на задачи, упорядоченные по зависимостям; параллелизуемые — выделены явно -
analyzeнепрерывная валидация: ищет противоречия и пробелы между спекой, планом и задачами — не одноразовый gate, а петля уточнения -
implementагент реализует задачи одну за другой, коммитит и тестирует
Наивный вайб-кодинг выглядит иначе: один большой промпт, агент сразу пишет код, через час — запутанная реализация без понятной структуры. SDD убирает этот хаос: на каждом шаге человек видит что происходит и может скорректировать до того, как агент ушёл в неверную сторону. На тренировочной сессии это принципиально — участники учатся управлять процессом, а не просто наблюдать за генерацией.
- 1. API-слой: FastAPI — эндпоинты на данные клиента, события, NBO-рекомендации.
- 2. Async-обработка: Celery-воркеры считают события и рекомендации асинхронно, не синхронным вычислением в запросе.
- 3. ML-пайплайн: dual-model — ALS (коллаборативная фильтрация) + LightGBM (градиентный бустинг); обучение и деплой моделей.
- 4. Feature store: Feast централизует фичи — консистентность между обучением и инференсом (нет train/serve skew).
- 5. Real-time + batch hybrid: мгновенные ответы API + плановое переобучение.
- 6. Observable by default: Prometheus-метрики, Jaeger-трейсинг, структурные логи; Docker Compose с health-checks.
Карта зависимостей и точки каскадного отказа:
events ──▶ Celery worker ──▶ Feast (feature store)
│
HTTP /nbo ──▶ FastAPI ──▶ модель (ALS + LightGBM) ◀─┘
▲
batch retrain ──┘ (отдельный плановый пайплайн)
Отказ Feast / Redis / PG ──▶ каскад на /nbo
Тихий отказ batch retrain ──▶ model staleness (сервис жив, модель мертва)
Главная ловушка видна именно на схеме: сервис /nbo остаётся «зелёным»,
когда умер batch-пайплайн — поэтому алерт нужен на свежесть модели, не только на доступность API.
Артефакт
github.com/dobryakov/next-best-0ffer (Python) — результат тренировочной сессии. Контейнеризовано, каждый компонент (API, воркеры, ML-пайплайн) изолирован. Репозиторий включает SDD-спеки и план задач — используется как учебный материал на последующих сессиях.
Где ломается
- Model staleness при тихом отказе пайплайна обучения — модель устаревает незаметно, если переобучение падает silently. Нужен alert на свежесть модели, не только на доступность сервиса.
- Каскад при недоступности Redis/PostgreSQL — отказ хранилища распространяется по сервисам; нужен явный degradation-контракт.
- Сложность масштабирования Celery при высоком объёме событий.
- Латентность вычисления фич бьёт по скорости рекомендации.
Для кого и почему
Если вы проводите или планируете корпоративное обучение по вайб-кодингу — здесь учебный проект, который отвечает на скептицизм «это не для серьёзных систем» конкретным работающим кодом. Полный MLOps-стек с честным разбором, где он ломается: участники видят и результат, и его ограничения.
Хотите провести тренировочную сессию по вайб-кодингу в своей команде?
Корпоративное обучение: команда строит реальный сервис вайб-кодингом за одну сессию — от архитектуры до работающих контейнеров. Участники видят, что получается, и разбирают, где это ломается.
Написать на почтуДругие разборы
Серия инженерных разборов: реальная задача → методика → работающий артефакт → честный разбор, где он ломается.
К серии →