Shadow Deployment
Shadow Deployment или "теневое развертывание" — это способ запустить новую систему (модель, алгоритм, API) в реальном продакшене, но не воздействуя на пользователей.
Она работает «в тени»: получает те же запросы, что и основная система, но отвечает в холостую — её результат не используется в интерфейсе или в решении.
Как это работает?
На примере Spotify / Uber / Airbnb.
Spotify и рекомендательные модели
- Пользователь заходит на главную → система отправляет запрос на рекомендации.
- Main model генерирует реальные карточки на экране.
- Shadow model делает свой прогноз — но только для логирования.
- Сравнивают результаты (precision, diversity, hit rate и т.д.).
- Смотрят: как повёл бы себя пользователь, если увидел бы рекомендации shadow-модели.
Uber и поиск водителей
Новый алгоритм подбора водителей получает реальные заказы, но не влияет на реальное назначение. Его решения логируются и сравниваются с продакшн-алгоритмом:
- Как бы он распределил машины?
- Насколько быстрее/дальше/дешевле получился бы заказ?
Airbnb и рекомендации жилья при поиске
Shadow-алгоритм формирует свои топ-20 вариантов, как если бы он ранжировал.
- Сравнивают: пересекаются ли с топ-результатами основной модели?
- Считают метрики: MRR, позиция реально забронированного жилья, click probability и пр.
Как настроить Shadow Deployment технически
1. Дублируйте запрос. Используйте middleware, брокер (например, Kafka), чтобы скопировать реальные входящие запросы в обе модели: основную и теневую.
2. Shadow-модель не возвращает ответ. Её ответ не идёт на фронт, но логируется вместе с ID запроса, временем, пользователем и пр.
3. Сравнение и метрики. Считайте, насколько shadow-алгоритм был бы успешен:
- Было бы больше кликов? Конверсий?
- Диверсификации / разнообразнее ли были предложения?
- Быстрее ли работала модель? Сколько времени сэкономил бы?
- Какие объекты чаще рекомендовал?
- Где оказался тот объект, который реально выбрал пользователь?
Что можно измерить
Преимущества
- Никакого риска для пользователя
- Реальные данные — никакой синтетики
- Можно запускать даже «сырые» модели
- Хороший способ подготовки к A/B-тесту
Важно
- Shadow deployment не всегда отражает реальное поведение: пользователь не видит рекомендаций → может не кликнуть, даже если бы кликнул.
- Этого недостаточно для оценки влияния на поведение — но отлично подходит для предварительной фильтрации гипотез и моделей.