RaNxxx’s blog

データまわりの知識やノウハウを紹介するブログです

ABテスティング環境の基盤理解のための専門用語まとめ

より正しいABテストを走らせるには、基盤の仕組みや動きを理解しなければ、そもそもAB設計のミスや基盤の障害が起きた時に、対応が不可能になります。

このブログでは、自分が最近受けたレクチャーに踏まえ、勉強メモとしてまとめさせていただいております。専門家ではないため、記述の間違いがあるかもしれません。予めご了承ください。

 

 

Public IP Address と Local IP Address

Public IP Address(グローバルIPアドレス)とは、インターネットに直に接続された機器に割り当てられるIPアドレス
その一方、Local IP Address(ローカルIPアドレス)とは、企業など組織の内部で運用されるネットワーク上で各機器に割り当てられるIPアドレス

(出処:IT用語辞典:e-Words

 

Local IP Addressの場合、インターネットなど外部のネットワークでは無効なアドレスであるため、ローカルアドレスしか持たない機器が外部と通信するには、ネットワーク境界に設置された機器がNATやNAPTなどによるアドレス変換や、プロキシなどによる中継を行なう必要があります。

 

リバースプロキシ と プロキシサーバー

リバースプロキシ(Reverse Proxy)とは、クライアントとサーバの通信の間に入って、サーバの応答を「代理(proxy)」しつつ通信を中継する機能、あるいはその役割を担うサーバのことを指します。

f:id:RaNxxx:20190210205127p:plain

リバースプロキシ

その一方、プロキシとは、クライアントからのリクエストを代理して、クライアントを隠ぺいしつつWebサーバなどと通信するサーバを指す。企業内に設置され、認証されたクライアントだけにインターネットへのアクセスを許可するのによく用いられる。

(出処:@IT

 

「リバースプロキシ」と「プロキシ」は音的に似ていますが、全くの別物(むしろ真逆のもの)だと思って大丈夫です。
イメージ的には、「プロキシ」はWebクライアント(ユーザーのブラウザ)の近くにあるもので、「リバースプロキシ」はWebサーバーの近くにあるものです。

 

「リバースプロキシ」は複数のサーバを束ねて負荷分散を行い、外部からは一台のサーバのように見せかけるロードバランサとしての機能を持つものでもあるため、ABテスティング環境でも使われることがあります。

テスティング環境での利用イメージは、ユーザーのブラウザから、「http://www.example.jp/」を叩いた場合、リバースプロキシはクライアントとして、リクエストをIPアドレス(例:192.168.0.111)に変換してから、事前に定められたルールに従って、テスティング環境の仮想IPアドレス(例:192.168.0.112)に書き換え、Webサーバーににリクエストを転送し、Webサーバーから帰ってきた「http://www.example-testing.jp/」(テスティング環境のURL)のコンテンツを表示させます。

 

リバースプロキシのもう一つメリットとしては、「セキュリティの強化」にあります。
テスティング環境では、外部からの不正アクセスを防ぐために、WebアプリケーションFirewallファイアウォールなどのセキュリティ対策をすれば、Webサーバ/アプリに直接手を加えることなく安全性を高められます。

 

リバースプロキシの実装では、有名なオープンソースソフトウェアを言うと、Apache「nginx」が挙げられます。
この2つのソフトウェアの違いに関して、@ITの紹介では、以下のように

nginxはスケーラビリティを重視している。

負荷の高いWebサイトではApacheよりnginxの採用が多いことも挙げられる。これはnginxの特長の1つであるスケーラビリティの高さが反映されている、といってよいだろう。

 

nginxに関して、リバースプロキシとしての用途もありますが、Webサーバーとしての用途もあります。
ただし、前者のほうが圧倒的に多いのは事実です。後者として、使われる時に、htmlと画像を保存することが多いイメージがあります。
更にいうと、Webサーバーとして使う時に、nginxより、Apacheのほうが日本においてより使われています。

 

 

その一方、「プロキシ」は「ルーター」と比較したほうがいいです。
ルーター」は家庭のネットワークで使うものに対して、「プロキシ」は会社のネットワークで使うものです。

プロキシは、通信を保管し、監視や制限などのことができるし、更に取得したコンテンツを保管(キャッシュ)することもできます。

 

 

ロードバランサー と グローバルロードバランサ

ロードバランサは負荷分散する装置(機械そのものが存在する)、また死活監視の機能も持っています。
グローバルロードバランサといった場合は、Googleのサービスを指している。

より正確な定義は以下となります:

サーバーにかかる負荷を、平等に振り分けるための装置のことを指します。
この仕組みにより、Webサイトへのアクセス集中やサーバー故障などの場合でも、アクセス中の利用者に安定したサービス提供を継続可能になります。

(出処:カゴヤのサーバー研究室

 

ロードバランサのメリットとして:

  1. パフォーマンスの向上:サーバーの追加台数分、クライアントへの応答を処理可能になる
  2. 可用性の向上:特定のサーバーがダウンしても、別のサーバーでサービスを中断せずに提供することが可能になる

 

ABのテスティング環境においては、ロードバランサはユーザーをAスロットか、それともBスロットかに振り分ける役割を担っています。

 

DNS(Domain Name System) と DNSラウンドロビン

インターネットでは、IPアドレス(例:192.168.0.111)を指定して通信を行います。
ただし、一般ユーザーは、これらの数字を組み合わせを覚えるのにとても困難であり、そこで、人間に覚えやすいドメイン名(例:http://www.example.jp/)を叩いて、DNSがそれをIPアドレスに変換して、通信を行う役割を担っています。

そして、DNSを司るサーバーを「DNSサーバー」と呼びます。このサーバーを通じて、特定のコンピュータと通信したり、Webサイトを表示したりすることができます。

 

その一方、DNSラウンドロビンの定義は:

DNSラウンドロビンとは、1つのドメイン名に複数のIPアドレスを割り当てて、クライアントPCなどからの 問い合わせごとに順番に応答していく負荷分散技術です。

(出処:負荷分散 - ロードバランサとは、DNSラウンドロビンとは

 

つまり、DNSラウンドロビンは負荷分散を実現する方式であり、ロードバランサと似ています。
そして、両者の違いをよくまとめたのは、こちらのサイトになります:ロードバランサーとDNSラウンドロビンの違い

 

ラウンドロビンをわかりやすく言うと、負荷分散はだいたい2種類があるうちの「同じ役割のサーバーを2台用意して、交互に処理を割り当てる方法」のことを指しています。(出処:基本情報技術者試験ワンポイント講座

f:id:RaNxxx:20190211171731p:plain

負荷分散の2種類の方法

ラウンドロビンのデメリットは、全員の役割を同じにしなければいけないため、システムやファイルの内容を同じ状態に保つのに負担がかかることです。

DNSラウンドロビンをロードバランサと比較する意味で、デメリットはあと「サーバの障害を検知できない」ことがあります。

 

 

ABテスティング環境において、DNSウェブサービスを使ってユーザーにどの画面を見せるかの変換の手続きを行うことができます。

DNSウェブサービスとして「AWS Route53」などがあります。