Пример реализации shadow traffic pattern для безопасного тестирования новых версий сервиса.
Client → Proxy (10% shadow) → Production Service (ответ клиенту)
↓
Shadow Service (тестирование)
↓
Redis ← Comparator (анализ различий)
- service-prod - Production версия с текущей логикой
- service-shadow - Новая версия с изменённой логикой
- proxy - Дублирует 10% трафика на shadow
- comparator - Собирает и сравнивает результаты
- redis - Хранилище результатов
# Собрать и запустить все сервисы
docker-compose up --build
# В фоне
docker-compose up -d --build# Установить зависимости для тестов
pip install -r requirements.txt
# Запустить тесты
pytest test_shadow_traffic.py -vPOST /calculate- Основной endpoint для расчётовGET /user/{user_id}- Получение данных пользователяGET /_stats- Статистика shadow traffic
GET /comparisons- Список всех сравненийGET /stats- Статистика совпадений/различий
В docker-compose.yml изменить переменную окружения:
environment:
- SHADOW_PERCENTAGE=10 # Изменить на нужный процент# Расчёт со скидкой
curl -X POST http://localhost:8000/calculate \
-H "Content-Type: application/json" \
-d '{"user_id": 123, "amount": 100.0, "operation": "discount"}'
# Получить статистику сравнений
curl http://localhost:8003/stats
# Получить детальные сравнения
curl http://localhost:8003/comparisons?limit=10