二つの展示価格プレビューを試す

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 ならプレビューはリクエストの約五分の一を受けますが、人数の割合を保証するわけではありません。セミコロンでディレクティブを終えます。次のヒアドキュメントはファイルを置き換えます。引用符付きの 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 がゼロより大きくなります。どちらも 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]、誤価格ゼロ、エラーゼロになるはずです。ファイルを保存しただけではトラフィックは切り替わりません。適用後の新しいウィンドウが、旧版が実際に要求を処理している証拠です。

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、次に大人一人と子供ゼロ人の £18 を計算します。Visit で実際のガイドをダウンロードします。全体展開後も完全な訪問者体験を保つ必要があり、版名や緑のチェックだけでは不十分です。採点は既存のリクエストの事実と実価格を読み、ルートを代わりに変更しません。

全体展開したプレビューも家族料金 £48 を維持

まとめ

実際の加重ルーティングで少数のリクエストをプレビューへ送り、業務価格をバージョン別に分け、誤った試行を停止して正しいプレビューを展開しました。独立したウィンドウと見える失敗によって、判断を実際のトラフィックに結び付けました。小規模な練習標本は本演習の判断を支えますが、本番の信頼性や無停止を証明しません。