Испытание двух вариантов цен галереи

ShellBeginner
Практиковаться сейчас

Введение

APERTURE хочет включить новый аудиогид в стоимость входа. Небольшая часть синтетических посетителей попробует каждую версию до общего запуска. Вы настроите настоящий Nginx, сравните цены по версиям, остановите неверный вариант и запустите правильный для всех.

Достаточно базовых навыков терминала; HTTP и настройка прокси объясняются здесь. Workstation содержит готовые инструменты, Gallery — сайт для посетителей. Все сервисы работают на одном хосте. Это учебные запросы без платежей и реальных посетителей. Решение принимается во время частичного запуска, а не на этапе допуска перед релизом; работа без простоя не обещается. Документация переведена, сайт и реальные подписи интерфейса остаются английскими.

Направьте небольшую долю на пробную версию

Начните этот шаг в Gallery. Откройте Explore the exhibition, затем Choose tickets. Обычная группа — двое взрослых и двое детей. Нажмите Calculate price: £48 верно, поскольку взрослый билет стоит £18, детский — £6. Новый аудиогид не должен увеличивать цену. Откройте Visit, скачайте памятку и вернитесь на главную через APERTURE.

Перейдите в Workstation. pwd выводит текущий каталог, cat — предоставленные файлы:

pwd
/home/labex/project/exhibit
cat price-sheet.txt

HTTP-запрос обращается к URL сервера; ответ содержит статус и содержимое. 200 означает успешный запрос, но не правильную цену. Прокси принимает публичный запрос и передаёт его одному upstream, то есть одной из трёх версий приложения. 127.0.0.1 означает этот хост; порт определяет сервис. Посетители используют Nginx на 8081; 9001, 9002, 9003 соответствуют classic, preview-a, preview-b.

Меняйте только upstream.conf. Каждая строка Nginx server называет один upstream. Соотношение weight=4 и weight=1 даёт пробной версии примерно пятую часть запросов, но не гарантирует такую долю людей. Точка с запятой завершает директиву. Следующий here-document заменяет файл; NGINX в кавычках сохраняет буквальный текст. Вставьте блок до завершающей строки NGINX:

cat > upstream.conf <<'NGINX'
server 127.0.0.1:9001 weight=4;
server 127.0.0.1:9002 weight=1;
NGINX

Готовый помощник проверяет строки, копирует их в штатную конфигурацию Nginx и перечитывает её. sudo разрешает изменить этот сервис. Помощник не оценивает цены и не выбирает версию:

sudo python3 /opt/labex/exhibit/route.py

Ожидайте Applied native Nginx upstream: и ваши две строки. При ошибке синтаксиса прежний маршрут остаётся активным: исправьте файл и примените снова.

python3 запускает готовый клиент. sample отправляет 80 независимых запросов через 8081, без повторных попыток, и выводит наблюдаемые цены по версиям:

python3 traffic.py sample

Найдите classic и preview-a, не менее пяти ответов каждого. Числа могут отличаться; повторите запуск при слишком маленькой выборке. У каждого запуска новый ID окна; никогда не объединяйте окна разных конфигураций. HTTP-ошибки остаются видимыми. При ошибках снова примените сохранённый маршрут и измерьте новое окно; неполное окно не является доказательством. Теперь меньшая часть запросов попадает на пробную версию; далее её бизнес-результаты помогут принять решение.

Остановите испытание с неверной ценой

Оставайтесь в Workstation и прочитайте предыдущую выборку. classic возвращает [48], preview-a — [60] и ненулевой счётчик Wrong price. Обе версии успешно ответили по HTTP. Общая средняя цена скрыла бы, с каких посетителей взяли лишнее. Prices GBP перечисляет все различные суммы каждой версии.

Бизнес-правило требует £48 без доплаты за гид. Остановите этот вариант. Замените список upstream одной строкой classic, примените и измерьте новое окно:

cat > upstream.conf <<'NGINX'
server 127.0.0.1:9001 weight=1;
NGINX
sudo python3 /opt/labex/exhibit/route.py
python3 traffic.py sample

Ожидайте только classic, 80 ответов, [48], ноль неверных цен и ошибок. Одного сохранения файла недостаточно для переключения трафика. Новое окно после применения показывает, что старая версия действительно снова обслуживает запросы.

Перейдите в Gallery, откройте Tickets и рассчитайте цену группы: £48. Во время смешанного испытания каждый запрос при обновлении может выбрать другую версию; закрепления посетителя за версией здесь нет. Прокси отключает повторные обращения к upstream и закрывает соединения; он не подменяет сбой пробной версии успешным ответом classic. Реальным системам нужны осознанные правила сессий и повторов.

Вернитесь в Workstation. Неверное испытание остановлено, но вечное сохранение classic не доставит новый гид. Теперь оцените другой вариант.

Запустите правильный вариант гида для всех

Начните в Workstation. Перед полным запуском дайте preview-b такую же ограниченную долю запросов:

cat > upstream.conf <<'NGINX'
server 127.0.0.1:9001 weight=4;
server 127.0.0.1:9003 weight=1;
NGINX
sudo python3 /opt/labex/exhibit/route.py
python3 traffic.py sample

Обе версии должны получить минимум пять ответов и показать [48], без неверных цен и ошибок. Этот ограниченный тест поддерживает продолжение, но не доказывает безопасность всех реальных нагрузок. Важны также сайт, гид и другие составы групп.

Оставьте правильный вариант единственным upstream, примените и снова измерьте:

cat > upstream.conf <<'NGINX'
server 127.0.0.1:9003 weight=1;
NGINX
sudo python3 /opt/labex/exhibit/route.py
python3 traffic.py sample

Ожидайте только preview-b, 80 ответов и [48]. Если выбрали неверный порт, верните предыдущую смешанную конфигурацию, примените и повторите сравнение перед полным запуском правильной версии. Не меняйте цены или готовые программы ради искусственного успеха.

Перейдите в Gallery и на главную. Откройте Explore the exhibition: теперь страница описывает включённый аудиогид. В Choose tickets рассчитайте £48 для двух взрослых/двух детей, затем £18 для одного взрослого/без детей. Откройте Visit и скачайте настоящий гид. Полный путь посетителя должен сохраниться; ярлыка версии или зелёной отметки мало. Проверка читает существующие запросы и реальные цены, но никогда не переключает маршруты за вас.

Запущенный для всех вариант сохраняет семейную цену £48

Резюме

Вы использовали настоящий взвешенный маршрут для небольшой доли запросов, разделили бизнес-цены по версиям, остановили неверное испытание и запустили правильный вариант. Независимые окна и видимые ошибки связали решение с реальным трафиком. Маленькие учебные выборки обосновывают решение упражнения, но не доказывают надёжность в эксплуатации или отсутствие простоя.