Skip to content

misterserge/shadow-traffic-test

Repository files navigation

Shadow Traffic Testing Example

Пример реализации shadow traffic pattern для безопасного тестирования новых версий сервиса.

Архитектура

Client → Proxy (10% shadow) → Production Service (ответ клиенту)
                           ↓
                      Shadow Service (тестирование)
                           ↓
                         Redis ← Comparator (анализ различий)

Компоненты

  1. service-prod - Production версия с текущей логикой
  2. service-shadow - Новая версия с изменённой логикой
  3. proxy - Дублирует 10% трафика на shadow
  4. comparator - Собирает и сравнивает результаты
  5. redis - Хранилище результатов

Запуск

# Собрать и запустить все сервисы
docker-compose up --build

# В фоне
docker-compose up -d --build

Тестирование

# Установить зависимости для тестов
pip install -r requirements.txt

# Запустить тесты
pytest test_shadow_traffic.py -v

API Endpoints

Proxy (порт 8000)

  • POST /calculate - Основной endpoint для расчётов
  • GET /user/{user_id} - Получение данных пользователя
  • GET /_stats - Статистика shadow traffic

Comparator (порт 8003)

  • GET /comparisons - Список всех сравнений
  • GET /stats - Статистика совпадений/различий

Настройка процента shadow traffic

В 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published