(57)【要約】【課題】【解決手段】プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製する方法は、クライアントから受信したクライアント要求を処理することによって、プロダクション・サーバ上にプロダクション・ロードを作成することを含む。クライアント要求が処理される間に、プロセッサを介してリアル・タイムで、クライアント要求を表し、プロダクション・サーバとそれぞれのクライアントとの間で形成される固有の状態を表す状態情報を定義する、複製されたプロダクション・ロードを生成するために、プロダクション・ロードが複製される。方法は、テスト・サーバ上でプロダクション・ロードを複製するために、リアル・タイムで、複製されたプロダクション・ロードを通信することも含む。【選択図】  図３
2015506008.tif 000002
【特許請求の範囲】
【請求項１】
プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製する方法であって、
クライアントから受信したクライアント要求を処理することによって、前記プロダクション・サーバ上に前記プロダクション・ロードを作成すること、
前記クライアント要求が処理される間に、プロセッサを介してリアル・タイムで、前記クライアント要求を表し、前記プロダクション・サーバと前記それぞれのクライアントとの間で形成される固有の状態を表す状態情報を定義する、複製されたプロダクション・ロードを生成するために、前記プロダクション・ロードを複製すること、および、
前記テスト・サーバ上で前記プロダクション・ロードを複製するために、リアル・タイムで、前記複製されたプロダクション・ロードを通信すること、
を含む、方法。
【請求項２】
前記クライアント要求が前記プロダクション・サーバによって処理される間に、リアル・タイムで、前記複製されたプロダクション・ロードを自動的に生成するように監査機構を構成すること、
をさらに含む、請求項１に記載の方法。
【請求項３】
複数の前記クライアント要求が前記それぞれのクライアントから前記プロダクション・サーバに通信される際に介する、それぞれのプロダクション・ソケット接続を識別すること、および、
前記プロダクション・ソケット接続を、前記複製されたプロダクション・ロードに関連付けること、
をさらに含む、請求項１に記載の方法。
【請求項４】
前記状態情報が、前記プロダクション・サーバの以前の使用量に基づいて変化する前記クライアント要求に関連付けられたクッキーを示す、請求項１に記載の方法。
【請求項５】
前記状態情報が、前記それぞれのクライアントに提供されるページ・サービスを示す、請求項１に記載の方法。
【請求項６】
前記状態情報が、前記それぞれのクライアントに割り振られる接続ハンドルを示す、請求項１に記載の方法。
【請求項７】
前記状態情報が、前記それぞれのクライアント要求に関連付けられたバインド情報を示す、請求項１に記載の方法。
【請求項８】
前記プロダクション・ロードが、前記プロダクション・サーバによって前記クライアントに提供されるサービスに関して、前記プロダクション・サーバの挙動を変更することなく複製される、請求項１に記載の方法。
【請求項９】
プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製する方法であって、
クライアント要求を処理することによって作成された前記プロダクション・サーバ上のプロダクション・ロードに対応する、複製されたプロダクション・ロードを受信することであって、前記複製されたプロダクション・ロードが、前記クライアント要求が前記プロダクション・サーバによって処理される間にリアル・タイムで生成され、前記プロダクション・サーバと、前記クライアント要求の受信元である前記クライアントとの間で形成される、固有の状態を表す状態情報を定義する、受信すること、
前記複製されたプロダクション・ロードを受信することに応答して、プロセッサを介してリアル・タイムで、複数の複製されたクライアント要求を生成するために前記複製されたプロダクション・ロードを処理することであって、前記複製されたクライアント要求のそれぞれは、前記プロダクション・サーバによって受信されたそれぞれのクライアント要求を複製し、前記複製されたクライアント要求の少なくとも一部は、前記クライアント要求の受信元である前記それぞれのクライアントに関連付けられた前記状態情報を定義する、処理すること、および、
前記複製されたクライアント要求を、リアル・タイムで前記テスト・サーバに通信すること、
を含む、方法。
【請求項１０】
前記クライアント要求が、前記それぞれのクライアントと前記プロダクション・サーバとの間で確立されたプロダクション・ソケット接続を介して、前記クライアントから前記プロダクション・サーバに通信され、
複数の複製されたクライアント要求を生成するために前記複製されたプロダクション・ロードを処理することが、複数の前記クライアント要求に関して、対応するプロダクション・ソケット接続を前記対応する複製されたクライアント要求に関連付けられたそれぞれのテスト・ソケット接続にマッピングすることを含む、
請求項９に記載の方法。
【請求項１１】
前記状態情報が、前記プロダクション・サーバの以前の使用量に基づいて変化する前記クライアント要求に関連付けられたクッキーを示す、請求項９に記載の方法。
【請求項１２】
前記状態情報が、前記それぞれのクライアントに提供されるページ・サービスを示す、請求項９に記載の方法。
【請求項１３】
前記状態情報が、前記それぞれのクライアントに割り振られる接続ハンドルを示す、請求項９に記載の方法。
【請求項１４】
前記状態情報が、前記それぞれのクライアント要求に関連付けられたバインド情報を示す、請求項９に記載の方法。
【請求項１５】
あるクライアント要求が前記テスト・サーバに複製されるのを防ぐために、前記複製されたプロダクション・ロードをフィルタリングすること、
をさらに含む、請求項９に記載の方法。
【請求項１６】
プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製するためのコンピュータ・プログラムであって、
プロセッサによって実行された場合、前記いずれかの請求項のステップを実行する、それで具体化されるコンピュータ読み取り可能プログラム・コードを有するコンピュータ読み取り可能記憶媒体、
を備える、コンピュータ・プログラム。
【請求項１７】
プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製するためのシステムであって、
プロセッサと、請求項１６に記載のコンピュータ・プログラムと、
を備える、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、プロダクション・サーバの試験に関する。
【背景技術】
【０００２】
プロダクション・サーバは、イントラネットまたはインターネットなどの通信ネットワークを介してクライアントにアクセス可能な、１つまたは複数のライブ・アプリケーションをホストするサーバである。プロダクション・サーバは、典型的には、そのそれぞれのアプリケーションの最も新しいバージョンをホストする。アプリケーションまたはアプリケーションの更新済みバージョンを稼働させる（go live）ためにプロダクション・サーバに移動させるのに先立ち、アプリケーションは開発時にステージング・サーバ（staging server）上でホストすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ステージング・サーバ上で実行している間、典型的には、アプリケーションの機能を試験する任務を負うアプリケーションの開発者またはユーザのみが、アプリケーションにアクセス可能である。したがってステージング・サーバは、稼働する前にその上でアプリケーションを試験できるプラットフォームを提供する必要がある。
【課題を解決するための手段】
【０００４】
本発明の第１の態様により、プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製する方法が開示される。方法は、クライアントから受信したクライアント要求を処理することによって、プロダクション・サーバ上にプロダクション・ロードを作成することを含む。方法は、クライアント要求が処理される間に、プロセッサを介してリアル・タイムで、クライアント要求を表し、プロダクション・サーバとそれぞれのクライアントとの間で形成される固有の状態を表す状態情報を定義する、複製されたプロダクション・ロードを生成するために、プロダクション・ロードを複製することを、さらに含む。方法は、テスト・サーバ上でプロダクション・ロードを複製するために、リアル・タイムで、複製されたプロダクション・ロードを通信することも含む。
【０００５】
他の態様は、プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製する方法を含む。方法は、クライアント要求を処理することによって作成されたプロダクション・サーバ上のプロダクション・ロードに対応する、複製されたプロダクション・ロードを受信することを含む。複製されたプロダクション・ロードは、クライアント要求がプロダクション・サーバによって処理される間にリアル・タイムで生成される。複製プロダクション・ロードは、プロダクション・サーバと、クライアント要求の受信元であるクライアントとの間で形成される、固有の状態を表す状態情報も定義する。複製されたプロダクション・ロードを受信することに応答して、リアル・タイムでプロセッサを介して、複数の複製されたクライアント要求を生成するために複製されたプロダクション・ロードが処理される。複製されたクライアント要求のそれぞれは、プロダクション・サーバによって受信されたそれぞれのクライアント要求を複製し、複製されたクライアント要求の少なくとも一部は、クライアント要求の受信元であるそれぞれのクライアントに関連付けられた状態情報を定義する。方法は、複製されたクライアント要求を、リアル・タイムでテスト・サーバに通信することをさらに含む。
【０００６】
他の実施形態は、プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製するためのコンピュータ・プログラム製品を含むことができる。コンピュータ・プログラム製品は、それで具体化されるコンピュータ読み取り可能プログラム・コードを含むことが可能であり、コンピュータ読み取り可能プログラム・コードは、本明細書で開示された様々なオペレーションあるいは機能またはその両方を実行するように構成される。
【０００７】
次に、本発明の実施形態について、添付の図面を参照しながら単なる例として説明する。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態に従った、プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製するためのシステムを示すブロック図である。
【図２】本発明の一実施形態に従った、処理システムを示すブロック図である。
【図３】本発明の他の実施形態に従った、プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製する方法を示す流れ図である。
【図４】本発明の他の実施形態に従った、複製されたプロダクション・ロードのメッセージを生成する方法を示す流れ図である。
【図５】本発明の他の実施形態に従った、プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製する他の方法を示す流れ図である。
【図６】本発明の他の実施形態に従った、テスト・サーバ上で複製されたクライアント要求を処理する方法を示す流れ図である。
【発明を実施するための形態】
【０００９】
当業者であれば理解されるように、本発明の態様はシステム、方法、またはコンピュータ・プログラム製品として具体化可能である。したがって本発明の態様は、完全にハードウェア実施形態、完全にソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、本明細書ではすべてが全体として「回路」、「モジュール」、または「システム」と呼ばれることのある、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態の、形を取ることができる。さらに本発明の態様は、その上に具体化された、たとえば記憶された、コンピュータ読み取り可能プログラム・コードを有する、１つまたは複数のコンピュータ読み取り可能媒体内に具体化されたコンピュータ・プログラム製品の形を取ることができる。
【００１０】
１つまたは複数のコンピュータ読み取り可能媒体の任意の組み合わせが利用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体の、システム、装置、またはデバイス、あるいはそれらの任意の好適な組み合わせとすることができるが、それらに限定されない。コンピュータ読み取り可能記憶媒体のより特定の例（非網羅的リスト）は、１本または複数本のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク・ドライブ（ＨＤＤ）、ソリッド・ステート・ドライブ（ＳＳＤ）、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、光記憶デバイス、磁気記憶デバイス、あるいは、それらの任意の好適な組み合わせを含むことになる。本明細書との関連において、コンピュータ読み取り可能記憶媒体は、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関して使用するためのプログラムを、含むかまたは記憶することが可能な、任意の有形媒体とすることができる。
【００１１】
コンピュータ読み取り可能信号媒体は、たとえばベースバンド内に、または搬送波の一部として、内部に具体化されたコンピュータ読み取り可能プログラム・コードを備える、伝搬データ信号を含むことができる。こうした伝搬信号は、電磁、光、またはそれらの任意の好適な組み合わせを含むがそれらに限定されない、様々な形のいずれかを取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体ではなく、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関して使用するためのプログラムを通信、伝搬、または移送可能な、任意のコンピュータ読み取り可能媒体とすることができる。
【００１２】
コンピュータ読み取り可能媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、またはそれらの任意の好適な組み合わせを含むがそれらに限定されない、任意の適切な媒体を使用して伝送することができる。本発明の態様に関するオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（ＴＭ）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで作成可能である。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして、一部はユーザのコンピュータ上および一部はリモート・コンピュータ上で、あるいは、完全にリモート・コンピュータまたはサーバ上で、実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意のタイプのネットワークを介して、ユーザのコンピュータに接続可能であるか、あるいは、（たとえばインターネット・サービス・プロバイダを使用するインターネットを介して）外部コンピュータに接続可能である。
【００１３】
本発明の態様は、本発明の実施形態に従った、方法、装置（システム）、あるいはコンピュータ・プログラム製品、またはそれらすべての流れ図あるいはブロック図またはその両方を参照しながら説明可能である。流れ図あるいはブロック図またはその両方の各ブロック、および、流れ図あるいはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装可能であることを理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特定用途向けコンピュータ、またはマシンを生成するための他のプログラマブル・データ処理装置のプロセッサに提供可能であるため、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスのプロセッサを介して実行する命令は、流れ図あるいはブロック図またはその両方のブロック内に指定された機能／動作を実装するための手段を作成することになる。
【００１４】
これらのコンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに、特定の様式で機能するように命じることが可能な、コンピュータ読み取り可能媒体内にも記憶可能であるため、コンピュータ読み取り可能媒体内に記憶された命令は、流れ図あるいはブロック図またはその両方のブロック内に指定された機能／動作を実装する命令を含む製品を生成することになる。
【００１５】
コンピュータ・プログラム命令は、コンピュータ、他のプログラマブル装置、またはコンピュータ実装プロセスを生成するための他のデバイスに、一連の動作ステップを実行させるために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にもロードすることが可能であるため、コンピュータまたは他のプログラマブル装置上で実行する命令は、流れ図あるいはブロック図またはその両方のブロック内に指定された機能／動作を実装するためのプロセスを提供することになる。
【００１６】
次に、本明細書全体を通じて適用するいくつかの定義について提示する。本明細書で使用される場合、「リアル・タイム」という用語は、ユーザまたはシステムが特定のプロセスまたは決定が行われるのに十分迅速であると感知する、あるいはプロセッサが何らかの外部プロセスに後れを取らずに進行できるようにする、処理反応性のレベルを意味する。
【００１７】
本明細書で使用される場合、「プロダクション・サーバ」という用語は、少なくとも１つのプロセッサを備え、通信ネットワークを介してアクセス可能な１つまたは複数のライブ・アプリケーションをホストする、処理システムを意味する。本明細書で使用される場合、稼働を持続しているアプリケーションとは、その所期の方法で、イントラネットまたはインターネットなどの通信ネットワークを介してクライアントにサービスを提供するように動作可能なアプリケーションを意味する。本明細書で使用される場合、「テスト・サーバ」という用語は、少なくとも１つのプロセッサを備え、１つまたは複数のアプリケーションを、こうしたアプリケーションを試験する目的でホストする、処理システムを意味する。本明細書で使用される場合、「中間サーバ」という用語は、プロダクション・サーバからデータを受信する少なくとも１つのプロセッサを備え、対応するデータをテスト・サーバに送信する、処理システムを意味する。
【００１８】
本明細書で使用される場合、「クライアント」という用語は、少なくとも１つのプロセッサを備え、プロダクション・サーバに送られるクライアント要求を生成する、処理システムを意味する。本明細書で使用される場合、「クライアント要求」という用語は、プロダクション・サーバによって実行されることになる何らかのアクションを要求するメッセージを意味する。たとえばクライアント要求は、情報の取り出しまたは処理を要求することができる。本明細書で使用される場合、「プロダクション・ロード」という用語は、「プロダクション・ロード・ユニット」と呼ばれる離散的な単独で有意なユニットを指す。一実施形態において、各プロダクション・ロード・ユニットは別々のクライアント要求に対応可能である。
【００１９】
本明細書で説明される実施形態は、プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製することに関する。プロダクション・サーバが１つまたは複数の稼働アプリケーションをホストしている間、プロダクション・サーバは、稼働アプリケーションにアクセスするためのクライアント要求を１つまたは複数のクライアントから受信することができる。プロダクション・サーバは、こうしたクライアント要求を処理し、このクライアント要求への応答を生成することが可能であるため、プロダクション・サーバ上にプロダクション・ロードを作成する。クライアント要求がプロダクション・サーバによって処理された場合、クライアント要求によって表されるプロダクション・ロードを複製して、複製されたプロダクション・ロードを生成することができる。複製されたプロダクション・ロードは、クライアント要求を表す。さらに、複製されたプロダクション・ロードは、プロダクション・サーバと、識別されたクライアント要求の受信元であるクライアントとの間で形成される、固有の状態を表す状態情報を定義することができる。
【００２０】
複製されたプロダクション・ロードは、マニホルド・プロキシ（manifold proxy）に通信可能であり、マニホルド・プロキシは複製されたプロダクション・ロードを処理して複製されたクライアント要求を生成することができる。各複製されたクライアント要求は、プロダクション・サーバによって受信されたそれぞれのクライアント要求ならびにそれぞれのクライアント要求に関連付けられた状態情報を、複製することができる。マニホルド・プロキシは、複製されたクライアント要求をテスト・サーバに送信することができる。
【００２１】
テスト・サーバは、プロダクション・サーバによってホストされるアプリケーションの１つまたは複数のコピーをホストすることが可能であり、プロダクション・サーバは複製されたクライアント要求を処理することができる。こうした処理は、しばしばアプリケーション内の「バグ」と呼ばれる欠陥を識別するため、または、アプリケーションのテスト・バージョンとアプリケーションのプロダクション・バージョンとのパフォーマンスを比較するために、分析アプリケーションによって監視することができる。この点で、テスト・サーバ上でホストされるアプリケーションのコピーは、こうした分析を容易にするためにコードを装備する（instrument）ことができる。特に、前述のプロセスはリアル・タイムで実行可能であり、所望な限り継続可能である。したがって、プロダクション・サーバによってホストされるアプリケーションは、プロダクション・アプリケーションが稼働を持続している間は分析可能である。したがってプロダクション・サーバは、分析を実行するためにオフラインとされる必要がなく、クライアントへのサービスを継続することができる。さらに分析は、プロダクション・サーバが経験するものと同じ稼働条件を使用して実行可能である。これらの条件は経時的に変更可能であり、こうした変更はテスト・サーバ内で複製可能である。
【００２２】
図１は、本発明の一実施形態に従った、プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製するためのシステム１００を示すブロック図である。この点で、システムは、１つまたは複数のクライアント１１０、プロダクション・サーバ１２０、テスト・サーバ１４０、およびオプションで中間サーバ１３０を含むことができる。
【００２３】
プロダクション・サーバ１２０は、１つまたは複数のアプリケーション１２２をホスト（たとえば実行）することができる。アプリケーション１２２の例は、ウェブサイト、ライトウェイト・ディレクトリ・アクセス・プロトコル（ＬＤＡＰ）サーバ、データベース、ウェブベース・アプリケーション、ネットワークベース・アプリケーションなどを含むが、これらに限定されない。プロダクション・サーバ１２０は監査機構１２４をホストすることが可能であり、これについては以下でより詳細に説明する。一実施形態において、中間サーバ１３０はマニホルド・プロキシ１３２をホストすることが可能であり、これについても以下でより詳細に説明する。他の実施形態において、マニホルド・プロキシ１３２はテスト・サーバ１４０上でホスト可能である。
【００２４】
テスト・サーバ１４０は、１つまたは複数のホスト・アプリケーション１４２および分析アプリケーション１４４をホストすることができる。アプリケーション１４２は、分析アプリケーション１４４によって分析されることになるプロダクション・サーバ１２０上でホストされるアプリケーション１２２のコピーとすることができる。アプリケーション１４２は、たとえばアプリケーションが潜在的欠陥について分析されている場合は、対応するアプリケーション１２２と同じバージョンとすることが可能であり、たとえばアプリケーションに対するパフォーマンス強化がテストされている場合は、アプリケーション１２２と異なるバージョンとすることが可能である。この点で、アプリケーション１４２は、被試験コンピュータ・プログラムとみなすことができる。以下、アプリケーション１２２あるいはアプリケーション１４２またはその両方について言及する場合があるが、こうした言及はそれぞれ、複数のそれぞれアプリケーション１２２あるいはアプリケーション１４２またはその両方を指す場合があることを理解されよう。
【００２５】
クライアント１１０は、プロダクション・サーバ１２０に通信可能にリンクすることが可能であり、プロダクション・サーバは中間サーバ１３０に通信可能にリンクすることが可能であり、中間サーバ１３０はテスト・サーバ１４０に通信可能にリンクすることが可能である。マニホルド・プロキシ１３２がテスト・サーバ１４０上でホストされている配置構成では、プロダクション・サーバ１２０は、中間サーバ１３０の代わりにテスト・サーバ１４０に通信可能にリンクすることが可能である。こうした通信リンクを提供するために、１つまたは複数のネットワークが利用可能である。ネットワークは、公衆ネットワーク、たとえばインターネット、あるいはＬＡＮ、ＷＡＮなどの私設ネットワーク、またはその両方を含むことができる。
【００２６】
オペレーション時、プロダクション・サーバ１２０は、クライアント１１０にサービスを提供するために動作可能であり、アプリケーション１２２を実行可能である。プロダクション・サーバ１２０は、アプリケーション１２２を対象とするクライアント１１０からの複数のクライアント要求１１２を受信および識別することができる。アプリケーション１２２は、アプリケーション１２２に関する従来の様式で、クライアント要求１１２を処理し、応答１１４をクライアント１１０に戻すことができる。クライアント要求１１２がプロダクション・サーバ１２０によってリアル・タイムで受信された場合、監査機構１２４は、クライアント要求１１２に対応する監査記録を生成すること、および監査記録を監査ログ１２６に記憶することが可能である。さらに、監査機構１２４は、特定のクライアント要求１１２に関するメッセージを生成することができる。
【００２７】
監査機構１２４は、メッセージをマニホルド・プロキシ１３２に通信することができる。マニホルド・プロキシ１３２が中間サーバ１３０上でホストされている場合、メッセージは中間サーバ１３０に送信することができる。マニホルド・プロキシ１３２がテスト・サーバ１４０上でホストされている場合、メッセージはテスト・サーバ１４０に送信することができる。通常の動作中、プロダクション・サーバ１２０は複数のクライアント要求１１２を受信することが可能であり、監査機構は、それぞれがプロダクション・ロード・ユニットを表す複数の対応するメッセージを生成および通信することができる。集合的に、複数のこうしたメッセージはプロダクション・サーバ１２０のプロダクション・ロードを複製することが可能であり、本明細書では集合的に複製されたプロダクション・ロード１２８と呼ばれる。
【００２８】
各メッセージは、特定のクライアント要求１１２、たとえばアプリケーション１２２の要求されたアクション、またはプロダクション・サーバ１２０上の他のプロセスに関する、特定の情報を含むことができる。さらに各メッセージは、プロダクション・サーバ１２０と、クライアント要求１１２の受信元であるクライアント１１０との間で形成される、固有の状態を表す状態情報を含むことができる。こうした状態情報は、たとえばクライアント要求１１２を受信した際に介したソケット接続に関する接続識別子、クライアント１１０によるプロダクション・サーバ１２０の以前の使用量に基づくクライアント要求１１２に関連付けられた１つまたは複数のクッキー、クライアント１１０に提供されたページ・サービス、クライアント１１０に割り振られた接続ハンドル、クライアント１１０に対応するバインド情報（たとえばユーザ名あるいはパスワードまたはその両方）、あるいは、プロダクション・サーバ１２０とクライアント１１０との間で形成される固有の状態を表す任意の他の情報、またはそれらすべてを、含むことができる。
【００２９】
マニホルド・プロキシ１３２がリアル・タイムでメッセージを受信すると、マニホルド・プロキシ１３２は各メッセージからのデータを解析し、メッセージが基づいているクライアント要求１１２に対応する複製されたクライアント要求１３４を生成することができる。各複製されたクライアント要求１３４は、その対応するクライアント要求１１２に関する特定の情報、ならびに、プロダクション・サーバ１２０と、クライアント要求１１２の受信元であるクライアント１１０との間で形成される固有の状態を表す状態情報を、含むことができる。
【００３０】
一実施形態において、マニホルド・プロキシ１３２は、複製されたクライアント要求１３４を使用してテスト・サーバ１４０に複製されたクライアント要求１１２をフィルタリングするために、複製されたプロダクション・ロード１２８のメッセージをフィルタリングすることができる。他の実施形態において、監査記録およびクライアント要求１１２は、対応するメッセージが生成される対象であるクライアント要求１１２の一部を識別するために、選択的にフィルタリングすることができる。たとえば、あるユーザまたはパスワードに関連付けられたクライアント要求１１２に対応するメッセージを無視することが可能であるか、またはあるタイプのクライアント要求１１２に対応するメッセージを無視することが可能であり、対応する複製されたクライアント要求１３４は生成される必要がない。たとえば、パスワード・チェックまたは書き込み要求は無視することが可能であり、複製されない。さらに選択的フィルタリングは、複製されたクライアント要求１３４を生成するために処理されることになる、あるタイプのクライアント要求１１２に対応するメッセージを識別することができる。たとえば、ＬＤＡＰディレクトリまたはデータベース検索に関するクライアント要求１１２を複製することができる。
【００３１】
特定のメッセージが、プロダクション・サーバ１２０によってそれぞれのクライアント１１０に対してソケット接続（プロダクション・ソケット接続）が確立されるように要求するクライアント要求１１２に対応する場合、対応する複製されたクライアント要求１３４は、テスト・サーバ１４０によってソケット接続（テスト・ソケット接続）が確立されるように要求することができる。生成されるテスト・ソケット接続識別子は、プロダクション・ソケット接続に対して生成される識別子と同じではない可能性がある。それにもかかわらず、マニホルド・プロキシ１３２は、それぞれの識別子間の関連性を作成し、この関連性をマッピング・テーブルに記憶することができる。マニホルド・プロキシ１３２は、この関連性に基づいて、プロダクション・ソケット接続をテスト・ソケット接続にマッピングすることができる。したがって、複数のクライアント要求１１２が特定のプロダクション・ソケット接続を介してプロダクション・サーバ１２０に提供される場合、マニホルド・プロキシ１３２は、それらの対応する複製されたクライアント要求１３４が同じテスト・ソケット接続を介して送信されることを保証することができる。
【００３２】
各複製されたクライアント要求１３４が生成されると、マニホルド・プロキシは、リアル・タイムで複製されたクライアント要求１３４をテスト・サーバ１４０に通信することが可能であり、テスト・サーバ１４０は複製されたクライアント要求をアプリケーション１４２に渡すことができる。複製されたクライアント要求１３４は、アプリケーション１４２によって理解されるプロトコルに従って形式化することができる。たとえば、特定のクライアント要求１１２がＬＤＡＰに従って形式化された場合、対応する複製されたクライアント要求１３４をＬＤＡＰに従って形式化することができる。これはクライアント要求形式の単なる一例であり、本発明はこの点で限定されない。アプリケーション１４２は、アプリケーション１４２に関する従来の様式で、複製されたクライアント要求１３４を処理し、複製された応答１３６をマニホルド・プロキシ１３２に戻すことができる。
【００３３】
アプリケーション１４２が複製されたクライアント要求１３４を処理する場合、分析アプリケーションは、アプリケーション１４２のコード内に存在する可能性のある任意の欠陥を識別するため、または、アプリケーション１４２のパフォーマンスを分析するために、アプリケーション１４２の実行を分析することができる。たとえばアプリケーション１４２は、アプリケーション１４２が実行される場合にイベントを生成するためのプログラム・コードを装備することが可能であり、こうしたイベントは分析アプリケーション１４４によって検出可能である。アプリケーション装備および分析アプリケーションは、当業者に知られている。
【００３４】
図２は、本発明の一実施形態に従った、処理システム２００の例を示すブロック図である。処理システム２００は、クライアント、プロダクション・サーバ、中間サーバ、またはテスト・サーバとすることができる。処理システム２００は、システム・バス２１５を介してメモリ要素２１０に結合された、少なくとも１つのプロセッサ２０５を含むことができる。したがって処理システム２００は、メモリ要素２１０内にプログラム・コードを記憶することができる。プロセッサ２０５は、システム・バス２１５を介してメモリ要素２１０からアクセスされるプログラム・コードを実行することができる。たとえば一態様において、処理システム２００は、プログラム・コードの記憶あるいは実行またはその両方に好適なコンピュータとして実装可能である。しかしながら処理システム２００は、本明細書内で説明された機能を実行することが可能な、プロセッサおよびメモリを備える任意のシステムの形で実装可能であることを理解されたい。
【００３５】
メモリ要素２１０は、たとえばローカル・メモリ２２０および１つまたは複数の大容量記憶デバイス２２５などの、１つまたは複数の物理メモリ・デバイスを含むことができる。ローカル・メモリ２２０は、通常、プログラム・コードの実際の実行中に使用される、ランダム・アクセス・メモリまたは他の非永続的メモリ・デバイスを指す。大容量記憶デバイス２２５は、ＨＤＤ、ＳＤＤ、または他の永続的データ記憶デバイスとして実装可能である。処理システム２００は、実行中に大容量記憶デバイス２２５からプログラム・コードを取り出さなければならない回数を減少させるために、少なくともいくつかのプログラム・コードの一時記憶を提供する、１つまたは複数のキャッシュ・メモリ（図示せず）を含むことも可能である。
【００３６】
１つまたは複数のネットワーク・アダプタ２３０は、処理システム２００が、他のシステム、コンピュータ・システム、リモート・プリンタ、あるいはリモート記憶デバイスまたはそれらすべてに、介在する私設または公衆のネットワークを介して結合できるようにするために、システム・バス２１５に直接、または介在するＩ／Ｏコントローラを介して、処理システム２００に結合することができる。モデム、ケーブル・モデム、イーサネット・カード、無線ネットワーク・アダプタは、処理システム２００と共に使用可能な様々なタイプのネットワーク・アダプタの例であるが、本発明はこの点で限定されない。他のＩ／Ｏデバイス（図示せず）も、処理システム２００に結合可能である。
【００３７】
例を挙げると、限定的ではなく、それぞれがプログラム・モジュール２４２のセット（少なくとも１つ）を有する１つまたは複数のプログラム／ユーティリティ２４０を、メモリ要素２１０、ならびにオペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ内に、記憶することが可能である。プログラム・モジュール１４２は、通常、本明細書で説明される本発明の実施形態の機能あるいは方法またはその両方を実行する。
【００３８】
図内で、処理システム２００が図１のプロダクション・サーバ１２０である場合、プログラム／ユーティリティ２４０はアプリケーション１２２および監査機構１２４を含むことができる。監査ログ１２６は、メモリ要素２１０内に記憶することもできる。処理システム２００が図１の中間サーバ１３０である場合、プログラム／ユーティリティ２４０はマニホルド・プロキシ１３２を含むことができる。処理システム２００が図１のテスト・サーバ１４０である場合、プログラム／ユーティリティ２４０は、アプリケーション１４２、分析アプリケーション１４４、およびオプションでマニホルド・プロキシ１３２（中間サーバ１３０が使用されていない場合）を含むことができる。
【００３９】
図３は、本発明の他の実施形態に従った、プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製する方法３００を示す流れ図である。方法３００は、図１の監査機構１２４によって実装可能である。ステップ３０２で、クライアントから受信したクライアント要求を処理することによって、プロダクション・サーバ上にプロダクション・ロードを作成することができる。ステップ３０４で、クライアント要求がリアル・タイムで処理されている間、識別されたクライアント要求を表し、プロダクション・サーバとそれぞれのクライアントとの間で形成される固有の状態を表す状態情報を定義する、複製されたプロダクション・ロードを生成するために、プロダクション・ロードを複製することができる。ステップ３０６で、複数のクライアント要求がそれぞれのクライアントからプロダクション・サーバに通信される際に介する、それぞれのプロダクション・ソケット接続を識別することができる。ステップ３０８で、プロダクション・ソケット接続を、複製されたプロダクション・ロードに関連付けることができる。ステップ３１０で、テスト・サーバ上のプロダクション・ロードを複製するために、リアル・タイムで、複製されたプロダクション・ロードを通信することができる。たとえば、複製されたプロダクション・ロードは、図１のマニホルド・プロキシ１３２に通信することができる。
【００４０】
図４は、本発明の他の実施形態に従った、複製されたプロダクション・ロードのメッセージを生成する方法４００を示す流れ図である。ここでも方法４００は、図１の監査機構１２４によって実装可能である。
【００４１】
ステップ４０２で、第１のデータ構造に関するメモリをクライアント要求データ用に割り振ることができる。ステップ４０４で、第２のデータ構造に関するメモリをマニホルド・プロキシ・データ記録用に割り振ることができる。ステップ４０６で、プロダクション・サーバによってクライアント要求を受信することが可能であり、監査機構はクライアント要求データを第１の監査ログ記録に入力することができる。ステップ４０８で、監査機構は、クライアント要求に関連付けられた状態情報を取り出し、状態情報およびクライアント要求データを第２の監査ログ記録に入力することができる。ステップ４１０で、監査機構は、第２の監査ログ記録をマニホルド・プロキシに関連付けられたソケットに書き込み、それによってプロダクション・ロード・ユニットを表すメッセージを生成し、このメッセージをマニホルド・プロキシに通信することができる。ステップ４１２で、監査機構は第１の監査ログ記録をプロダクション・サーバ上の監査ログ・ファイルに書き込むことができる。
【００４２】
図５は、本発明の他の実施形態に従った、プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製する他の方法５００を示す流れ図である。方法５００は、図１のマニホルド・プロキシ１３２によって実装可能である。
【００４３】
ステップ５０２で、複製されたプロダクション・ロードを受信することができる。複製されたプロダクション・ロードは、クライアント要求を処理することによって作成されたプロダクション・サーバ上のプロダクション・ロードに対応することができる。複製されたプロダクション・ロードは、クライアント要求がプロダクション・サーバによって処理される間にリアル・タイムで生成可能であり、プロダクション・サーバと、クライアント要求の受信元であるクライアントとの間で形成される、固有の状態を表す状態情報を定義することができる。
【００４４】
ステップ５０４で、複製されたプロダクション・ロードを受信することに応答して、リアル・タイムでプロセッサを介して、複数の複製されたクライアント要求を生成するために複製されたプロダクション・ロードを処理することが可能である。複製されたクライアント要求のそれぞれは、プロダクション・サーバによって受信されたそれぞれのクライアント要求を複製することができる。複製されたクライアント要求の少なくとも一部は、クライアント要求の受信元であるそれぞれのクライアントに関連付けられた状態情報を複製することができる。言い換えれば、複製されたクライアント要求のいくつかがそれぞれの状態情報を複製することができるか、または、複製されたクライアント要求のすべてがそれぞれの状態情報を複製することができる。
【００４５】
ステップ５０６で、複数のクライアント要求について、対応するプロダクション・ソケット接続を、対応する複製されたクライアント要求に関連付けられたそれぞれのテスト・ソケット接続にマッピングすることができる。ステップ５０８で、複製されたクライアント要求を、リアル・タイムでテスト・サーバに通信することができる。
【００４６】
図６は、本発明の他の実施形態に従った、テスト・サーバ上で複製されたクライアント要求を処理する方法を示す流れ図である。ここでも方法６００は、図１のマニホルド・プロキシ１３２によって実装可能である。
【００４７】
ステップ６０２で、マニホルド・プロキシは、複製されたプロダクション・ロードの構成要素であるメッセージをプロダクション・サーバから受信するために、ソケットをオープンすることができる。たとえばメッセージは、こうしたメッセージを生成するように好適に構成された監査機構または他の好適なプログラム／ユーティリティから受信することができる。ステップ６０４で、メッセージはソケットから読み取る（すなわち受信する）ことができる。ステップ６０６で、メッセージは、クライアント要求データおよび状態情報を解析するように処理することができる。
【００４８】
決定ボックス６０８で、クライアント要求データがバインドを要求する場合、ステップ６１０で、テスト・サーバへのテスト・ソケット接続のバインドを作成することが可能であり、プロダクション・ソケット接続をテスト・ソケット接続にマッピングすることができる。クライアント要求データがバインドを要求しない場合、プロセスは決定ボックス６１２に進むことができる。決定ボックス６１２で、クライアント要求データがアンバインドを要求する場合、６１４で、テスト・サーバへのテスト・ソケット接続のアンバインドを実装することが可能であり、プロダクション・ソケット接続のテスト・ソケット接続へのマッピングを除去することができる。決定ボックス６１２で、クライアント要求データがアンバインドを要求しない場合、決定ボックス６１６で、メッセージがフィルタリングされるかどうかを決定することができる。フィルタリングされない場合、複製されたクライアント要求をテスト・サーバに送信するために接続マッピングを使用することが可能であり、応答を読み取ることができる。メッセージがフィルタリングされる場合、ステップ６２０で、メッセージをサポートされていないものとして識別することができるため、複製されたクライアント要求をテスト・サーバに送信する必要がない。
【００４９】
プロセスは、ステップ６１０、６１４、６１８、および６２０からステップ６０４に戻ることが可能であり、他のメッセージをソケットから読み取ることができる。プロセスは、プロセスを終了することが決定されるまで反復を継続することができる。
【００５０】
図面内の流れ図およびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、およびオペレーションを示す。この点で、流れ図またはブロック図内の各ブロックは、指定された論理機能を実装するための１つまたは複数の実行可能命令を含む、モジュール、セグメント、またはコードの一部を表すことができる。いくつかの代替の実装において、ブロック内に示された機能は図面内に示された順序以外で実行できることにも留意されたい。たとえば連続して示された２つのブロックは、実際にはほぼ同時に実行可能であるか、またはブロックは時折、含まれる機能に応じて逆の順序で実行可能である。ブロック図あるいは流れ図またはその両方の各ブロック、および、ブロック図あるいは流れ図またはその両方におけるブロックの組み合わせは、指定された機能または動作を実行する特定用途向けハードウェア・ベース・システム、または特定用途向けハードウェアおよびコンピュータ命令の組み合わせによって、実装可能であることにも留意されたい。
【００５１】
本明細書で使用される用語は、特定の実施形態を説明するためのみのものであり、本発明を限定することは意図されていない。本明細書で使用される場合、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、特に明確に示されていない限り、複数形も含むことが意図されている。用語「含む」あるいは「含んでいる」またはその両方は、本明細書で使用される場合、示された機能、整数、ステップ、オペレーション、要素、あるいは構成要素、またはそれらすべての存在を指定するものであるが、１つまたは複数の他の機能、整数、ステップ、オペレーション、要素、構成要素、あるいはそれらのグループ、またはそれらすべての存在または追加を除外するものではないことをさらに理解されよう。
【００５２】
以下の特許請求の範囲におけるすべての手段またはステップならびに機能要素の対応する構造、材料、動作、および等価物は、具体的に請求されているように他の請求される要素と組み合わせて機能を実行するための任意の構造、材料、または銅さを含むことが意図されている。本発明の説明は、例示および説明の目的で提示されてきたが、開示された形の本発明を網羅するかまたはこれに限定されることは意図されていない。当業者であれば、本発明の範囲および趣旨を逸脱することなく多くの修正および変形が明らかとなろう。実施形態は、本発明の原理および実際の適用例を最も良く説明するために、ならびに、他の当業者が、企図された特定の用途に適するような様々な修正を伴う様々な実施形態について本発明を理解できるようにするために、選択および説明された。
【図１】
2015506008.tif 000003
【図２】
2015506008.tif 000004
【図３】
2015506008.tif 000005
【図４】
2015506008.tif 000006
【図５】
2015506008.tif 000007
【図６】
2015506008.tif 000008
【手続補正書】
【提出日】平成26年6月16日(2014.6.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製する方法であって、
クライアントから受信したクライアント要求を処理することによって、前記プロダクション・サーバ上に前記プロダクション・ロードを作成すること、
前記クライアント要求が処理される間に、プロセッサを介してリアル・タイムで、前記クライアント要求を表し、前記プロダクション・サーバと前記それぞれのクライアントとの間で形成される固有の状態を表す状態情報を定義する、複製されたプロダクション・ロードを生成するために、前記プロダクション・ロードを複製すること、および、
前記テスト・サーバ上で前記プロダクション・ロードを複製するために、リアル・タイムで、前記複製されたプロダクション・ロードを通信すること、
を含む、方法。
【請求項２】
前記クライアント要求が前記プロダクション・サーバによって処理される間に、リアル・タイムで、前記複製されたプロダクション・ロードを自動的に生成するように監査機構を構成すること、
をさらに含む、請求項１に記載の方法。
【請求項３】
複数の前記クライアント要求が前記それぞれのクライアントから前記プロダクション・サーバに通信される際に介する、それぞれのプロダクション・ソケット接続を識別すること、および、
前記プロダクション・ソケット接続を、前記複製されたプロダクション・ロードに関連付けること、
をさらに含む、請求項１に記載の方法。
【請求項４】
前記状態情報が、前記プロダクション・サーバの以前の使用量に基づいて変化する前記クライアント要求に関連付けられたクッキーを示す、請求項１に記載の方法。
【請求項５】
前記状態情報が、前記それぞれのクライアントに提供されるページ・サービスを示す、請求項１に記載の方法。
【請求項６】
前記状態情報が、前記それぞれのクライアントに割り振られる接続ハンドルを示す、請求項１に記載の方法。
【請求項７】
前記状態情報が、前記それぞれのクライアント要求に関連付けられたバインド情報を示す、請求項１に記載の方法。
【請求項８】
前記プロダクション・ロードが、前記プロダクション・サーバによって前記クライアントに提供されるサービスに関して、前記プロダクション・サーバの挙動を変更することなく複製される、請求項１に記載の方法。
【請求項９】
プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製する方法であって、
クライアント要求を処理することによって作成された前記プロダクション・サーバ上のプロダクション・ロードに対応する、複製されたプロダクション・ロードを受信することであって、前記複製されたプロダクション・ロードが、前記クライアント要求が前記プロダクション・サーバによって処理される間にリアル・タイムで生成され、前記プロダクション・サーバと、前記クライアント要求の受信元である前記クライアントとの間で形成される、固有の状態を表す状態情報を定義する、受信すること、
前記複製されたプロダクション・ロードを受信することに応答して、プロセッサを介してリアル・タイムで、複数の複製されたクライアント要求を生成するために前記複製されたプロダクション・ロードを処理することであって、前記複製されたクライアント要求のそれぞれは、前記プロダクション・サーバによって受信されたそれぞれのクライアント要求を複製し、前記複製されたクライアント要求の少なくとも一部は、前記クライアント要求の受信元である前記それぞれのクライアントに関連付けられた前記状態情報を定義する、処理すること、および、
前記複製されたクライアント要求を、リアル・タイムで前記テスト・サーバに通信すること、
を含む、方法。
【請求項１０】
前記クライアント要求が、前記それぞれのクライアントと前記プロダクション・サーバとの間で確立されたプロダクション・ソケット接続を介して、前記クライアントから前記プロダクション・サーバに通信され、
複数の複製されたクライアント要求を生成するために前記複製されたプロダクション・ロードを処理することが、複数の前記クライアント要求に関して、対応するプロダクション・ソケット接続を前記対応する複製されたクライアント要求に関連付けられたそれぞれのテスト・ソケット接続にマッピングすることを含む、
請求項９に記載の方法。
【請求項１１】
前記状態情報が、前記プロダクション・サーバの以前の使用量に基づいて変化する前記クライアント要求に関連付けられたクッキーを示す、請求項９に記載の方法。
【請求項１２】
前記状態情報が、前記それぞれのクライアントに提供されるページ・サービスを示す、請求項９に記載の方法。
【請求項１３】
前記状態情報が、前記それぞれのクライアントに割り振られる接続ハンドルを示す、請求項９に記載の方法。
【請求項１４】
前記状態情報が、前記それぞれのクライアント要求に関連付けられたバインド情報を示す、請求項９に記載の方法。
【請求項１５】
あるクライアント要求が前記テスト・サーバに複製されるのを防ぐために、前記複製されたプロダクション・ロードをフィルタリングすること、
をさらに含む、請求項９に記載の方法。
【請求項１６】
コンピュータに、プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製するためのコンピュータ・プログラムであって、
請求項１乃至１５のいずれかに記載の方法のすべてのステップを実行させるための前記コンピュター・プログラム。
【請求項１７】
プロダクション・サーバのプロダクション・ロードをテスト・サーバ上で複製するためのシステムであって、
プロセッサと、請求項１６に記載のコンピュータ・プログラムと、
を備える、システム。
【国際調査報告】
2015506008.tif 000009
2015506008.tif 000010