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-алгоритм был бы успешен:
Было бы больше кликов? Конверсий?
Диверсификации / разнообразнее ли были предложения?
Быстрее ли работала модель? Сколько времени сэкономил бы?
Какие объекты чаще рекомендовал?
Где оказался тот объект, который реально выбрал пользователь?
Что можно измерить
Метрика
Зачем нужна
Hit Rate @K
Попадает ли рекомендованное в то, что выбрал пользователь
Coverage
Охват новых объектов: насколько разнообразные элементы попадают в выдачу
Diversity
Разнообразие контента: нет ли повторяющихся или однотипных элементов
Latency
Быстродействие модели — сколько времени уходит на генерацию рекомендаций
Bias Check
Не повторяет ли модель в топ-1 одни и те же объекты — проверка на перекос
Position of Clicked Item
Позиция реально кликнутого объекта в выдаче shadow-модели
Преимущества
Никакого риска для пользователя
Реальные данные — никакой синтетики
Можно запускать даже «сырые» модели
Хороший способ подготовки к A/B-тесту
Важно
Shadow deployment не всегда отражает реальное поведение: пользователь не видит рекомендаций → может не кликнуть, даже если бы кликнул.
Этого недостаточно для оценки влияния на поведение — но отлично подходит для предварительной фильтрации гипотез и моделей.