두 갤러리 가격 미리 보기 시험하기

ShellBeginner
지금 연습하기

소개

APERTURE는 입장권에 새 오디오 가이드를 포함하려 합니다. 모두에게 제공하기 전에 소수의 합성 방문자가 각 미리 보기 버전을 체험합니다. 실제 Nginx 라우팅을 설정하고 버전별 가격을 비교하여 잘못된 버전을 중단하고 올바른 버전을 전체에 제공합니다.

기본 터미널 사용 경험이면 충분합니다. HTTP와 프록시 설정은 여기서 설명합니다. Workstation에는 준비된 도구가 있고 Gallery는 방문자 웹사이트입니다. 모든 서비스는 한 호스트에서 실행됩니다. 결제나 실제 방문자가 없는 연습 요청입니다. 공개 전 테스트 관문이 아닌 부분 출시 중의 판단을 다루며 무중단을 약속하지 않습니다. 문서는 번역되지만 웹사이트와 실제 화면 이름은 영어를 유지합니다.

소량의 요청을 미리 보기로 보내기

이 단계는 Gallery에서 시작합니다. Explore the exhibition, Choose tickets를 차례로 엽니다. 기본 그룹은 성인 두 명과 어린이 두 명입니다. Calculate price를 선택합니다. 성인 £18, 어린이 £6이므로 £48이 맞습니다. 새 오디오 가이드는 추가 요금이 없어야 합니다. Visit에서 방문 안내를 다운로드하고 APERTURE로 홈에 돌아갑니다.

Workstation으로 전환합니다. pwd는 현재 디렉터리, cat은 제공된 파일을 표시합니다.

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

HTTP 요청은 서버에 URL을 요구하며 응답에는 상태와 내용이 있습니다. 200은 요청 성공을 뜻하며 올바른 가격을 뜻하지 않습니다. 프록시는 공개 요청을 받고 세 애플리케이션 버전 중 하나인 업스트림으로 전달합니다. 127.0.0.1은 이 호스트이며 포트는 서비스를 구분합니다. 방문자는 8081의 Nginx를 사용합니다. 9001, 9002, 9003은 각각 classic, preview-a, preview-b입니다.

upstream.conf만 편집합니다. 각 Nginx server 행은 업스트림 하나를 지정합니다. weight=4와 weight=1은 미리 보기에 약 5분의 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은 8081을 통해 독립 요청 80개를 재시도 없이 보내고 버전별 실제 가격을 표시합니다.

python3 traffic.py sample

classic과 preview-a가 모두 있고 각각 응답이 다섯 개 이상인지 봅니다. 개수는 달라질 수 있습니다. 한쪽 표본이 작으면 다시 실행하세요. 실행마다 새 창 ID가 생기므로 경로 변경 전후의 창을 합치면 안 됩니다. HTTP 오류는 그대로 표시됩니다. 오류가 나면 저장한 경로를 다시 적용하고 새 창을 측정하세요. 불완전한 창은 증거가 아닙니다. 이제 소수 요청이 미리 보기에 도달했으며 다음 단계에서 업무 결과로 판단합니다.

잘못된 가격 시험 중단하기

이 단계에서는 Workstation에 머물러 직전 표본을 읽습니다. classic은 [48], preview-a는 [60]을 반환하며 Wrong price가 0보다 큽니다. 두 버전 모두 HTTP 요청은 성공했습니다. 전체 평균만 비교하면 누구에게 과금이 잘못됐는지 가려집니다. Prices GBP는 버전별로 관찰된 모든 서로 다른 합계를 보여 줍니다.

업무 규칙은 가이드 추가 요금 없이 £48입니다. 이 후보를 중단하세요. 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], 잘못된 가격 0개, 오류 0개여야 합니다. 파일 저장만으로는 트래픽이 전환되지 않습니다. 적용 후 새 창이 실제로 이전 버전이 요청을 처리함을 입증합니다.

Gallery의 Tickets에서 그룹 가격을 계산합니다. £48입니다. 혼합 시험 중 새로 고침하면 요청마다 다른 버전이 선택될 수 있습니다. 이 연습에는 방문자 고정 세션이 없습니다. 프록시는 업스트림 재시도를 끄고 연결을 닫으며 실패한 미리 보기 응답을 성공한 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]을 보여야 하며 잘못된 가격과 오류는 없어야 합니다. 이 제한 시험은 진행의 근거지만 모든 실제 부하의 안전을 증명하지 않습니다. 웹사이트, 가이드, 다른 방문자 구성도 중요합니다.

올바른 미리 보기를 유일한 업스트림으로 바꾸고 적용한 다음 다시 측정합니다.

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, 이어 성인 한 명/어린이 0명의 £18을 계산합니다. Visit에서 실제 안내를 다운로드합니다. 전체 제공 후에도 방문자의 모든 경로가 유지되어야 합니다. 버전 표시나 녹색 체크만으로는 부족합니다. 채점은 기존 요청 사실과 실제 가격을 읽으며 경로를 대신 변경하지 않습니다.

전체 제공한 미리 보기도 가족 가격 £48 유지

요약

실제 가중 라우팅으로 소수 요청을 노출하고 버전별 업무 가격을 구분하여 잘못된 시험을 중단하고 올바른 미리 보기를 전체에 제공했습니다. 독립된 창과 숨기지 않은 실패가 판단을 실제 트래픽에 연결했습니다. 작은 연습 표본은 이 과제의 판단을 뒷받침하지만 운영 신뢰성이나 무중단을 입증하지는 않습니다.