[実施の形態に関連する説明]
図1は,本実施の形態に関連する処理を模式的に説明する第1のシーケンス図の一例である。以下のシーケンス図の説明において,図面上から下方向が時間の流れを示し,図面左右方向の矢印線が,メッセージの送信方向を示している。このメッセージは,例えば通信パケットである。以下の図の説明において,同じ要素には同一の符号を適宜付し,一度した説明を省略する。
本実施の形態に関連するシステムは,クライアント端末CL#1,クライアント端末CL#2と,APサーバWAと,データベースDBとを備える。以下,アプリケーションサーバをAPサーバと適宜記す。図1におけるメッセージの送受信処理の流れを説明する。
クライアント端末CL#1は,符号H_Req1に示すように,APサーバWAに第1のHTTP要求1を送信する。次いで,クライアント端末CL#2は,符号H_Req2に示すように,APサーバWAに第2のHTTP要求2を送信する。
APサーバWAは,第1のHTTP要求1を受信すると,受信した第1のHTTP要求1に応答して,符号S_Req1に示すように,第1のSQL要求1をデータベースDBに送信する。データベースDBは,符号S_Rsp1に示すように,第1のSQL要求1に対する応答である第1のSQL応答1をAPサーバWAに送信する。なお,SQLは,Structured Query Languageの略語である。
APサーバWAは,第1のSQL応答1を受信すると,受信した第1のSQL応答1に応答して,符号H_Rsp1に示すように,第1のHTTP応答1をクライアント端末CL#1に送信する。
APサーバWAは,符号H_Rsp1に示した第1のHTTP応答1の送信後に,第2のHTTP要求2(符号H_Req2参照)に応答して,符号S_Req2に示すように,第2のSQL要求2をデータベースDBに送信する。データベースDBは,符号S_Rsp2に示すように,第2のSQL要求2に対する応答である第2のSQL応答2をAPサーバWAに送信する。APサーバWAは,第2のSQL応答2を受信すると,受信した第2のSQL応答2に応答して,符号H_Rsp2に示すように,第2のHTTP応答2をクライアント端末CL#2に送信する。
最後に,クライアント端末CL#1は,符号H_Req3に示すように,APサーバWAに第3のHTTP要求3を送信する。APサーバWAは,第3のHTTP要求3を受信すると,受信した第3のHTTP要求3に応答して,符号S_Req3に示すように,第3のSQL要求3をデータベースDBに送信する。データベースDBは,符号S_Rsp3に示すように,第3のSQL要求3に対する応答である第3のSQL応答3をAPサーバWAに送信する。APサーバWAは,第3のSQL応答3を受信すると,受信した第3のSQL応答3に応答して,符号H_Rsp3に示すように,第3のHTTP応答3をクライアント端末CL#1に送信する。
ここで,符号Taは,クライアント端末CL#1が第1のHTTP要求1を送信してから第1のHTTP応答1を受信するまでの第1の応答時間を示す。符号Tbは,クライアント端末CL#2が第2のHTTP要求2を送信してから第2のHTTP応答2を受信するまでの第2の応答時間を示す。符号Tcは,クライアント端末CL#1が第3のHTTP要求3を送信してから第3のHTTP応答3を受信するまでの第3の応答時間を示す。
さて,APサーバWAは,第1のHTTP要求1,第2のHTTP要求2を連続して受信し,第1のSQL要求1,第2のSQL要求2をデータベースDBに送信する。そのため,APサーバWAにおける処理負荷が増し,APサーバWAにおいて,第2のSQL要求2をデータベースDBに送信する処理の開始時間が遅延する。その結果,クライアント端末CL#2において,第2のHTTP応答2が到達するまでの時間が遅延する。換言すれば,第1の応答時間Taよりも第2の応答時間Tbの時間が長くなる。
このように,APサーバWAが複数の要求を同時に受信すると,APサーバWAにおいて,システムにおけるデータ処理のボトルネックが発生することがある。そこで,このボトルネックを解消すべく,システムの管理者は,APサーバWAをスケールアウトする(APサーバWAの台数を増やす)。例えば,APサーバWAを1台から2台にスケールアウトする。
図2は,本実施の形態に関連する処理を模式的に説明する第2のシーケンス図の一例である。図2においては,図1における1台のAPサーバWAを2台のAPサーバWA#1,APサーバWA#2にスケールアウトした状態を示している。
なお,クライアント端末CL#1およびクライアント端末CL#2と,APサーバWA#1およびAPサーバWA#2との間には,ロードバランサが設けられている。ロードバランサは,例えば,クライアント端末CL#1からの第1のHTTP要求1やクライアント端末CL#1からの第3のHTTP要求3を受信すると,第1のHTTP要求1,第3のHTTP要求3をAPサーバWA#1に送信する。また,ロードバランサは,例えば,クライアント端末CL#2からの第2のHTTP要求2を受信すると,第2のHTTP要求2をAPサーバWA#2に送信する。
符号H_Req1に示すように,クライアント端末CL#1からの第1のHTTP要求1が,APサーバWA#1に送信される。次いで,符号H_Req2に示すように,クライアント端末CL#2からの第2のHTTP要求2が,APサーバWA#2に送信される。
APサーバWA#1は,第1のHTTP要求1を受信すると,受信した第1のHTTP要求1に応答して,符号S_Req1に示すように,第1のSQL要求1をデータベースDBに送信する。APサーバWA#2は,第2のHTTP要求2を受信すると,受信した第2のHTTP要求2に応答して,符号S_Req2に示すように,第2のSQL要求2をデータベースDBに送信する。
データベースDBは,符号S_Rsp1に示すように,第1のSQL要求1に対する応答である第1のSQL応答1をAPサーバWA#1に送信する。APサーバWA#1は,第1のSQL応答1を受信すると,受信した第1のSQL応答1に応答して,符号H_Rsp1に示すように,第1のHTTP応答1をクライアント端末CL#1に送信する。
データベースDBは,符号S_Rsp2に示すように,第2のSQL要求2に対する応答である第2のSQL応答2をAPサーバWA#2に送信する。APサーバWA#2は,第2のSQL応答2を受信すると,受信した第2のSQL応答2に応答して,符号H_Rsp2に示すように,第2のHTTP応答2をクライアント端末CL#2に送信する。
なお,符号H_Req3,符号S_Req3,符号S_Rsp3,符号H_Rsp3については,図1と同様なので,各符号の説明を省略する。
図2の第1の応答時間Ta'は,図1の第1の応答時間Taよりも短い。そして,図2の第2の応答時間Tb'は,図1の第2の応答時間Tbよりも短い。すなわち,図2で説明したスケールアウトにより,処理時間の短縮が達成される。
図1で説明したように,APサーバWAにおいて,システムにおける処理のボトルネックが発生している場合,図2で説明したように,APサーバWAをスケールアウトすると,前記した処理時間の短縮が達成される。換言すれば,このAPサーバWAのスケールアウトによるボトルネックの解消手法は有効である。
しかし,データベースDBにおいて,システムにおける処理のボトルネックが発生している場合,APサーバWAをスケールアウトしても,このボトルネックは解消しない。換言すれば,このボトルネックを解消する方法は無効である。
このように,システムが提供する情報処理サービスの品質劣化原因,すなわちボトルネックが発生している装置(場所)を特定するのは困難である。また,仮に,ボトルネックが発生している装置を特定できても,その装置のスケールアウトの台数を見積もるのは困難である。
また,装置のスケールアウトを実行する場合,この装置の前段に設けられているロードバランサの設定を,このスケールアウトに合わせて正しく変更しなければ,このスケールアウトが有効か適切に判断することが困難になる。同じく,この装置の設定を正しく変更しなければ,このスケールアウトが有効か適切に判断することが困難になる。
そこで,例えば,実際に装置をスケールアウトすることなく,擬似的に,装置をスケールアウトさせた状態を創出し,適切な動作検証を行う状態を想定する。
例えば,図1で説明したシステム(以下,第1のシステムと記す)と,第1のシステムに,さらに,検証装置を設けたシステム(以下,第2のシステムと記す)を想定する。
検証装置は,第2のシステムにおいて,クライアント端末CL#2が送信する第2のHTTP要求2(符号H_Req2)をAPサーバWAが受信できないように動作する。換言すれば,検証装置は,第2のHTTP要求2を間引く。
その結果,検証装置は,第2のシステムにおいて,擬似的に,1台のアプリケーションサーバを,2台のアプリケーションサーバにスケールアウトさせた状態を創出することができる。
しかし,単純に,HTTP要求を間引くと,第2のシステムにおいて,スケールアウト対象の装置(アプリケーションサーバ)の後段に設けられた装置(データベース)の動作に影響を及ぼす。例えば,データベースDBは,間引いたHTTP要求に対応するSQL要求を受信せず,このSQL要求に対応する処理を実行しない。
すなわち,第2のシステムにおいて,データベースDBにおいて処理されないSQL要求が発生する。その結果,第1のシステムにおけるデータベースDBの内容と,第2のシステムにおけるデータベースDBの内容とが一致しなくなり,両データベースDBの内容を照合して,両データベースDBが同じ処理を実行したかを検証することができなくなる。
また,第2のシステムにおけるデータベースDBが処理するSQL要求の数も減ってしまう。そのため,第2のシステムにおけるデータベースDBの負荷が,第1のシステムにおけるデータベースDBの負荷に比べて軽くなる。その結果,第2のシステムにおける全体の処理負荷が,第1のシステムにおける全体の処理負荷に比べて軽くなり,装置をスケールアウトする規模を適切に推定することができなくなることがある。
以下に,実際に装置をスケールアウトすることなく,擬似的に,装置をスケールアウトさせた状態を創出し,適切な動作検証を行う検証装置について説明する。
[第1の実施の形態]
(システム)
図3は,第1の実施の形態の全体システムを説明する図の一例である。検証装置100は,実働系環境EV1と検証系環境EV2とに接続する。実働系環境EV1と,検証系環境EV2とは,別のネットワークである。全体システム(検証システムとも呼ぶ)は,複数の装置(例えば,サーバやデータベース)が相互に連携してデータ処理を実行するシステムの一例である。
実働系環境EV1は,クライアント(群)CL1からの要求を受け,この要求をクライアント(群)CL1に返答する。換言すれば,実働系環境EV1は,クライアントにWebサービスを提供する。検証系環境EV2は,実働系環境EV1において性能劣化が生じた場合に,性能劣化の原因を特定するための環境である。
実働系環境EV1は,第1のスイッチSW1と,APサーバ(群)WA1と,第2のスイッチSW2と,データベース(群)DB1とを備える。以下,(群)の記載を省略する。
第1のスイッチSW1は,ポートを介して,クライアント端末CL1とAPサーバWA1と検証装置100とに接続する。第1のスイッチSW1は,クライアント端末CL1とAPサーバWA1との間で送受信されるメッセージをスイッチングする中継装置である。第1のスイッチSW1は,ポートミラーリングを行い,クライアント端末CL1とAPサーバWA1との間で送受信されるメッセージを検証装置100に送信する。なお,第1のスイッチSW1としては,スイッチングハブ,ルータなどを利用できる。
APサーバWA1は,クライアント端末CL1から要求を受信して,データベースDB1に対するトランザクションを実行するサーバである。APサーバWA1は,1台または複数のアプリケーションサーバを備える。
データベースDB1は,データベース機能を有し,APサーバWA1から受信した要求に応答して,データベースの更新などを実行する。そして,データベースDB1は,受信した要求を実行した実行結果をAPサーバWA1に送信する。データベースDB1は,1台または複数のデータベースを備える。
第2のスイッチSW2は,ポートを介して,APサーバWA1とデータベースDB1と検証装置100とに接続する。第2のスイッチSW2は,APサーバWA1とデータベースDB1との間で送受信されるメッセージをスイッチングする中継装置である。第2のスイッチSW2は,ポートミラーリングを行い,APサーバWA1とデータベースDB1との間で送受信されるメッセージを検証装置100に送信する。なお,第2のスイッチSW2としては,スイッチングハブ,ルータなどを利用できる。
クライアント端末CL1は,Webブラウザなど利用して,APサーバWA1にアクセスして,APサーバWA1が提供する各種サービスを利用する。クライアント端末CL1は,1台または複数のクライアント端末を備える。
クライアント端末CL1の中のクライアント端末は,HTTP要求をAPサーバWA1の中の1台のアプリケーションサーバに送信する。このアプリケーションサーバは,受信したHTTP要求に対応したアプリケーションを実行して,HTTP要求に対応するSQL要求をデータベースDB1の中の1台のデータベースDBに送信する。
このデータベースDBは,SQL要求を受信すると,SQL要求に応答して,SQL応答を前記1台のアプリケーションサーバに送信する。前記1台のアプリケーションサーバは,SQL応答を受信すると,SQL要求に対応したアプリケーションを実行して,SQL要求に対応するHTTP応答を前記1台のクライアント端末に送信する。
なお,データベースDBは,装置から送信されたSQL要求などの要求メッセージを受信すると,このメッセージのヘッダ情報から送信元IPアドレスを抽出する。この送信元IPアドレスは,前記装置に予め設定されているIPアドレスである。そして,データベースDBは,このメッセージに応答して,SQL応答などの応答メッセージを前記装置に送信する。応答メッセージは,前記装置に予め設定されているIPアドレスを宛先アドレスとして含む。
検証系環境EV2は,APサーバWA2とデータベースDB2とを備える。APサーバWA2は,APサーバWA1と同機能を備えるサーバである。例えば,APサーバWA2とAPサーバWA1とは,それぞれ同一の1台または複数のアプリケーションサーバを備える。同じく,例えば,データベースDB2とデータベースDB1とは,それぞれ同一の1台または複数のデータベースDBサーバを備える。
検証装置100は,実働系環境EV1の第1のスイッチSW1,第2のスイッチSW2,検証系環境EV2のデータベースDB2,APサーバWA2に接続する。検証装置100は,実働系環境EV1の性能劣化の原因を特定する。前記特定において,検証装置100は,APサーバWA2におけるアプリケーションサーバの数を擬似的にスケールアウトした状態を創出する。そして,検証装置100は,この擬似的にスケールアウトした状態において,性能劣化を改善するためにアプリケーションサーバの数をスケールアウトするのが有効か否かを判定する。
なお,実働系環境EV1は,第1のスイッチSW1とAPサーバWA1との間や,第2のスイッチSW2とデータベースDB1との間に,図示しないロードバランサを備える場合がある。ロードバランサは,受信したメッセージ(要求とも呼ぶ)を様々な方式に基づき,後段の装置に分散(振り分けとも呼ぶ)する。
例えば,前記方式としては,静的分散方式,動的分散方式,URLベース負荷分散方式,HTTPヘッダ負荷分散方式がある。静的分散方式の一例としては,後段の装置に均等に要求を分散するラウンドロビン方式がある。また,動的分散方式の一例としては,後段の装置のコネクションの数が均等になるように要求を分散する最小コネクション方式がある。また,URLベース負荷分散方式の一例としては,要求に含まれるホスト名を判別し,各サーバグループに分散する方式がある。また,HTTPヘッダ負荷分散方式としては,HTTP要求に含まれるユーザーエージェント (User agent)ヘッダにより要求を分散する方式がある。
(ハードウェアブロック図)
図4は,図3の検証装置100のハードウェアブロック図の一例である。検証装置100は,例えばバスBを介して相互に接続された,CPU(Central Processing Unit)11と,メモリ12と,記憶装置13と,通信インターフェイス14と,記録媒体読み取り装置15とを備える。
CPU11は,検証装置100の全体を制御するコンピュータ(制御部)である。メモリ12は,CPU11が実行する各種情報処理において処理されたデータや各種プログラムを一時的に記憶する。また,CPU11は,起動時に,記憶装置13に予め記憶されたプログラムを読み出し,メモリ12にプログラム12aとして展開する。
記憶装置13は,例えば,ハードディスクドライブ(HDD:Hard Disk Drive)などの磁気記憶装置や,不揮発性のメモリ(Non-volatile memory)である。他にも,記憶装置13は,図4で説明するプログラムを予め記憶する。
通信インターフェイス14は,第1のスイッチSW1,第2のスイッチSW2,データベースDB2,APサーバWA2と通信処理を行うインターフェイス機能を提供する装置である。
検証装置100が例えば有線通信機能を含む場合には,この通信インターフェイス14は,いわゆるネットワークインターフェイスカード(NIC:Network Interface Card)である。また,検証装置100が無線通信機能を含む場合には,この通信インターフェイス14は,例えば無線LAN子機である。
記録媒体読み取り装置15は,記録媒体MDに記録されたデータを読み取る装置である。記録媒体MDは,例えば,CD-ROM(Compact Disc Read Only Memory),DVD(Digital Versatile Disc),USB(Universal Serial Bus)メモリなどの可搬型記録媒体である。なお,記録媒体MDが,図5で説明する説明するプログラムを予め記録してもよい。
表示装置DAは,液晶ディスプレイなどの表示機能を備える装置である。操作装置MAは,検証装置100を操作するための装置であり,例えばキーボード,マウスである。
(ソフトウェアモジュールのブロック図)
図5は,図4の検証装置100が実行するソフトウェアモジュールのブロック図の一例である。検証装置100は,検証情報取得部101と,検証実施部102と,結果表示部103と,実働系パケット記憶部111と,擬似スケールアウト情報記憶部112と,検証系パケット記憶部113と,試験結果記憶部114とを有する。
検証情報取得部101,検証実施部102,結果表示部103は,いわゆるプログラムである。このプログラムは,例えば,記憶装置13に記憶されている。なお,このプログラムは,記憶媒体MDに記憶されていてもよい。
図4のCPU11は,起動時にこれらのプログラムを記憶装置13から読み出して,メモリ12にプログラム12aとして展開することにより,これらのプログラムをソフトウェアモジュールとして機能させる。
実働系パケット記憶部111と,擬似スケールアウト情報記憶部112と,検証系パケット記憶部113は,記憶装置13の機能を模式的に示している。
検証情報取得部101は,実働系パケットキャプチャ部1011を有する。検証実施部102は,擬似スケールアウト解析部1021と,スケールアウト補正部1022と,検証対象サーバ擬似パケット送受信部1023と,要求/応答解析部1024とを有する。
検証情報取得部101は,実働系環境EV1の動作を検証するのに必要な各種情報を取得する。実働系パケットキャプチャ部1011は,第1のスイッチSW1,第2のスイッチSW2から送信されたメッセージを受信して,メッセージの内容をテーブル形式で実働系パケット記憶部111に記憶する。
検証実施部102は,動作検証を実施(実行とも呼ぶ)する。擬似スケールアウト解析部1021は,検証系環境EV2において,検証対象サーバを疑似的にスケールアウトするためのメッセージの間引き方を解析する。スケールアウト補正部1022は,メッセージを間引いた場合に,動作検証に影響を及ぼさないように各種補正処理を行う。検証対象サーバ擬似パケット送受信部1023は,検証対象サーバの動作を擬似的に実行する処理を行う。
要求/応答解析部1024は,検証系環境EV2において送受信された要求メッセージ,応答メッセージを解析する。結果表示部103は,動作検証の結果を表示する。
実働系パケット記憶部111は,動作系環境において送受信されたメッセージをテーブル形式で記憶する。擬似スケールアウト情報記憶部112は,間引き対象となるメッセージを記憶する。検証系パケット記憶部113は,検証系環境EV2において送受信されたメッセージをテーブル形式で記憶する。試験結果記憶部114は,実働系の平均応答時間,検証系の平均応答時間を記憶する。なお,実働系の平均応答時間,検証系の平均応答時間については,図13で説明する。
(実働系環境におけるメッセージの送受信)
図6を参照して,実働系環境EV1におけるメッセージの送受信処理の一例について説明する。図6は,実働系環境EV1におけるメッセージの送受信処理の流れを模式的に説明するシーケンス図の一例である。なお,符号T1,符号T2については,図13で説明する。検証装置100は,実働系環境EV1におけるメッセージの送受信処理を参照して動作検証を実行する。
以下,クライアント端末CL1の中の1台のクライアント端末をクライアント端末CL#1と記す。クライアント端末CL1の中のCL#1とは異なるクライアント端末をクライアント端末CL#2と記す。APサーバWA1の中の1台のアプリケーションサーバをAPサーバWAと記す。データベースDB1の中の1台のデータベースをデータベースDBと記す。
クライアント端末CL#1は,符号H_Req1に示すように,APサーバWAに第1のHTTP要求1を送信する。APサーバWAは,第1のHTTP要求1を受信すると,受信した第1のHTTP要求1に応答して,符号S_Req1に示すように,第1のSQL要求1をデータベースDBに送信する。データベースDBは,符号S_Rsp1に示すように,第1のSQL要求1に対する応答である第1のSQL応答1をAPサーバWAに送信する。APサーバWAは,第1のSQL応答1を受信すると,受信した第1のSQL応答1に応答して,符号H_Rsp1に示すように,第1のHTTP応答1をクライアント端末CL#1に送信する。
クライアント端末CL#2は,符号H_Req2に示すように,APサーバWAに第2のHTTP要求2を送信する。APサーバWAは,第2のHTTP要求2を受信すると,受信した第2のHTTP要求2に応答して,符号S_Req2に示すように,第2のSQL要求2をデータベースDBに送信する。データベースDBは,符号S_Rsp2に示すように,第2のSQL要求2に対する応答である第2のSQL応答2をAPサーバWAに送信する。APサーバWAは,第2のSQL応答2を受信すると,受信した第2のSQL応答2に応答して,符号H_Rsp2に示すように,第2のHTTP応答2をクライアント端末CL#2に送信する。
(実働系環境におけるメッセージのキャプチャ処理)
図3,図6,図7を参照して,図3の実働系環境EV1におけるメッセージのキャプチャ処理について説明する。図3において,第1のスイッチSW1は,クライアント端末CL#1,クライアント端末CL#2と,APサーバWAとの間で送受信されたメッセージを,検証装置100に送信する。同じく,第2のスイッチSW2は,APサーバWAとデータベースDBとの間で送受信されたメッセージを,検証装置100に送信する。検証装置100の実働系パケットキャプチャ部1011は,第1のスイッチSW1,第2のスイッチSW2から送信されたメッセージを受信して,メッセージの内容をテーブル形式で実働系パケット記憶部111に記憶する。以下,実働系パケットキャプチャ部1011が,第1のスイッチSW1,第2のスイッチSW2から送信されたメッセージを受信し,記憶する処理をキャプチャと適宜記す。
図7は,実働系パケットキャプチャ部1011がキャプチャしたメッセージの内容をテーブル形式で記憶した状態を示す図の一例である。実働系パケットキャプチャ部1011は,図3の実働系環境EV1において送受信されたメッセージをキャプチャし,パケット記憶テーブルPT1に時系列で記憶する。図7の例では,実働系パケットキャプチャ部1011は,図6のシーケンス図で説明した,クライアント端末とAPサーバWAとの間,さらに,APサーバWAとデータベースDBとの間で送受信されたメッセージをキャプチャし,パケット記憶テーブルPT1に時系列で記憶している。
パケット記憶テーブルPT1は,No欄と,Session欄と,Time欄と,Src欄と,Dst欄と,Protocol欄と,Dst_Port欄と,Info欄とを含む。パケット記憶テーブルPT1において,キャプチャされた1単位のメッセージに関する情報が1行に記憶されている。
No欄は,キャプチャされたメッセージの順番を時系列で記憶する欄である。Session欄は,メッセージを送受信する装置間で接続が確立されてからその接続が切断されるまでに実行された通信の単位(セッションとも呼ぶ)を識別するセッション識別子を記憶する欄である。Time欄は,メッセージをキャプチャした時間を記憶する欄である。
Src欄は,キャプチャされたメッセージの送信元(SOURCE)を示す識別情報を記憶する欄である。Dst欄は,キャプチャされたメッセージの送信先(DESTINATION)を示す識別情報を記憶する欄である。Src欄,Dst欄に記憶されたClient#1,Client#2は,それぞれある1台のクライアント端末CL#1,ある1台のクライアント端末CL#2を示す。Src欄,Dst欄に記憶されたWeb/AP, DBは,それぞれある1台のAPサーバ,ある1台のデータベースを示す。
Protocol欄は,キャプチャされたメッセージの送受信時に,送信元装置と送信先装置との間で利用されたプロトコルを記憶する欄である。Protocol欄においては,全て,TCPが記憶されている。
Dst_Port欄は,キャプチャされたメッセージの送信先の装置が使用しているポート番号を記憶する欄である。例えば,80(HTTP)は,HTTP用のポート番号である80を示す。また,3306(MySQL)は,MySQL用のポート番号である3306を示す。
Info欄は,キャプチャされたメッセージの内容を示す情報を模式的に記憶する欄である。Info欄における括弧内の内容は,図6において,送受信されたメッセージを示した符号を示している。Info欄における括弧内の内容は,説明の便宜のため記載されたものであり,実働系パケットキャプチャ部1011が記憶したものではない。
図7のパケット記憶テーブルPT1においては,実働系パケットキャプチャ部1011が,図6で説明した,クライアント端末CL#1およびクライアント端末CL#2と,APサーバWAとの間で送受信されたメッセージ,および,APサーバWAとデータベースDBとの間で送受信されたメッセージをキャプチャした状態を示している。
実働系パケットキャプチャ部1011が,図6で説明した,符号H_Req1で示すメッセージである第1のHTTP要求1をキャプチャした場合に,このメッセージの内容をテーブル形式で記憶する処理を説明する。実働系パケットキャプチャ部1011は,まず,No欄に1を記憶する。
そして,No欄に1が記憶されている行において,実働系パケットキャプチャ部1011は,Session欄にAを記憶し,Time欄に第1のHTTP要求1をキャプチャした時間9:59:00を記憶し,Src欄に第1のHTTP要求1の送信元を示す識別情報Client#1を記憶し,Dst欄に第1のHTTP要求1の送信先を示す識別情報Web/APを記憶する。実働系パケットキャプチャ部1011は,Protocol欄にTCPを記憶し,Dst_Port欄に80(HTTP)を記憶し,Info欄に第1のHTTP要求1を記憶する。
ここで,第1のHTTP要求1とは,例えばデータベースに対して,ある検索条件を満たすデータをクライアント端末に送信するように要求する要求メッセージある。この第1のHTTP要求1に対応する第1のSQL要求1とは,この要求の実行を指示するSQLコマンドを含む要求メッセージである。この第1のSQL要求1に応答する第1のSQL応答1とは,前記所定の検索条件を満たすデータを含む応答メッセージである。第1のHTTP応答1とは,アプリケーションサーバがこのSQL応答メッセージに含まれる前記データをHTML(Hyper Text Markup Language)形式に変換した後のHTMLデータを含む応答メッセージである。
ここで,第2のHTTP要求2とは,例えばデータベースに対して,第1のデータを第2のデータに更新するように要求する要求メッセージある。この第2のHTTP要求2に対応する第2のSQL要求2とは,前記更新を指示するSQLコマンドを含む要求メッセージである。この第2のSQL要求2に応答する第2のSQL応答2とは,前記更新の成功または失敗を示す更新結果データを含む応答メッセージである。第2のHTTP応答2とは,アプリケーションサーバがこのSQL応答メッセージに含まれる前記更新結果データをHTML形式に変換した後のHTMLデータを含む応答メッセージである。
Info欄は,前記した第1のHTTP要求1,第1のSQL要求1,第1のSQL応答1,第1のHTTP応答1,第2のHTTP要求2,第2のSQL要求2,第2のSQL応答2,第2のHTTP応答2のメッセージの内容を記憶している。
(対応関係テーブル)
図8は,HTTP要求と,このHTTP要求に対応するSQL要求と,このSQL要求に対応するSQL応答と,このSQL応答に対応するHTTP応答との対応関係を示すテーブルの一例である。例えば,システムの管理者は,パケット記憶テーブルPT1の内容を解析して,対応関係テーブルCT1を作成し,記憶装置13に予め記憶する。
対応関係テーブルCT1は,HTTP要求欄と,HTTP応答欄と,SQL要求-SQL応答欄とを含む。対応関係テーブルCT1は,対応関係テーブルCT1の一行において,HTTP要求と,このHTTP要求に対応するSQL要求と,このSQL要求に対応するSQL応答と,このSQL応答に対応するHTTP応答とを記憶する。
対応関係テーブルCT1は,例えば,2行目に,第1のHTTP要求1(図6の符号H_Req1参照),第1のHTTP応答1(図6の符号H_Rsp1参照),第1のSQL要求1-第1のSQL応答1(図6の符号S_Req1,符号S_Rsp1参照)を記憶する。
擬似スケールアウト解析部1021は,図7,図8に基づき,間引く要求メッセージ,すなわち間引くHTTP要求を選択する。そして,擬似スケールアウト解析部1021は,図8に基づき,間引くHTTP要求の替わりに送信するメッセージを記憶する。換言すれば,擬似スケールアウト解析部1021は,図7,図8に基づき,間引く要求メッセージに対応した補正処理方法を記憶する。
(間引く要求メッセージに対応した補正処理方法)
図9は,間引く要求メッセージに対応した補正処理方法を記憶する処理の流れを説明するフロー図の一例である。
ステップS1:擬似スケールアウト解析部1021は,実働系パケット記憶部111に記憶した全データの読み出しが終了したか判定する。全データの読み出しが終了していない場合(ステップS1/NO),ステップS2に移る。具体的には,擬似スケールアウト解析部1021は,図7のパケット記憶テーブルPT1の全てのレコードを読み出したか判定する。ここで,レコードとは,パケット記憶テーブルPT1における1行に記憶されている1単位のメッセージに関する情報を意味する。
ステップS2:擬似スケールアウト解析部1021は,実働系パケット記憶部111に記憶したレコードを1行ずつ読み出す。具体的には,擬似スケールアウト解析部1021は,図7のパケット記憶テーブルPT1において,No欄に記憶された順番が小さい順に,1レコードずつ読み出す。
ステップS3:擬似スケールアウト解析部1021は,読み出した1レコードが,送信元がクライアント端末,かつ,送信先が検証対象サーバである要求メッセージReq{C→T}に該当するか判定する。大括弧{}内の"C"はクライアント端末を意味する。大括弧{}内の"T"は検証対象サーバを意味する。大括弧{}内の矢印(→)は,メッセージの送信方向を意味する。検証対象サーバとは,スケールアウトする対象のサーバである。検証対象サーバは,例えば,APサーバである。
読み出した1レコードが,送信元がクライアント端末,かつ,送信先が検証対象サーバである要求メッセージReq{C→T}に該当しない場合(ステップS3/NO),ステップS1に戻る。読み出した1レコードが,送信元がクライアント端末,かつ,送信先が検証対象サーバである要求メッセージReq{C→T}に該当する場合(ステップS3/YES),ステップS4に移る。
ステップS4:擬似スケールアウト解析部1021は,要求メッセージReq{C→T}を記憶装置13に記憶する。次いで,ステップS1に戻る。
全データの読み出しが終了した場合(ステップS1/YES),ステップS5に移る。
ステップS5:擬似スケールアウト解析部1021は,スケールアウトさせる検証対象サーバの台数に基づき,ステップS4において記憶装置13に記憶した要求メッセージReq{C→T}の中から,間引く要求メッセージReq{C→T}'を選択し,擬似スケールアウト情報記憶部112に記憶する。
ステップS6:擬似スケールアウト解析部1021は,間引く要求メッセージReq{C→T}に対応した補正処理方法を記憶する。具体的には,擬似スケールアウト解析部1021は,対応テーブルを参照して,間引く要求メッセージReq{C→T}の替わりにデータベースDBに送信するメッセージを特定し,特定したメッセージを擬似スケールアウト情報記憶部112に記憶する。
(検証系環境での検証処理)
図7,図10を参照して,検証装置100が実行する検証系環境EV2における検証処理を説明する。図10は,検証装置100が実行する検証系環境EV2における検証処理の流れを説明するフロー図の一例である。
ステップS11:検証対象サーバ擬似パケット送受信部1023は,実働系パケット記憶部111に記憶した全データの読み出しが終了したか判定する。全データの読み出しが終了した場合(ステップS11/YES),処理を終了する。全データの読み出しが終了していない場合(ステップS11/NO),ステップS12に移る。具体的には,検証対象サーバ擬似パケット送受信部1023は,図7のパケット記憶テーブルPT1の全てのレコードを読み出したか判定する。
ステップS12:検証対象サーバ擬似パケット送受信部1023は,実働系パケット記憶部111に記憶したレコードを1行ずつ読み出す。具体的には,検証対象サーバ擬似パケット送受信部1023は,図7のパケット記憶テーブルPT1において,No欄に記憶された順番が小さい順に,1レコードずつ読み出す。
ステップS13:検証対象サーバ擬似パケット送受信部1023は,読み出した1レコードが,間引く要求メッセージReq{C→T}'に該当するか判定する。間引く要求メッセージReq{C→T}'は,図9のステップS5において,擬似スケールアウト解析部1021が,擬似スケールアウト情報記憶部112に記憶した要求メッセージである。読み出した1レコードが,間引く要求メッセージReq{C→T}'に該当する場合(ステップS13/YES),ステップS14に移る。
ステップS14:検証対象サーバ擬似パケット送受信部1023は,間引く要求メッセージReq{C→T}'の替わりに検証外サーバに送信する要求メッセージReq{U→T}'を擬似スケールアウト情報記憶部112から抽出する。なお,大括弧{}内の"U"は検証外サーバを意味する。以下の説明において,検証外サーバは,例えばデータベースである。
要求メッセージReq{U→T}'は,擬似スケールアウト解析部1021がステップS6で間引く要求メッセージReq{C→T}'の替わりにデータベースDBに送信するメッセージとして特定したメッセージである。
ステップS15:検証対象サーバ擬似パケット送受信部1023は,ステップS14で抽出したメッセージを,検証系環境EV2の検証外サーバに送信する。換言すれば,検証対象サーバ擬似パケット送受信部1023は,ステップS14で抽出したメッセージを,検証系環境EV2の検証対象サーバから検証系環境EV2の検証外サーバへの要求メッセージとして,検証外サーバに送信する。
この検証系環境EV2の検証対象サーバは,図3の例では,APサーバWA2の中の何れかのAPサーバである。この検証系環境EV2の検証外サーバは,図3の例では,データベースDB2の中の何れかのデータベースである。ステップS15の終了後,ステップS11に戻る。
ステップS13において,読み出した1レコードが,間引く要求メッセージReq{C→T}'に該当しない場合(ステップS13/NO),ステップS16に移る。
ステップS16:検証対象サーバ擬似パケット送受信部1023は,ステップS12で読み出した1レコードが,クライアント端末から検証対象サーバに送信された検証用要求メッセージReq{C→T}に該当するか判定する。ステップS12で読み出した1レコードが,クライアント端末から検証対象サーバに送信された検証用要求メッセージReq{C→T}に該当しない場合(ステップS16/NO),ステップS11に戻る。ステップS12で読み出した1レコードが,クライアント端末から検証対象サーバに送信された検証用要求メッセージReq{C→T}に該当する場合(ステップS16/NO),ステップS17に移る。
ステップS17:検証対象サーバ擬似パケット送受信部1023は,検証対象サーバに検証用要求メッセージReq{C→T}を送信する。ステップS17 の終了後,ステップS11に戻る。
ここで,ステップS12におけるレコードの読み出しにおいて,検証対象サーバ擬似パケット送受信部1023は,読み出し対象のメッセージに含まれるTime欄に記憶されている時刻情報に合わせて読み出しを行う。
検証対象サーバ擬似パケット送受信部1023は,図7の例では,ステップS12を初めて実行する開始時刻Ts(例えば,9:59:00)から1秒を経過する間に,No欄の1〜3のレコードを1レコードずつ読み出し,ステップS13以下の処理を実行する。そして,開始時刻Tsから1秒を経過した時点(例えば,9:59:01)で,検証対象サーバ擬似パケット送受信部1023は,No欄の4のレコードを1レコード読み出し,ステップS13以下の処理を実行する。そして,開始時刻Tsから3秒(例えば,9:59:03)から4秒までの間で,検証対象サーバ擬似パケット送受信部1023は,No欄の5,6のレコードを1レコードずつ読み出し,ステップS13以下の処理を実行する。最後に,開始時刻Tsから4秒(例えば,9:59:04)から5秒までの間で,検証対象サーバ擬似パケット送受信部1023は,No欄の7,8のレコードを1レコードずつ読み出し,ステップS13以下の処理を実行する。
(第1の具体例)
図7〜図9を参照して,図9で説明した間引く要求メッセージに対応した補正処理方法を記憶する処理を具体的に説明する。以下の説明において,検証対象サーバは,アプリケーションサーバである。
擬似スケールアウト解析部1021は,図7のパケット記憶テーブルPT1において,No欄に記憶された順番が小さい順に,1レコードずつ読み出す(ステップS2)。そして,擬似スケールアウト解析部1021は,読み出した1レコードにおける送信元を識別する情報としてクライアント端末が含まれ,かつ,当該1レコードにおける送信先を識別する情報として検証対象サーバ(図7ではWeb/AP)が含まれているか判定する(ステップS3)。
クライアント端末は,図7ではClient#1,または,Client#2である。検証対象サーバは,図7ではWeb/APである。
ここで,擬似スケールアウト解析部1021は,一番初めに,図7の符号P1で示すセッション番号1のレコードをパケット記憶テーブルPT1から読み出す。図7の符号P1に示すレコードは,送信元を識別する情報としてクライアント端末(Client#1)が含まれ,かつ,当該1レコードにおける送信先を識別する情報として検証対象サーバ(Web/AP)が含まれている。従って,擬似スケールアウト解析部1021は,ステップS3でYESと判定し,要求メッセージReq{C→T}である,符号P1で示すレコードを記憶装置13に記憶する(ステップS4)。
擬似スケールアウト解析部1021が,ステップS1〜ステップS4を繰り返し行い,さらに,図7のパケット記憶テーブルPT1において,No欄に記憶された順番が小さい順に,セッション番号2〜セッション番号4のレコードを,1レコードずつ読み出す(ステップS2)。セッション番号2〜セッション番号4のレコードは,送信元(SRC)を識別する情報としてクライアント端末および送信先(DST)を識別する情報として検証対象サーバを含んでいない。従って,擬似スケールアウト解析部1021は,セッション番号2〜セッション番号4のレコードにおけるステップS3の判定においては常にNOと判定し,ステップS4の処理を実行しない。次に,擬似スケールアウト解析部1021は,符号P2で示すセッション番号5のレコードを読み出す。
セッション番号5のレコードは,送信元を識別する情報としてクライアント端末(Client#2)が含まれ,かつ,当該1レコードにおける送信先を識別する情報として検証対象サーバ(Web/AP)が含まれている。従って,擬似スケールアウト解析部1021は,ステップS3でYESと判定し,要求メッセージReq{C→T}である符号P2で示すレコードを記憶装置13に記憶する(ステップS4)。
擬似スケールアウト解析部1021が,ステップS1〜ステップS4を繰り返し行い,さらに,図7のパケット記憶テーブルPT1において,No欄に記憶された順番が小さい順に,セッション番号6〜セッション番号8のレコードを,1レコードずつ読み出す(ステップS2)。セッション番号6〜セッション番号8のレコードは,送信元を識別する情報としてクライアント端末および送信先を識別する情報として検証対象サーバを含んでいない。従って,擬似スケールアウト解析部1021は,セッション番号6〜セッション番号8のレコードにおけるステップS3の判定においては常にNOと判定し,ステップS4の処理を実行しない。
擬似スケールアウト解析部1021が,セッション番号8のレコードの読み出しが終了すると,換言すれば,図7のパケット記憶テーブルPT1において,全レコードの読み出しが終了すると(ステップS1/YES),ステップS5に移る。
ここで,実働系環境EV1において実際に設定されているAPサーバWA1のアプリケーションサーバの数をSb台とする。そして,実働系環境EV1において,APサーバWA1のアプリケーションサーバをスケールアウトした場合,換言すれば,APサーバWA1のアプリケーションサーバをスケールアウトしたと仮定した場合のアプリケーションサーバの数をSa台とする。すなわち,前記スケールアウトでは,アプリケーションサーバの台数を,Sb台からSa台に増設すると仮定している。なお,管理者は,前記したSa,Sbを図4の操作装置MAを介して検証装置100に入力する。
そして,ステップS4において,記憶装置13が記憶した要求メッセージReq{C→T}の個数を,Rn個とする。
擬似スケールアウト解析部1021は,(式1)を実行し,記憶装置13が記憶した要求メッセージReq{C→T}の中から間引く要求メッセージReq{C→T}'の個数であるRd個を算出する。
Rd個 = ((Sa-Sb)/Sa)×Rn個…(式1)
なお,Rd個が整数でない場合,小数点以下を切り捨てまたは四捨五入する。
例えば,Saが2,Sbが1であるとする。そして,前記の例では,記憶装置13が記憶した要求メッセージReq{C→T}は,図7の符号P1,符号P2で示す2レコードである。すなわち,Rnは2である。
この場合,Rd個 = 1(((2-1)/2)×2)である。従って,擬似スケールアウト解析部1021は,1個の要求メッセージReq{C→T}を選択する。すなわち,擬似スケールアウト解析部1021は,図7の符号P1,符号P2で示す2レコードの中の何れか1つを選択する。擬似スケールアウト解析部1021は,例えば,図7の符号P2で示す1レコードを選択し,擬似スケールアウト情報記憶部112に記憶する(ステップS5)。以下,ステップS5における記憶装置13が記憶した要求メッセージReq{C→T}の選択処理を,要求メッセージReq{C→T}の選択処理と適宜記す。
擬似スケールアウト解析部1021は,図8に基づき,ステップS5で選択した1レコード(換言すれば,間引くHTTP要求)の替わりに検証外サーバ(例えば,データベースDB)に送信するメッセージを記憶する。
ここで,擬似スケールアウト解析部1021がステップS5で選択した1レコードは,図7の符号P2で示す1レコードであり,このレコードは,第2のHTTP要求2である。そのため,このレコードの替わりに検証外サーバに送信するメッセージとして,擬似スケールアウト解析部1021は,図8の場合,選択した第2のHTTP要求2(図6の符号H_Req2参照)に対応する,第2のSQL要求2のメッセージを擬似スケールアウト情報記憶部112に記憶する。
図7,図8,図10,図11,図12を参照して,検証装置100が実行する検証系環境EV2における検証処理を具体的に説明する。
図11は,検証系環境EV2におけるメッセージの送受信処理の流れを模式的に説明するシーケンス図の一例である。
図12は,検証実施部102がキャプチャしたメッセージの内容をテーブル形式で記憶した状態を示す図の一例である。検証実施部102は,図3の検証系環境EV2において送受信されたメッセージをキャプチャし,メッセージの内容をテーブル形式で検証系パケット記憶部113に記憶する。具体的には,検証実施部102は,キャプチャしたメッセージの内容をパケット記憶テーブルPT2に時系列で記憶する。
以下の説明において,図7のパケット記憶テーブルPT1において,セッション番号1,5のレコードは,クライアント端末から検証対象サーバに送信された第1のHTTP要求1,第2のHTTP要求2であるから,このレコードは,クライアント端末から検証対象サーバに送信された検証用要求メッセージReq{C→T}に該当する。
また,セッション番号5のレコードは,図9のステップS5で選択された第2のHTTP要求2であるから,このレコードは,間引く要求メッセージReq{C→T}'に該当する。
また,セッション番号1,5以外のレコードは,検証用要求メッセージReq{C→T}にも該当しない。同じく,セッション番号1,5以外のレコードは,間引く要求メッセージReq{C→T}'にも該当しない。
さて,検証対象サーバ擬似パケット送受信部1023は,図7のパケット記憶テーブルPT1において,No欄に記憶された順番が小さい順に,1レコードずつ読み出す(図10のステップS12)。ここで,擬似スケールアウト解析部1021は,一番初めに,符号P1で示すセッション番号1のレコードをパケット記憶テーブルPT1から読み出す。セッション番号1のレコードは,間引く要求メッセージReq{C→T}'に該当しないが,検証用要求メッセージReq{C→T}に該当する。
従って,検証対象サーバ擬似パケット送受信部1023は,ステップS13でNOと判定し,ステップS16でYESと判定する。そして,検証対象サーバ擬似パケット送受信部1023は,検証対象サーバであるAPサーバWAに検証用要求メッセージReq{C→T}として,第1のHTTP要求1を送信する(ステップS17)。この第1のHTTP要求1の送信は,図11の符号H_Req1を参照。
以後,検証対象サーバ擬似パケット送受信部1023は,セッション番号2〜セッション番号4のレコードを1つずつ読み込む。セッション番号2〜セッション番号4は,前記したように,検証用要求メッセージReq{C→T}にも該当せず,間引く要求メッセージReq{C→T}'にも該当しない。従って,検証対象サーバ擬似パケット送受信部1023は,ステップS13でNOと判定し,ステップS16でNOと判定する。
セッション番号2〜セッション番号4のレコードに対するステップS13〜ステップS16の判定処理を継続中に,APサーバWAは,以下の処理を実行する。すなわち,APサーバWAは,検証対象サーバ擬似パケット送受信部1023から送信された第1のHTTP要求1を受信すると,受信した第1のHTTP要求1に応答して,図11の符号S_Req1に示すように,第1のSQL要求1をデータベースDBに送信する。データベースDBは,図11の符号S_Rsp1に示すように,第1のSQL要求1に対する応答である第1のSQL応答1をAPサーバWAに送信する。
APサーバWAは,第1のSQL応答1を受信すると,受信した第1のSQL応答1に応答して,符号H_Rsp1に示すように,第1のHTTP応答1を検証対象サーバ擬似パケット送受信部1023に送信する。
検証実施部102は,前記した,検証装置100とAPサーバWAとの間で送受信されるメッセージ,APサーバWAとデータベースDBとの間で送受信されるメッセージをキャプチャして,図12のパケット記憶テーブルPT2として記憶する。検証実施部102は,パケット記憶テーブルPT2において,第1のHTTP要求1,第1のSQL要求1,第1のSQL応答1,第1のHTTP応答1を,それぞれ,セッション番号1,2,3,4で示すレコードとして記憶する。なお,図12のパケット記憶テーブルPT2において,Src 欄,Dst欄に記憶されているPVDは,検証装置100を意味する。
さて,検証対象サーバ擬似パケット送受信部1023は,図7の符号P2で示すセッション番号5のレコードを読み込む。セッション番号5は,間引く要求メッセージReq{C→T}'に該当する。
従って,検証対象サーバ擬似パケット送受信部1023は,ステップS13でYESと判定し,間引く要求メッセージReq{C→T}'の替わりに検証外サーバに送信する要求メッセージReq{U→T}'を擬似スケールアウト情報記憶部112から抽出する(ステップS14)。要求メッセージReq{U→T}'は,第2のSQL要求2である。
検証対象サーバ擬似パケット送受信部1023は,第2のSQL要求2を検証系環境EV2の検証外サーバ(データベースDB)に送信する(図11の符号S_Req2参照)。
データベースDBは,検証装置100の検証対象サーバ擬似パケット送受信部1023から送信された第2のSQL要求2を受信すると,第2のSQL要求2に応答して,第2のSQL応答2を検証装置100に送信する(図11の符号S_Rsp2参照)。
検証実施部102は,前記した,検証装置100とデータベースDBとの間で送受信されるメッセージをキャプチャして,図12のパケット記憶テーブルPT2として記憶する。検証実施部102は,パケット記憶テーブルPT2において,第2のSQL要求2を,セッション番号5で示すレコードとして記憶し,第2のSQL応答2を,セッション番号6で示すレコードとして記憶する。
以上説明したように,図3で説明した検証システムは,第1の装置と,第2の装置と,検証装置100とを備える。第1の装置は,受信した第1のデータ群,第2のデータ群のそれぞれに応答して第3のデータ群,第4のデータ群を送信する。第2の装置は,第3のデータ群を受信し第2のデータ群を送信する。
検証システムは,第1の装置と第2の装置とを備えた第1のシステム,第2のシステムとを備える。
ここで,第1のシステムは,図3の例では,実働系環境EV1である。第2のシステムは,検証系環境EV2である。
第1の装置は,例えばAPサーバである。第2の装置は,例えばデータベースである。また,第1のデータ群〜第4のデータ群のそれぞれは,1または複数のデータ(単位)を含むデータ群である。
第1のデータ群は,例えば,第1のHTTP要求1,第2のHTTP要求2を含む。第2のデータ群は,例えば,第1のSQL応答1,第2のSQL応答2を含む。第3のデータ群は,例えば,第1のSQL要求1,第2のSQL要求2を含む。第4のデータ群は,例えば,第1のHTTP応答1,第2のHTTP応答2を含む。
検証対象サーバ擬似パケット送受信部1023は,データベースDBが受信する第3のデータ群の中の一部のデータ群をデータベースDBに直接送信する。第1の具体例では,一部のデータ群は,図11の場合,第2のSQL要求2(符号S_Req2参照)である。また,後記する第2の具体例では,一部のデータ群は,図17の場合,第2のSQL要求2(符号S_Req2参照),第3のSQL要求3(符号S_Req3参照)である。
また,検証対象サーバ擬似パケット送受信部1023は,第3のデータ群の中の他のデータ群に対応する第1のデータ群をAPサーバに送信することで,他のデータ群をデータベースDBに供給する。第1の具体例,後記する第2の具体例では,他のデータ群は,図11,図17の場合,第1のSQL要求1(符号S_Req1参照)である。
そして,この他のデータ群に対応する第1のデータ群とは,この他のデータ群をAPサーバが送信するトリガとなるHTTP要求である第1のHTTP要求1(符号H_Req1参照)である。検証対象サーバ擬似パケット送受信部1023が,第1のHTTP要求1をAPサーバに送信すれば,APサーバは,第1のHTTP要求1に応答して,第1のSQL要求1をデータベースDBに送信する。すなわち,第1のSQL要求1が,データベースDBに供給されることになる。
検証装置100は,さらに,実働系環境EV1において送受信された第1〜第4のデータ群をそれぞれ対応付けた対応情報を記憶する記憶部を備える。この記憶部は,例えば記憶装置13である。この対応情報は,HTTP要求と,このHTTP要求に対応するSQL要求と,このSQL要求に対応するSQL応答と,このSQL応答に対応するHTTP応答との対応関係を示すテーブルが記憶する情報である。このテーブルは,例えば図8の対応関係テーブルCT1,後記する図16の対応関係テーブルCT2である。
検証対象サーバ擬似パケット送受信部1023は,実働系環境EV1における第1のデータ群の中から,検証系環境EV2のAPサーバに送信する第1のデータ群を特定し,実働系環境EV1における第3のデータ群の中から,前記一部のデータ群を特定する。実働系環境EV1における第1のデータ群,第3のデータ群は,前記対応情報(対応関係テーブルCT1,CT2)や,図7のパケット記憶テーブルPT1に記憶されているデータ群である。
検証対象サーバ擬似パケット送受信部1023は,対応情報と,検証装置100に入力された実働系環境EV1においてAPサーバをスケールアウトした場合の台数とに基づき,前記した特定を行う。検証対象サーバ擬似パケット送受信部1023は,第1の具体例では,第1のデータ群である2つのHTTP要求の中から,1つのHTTP要求を前記対応情報から特定している。そして,検証対象サーバ擬似パケット送受信部1023は,第1の具体例では,第3のデータ群の中から,一部のデータ群として第2のSQL要求2を特定している。
要求/応答解析部1024は,第1のデータ群,一部のデータ群,第4のデータ群を用いて,動作検証を行う。以下,要求/応答解析部1024について詳しく説明する。
(検証結果)
図6,図11,図12,図13を参照して,検証結果の表示処理について説明する。図13は,検証結果の表示処理の流れを説明するフロー図の一例である。
ステップS21:要求/応答解析部1024は,実働系パケット記憶部111に記憶した全データの読み出しが終了したか判定する。換言すれば,図10で説明した処理が終了したか判定する。
ステップS22:要求/応答解析部1024は,実働系環境における平均応答時間が,検証系環境における平均応答時間を超えているか判定する。
実働系環境における平均応答時間について説明する。
要求/応答解析部1024は,実働系環境EV1において,第1のデータ群が送信されてから当該第1のデータ群に対応する第4のデータ群がクライアント端末で受信されるまでの総時間を当該第1のデータ群に含まれる第1のデータの単位数で除算した第1の時間を算出する。この第1の時間が,実働系環境における平均応答時間である。
ここで,第1のデータの単位数とは,第1のデータ群に含まれる第1のデータの数である。前記の例では,第1のデータ群は,第1のHTTP要求1,第2のHTTP要求2の2つのデータ単位を含むから,第1のデータの単位数は2である。そして,第1のデータ群に対応する第4のデータ群とは,前記の例では,第1のHTTP応答1,第2のHTTP応答2である。
図6の例では,符号T1,符号T2で示す時間の総和が,前記総時間に相当する。従って,図6の例では,第1の時間は,(式2)で示す,
実働系の平均応答時間Avj = (T1+T2)/2…(式2)
である。
要求/応答解析部1024は,検証系環境EV2においてAPサーバに第1のデータ群が送信されてから当該第1のデータ群に対応する第4のデータ群が受信されるまでの総時間Ta1を算出する。そして,要求/応答解析部1024は,検証系環境EV2においてデータベースDBに特定した一部のデータ群を送信してから前記一部のデータ群に対応する第2のデータ群を受信するまでの総時間Ta2を算出する。
そして,要求/応答解析部1024は,総時間Ta1と総時間Ta2との合計時間を算出する。図11の例の場合,総時間Ta1は,符号T1'で示す時間であり,総時間Ta2は,符号T2'で示す時間である。
要求/応答解析部1024は,この合計時間を,前記第1のデータ群に含まれる第1のデータの単位数と前記一部のデータ群に含まれる一部のデータの単位数との合計で除算した第2の時間とを算出する。この第2の時間が,検証系環境における平均応答時間である。
図11の例の場合,第1のデータ群は,第1のHTTP要求1の1つのデータ単位を含むから,第1のデータの単位数は1である。一部のデータ群は,第2のSQL要求2の1つのデータ単位を含むから,一部のデータの単位数は1である。
従って,図11の例では,第2の時間は,(式3)で示す,
検証系の平均応答時間Avj = (T1'+T2')/2…(式3)
である。
要求/応答解析部1024は,実働系の平均応答時間Avj,検証系の平均応答時間Aveを試験結果記憶部114に記憶する。
実働系環境における平均応答時間が,検証系環境における平均応答時間を超えている場合(ステップS22/YES),ステップS23に移る。
ステップS23:要求/応答解析部1024は,検証対象サーバのスケールアウトが有効と判定し,判定結果を表示する。換言すれば,要求/応答解析部1024は,APサーバをスケールアウトする台数が適切であると判定し,判定結果を出力する。
具体的には,要求/応答解析部1024は,この判定結果を表示するように,結果表示部103に指示する。結果表示部103は,この指示に応答して,この判定結果を表示装置DAに表示する。
ステップS24:要求/応答解析部1024は,検証系環境における平均応答時間について,SLA(Service Level Agreement)が指定されているか判定する。このSLAは,所定の閾値に相当するものである。SLAは,時間情報として(例えば,秒単位)で,記憶装置13に記憶されるものである。具体的には,記憶装置に,SLAとして時間情報が記憶されている場合には,要求/応答解析部1024は,検証系環境における平均応答時間について,SLAが指定されていると判定する。検証系環境における平均応答時間について,SLA(Service Level Agreement)が指定されている場合(ステップS24/YES),ステップS25に移る。
ステップS25:要求/応答解析部1024は,平均応答時間のSLAを遵守するか判定する。ここで,平均応答時間のSLAを管理者が遵守する必要がある場合には,管理者は,その旨を示すフラグをオン状態で記憶装置13に記憶する。一方,平均応答時間のSLAを管理者が遵守する必要がない場合には,管理者は,その旨を示すフラグをオフ状態で記憶装置13に記憶する。
要求/応答解析部1024は,平均応答時間のSLAを遵守する場合,換言すれば前記フラグがオン状態の場合(ステップS25/YES),ステップS26に移る。
ステップS26:要求/応答解析部1024は,スケールアウトさせる検証対象サーバの台数を増やすことを示す情報を表示する。具体的には,要求/応答解析部1024は,この情報を表示するように,結果表示部103に指示する。結果表示部103は,この指示に応答して,この情報を表示装置DAに表示する。
ここで,実働系環境における平均応答時間が,検証系環境における平均応答時間を超えていない場合(ステップS22/NO),ステップS27に移る。
ステップS27:要求/応答解析部1024は,検証対象サーバのスケールアウトが無効と判定し,判定結果を表示する。具体的には,要求/応答解析部1024は,この判定結果を表示するように,結果表示部103に指示する。結果表示部103は,この指示に応答して,この判定結果を表示装置DAに表示する。
検証系環境における平均応答時間について,SLA(Service Level Agreement)が指定されていない場合(ステップS24/NO),処理を終了する。また,要求/応答解析部1024は,平均応答時間のSLAを遵守しない場合,換言すれば前記フラグがオフ状態の場合(ステップS25/NO),処理を終了する。
以後,管理者は,検証装置100が有効の判定結果を表示装置DAに表示した場合には,実働系環境における性能劣化の原因が検証対象サーバ(例えばAPサーバ)に存在すると考えて,実働系環境におけるAPサーバの台数を実際に増やす。
一方,管理者は,検証装置100が無効の判定結果を表示装置DAに表示した場合には,実働系環境における性能劣化の原因が,APサーバ以外に存在と考えて,例えばデータベースDBの性能を向上するアップグレード処理を行う。他にも,管理者は,データベースDBの台数を増やす。
本実施の形態の検証装置によれば,実働系環境において性能劣化が発生している場合に,管理者は,検証系環境において装置を実際に増設することなく,その性能劣化の原因を特定することができる。そして,管理者は,検証系環境においてスケールアウトを実際に行わないので,装置増設の費用や工数を無くすことができる。また,管理者は,例えば,検証系環境においてスケールアウトを実際に行わないので,スケールアウトに伴うロードバランサなどの各種装置の設定変更作業が不要になる。
(第2の具体例)
次に,第2の具体例について説明する。第1の具体例では,検証対象サーバの台数を1台増設した状態を擬似的に創出した。第2の具体例では,検証対象サーバの台数を2台増設した状態を擬似的に創出する。
図14は,実働系環境EV1におけるメッセージの送受信処理の流れを模式的に説明するシーケンス図の一例である。
ここで,符号H_Req1,符号S_Req1,符号S_Rsp1,符号H_Rsp1,符号H_Req2,符号S_Req2,符号S_Rsp2,符号H_Rsp2については,図6と同様なので,各符号の説明を省略する。また,符号H_Req3,符号S_Req3,符号S_Rsp3,符号H_Rsp3については,図1と同様なので,各符号の説明を省略する。
第1の具体例で説明したように,実働系パケットキャプチャ部1011は,図14のシーケンス図で説明した各メッセージを時系列でキャプチャし,実働系パケット記憶部111に記憶する。
図15は,実働系パケットキャプチャ部1011がキャプチャしたメッセージの内容をテーブル形式で記憶した状態を示す図の一例である。図15の各欄の内容については,図7で説明したので,前記内容の説明を省略する。
(対応関係テーブル)
図16は,HTTP要求と,このHTTP要求に対応するSQL要求と,このSQL要求に対応するSQL応答と,このSQL応答に対応するHTTP応答との対応関係を示すテーブルの一例である。例えば,システムの管理者は,図15の内容を解析して,対応関係テーブルCT2を作成し,記憶装置13に予め記憶する。
対応関係テーブルCT2の1行目〜3行目の内容は,図8と同様なのでその説明を省略する。対応関係テーブルCT2は,例えば,4行目に,第3のHTTP要求3(図14の符号H_Req3参照),第3のHTTP応答3(図14の符号H_Rsp3参照),第3のSQL要求3-第3のSQL応答3(図14の符号S_Req3,符号S_Rsp3参照)を記憶する。
(間引く要求メッセージに対応した補正処理方法)
図9,図15,図16を参照して,第2の具体例における間引く要求メッセージに対応した補正処理方法の記憶処理について説明する。
擬似スケールアウト解析部1021は,図15のパケット記憶テーブルPT3に対して,図9のフロー図で説明した処理を実行し,図9のステップS4において,記憶装置13が記憶した要求メッセージReq{C→T}に対して選択処理を実行する(ステップS5)。
前記の例では,実働系環境EV1のAPサーバWA1のアプリケーションサーバの数は1台(Sbは1)とする。そして,スケールアウトした場合の実働系環境EV1のAPサーバWA1のアプリケーションサーバの数を3台(Saは3)とする。また,記憶装置13が記憶した要求メッセージReq{C→T}は,図15の符号P1〜符号P3で示す3レコードである。すなわち,Rnは3である。
この場合,Rd個 = 2(((3-1)/3)×3)である。従って,擬似スケールアウト解析部1021は,2個の要求メッセージReq{C→T}を選択する。すなわち,擬似スケールアウト解析部1021は,図15の符号P1〜符号P3で示す3レコードの中の何れか2つを選択する。なお,Sa,Sb,Rn,Rdについては,第1の具体例の(式1)を参照。
擬似スケールアウト解析部1021は,例えば,符号P2,符号P3で示す2レコードを選択し,擬似スケールアウト情報記憶部112に記憶する(ステップS5)。
擬似スケールアウト解析部1021は,図16に基づき,選択した2レコード(換言すれば,間引くHTTP要求)の替わりに検証外サーバ(例えば,データベースDB)に送信するメッセージを記憶する。擬似スケールアウト解析部1021は,図16の場合,選択した第2のHTTP要求2(図14の符号H_Req2参照)に対応する,第2のSQL要求2のメッセージを擬似スケールアウト情報記憶部112に記憶する。さらに,擬似スケールアウト解析部1021は,図16の場合,選択した第3のHTTP要求3(図14の符号H_Req3参照)に対応する,第3のSQL要求3のメッセージを擬似スケールアウト情報記憶部112に記憶する。
(検証系環境での検証処理)
図10,図15〜図18を参照して,検証装置100が実行する検証系環境EV2における検証処理を具体的に説明する。
図17は,検証系環境EV2におけるメッセージの送受信処理の流れを模式的に説明するシーケンス図の一例である。
図18は,検証実施部102がキャプチャしたメッセージの内容をテーブル形式で記憶した状態を示す図の一例である。検証実施部102は,図3の検証系環境EV2において送受信されたメッセージをキャプチャし,パケット記憶テーブルPT4に時系列で記憶する。
以下の説明において,図15のパケット記憶テーブルPT3において,符号P1,P2,P3で示すセッション番号1,5,9のレコードは,クライアント端末から検証対象サーバに送信された第1のHTTP要求1,2,3であるから,このレコードは,クライアント端末から検証対象サーバに送信された検証用要求メッセージReq{C→T}に該当する。
また,セッション番号5,9のレコードは,図9のステップS5で選択された第2のHTTP要求2,3であるから,このレコードは,間引く要求メッセージReq{C→T}'に該当する。
また,セッション番号1,5,9以外のレコードは,検証用要求メッセージReq{C→T}にも該当しない。同じく,セッション番号1,5,9以外のレコードは,間引く要求メッセージReq{C→T}'にも該当しない。
さて,検証対象サーバ擬似パケット送受信部1023は,図15のパケット記憶テーブルPT3において,No欄に記憶された順番が小さい順に,1レコードずつ読み出す(ステップS12)。ここで,擬似スケールアウト解析部1021は,一番初めに,図15の符号P1で示すセッション番号1のレコードをパケット記憶テーブルPT3から読み出す。セッション番号1のレコードは,間引く要求メッセージReq{C→T}'に該当しないが,検証用要求メッセージReq{C→T}に該当する。
従って,検証対象サーバ擬似パケット送受信部1023は,ステップS13でNOと判定し,ステップS16でYESと判定する。そして,検証対象サーバ擬似パケット送受信部1023は,検証対象サーバであるAPサーバWAに検証用要求メッセージReq{C→T}として,第1のHTTP要求1を送信する(ステップS17)。この第1のHTTP要求1の送信は,図17の符号H_Req1を参照。
以後,検証対象サーバ擬似パケット送受信部1023は,図15のセッション番号2〜セッション番号4のレコードを1つずつ読み込む。セッション番号2〜セッション番号4は,前記したように,検証用要求メッセージReq{C→T}にも該当せず,間引く要求メッセージReq{C→T}'にも該当しない。従って,検証対象サーバ擬似パケット送受信部1023は,ステップS13でNOと判定し,ステップS16でNOと判定する。
図15のセッション番号2〜セッション番号4のレコードに対するステップS13〜ステップS16の判定処理を継続中に,APサーバWAは,以下の処理を実行する。すなわち,APサーバWAは,検証対象サーバ擬似パケット送受信部1023から送信された第1のHTTP要求1を受信すると,受信した第1のHTTP要求1に応答して,図17の符号S_Req1に示すように,第1のSQL要求1をデータベースDBに送信する。データベースDBは,図17の符号S_Rsp1に示すように,第1のSQL要求1に対する応答である第1のSQL応答1をAPサーバWAに送信する。
APサーバWAは,第1のSQL応答1を受信すると,受信した第1のSQL応答1に応答して,符号H_Rsp1に示すように,第1のHTTP応答1を検証対象サーバ擬似パケット送受信部1023に送信する。
検証実施部102は,前記した,検証装置100とAPサーバWAとの間で送受信されるメッセージ,APサーバWAとデータベースDBとの間で送受信されるメッセージをキャプチャして,図18のパケット記憶テーブルPT4として記憶する。検証実施部102は,パケット記憶テーブルPT4において,第1のHTTP要求1,第1のSQL要求1,第1のSQL応答1,第1のHTTP応答1を,それぞれ,セッション番号1,2,3,4で示すレコードとして記憶する。なお,図18のパケット記憶テーブルPT4において,Src 欄,Dst欄に記憶されているPVDは,検証装置100を意味する。
さて,検証対象サーバ擬似パケット送受信部1023は,図15の符号P2で示すセッション番号5のレコードを読み込む。セッション番号5は,間引く要求メッセージReq{C→T}'に該当する。
従って,検証対象サーバ擬似パケット送受信部1023は,ステップS13でYESと判定し,間引く要求メッセージReq{C→T}'の替わりに検証外サーバに送信する要求メッセージReq{U→T}'を擬似スケールアウト情報記憶部112から抽出する(ステップS14)。要求メッセージReq{U→T}'は,第2のSQL要求2である。
検証対象サーバ擬似パケット送受信部1023は,第2のSQL要求2を検証系環境EV2の検証外サーバ(データベースDB)に送信する(図17の符号S_Req2参照)。
データベースDBは,検証対象サーバ擬似パケット送受信部1023から送信された第2のSQL要求2を受信すると,第2のSQL要求2に応答して,図17の符号S_Rsp2に示す,第2のSQL応答2を検証装置100に送信する。
検証実施部102は,前記した,検証装置100とデータベースDBとの間で送受信されるメッセージをキャプチャして,図18のパケット記憶テーブルPT4として記憶する。検証実施部102は,パケット記憶テーブルPT4において,第2のSQL要求2を,セッション番号5で示すレコードとして記憶し,第2のSQL応答2を,セッション番号6で示すレコードとして記憶する。
さて,検証対象サーバ擬似パケット送受信部1023は,図15の符号P3で示すセッション番号9のレコードを読み込む。セッション番号9は,間引く要求メッセージReq{C→T}'に該当する。
従って,検証対象サーバ擬似パケット送受信部1023は,ステップS13でYESと判定し,間引く要求メッセージReq{C→T}'の替わりに検証外サーバに送信する要求メッセージReq{U→T}'を擬似スケールアウト情報記憶部112から抽出する(ステップS14)。要求メッセージReq{U→T}'は,第3のSQL要求3である。
検証対象サーバ擬似パケット送受信部1023は,第3のSQL要求3を検証系環境EV2の検証外サーバ(データベースDB)に送信する(図17の符号S_Req3参照)。
データベースDBは,検証対象サーバ擬似パケット送受信部1023から送信された第3のSQL要求3を受信すると,第3のSQL要求3に応答して,図17の符号S_Rsp3に示す,第3のSQL応答3を検証装置100に送信する。
検証実施部102は,前記した,検証装置100とデータベースDBとの間で送受信されるメッセージをキャプチャして,図18のパケット記憶テーブルPT4として記憶する。検証実施部102は,パケット記憶テーブルPT4において,第3のSQL要求3を,セッション番号7で示すレコードとして記憶し,第3のSQL応答3を,セッション番号8で示すレコードとして記憶する。
そして,要求/応答解析部1024は,図13で説明した処理を実行し,検証対象サーバのスケールアウトが有効か無効かを示す判定する。
[第2の実施の形態]
第2の実施の形態においては,検証装置が,検証系環境において,クライアント端末,検証外サーバが実行する処理と同じ処理を擬似的に実行し,検証対象サーバのスケールアウトが有効か検証する場合を例示して説明する。
以下の説明において,検証外サーバは,第1の実施の形態で説明したデータベースである。そして,検証対象サーバは,第1の実施の形態で説明したアプリケーションサーバである。なお,検証装置が,検証系環境において,クライアント端末,検証外サーバが実行する処理と同じ処理を擬似的に実行する処理については,特開2012-195699号公報に詳細に記載されている。
図19は,第2の実施の形態の全体システムを説明する図の一例である。検証装置100は,実働系環境EV1と検証系環境EV3とに接続する。実働系環境EV1と,検証系環境EV3とは,別のネットワークである。検証系環境EV3は,第1の実施の形態で説明した検証系環境EV2とは異なりデータベースDB2を備えず,APサーバWA2を備える。
検証装置100は,検証系環境EV2において,クライアント端末,検証外サーバが実行する処理と同じ処理を擬似的に実行する。そして,検証装置100は,検証対象サーバのスケールアウトが有効か検証する。
(ソフトウェアモジュールのブロック図)
図20は,図19の検証装置100が実行するソフトウェアモジュールのブロック図の一例である。検証装置100は,検証情報取得部101と,検証実施部102と,結果表示部103と,実働系パケット記憶部111と,擬似スケールアウト情報記憶部112と,検証系パケット記憶部113と,試験結果記憶部114とを有する。
図4のCPU11は,起動時にこれらのプログラムを記憶装置13から読み出して,メモリ12にプログラム12aとして展開することにより,これらのプログラムをソフトウェアモジュールとして機能させる。
検証実施部102は,擬似スケールアウト解析部1021と,スケールアウト補正部1022と,要求/応答解析部1024と,クライアント擬似パケット送受信部1025と,検証外サーバ擬似パケット送受信部1026とを有する。
クライアント擬似パケット送受信部1025は,クライアント端末の動作を擬似的に実行する処理を行う。検証外サーバ擬似パケット送受信部1026は,検証外サーバの動作を擬似的に実行する処理を行う。
(実働系環境におけるメッセージのキャプチャ処理)
図14,図15を参照して,実働系環境におけるメッセージのキャプチャ処理を説明する。実働系環境EV1においては,第1の実施の形態の図14で説明したメッセージの送受信が実行されているとする。検証装置100の実働系パケットキャプチャ部1011は,第1の実施の形態で説明したように,第1のスイッチSW1,第2のスイッチSW2から送信されたメッセージを受信して,図15で示したように,メッセージの内容をテーブル形式で実働系パケット記憶部111に記憶する。
(間引く要求メッセージに対応した補正処理方法)
図9,図15,図16を参照して,間引く要求メッセージに対応した補正処理方法を記憶する処理を具体的に説明する。
擬似スケールアウト解析部1021は,図15,図16に基づき,間引くHTTP要求を選択する。そして,擬似スケールアウト解析部1021は,図15,図16に基づき,間引くHTTP要求の替わりに送信するメッセージを記憶する。
ここで,擬似スケールアウト解析部1021は,図9で説明した処理を実行し,ステップS1〜ステップS4の処理を繰り返し行い,図15の符号P1〜符号P3で示すレコードを記憶装置13に記憶する(ステップS4)。
擬似スケールアウト解析部1021が,ステップS1〜ステップS4を繰り返し行い,図15のパケット記憶テーブルPT3において,全レコードの読み出しが終了すると(ステップS1/YES),ステップS5に移る。
擬似スケールアウト解析部1021は,図15のパケット記憶テーブルPT3に対して,図9のフロー図で説明した処理を実行し,図9のステップS4において,記憶装置13が記憶した要求メッセージReq{C→T}に対して選択処理を実行する(ステップS5)。
前記の例では,実働系環境EV1のAPサーバWA1のアプリケーションサーバの数は1台(Sbは1)とする。そして,スケールアウトした場合の実働系環境EV1のAPサーバWA1のアプリケーションサーバの数を2台(Saは2)とする。また,記憶装置13が記憶した要求メッセージReq{C→T}は,図15の符号P1〜符号P3で示す3レコードである。すなわち,Rnは3である。
この場合,Rd個 = 1.5(((2-1)/2)×3)である。ここでは,小数点以下を切り捨て,Rdを1とする。
従って,擬似スケールアウト解析部1021は,1個の要求メッセージReq{C→T}を選択する。すなわち,擬似スケールアウト解析部1021は,図15の符号P1〜符号P3で示す3レコードの中の何れか1つを選択する。なお,Sa,Sb,Rn,Rdについては,第1の具体例の(式1)を参照。
擬似スケールアウト解析部1021は,例えば,符号P2で示す1レコードを選択し,擬似スケールアウト情報記憶部112に記憶する(ステップS4)。
擬似スケールアウト解析部1021は,図16に基づき,選択した1レコード(換言すれば,間引くHTTP要求)の替わりに検証外サーバ(例えば,データベースDB)に送信するメッセージを記憶する。擬似スケールアウト解析部1021は,図16の場合,選択した第2のHTTP要求2(図14の符号H_Req2参照)に対応する,第2のSQL要求2のメッセージを擬似スケールアウト情報記憶部112に記憶する。
(検証系環境での検証処理)
図15,図16,図21,図22を参照して,検証装置100が実行する検証系環境EV2における検証処理を説明する。
図21は,クライアント擬似パケット送受信部1025が実行する検証系環境EV2におけるメッセージの送受信処理の流れを説明するフロー図の一例である。
ステップS51:クライアント擬似パケット送受信部1025は,実働系パケット記憶部111に記憶した全データの読み出しが終了したか判定する。全データの読み出しが終了した場合(ステップS51/YES),処理を終了する。全データの読み出しが終了していない場合(ステップS51/NO),ステップS52に移る。具体的には,クライアント擬似パケット送受信部1025は,図15のパケット記憶テーブルPT3の全てのレコードを読み出したか判定する。
ステップS52:クライアント擬似パケット送受信部1025は,実働系パケット記憶部111に記憶したレコードを1行ずつ読み出す。具体的には,クライアント擬似パケット送受信部1025は,図15のパケット記憶テーブルPT3において,No欄に記憶された順番が小さい順に,1レコードずつ読み出す。
ステップS53:クライアント擬似パケット送受信部1025は,読み出した1レコードが,間引く要求メッセージReq{C→T}'に該当するか判定する。間引く要求メッセージReq{C→T}'は,図9のステップS5において,擬似スケールアウト解析部1021が,擬似スケールアウト情報記憶部112に記憶した要求メッセージである。読み出した1レコードが,間引く要求メッセージReq{C→T}'に該当しない場合(ステップS53/NO),ステップS54に移る。
ステップS54:クライアント擬似パケット送受信部1025は,ステップS52で読み出した1レコードが,クライアント端末から検証対象サーバに送信された検証用要求メッセージReq{C→T}に該当するか判定する。ステップS52で読み出した1レコードが,クライアント端末から検証対象サーバに送信された検証用要求メッセージReq{C→T}に該当する場合(ステップS54/YES),ステップS55に移る。
ステップS55:クライアント擬似パケット送受信部1025は,検証対象サーバに検証用要求メッセージReq{C→T}を送信する。
ステップS56:クライアント擬似パケット送受信部1025は,検証外サーバ擬似パケット送受信部1026が検証対象サーバから検証装置100宛の要求メッセージReq{T→V}'を受信し,応答メッセージRsp{U→T}を検証対象サーバに送信したか判定する。換言すれば,クライアント擬似パケット送受信部1025は,検証外サーバ擬似パケット送受信部1026が後記する図22のステップS64の実行を終了したか判定する。なお,大括弧{}内の"V"は検証装置100を意味する。
検証外サーバ擬似パケット送受信部1026が検証対象サーバから検証装置宛の要求メッセージReq{T→V}'を受信し,応答メッセージRsp{U→T}を検証対象サーバに送信しない場合(ステップS56/NO),クライアント擬似パケット送受信部1025は,ステップS56の判定処理を継続する。
検証外サーバ擬似パケット送受信部1026が検証対象サーバから検証装置100宛の要求メッセージReq{T→V}'を受信し,応答メッセージRsp{U→T}を検証対象サーバに送信した場合(ステップS56/YES),ステップS51に戻る。
なお,読み出した1レコードが,間引く要求メッセージReq{C→T}'に該当する場合(ステップS53/YES),ステップS51に戻る。ステップS52で読み出した1レコードが,クライアント端末から検証対象サーバに送信された検証用要求メッセージReq{C→T}に該当しない場合(ステップS54/NO),ステップS51に戻る。
図22は,検証外サーバ擬似パケット送受信部1026が実行する検証系環境EV2におけるメッセージの送受信処理の流れを説明するフロー図の一例である。
ステップS61:検証外サーバ擬似パケット送受信部1026は,クライアント擬似パケット送受信部1025が,図21のステップS51で説明した全データの読み出しを終了したか判定する。全データの読み出しが終了した場合(ステップS61/YES),処理を終了する。全データの読み出しが終了していない場合(ステップS61/NO),ステップS62に移る。
ステップS62:検証外サーバ擬似パケット送受信部1026は,検証対象サーバから検証装置100宛の要求メッセージReq{T→V}'を受信したか判定する。検証対象サーバから検証装置100宛の要求メッセージReq{T→V}'を受信した場合(ステップS62/YES),ステップS63に移る。
ステップS63:検証外サーバ擬似パケット送受信部1026は,対応情報テーブルに基づき,検証装置100から検証対象サーバに送信する応答メッセージRsp{U→T}を抽出する。
ステップS64:検証外サーバ擬似パケット送受信部1026は,検証外サーバから検証対象サーバへの応答として,ステップS63で抽出した応答メッセージRsp{U→T}を検証対象サーバに送信する。
なお,検証対象サーバから検証装置100宛の要求メッセージReq{T→U}'を受信しない場合(ステップS62/NO),ステップS61に戻る。
図15,図16,図21〜図24を参照して,検証装置100が実行する検証系環境EV3における検証処理を具体的に説明する。
図23は,検証系環境EV3におけるメッセージの送受信処理の流れを模式的に説明するシーケンス図の一例である。なお,図23の符号100で示す破線内は,検証装置100がクライアント装置とデータベースの処理内容を擬似的に実行している状態を模式的に示している。また,符号TH内の点線枠は,検証装置100が間引くメッセージの内容を点線で模式的に示している。
図24は,検証実施部102がキャプチャしたメッセージの内容をテーブル形式で記憶した状態を示す図の一例である。検証実施部102は,図24の検証系環境EV2において送受信されたメッセージをキャプチャし,メッセージの内容をテーブル形式で検証系パケット記憶部113に記憶する。具体的には,検証実施部102は,キャプチャしたメッセージの内容をパケット記憶テーブルPT6に時系列で記憶する。
ここで,図15においてセッション番号5のレコードは,図9のステップS5で選択された第2のHTTP要求2であるから,このレコードは,間引く要求メッセージReq{C→T}'に該当する。
さて,クライアント擬似パケット送受信部1025は,図15のパケット記憶テーブルPT3において,No欄に記憶された順番が小さい順に,1レコードずつ読み出す(ステップS52)。ここで,クライアント擬似パケット送受信部1025は,一番初めに,符号P1で示すセッション番号1のレコードをパケット記憶テーブルPT1から読み出す。セッション番号1のレコードは,間引く要求メッセージReq{C→T}'に該当しないが,検証用要求メッセージReq{C→T}に該当する。
従って,クライアント擬似パケット送受信部1025は,ステップS53でNOと判定し,ステップS54でYESと判定する。そして,クライアント擬似パケット送受信部1025は,検証対象サーバであるAPサーバWAに検証用要求メッセージReq{C→T}として,第1のHTTP要求1を送信する(ステップS55)。この第1のHTTP要求1の送信は,図23の符号H_Req1を参照。
次いで,クライアント擬似パケット送受信部1025は,ステップS56の判定処理を継続する。この継続中,APサーバWA1は,第1のHTTP要求1に応答して,第1のSQL要求1を検証装置100に送信する(図23の符号S_Req1参照)。
検証外サーバ擬似パケット送受信部1026は,第1のSQL要求1を受信する。第1のSQL要求1は,APサーバWAから検証装置100宛の要求メッセージReq{T→V}'である。従って,検証外サーバ擬似パケット送受信部1026は,ステップS62でYESと判定する。そして,検証外サーバ擬似パケット送受信部1026は,図16の対応関係テーブルCT2に基づき,第1のSQL要求1に対応する応答メッセージRsp{U→T}である第1のSQL応答1を抽出する(ステップS63)。
検証外サーバ擬似パケット送受信部1026は,抽出した第1のSQL応答1をAPサーバWAに送信する(ステップS64)。この第1のSQL応答1の送信は,図23の符号S_Rsp1を参照。
クライアント擬似パケット送受信部1025がステップS56の判定処理を継続している間に,前記した第1のSQL応答1の送信処理が終了している。換言すれば,前記判定処理の継続中に,ステップS64の処理が終了する。その結果,図21のステップS56でYESと判定され,ステップS51に戻る。
ここで,図15においてセッション番号2〜セッション番号4のレコードは,間引く要求メッセージReq{C→T}'ではなく,検証要求メッセージReq{C→T}ではない。従って,クライアント擬似パケット送受信部1025は,セッション番号2のレコードを読み出すと,ステップS53,ステップS54でNOと判定し,ステップS51に戻る。そして,クライアント擬似パケット送受信部1025は,セッション番号3のレコードを読み出すと,ステップS53,ステップS54でNOと判定する。そして,クライアント擬似パケット送受信部1025は,セッション番号4のレコードを読み出すと,ステップS53,ステップS54でNOと判定する。
前記したセッション番号2〜セッション番号4のレコードの読み出し,各レコードの判定処理の間に,第1のHTTP要求1を受信したAPサーバWAは,第1のHTTP応答1を検証装置100に送信する(図23の符号H_Rsp1参照)。
以上,図15におけるセッション番号1〜4,図23の符号H_Req1,符号S_Req1,符号S_Rsp1,符号H_Rsp1で説明したように,検証装置100は,クライアント端末,データベースの動作を擬似的に実行している。
次に,図15におけるセッション番号5のレコードは,間引く要求メッセージReq{C→T}'である。一方,セッション番号6〜8のレコードは,間引く要求メッセージReq{C→T}'ではなく,検証要求メッセージReq{C→T}ではない。
従って,クライアント擬似パケット送受信部1025は,セッション番号5のレコードを読み出すと,ステップS53でYESと判定し,ステップS51に戻る。そして,クライアント擬似パケット送受信部1025は,セッション番号6のレコードを読み出すと,ステップS53,ステップS54でNOと判定する。そして,クライアント擬似パケット送受信部1025は,セッション番号7のレコードを読み出すと,ステップS53,ステップS54でNOと判定する。そして,クライアント擬似パケット送受信部1025は,セッション番号8のレコードを読み出すと,ステップS53,ステップS54でNOと判定する。
さて,図15における前記したセッション番号5〜セッション番号8のレコードの読み出し,各レコードの判定処理の間,クライアント擬似パケット送受信部1025は,メッセージをAPサーバWAに送信しない。また,APサーバWAは,メッセージを検証装置100に送信しない。
検証装置100のクライアント擬似パケット送受信部1025がメッセージをAPサーバWAに送信しない状態,APサーバWAがメッセージを検証装置100に送信しない状態を,符号THで示す点線枠内の点線矢印で示している。
次に,図15におけるセッション番号9のレコードは,間引く要求メッセージReq{C→T}'に該当しないが,検証用要求メッセージReq{C→T}に該当する。
従って,クライアント擬似パケット送受信部1025は,ステップS53でNOと判定し,ステップS54でYESと判定する。そして,クライアント擬似パケット送受信部1025は,検証対象サーバであるAPサーバWAに検証用要求メッセージReq{C→T}として,第3のHTTP要求3を送信する(ステップS55)。この第3のHTTP要求3の送信は,図23の符号H_Req3を参照。
次いで,クライアント擬似パケット送受信部1025は,ステップS56の判定処理を継続する。この継続中,APサーバWA1は,第3のHTTP要求3に応答して,第3のSQL要求3を検証装置100に送信する(図23の符号S_Req3参照)。
検証外サーバ擬似パケット送受信部1026は,第3のSQL要求3を受信する。第3のSQL要求3は,APサーバWAからの検証装置100宛の要求メッセージReq{T→V}'である。従って,検証外サーバ擬似パケット送受信部1026は,ステップS62でYESと判定する。そして,検証外サーバ擬似パケット送受信部1026は,図16の対応関係テーブルCT2に基づき,第3のSQL要求3に対応する応答メッセージRsp{U→T}である第3のSQL応答3を抽出する(ステップS63)。
検証外サーバ擬似パケット送受信部1026は,抽出した第3のSQL応答3をAPサーバWAに送信する(ステップS64)。この第3のSQL応答3の送信は,図23の符号S_Rsp3を参照。
クライアント擬似パケット送受信部1025がステップS56の判定処理を継続している間に,前記した第3のSQL応答3の送信処理が終了している。換言すれば,前記判定処理の継続中に,ステップS64の処理が終了する。
ここで,セッション番号10〜セッション番号12のレコードは,間引く要求メッセージReq{C→T}'ではなく,検証要求メッセージReq{C→T}ではない。従って,クライアント擬似パケット送受信部1025は,セッション番号10のレコードを読み出すと,ステップS53,ステップS54でNOと判定し,ステップS51に戻る。そして,クライアント擬似パケット送受信部1025は,セッション番号11のレコードを読み出すと,ステップS53,ステップS54でNOと判定する。そして,クライアント擬似パケット送受信部1025は,セッション番号12のレコードを読み出すと,ステップS53,ステップS54でNOと判定する。
前記したセッション番号10〜セッション番号12のレコードの読み出し,各レコードの判定処理の間に,第3のSQL応答3を受信したAPサーバWAは,第3のHTTP応答3を検証装置100に送信する(図23の符号H_Rsp3参照)。
検証実施部102は,前記した,検証装置100とAPサーバWAとの間で送受信されるメッセージをキャプチャして,図24のパケット記憶テーブルPT6として記憶する。検証実施部102は,パケット記憶テーブルPT6において,第1のHTTP要求1,第1のSQL要求1,第1のSQL応答1,第1のHTTP応答1を,それぞれ,セッション番号1,2,3,4で示すレコードとして記憶する。検証実施部102は,パケット記憶テーブルPT6において,第3のHTTP要求3,第3のSQL要求3,第3のSQL応答3,第3のHTTP応答3を,それぞれ,セッション番号5,6,7,8で示すレコードとして記憶する。
以上説明したように,検証外サーバ擬似パケット送受信部1026は,検証系環境EV2のAPサーバに第1のデータ群を送信し,受信した第1のデータ群に応答してAPサーバが送信した第3のデータ群に対応する第2のデータ群を対応情報に基づき特定する。対応情報は,例えば,第1の実施の形態で説明した,対応関係テーブルCT1,CT2である。
図23の例では,第1のデータ群は,例えば第1のHTTP要求1(符号H_Req1)〜第3のHTTP要求3(符号H_Req3)である。また,第1のデータ群に応答してAPサーバが送信した第3のデータ群は,第1のSQL要求1(符号S_Req1)〜第3のSQL要求3(符号S_Req3)である。また,第3のデータ群に対応する第2のデータ群は,第1のSQL応答1(符号S_Rsp1)〜第3のSQL応答3(符号S_Rsp3)である。
検証外サーバ擬似パケット送受信部1026は,特定した第2のデータ群をAPサーバに送信し,受信した第2のデータ群に応答してAPサーバが送信した第4のデータ群を受信する。
図23の例では,第4のデータ群は,第1のHTTP応答1(符号H_Rsp1)〜第3のHTTP応答3(符号H_Rsp3)である。
検証外サーバ擬似パケット送受信部1026は,検証系環境EV3のAPサーバに送信する対象となる第1のデータ群の中の一部のデータ群をAPサーバに送信し,当該第1のデータ群の中の他のデータ群をAPサーバに送信しない。
図23の例では,検証系環境EV3のAPサーバに送信する対象となる第1のデータ群は,例えば第1のHTTP要求1(符号H_Req1)〜第3のHTTP要求3(符号H_Req3)である。一部のデータ群は,第1のHTTP要求1(符号H_Req1),第3のHTTP要求3(符号H_Req3)である。また,他のデータ群は,第2のHTTP要求2(符号H_Req2)である。
検証外サーバ擬似パケット送受信部1026は,対応情報と,検証装置100に入力された実働系環境EV1においてAPサーバをスケールアウトした場合の台数とに基づき,第1のデータ群の一部を特定する。第1のデータ群の一部の特定については,第1の実施の形態の第1,第2の具体例,第2の実施の形態で詳細に説明したのでその説明を省略する。
要求/応答解析部1024は,実働系環境EV1,検証系環境EV3における第1のデータ群,第4のデータ群を利用して動作検証を行う。
具体的には,要求/応答解析部1024は,実働系環境EV1において,第1のデータ群が送信されてから当該第1のデータ群に対応する第4のデータ群が受信されるまでの総時間を当該第1のデータ群に含まれる第1のデータの単位数で除算した第1の時間を算出する。
要求/応答解析部1024は,検証系環境EV3において,APサーバに第1のデータ群が送信されてから当該第1のデータ群に対応する第4のデータ群を受信するまでの総時間を当該第1のデータ群に含まれる第1のデータの単位数で除算した第2の時間を算出する。なお,第1,第2の時間の算出手法については,図13で詳細に説明したのでその説明を省略する。
要求/応答解析部1024は,第1の時間が,第2の時間を超える場合に,APサーバをスケールアウトする台数が適切であると判定し,判定結果を出力する。
本実施の形態の検証装置によれば,クライアント端末,検証外サーバが実行する処理と同じ処理を擬似的に実行し,検証対象サーバのスケールアウトが有効か検証する。そのため,検証系環境において,実働系環境と同じ装置を設けるために,検証外サーバ(例えば,データベースDB)を設ける必要がない。その結果,装置増設の費用や工数を無くすことができる。
第1,第2の実施の形態において説明した各処理のうち,手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。
例えば,検証装置100は,図7のパケット記憶テーブルT1の内容を解析して,HTTP要求と,このHTTP要求に対応するSQL要求,このSQL要求に対応するSQL応答,このSQL応答に対応するHTTP応答を抽出する。そして,検証装置100は,抽出した前記HTTP要求,HTTP応答,SQL要求,SQL応答を対応付けて,図8の対応関係テーブルCT1に記憶する。
また,検証装置の全部または一部を,各種の負荷や使用状況などに応じて,任意の単位で機能的または物理的に分散,統合することができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
受信した第1のデータ群,第2のデータ群のそれぞれに応答して第3のデータ群,第4のデータ群を送信する第1の装置と,前記第3のデータ群を受信し前記第2のデータ群を送信する第2の装置と,前記第1の装置または前記第2の装置の動作検証を行う検証装置とを備えた検証システムであって,
前記検証装置は,前記第2の装置が受信する前記第3のデータ群の中の一部のデータ群を前記第2の装置に送信し,前記第3のデータ群の中の他のデータ群に対応する前記第1のデータ群を前記第1の装置に送信することで,前記他のデータ群を前記第2の装置に供給し,前記第1のデータ群,前記一部のデータ群,前記第4のデータ群を用いて,前記動作検証を行う制御部を備えた,
ことを特徴とする検証システム。
(付記2)
付記1において,
前記検証システムは,前記第1の装置と前記第2の装置とを備えた第1のシステム,第2のシステムを備え,
前記検証装置は,さらに,前記第1のシステムにおいて送受信された前記第1〜第4のデータ群をそれぞれ対応付けた対応情報を記憶する記憶部を備え,
前記制御部は,前記対応情報と,前記検証装置に入力された前記第1のシステムにおいて前記第1の装置をスケールアウトした場合の台数とに基づき,前記第1のシステムにおける前記第1のデータ群の中から,前記第2のシステムの前記第1の装置に送信する,前記第3のデータ群の中の他のデータ群に対応する第1のデータ群を特定し,前記第1のシステムにおける前記第3のデータ群の中から,前記一部のデータ群を特定する
ことを特徴とする検証システム。
(付記3)
付記2において,
前記制御部は,前記第1のシステムにおいて,前記第1のデータ群が送信されてから当該第1のデータ群に対応する前記第4のデータ群が受信されるまでの総時間を当該第1のデータ群に含まれる第1のデータの単位数で除算した第1の時間と,前記第2のシステムにおいて前記第1の装置に前記第1のデータ群が送信されてから当該第1のデータ群に対応する前記第4のデータ群が受信されるまでの総時間と前記第2のシステムにおいて前記第2の装置に前記特定した前記一部のデータ群を送信してから前記一部のデータ群に対応する第2のデータ群を受信するまでの総時間との合計時間を,当該第1のデータ群に含まれる第1のデータの単位数と当該一部のデータ群に含まれる一部のデータの単位数との合計で除算した第2の時間とを算出し,前記動作検証において,前記第1の時間が前記第2の時間を超える場合に,前記第1の装置をスケールアウトした場合の台数が適切であると判定し,判定結果を出力する
ことを特徴とする検証システム。
(付記4)
受信した第1のデータ群,第2のデータ群のそれぞれに対応して第3のデータ群,第4のデータ群を送信する第1の装置と,前記第3のデータ群を受信し前記第2のデータ群を送信する第2の装置とを備えた第1のシステムと,前記第1の装置を備えた第2のシステムと,前記第1のシステムにおける前記第1の装置または前記第2の装置の動作検証を行う検証装置とを備えた検証システムであって,
前記検証装置は,前記第1のシステムにおいて送受信された前記第1〜第4のデータ群をそれぞれ対応付けた対応情報を記憶する記憶部と,
前記第2のシステムの前記第1の装置に前記第1のデータ群を送信し,受信した前記第1のデータ群に応答して前記第1の装置が送信した前記第3のデータ群に対応する第2のデータ群を前記対応情報に基づき特定し,特定した前記第2のデータ群を前記第1の装置に送信し,受信した前記第2のデータ群に応答して前記第1の装置が送信した前記第4のデータ群を受信する制御部とを備え,
前記制御部は,前記第2のシステムの前記第1の装置に送信する対象となる第1のデータ群の中の一部のデータ群を前記第1の装置に送信し,当該第1のデータ群の中の他のデータ群を前記第1の装置に送信せず,前記第1のシステム,前記第2のシステムにおける前記第1のデータ群,前記第4のデータ群を用いて,前記動作検証を行う
ことを特徴とする検証システム。
(付記5)
付記4において,
前記制御部は,前記対応情報と,前記検証装置に入力された前記第1のシステムにおいて前記第1の装置をスケールアウトした場合の台数とに基づき,前記第1のデータ群の一部を特定する
ことを特徴とする検証システム。
(付記6)
付記5において,
前記制御部は,前記第1のシステムにおいて,前記第1のデータ群が送信されてから当該第1のデータ群に対応する前記第4のデータ群が受信されるまでの総時間を当該第1のデータ群に含まれる第1のデータの単位数で除算した第1の時間と,前記第2のシステムにおいて,前記第1の装置に前記第1のデータ群が送信されてから当該第1のデータ群に対応する前記第4のデータ群を受信するまでの総時間を当該第1のデータ群に含まれる第1のデータの単位数で除算した第2の時間とを算出し,前記動作検証において,前記第1の時間が前記第2の時間を超える場合に,前記第1の装置をスケールアウトした場合の台数が適切であると判定し,判定結果を出力する
ことを特徴とする検証システム。
(付記7)
受信した第1のデータ群,第2のデータ群のそれぞれに応答して第3のデータ群,第4のデータ群を送信する第1の装置と,前記第3のデータ群を受信し前記第2のデータ群を送信する第2の装置と,前記第1の装置または前記第2の装置の動作検証を行う検証装置とを備えた検証システムで実行される検証方法であって,
前記検証装置は,
前記第2の装置が受信する前記第3のデータ群の中の一部のデータ群を前記第2の装置に送信し,
前記第3のデータ群の中の他のデータ群に対応する前記第1のデータ群を前記第1の装置に送信することで,前記他のデータ群を前記第2の装置に供給し,
前記第1のデータ群,前記一部のデータ群,前記第4のデータ群を用いて,前記動作検証を行う,
ことを特徴とする検証方法。
(付記8)
受信した第1のデータ群,第2のデータ群のそれぞれに対応して第3のデータ群,第4のデータ群を送信する第1の装置と,前記第3のデータ群を受信し前記第2のデータ群を送信する第2の装置とを備えた第1のシステムと,前記第1の装置を備えた第2のシステムと,前記第1のシステムにおける前記第1の装置または前記第2の装置の動作検証を行う検証装置で実行される検証方法であって,
前記検証装置は,
前記第2のシステムの前記第1の装置に前記第1のデータ群を送信し,受信した前記第1のデータ群に応答して前記第1の装置が送信した前記第3のデータ群に対応する第2のデータ群を,前記第1のシステムにおいて送受信された前記第1〜第4のデータ群をそれぞれ対応付けた対応情報に基づき特定し,
特定した前記第2のデータ群を前記第1の装置に送信し,
受信した前記第2のデータ群に応答して前記第1の装置が送信した前記第4のデータ群を受信し,
前記第2のシステムの前記第1の装置に送信する対象となる第1のデータ群の中の一部のデータ群を前記第1の装置に送信し,
前記第1のシステム,前記第2のシステムにおける前記第1のデータ群,前記第4のデータ群を用いて,前記動作検証を行う
ことを特徴とする検証方法。
(付記9)
受信した第1のデータ群,第2のデータ群のそれぞれに応答して第3のデータ群,第4のデータ群を送信する第1の装置,または,前記第3のデータ群を受信し前記第2のデータ群を送信する第2の装置の動作検証を行う検証装置であって,
前記第2の装置が受信する前記第3のデータ群の中の一部のデータ群を前記第2の装置に送信し,前記第3のデータ群の中の他のデータ群に対応する前記第1のデータ群を前記第1の装置に送信することで,前記他のデータ群を前記第2の装置に供給し,前記第1のデータ群,前記一部のデータ群,前記第4のデータ群を用いて,前記動作検証を行う制御部を備えた,
ことを特徴とする検証装置。
(付記10)
受信した第1のデータ群,第2のデータ群のそれぞれに対応して第3のデータ群,第4のデータ群を送信する第1の装置と,前記第3のデータ群を受信し前記第2のデータ群を送信する第2の装置とを備えた第1のシステムと,前記第1の装置を備えた第2のシステムとを備えた検証システムの前記第1のシステムにおける前記第1の装置または前記第2の装置の動作検証を行う検証装置であって,
前記第1のシステムにおいて送受信された前記第1〜第4のデータ群をそれぞれ対応付けた対応情報を記憶する記憶部と,
前記第2のシステムの前記第1の装置に前記第1のデータ群を送信し,受信した前記第1のデータ群に応答して前記第1の装置が送信した前記第3のデータ群に対応する第2のデータ群を前記対応情報に基づき特定し,特定した前記第2のデータ群を前記第1の装置に送信し,受信した前記第2のデータ群に応答して前記第1の装置が送信した前記第4のデータ群を受信する制御部とを備え,
前記制御部は,前記第2のシステムの前記第1の装置に送信する対象となる第1のデータ群の中の一部のデータ群を前記第1の装置に送信し,当該第1のデータ群の中の他のデータ群を前記第1の装置に送信せず,前記第1のシステム,前記第2のシステムにおける前記第1のデータ群,前記第4のデータ群を用いて,前記動作検証を行う
ことを特徴とする検証装置。
(付記11)
受信した第1のデータ群,第2のデータ群のそれぞれに応答して第3のデータ群,第4のデータ群を送信する第1の装置と,前記第3のデータ群を受信し前記第2のデータ群を送信する第2の装置と,前記第1の装置または前記第2の装置の動作検証を行う検証装置とを備えた検証システムで実行される検証プログラムであって,
前記第2の装置が受信する前記第3のデータ群の中の一部のデータ群を前記第2の装置に送信し,
前記第3のデータ群の中の他のデータ群に対応する前記第1のデータ群を前記第1の装置に送信することで,前記他のデータ群を前記第2の装置に供給し,
前記第1のデータ群,前記一部のデータ群,前記第4のデータ群を用いて,前記動作検証を行う処理をコンピュータに実行させる
ことを特徴とする検証プログラム。
(付記12)
受信した第1のデータ群,第2のデータ群のそれぞれに対応して第3のデータ群,第4のデータ群を送信する第1の装置と,前記第3のデータ群を受信し前記第2のデータ群を送信する第2の装置とを備えた第1のシステムと,前記第1の装置を備えた第2のシステムと,前記第1のシステムにおける前記第1の装置または前記第2の装置の動作検証を行う検証装置で実行される検証プログラムであって,
前記第2のシステムの前記第1の装置に前記第1のデータ群を送信し,受信した前記第1のデータ群に応答して前記第1の装置が送信した前記第3のデータ群に対応する第2のデータ群を,前記第1のシステムにおいて送受信された前記第1〜第4のデータ群をそれぞれ対応付けた対応情報に基づき特定し,
特定した前記第2のデータ群を前記第1の装置に送信し,
受信した前記第2のデータ群に応答して前記第1の装置が送信した前記第4のデータ群を受信し,
前記第2のシステムの前記第1の装置に送信する対象となる第1のデータ群の中の一部のデータ群を前記第1の装置に送信し,
前記第1のシステム,前記第2のシステムにおける前記第1のデータ群,前記第4のデータ群を用いて,前記動作検証を行う処理をコンピュータに実行させる
ことを特徴とする検証プログラム。