(57)【要約】      （修正有）【課題】待ち時間を誘発することにより、分散計算サービスの弾力性を評価する方法及びシステムを提供する。【解決手段】待ち時間監視アプリケーション１６４が、各アクティブアプリケーション構成要素を観測し、指定又は非指定間隔で、１つのアクティブアプリケーション構成要素２２３を選択し、選択されたアクティブアプリケーション構成要素から発せられる１つ以上のメッセージに待ち時間又はエラーメッセージを導入する。次に、待ち時間監視アプリケーション１６４は、影響を受けるアクティブアプリケーション構成要素に依存する、他のアクティブアプリケーション構成要素に対する待ち時間又はエラーメッセージの影響を測定する。故障サーバの、残りのネットワークアプリケーションに対する影響を観測することにより、プロバイダは、各構成要素が、分散計算基盤でいかなる待ち時間又はエラー状況にも耐えることを保証する。【選択図】図２
2015092354.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク化アプリケーションの弾力性を検証するコンピュータ実行方法において、
前記ネットワーク化アプリケーションが提供されるネットワーク内の複数のアクティブアプリケーション構成要素を識別するステップと、
１つ以上の選択基準に基づいて、前記複数のアクティブアプリケーション構成要素から第１のアクティブアプリケーション構成要素を選択するステップと、
所定の変更規則に従って、前記第１のアクティブアプリケーション構成要素により送信されるメッセージを変更するステップであって、前記メッセージが、ネットワーク管理者により指定される１つ以上のイベント記述子を満たす要求に対する応答であるステップと、
前記複数のアクティブアプリケーション構成要素に含まれる第２のアクティブアプリケ−ション構成要素を監視して、前記変更されたメッセージにより生じる前記第２のアクティブアプリケーション構成要素に対する影響を特定するステップと、
を含むことを特徴とする、コンピュータ実行方法。
【請求項２】
変更するステップが、前記メッセージの送信を遅延させることを含むことを特徴とする、請求項１に記載の方法。
【請求項３】
変更するステップが、前記メッセージをエラーメッセージで置換することを含むことを特徴とする、請求項１または２に記載の方法。
【請求項４】
前記メッセージが、前記第２のアクティブアプリケーション構成要素以外の前記複数のアクティブアプリケーション構成要素に含まれる任意のアクティブアプリケーション構成要素から受信されるメッセージへの応答を含むことを特徴とする、請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記１つ以上のイベント記述子が、指定されたユニフォームリソースロケータ（ＵＲＬ）に関連付けられたアクセス動作を記述することを特徴とする、請求項１から４のいずれか１項に記載の方法。
【請求項６】
１つ以上のログエントリを作成して、前記メッセージの変更に起因する前記第２のアクティブアプリケーション構成要素に対する影響を記録するステップをさらに含むことを特徴とする、請求項１から５のいずれか１項に記載の方法。
【請求項７】
処理ユニットにより実行されると、ネットワーク化アプリケーションの柔軟性を検証する動作を前記処理ユニットに実行させる命令を含むコンピュータ可読記憶媒体において、前記動作が、
前記ネットワーク化アプリケーションが提供されるネットワーク内の複数のアクティブアプリケーション構成要素を識別するステップと、
１つ以上の選択基準に基づいて、前記複数のアクティブアプリケーション構成要素から第１のアクティブアプリケーション構成要素を選択するステップと、
所定の変更規則に従って、前記第１のアクティブアプリケーション構成要素により送信されるメッセージを変更するステップであって、前記メッセージが、ネットワーク管理者により指定される１つ以上のイベント記述子を満たす要求に対する応答であるステップと、
前記複数のアクティブアプリケーション構成要素に含まれる第２のアクティブアプリケ−ション構成要素を監視して、前記変更されたメッセージにより生じる前記第２のアクティブアプリケーション構成要素に対する影響を特定するステップと、
を含むことを特徴とする、コンピュータ可読記憶媒体。
【請求項８】
前記メッセージが、ネットワーク管理者により指定される１つ以上のイベント記述子を満たす要求に対する応答であることを特徴とする、請求項７に記載のコンピュータ可読記憶媒体。
【請求項９】
前記動作が、１つ以上のログエントリを作成して、前記メッセージの変更に起因する前記第２のアクティブアプリケーション構成要素に対する影響を記録するステップをさらに含むことを特徴とする、請求項７または８に記載のコンピュータ可読記憶媒体。
【請求項１０】
プロセッサと、
前記プロセッサにより実行されると、ネットワーク化アプリケーションの柔軟性を検証する動作を実行する命令を含むメモリと、
を備えるシステムにおいて、前記動作が、
前記ネットワーク化アプリケーションが提供されるネットワーク内の複数のアクティブアプリケーション構成要素を識別すること、
１つ以上の選択基準に基づいて、前記複数のアクティブアプリケーション構成要素から第１のアクティブアプリケーション構成要素を選択すること、
所定の変更規則に従って、前記第１のアクティブアプリケーション構成要素により送信されるメッセージを変更することであって、前記メッセージが、ネットワーク管理者により指定される１つ以上のイベント記述子を満たす要求に対する応答であること、及び
前記複数のアクティブアプリケーション構成要素に含まれる第２のアクティブアプリケ−ション構成要素を監視して、前記変更されたメッセージにより生じる前記第２のアクティブアプリケーション構成要素に対する影響を特定すること、
を含むことを特徴とする、システム。
【請求項１１】
ネットワーク化アプリケーションの弾力性を検証するコンピュータ実行方法において、
前記ネットワーク化アプリケーションが提供されるネットワーク内の複数のアクティブアプリケーション構成要素を識別するステップと、
１つ以上の選択基準に基づいて、前記複数のアクティブアプリケーション構成要素から第１のアクティブアプリケーション構成要素を選択するステップと、
所定の変更規則に従って、前記第１のアクティブアプリケーション構成要素により送信されるメッセージを変更するステップであって、前記メッセージをエラーメッセージで置換することを含むステップと、
前記複数のアクティブアプリケーション構成要素に含まれる第２のアクティブアプリケ−ション構成要素を監視して、前記変更されたメッセージにより生じる前記第２のアクティブアプリケーション構成要素に対する影響を特定するステップと、
を含むことを特徴とする、コンピュータ実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般的には分散計算システム及び方法に関し、より具体的には、待ち時間を誘発することにより分散計算サービスの弾力性を評価することに関する。
【背景技術】
【０００２】
多種多様な計算アプリケーションが、コンピュータネットワークを介してユーザに提供されている。多くの場合、ネットワーク化アプリケーションは、分散コンピュータシステム内の複数の対話する計算ノードを使用して提供し得る。ネットワーク化アプリケーションは、１つ以上の計算ノードで実行される１つ以上のネットワーク化アプリケーション構成要素として存在する。例えば、ユーザからウェブページ要求を受信するように構成されたウェブサーバ（分散計算システム内のあるノードで実行される）を使用して、ウェブサイトを提供し得る。要求はアプリケーションサーバ（分散計算システム内の別のノードで実行される）に渡すことができ、アプリケーションサーバは次に、要求を処理し、応答を生成し、応答はウェブサーバに返され、そして最終的にユーザに渡される。
【０００３】
ネットワーク化アプリケ−ションの別の例は、ネットワークを介してメディアタイトルへのアクセスを提供するために使用されるコンテンツ配信システムを含む。通常、コンテンツ配信システムは、アクセスサーバ及びコンテンツサーバ等の様々なサーバを含み得る。クライアントは、ゲームコンソール、計算システム、計算タブレット、モバイル電話、又はネットワークアウェアＤＶＤプレーヤ等のコンテンツプレーヤを使用してサーバに接続し得る。コンテンツサーバは、コンテンツサーバからコンテンツプレーヤへのダウンロードに利用可能なファイル（又は「ストリーム」）を記憶する。各ストリームは、映画、テレビ番組、スポーツの試合、ユーザ生成コンテンツ、若しくは録画により捕捉された舞台若しくはライブイベント等の様々な形態のビデオ又は他のコンテンツのデジタル版を提供し得る。ユーザは、コンテンツリストが利用可能なウェブサーバに接続することによりサービスにアクセスする。特定のタイトルへの要求が受信されると、利用可能なコンテンツサーバへの接続を介してタイトルをクライアントシステムにストリーミングし得る。
【０００４】
上記のようなシステムでは、待ち時間及びエラーが、あるサーバで実行中のネットワーク化アプリケーション構成要素と、別のサーバで実行中の依存ネットワーク化アプリケーション構成要素との間の様々な通信路で発生し得る。これらの待ち時間又はエラー状況は、過負荷がかかるか、又はソフトウェア若しくはハードウェアの故障を受けたサーバ又はネットワーク装置に起因し得る。依存ネットワーク化アプリケーション構成要素は、標的アプリケーションとの通信路でのそのような待ち時間又はエラーに耐えることができない場合もある。その結果、依存ネットワーク化アプリケ−ション構成要素も同様に、他のネットワーク化アプリケーション構成要素への通信路に待ち時間又はエラーをもたらし、分散コンピュータシステム全体を通しての１つ以上のアプリケーション構成要素に潜在的に連鎖待ち時間、エラー状況、又は他の問題をもたらすおそれがある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
複数のネットワーク化アプリケーション構成要素にわたる上記のような相互待ち時間及びエラーは、複雑な分散コンピュータシステム内の待ち時間及びエラーを十分に正確にモデリングすることが難しいという点で、テストすることが難しい。テストシステムで十分な弾力性があるように見え得るネットワークアプリケーション構成要素は、それでもなお、分散コンピュータシステムに導入した場合に故障することがある。上記に示されるように、必要とされるのは、分散コンピュータシステムで実行中のアプリケーションの弾力性をテストするよりよい方法である。
【課題を解決するための手段】
【０００６】
本明細書に開示される本発明の一実施形態は、ネットワーク化アプリケ−ションの弾力性を評価するコンピュータ実行方法を提供する。この方法は、ネットワーク化アプリケーションが提供されるネットワーク内の複数のアクティブアプリケーション構成要素を識別するステップと、１つ以上の選択基準に基づいて、複数のアクティブアプリケーション構成要素から第１のアクティブアプリケーション構成要素を選択するステップと、所定の変更規則に従って、第１のアクティブアプリケーション構成要素により送信されるメッセージを変更するステップと、複数のアクティブアプリケーション構成要素に含まれる第２のアクティブアプリケ−ション構成要素を監視して、変更されたメッセージにより生じる第２のアクティブアプリケーション構成要素に対する影響を特定するステップとを含み得る。
【０００７】
他の実施形態は、開示される方法の１つ以上の態様並びに開示される方法の１つ以上の態様を実施するように構成されたシステムを処理ユニットが実行できるようにする命令を含むコンピュータ可読媒体を含むが、これに限定されない。
【０００８】
本発明の上記特徴を詳細に理解できるように、実施形態を参照することにより、上に要約した本発明のより詳細な説明を行うことができ、実施形態のうちのいくつかは添付図面に示される。しかし、添付図面が本発明の典型的な実施形態のみを示し、したがって、添付図面が本発明の範囲の限定としてみなされるべきではなく、本発明は、他の同等で有効な実施形態を許容することができることに留意されたい。
【図面の簡単な説明】
【０００９】
【図１】本発明の１つ以上の態様を実施するように構成された分散計算システムを示す。
【図２】本発明の一実施形態による待ち時間アプリケーションを含む管理サーバの図である。
【図３】本発明の一実施形態による分散計算システム内の２つのノードを示す。
【図４】本発明の一実施形態によるネットワーク化アプリケーションの弾力性を検証する方法を示す。
【発明を実施するための形態】
【００１０】
本発明の実施形態は、分散計算システム内の対話する計算要素の集まりを使用して提供されるネットワーク化アプリケーションの弾力性を検証する技術を提供する。そのような計算要素は、本明細書ではノードと呼ばれる。例えば、ネットワーク監視アプリケーション（以下、待ち時間アプリケーションと呼ばれる）は、特定のノードで実行されている標的ネットワーク化アプリケーション構成要素のインスタンスに関連付けられた通信路に待ち時間又はエラーを導入するように構成し得る。次に、待ち時間アプリケーションは、標的ネットワーク化アプリケーション構成要素に依存するシステムが、そのような待ち時間又はエラー状況が導入された後でもなお正しく機能する（又は優雅に退化する）ことができるか否かを判断し得る。したがって、待ち時間アプリケーションは、分散計算システム内の他のシステムに対する待ち時間又はエラー状況の影響を制御下で観測し得る。この手法は、様々な計算構成要素の位置並びにデータセンター内の物理的サーバの位置が未知であるクラウドに基づく計算環境において有用であり得る。
【００１１】
一実施形態では、待ち時間アプリケーションは、実行中の各アプリケーション構成要素を観測し、実行中のアプリケーション構成要素のうちの１つを非指定間隔で選択し、そのアプリケーション構成要素の通信路のうちの１つ以上に待ち時間又はエラーを導入する。選択されたアプリケーション構成要素は、本明細書では標的アプリケーション構成要素と呼ばれる。次に、待ち時間アプリケーションは、標的アプリケーション構成要素に依存するアプリケーション構成要素の挙動変化を観測する。
【００１２】
依存アプリケーション構成要素への影響を観測することにより、プロバイダは、各構成要素がそのような待ち時間又はエラーに耐えることができることを保証することができる。一実施形態では、待ち時間アプリケーションは、実稼働環境でアップデート又はパッチをアプリケーション構成要素又は他のソフトウェアモジュールに導入する前に、テスト環境で使用し得る。そうすることにより、アップデート又はパッチを実稼働環境に導入せずに、アップデート又はパッチの影響を評価することができる。別の実施形態では、待ち時間アプリケーションを実稼働環境で使用し得、システムがオンラインである間、待ち時間又はエラーが分散コンピュータシステムに導入される。したがって、様々な実施形態では、待ち時間アプリケーションは、本発明を用いなければ、実稼働システムが非意図的又は不要な依存性を生み出すようにアップグレードされ、パッチ適用され、又は他の様式で変更されるにつれ、時間の経過に伴って失われるおそれがある分散コンピュータシステム内での耐故障性要件を満たすのに役立つ。より一般には、本明細書に記載の待ち時間アプリケーションによりシステムの任意の論理群を定義し、テストし得る。
【００１３】
以下の説明では、本発明のより完全な理解を提供するために、多くの特定の詳細が記載される。しかし、これらの特定の詳細のうちの１つ以上なしで本発明を実施し得ることが当業者には明らかだろう。他の場合、周知の特徴については、本発明を曖昧にしないように説明しなかった。
【００１４】
さらに、本発明の特定の実施形態は、データ通信ネットワークを介して映画、音楽、テレビ番組、又はユーザ生成コンテンツをエンドユーザクライアント装置にストリーミングするために使用されるネットワーク化アプリケーションの例を使用して説明される。しかし、本発明の実施形態を、多種多様なネットワーク化アプリケーション又はサービスに関する個々のシステム故障に対する弾力性を検証するように適合し得ることを理解されたい。したがって、ストリーミングメディアサービスへの参照は単なる例示であり、限定ではない。
【００１５】
図１は、本発明の１つ以上の態様を実施するように構成された分散計算システム１００を示す。示されるように、分散コンピュータシステム１００は、複数の計算ノード１０２を含む分散計算基盤１１０（本明細書では「クラウド」と呼ばれる）に接続されたクライアント装置１４２を含む。クライアント装置１４２は、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（広域ネットワーク）、又はインターネット等のネットワーク１２０を介してクラウド１１０に接続し得る。クラウド１１０は、ネットワーク１２０を経由してＲＥＳＴ（ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  ｓｔａｔｅ  ｔｒａｎｓｆｅｒ）等の標準メッセージングプロトコルを介して１つ以上の仮想計算サービスを提供する。仮想計算サービスの例としては、多くの他の種類のサービスの中でも特に、処理能力、記憶、及び関係データベースを挙げることができる。仮想計算サービスはネットワーク化アプリケーションを含み得、ネットワーク化アプリケーションでは、ネットワーク化アプリケーションの様々なアクティブアプリケーション構成要素が、互いに通信する複数のノードで実行される。例えば、ノード１０２（０）は、ネットワーク化アプリケーションの１つのアクティブアプリケーション構成要素を実行し得る。ノード１０２（０）はノード１０２（４）と通信し得、ノード１０２（４）は同じネットワーク化アプリケーションの第２のアクティブアプリケーション構成要素を実行し得る。ノード１０２（４）は、ノード１０２（２）、１０２（５）、１０２（Ｎ−１）と通信し得、これらの各ノードは、同じネットワーク化アプリケーションの第３のアクティブアプリケーション構成要素のインスタンスを実行し得る。
【００１６】
一実施形態では、クラウド１１０は、Ａｍａｚｏｎ（登録商標）等のクラウドサービスプロバイダによりホストされる。クラウドサービスプロバイダは、世界中の物理的に異なる場所にある様々なデータセンターにノード１０２を収容し、ネットワーク１２０を介してクライアントがクラウドサービスにアクセスできるようにする。例えば、Ａｍａｚｏｎ（登録商標）は、ハイパーテキスト転送プロトコル（ｈｔｔｐ）等の一般的なトランスポートプロトコルを使用してインターネットを通してアクセス可能な、Ａｍａｚｏｎ  Ｓｉｍｐｌｅ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｉｃｅ（商標）（Ｓ３）と呼ばれる仮想クラウドストレージソリューション並びにＡｍａｚｏｎ  Ｅｌａｓｔｉｃ  Ｃｏｍｐｕｔｅ  Ｃｌｏｕｄ（商標）（ＥＣ２）と呼ばれる仮想処理ソリューションをホストする。別の実施形態では、単一の組織が、クラウド１１０及びクライアント装置１４２の両方を私設ネットワークでホストし得る。
【００１７】
各ノード１０２は、プロセッサ（ＣＰＵ）、メモリ、ネットワークインタフェースカード（ＮＩＣ）、及びハードディスクドライブ、磁気テープドライブ、光ディスクドライブ、ドライブアレイ（例えば、ＲＡＩＤ）等（図示せず）の１つ以上の不揮発性記憶装置を含む。各ノード１０２は、メモリに記憶され、ＣＰＵで実行されるオペレーティングシステム（例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（商標）、Ｌｉｎｕｘ（商標）、Ｕｎｉｘ（登録商標）等）並びに１つ以上のアプリケーションを含み得る。アプリケーションのうちのいくつかは、Ａｐａｃｈｅ（商標）Ｃａｓｓａｎｄｒａのような分散データベース管理システム又はＡｐａｃｈｅ（商標）Ｈａｄｏｏｐのような分散アプリケ−ションシステム等のソフトウェアフレームワークを様々なクラウドサービスアーキテクチャに提供し得る。一実施形態では、各ノード１０２はブレードサーバを備え、２つ以上のブレードサーバは、シャシ内に収容され、共通の電源及び冷却システム等の特定のリソースを共有する。
【００１８】
クライアント装置１４２も、プロセッサ（ＣＰＵ）、メモリ、ＮＩＣ、及び１つ以上の不揮発性記憶装置（図示せず）を含む。ノード１０２と同様に、クライアント装置１４２も、メモリに記憶され、ＣＰＵで実行されるオペレーティングシステム並びにクライアントアプリケーション１４４等の１つ以上のアプリケーションを含む。一実施形態では、クライアントコンピュータ１４２は、分散コンピュータシステム１００を分析するために、データ分析者により維持され得る。クライアント装置１４２は、ネットワーク１２０を介して（クライアント装置１４２及びノード１０２のＮＩＣを通して）ノード１０２のうちの１つ以上と通信し得る。したがって、クライアントアプリケーション１４４は、クライアント装置１４２にネットワーク１２０を介して１つ以上のノード１０２と通信させることにより、クラウド１１０で実行されている１つ以上のネットワーク化アプリケーションにアクセスし得る。
【００１９】
管理サーバ１６２は、分散コンピュータシステム１００の管理タスクを自律的に実行してもよく、又はシステム管理者により発行される１つ以上のコマンドに応答して管理タスクを実行してもよい。管理サーバ１６２は、ノード１０２のうちの１つを含め、プロセッサ、メモリ、記憶装置、及びネットワークインタフェース等の従来の構成要素を含む任意の計算装置であり得る。管理サーバ１６２は、グラフィカルユーザインタフェース又はコマンドラインインタフェースを生成し、システム管理者が、クラウド１１０の構成、監視、及びテストを含むが、これに限定されない様々な機能を実行できるようにする、待ち時間アプリケーション１６４等のソフトウェアアプリケーションを含み得る。管理サーバ１６２は、通信リンク１３０を介してノード１０２のうちの１つ以上と通信し得る。
【００２０】
待ち時間アプリケーション１６４は、管理サーバ１６２で実行されるように構成される。さらに後述するように、待ち時間アプリケーション１６４は、クラウド１１０内の待ち時間又はエラー状況の増大の１つ以上のシミュレーションをスケジュールする。待ち時間アプリケーションは、選択されたアクティブアプリケーション構成要素（本明細書では標的構成要素と呼ぶ）に関連付けられた指定の通信路に待ち時間又はエラー状況を導入する。
【００２１】
図２は、本発明の一実施形態による待ち時間アプリケーション１６４を含む管理サーバ１６２の図である。示されるように、管理サーバ１６２は、中央演算処理装置（ＣＰＵ）２０５、ネットワークインタフェース２１５、相互接続２２０、メモリ２２５、及び記憶装置２３０を含むが、これに限定されない。管理サーバ１６２は、Ｉ／Ｏ装置２１２（例えば、キーボード、ディスプレイ、及びマウス装置）を管理サーバ１６２に接続するＩ／Ｏ装置インタフェース２１０を含むこともできる。
【００２２】
一般に、ＣＰＵ２０５は、メモリ２２５に記憶されているプログラミング命令を検索して実行する。同様に、ＣＰＵ２０５は、メモリ２２５にアプリケーションデータを記憶し、メモリ２２５に常駐するアプリケーションデータを検索する。相互接続２２０は、ＣＰＵ２０５、Ｉ／Ｏ装置インタフェース２１０、記憶装置２３０、ネットワークインタフェース２１５、及びメモリ２２５の間でのプログラミング命令及びアプリケーションデータの伝送に役立つ。ＣＰＵ２０５は、単一のＣＰＵ、複数のＣＰＵ、複数の処理コアを有する単一のＣＰＵ等の代表として含められる。メモリ２２５は一般に、ランダムアクセスメモリの代表として含まれる。記憶装置２３０はディスクドライブ記憶装置であり得る。単一のユニットとして示されるが、記憶装置２３０は、固定ディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、リムーバブルメモリカード、光学記憶装置、ネットワーク接続ストレージ（ＮＡＳ）、又はストレージエリアネットワーク（ＳＡＮ）等の固定及び／又はリムーバブル記憶装置の組合せであり得る。
【００２３】
例示的に、メモリ２２５は待ち時間アプリケーション１６４を含み、記憶装置２３０は監視ログ２３５を含む。示されるように、待ち時間アプリケーション１６４は、待ち時間構成要素２２３、復元モニタ２２７、及びシミュレーション監視パラメータ２２９を含む。上述したように、待ち時間アプリケーション１６４は、待ち時間又はエラー状況を定期的に選択して、ネットワーク化アプリケーションに関連付けられたアクティブネットワーク化アプリケーション構成要素に導入するように構成されるソフトウェアアプリケーションを提供し得る。ネットワーク化アプリケーション構成要素は、クラウド計算環境で実行されている分散計算システム１００内のノード１０２又はプロバイダのデータセンター内のサーバで実行し得る。
【００２４】
一実施形態では、待ち時間構成要素２２３は、標的アクティブアプリケ−ション構成要素を選択し、アプリケーション構成要素に関連付けられた１つ以上の通信路において待ち時間又はエラー状況をシミュレーションする。待ち時間構成要素２２３は、監視パラメータ２２９に従ってシミュレーションを構成する。所与のシミュレーションを制御する監視パラメータ２２９は、待ち時間アプリケーション１６４により自動的に事前決定し得る。或いは、待ち時間アプリケーションは、グラフィカルインタフェース又はコマンドラインインタフェースを介してシステム管理者から１つ以上の監視パラメータ２２９を受信し得る。例えば、待ち時間アプリケーションは、シミュレーションが待ち時間モードで動作するか、それともエラーモードで動作するかに関連付けられた監視パラメータ２２９を設定し得る。待ち時間モードが指定される場合、待ち時間アプリケーションは、標的構成要素にメッセージを所定の時間量だけ遅延させる。或いは、指定量の時間ではなく、ランダムな遅延を導入し得る。エラーモードが指定される場合、待ち時間アプリケーションは、標的構成要素に、本来ならば予期されるメッセージの代わりにエラーメッセージを導入させる。例えば、指定されたユニフォームリソースロケータ（ＵＲＬ）に関連付けられた要求に応答して、待ち時間アプリケーションは、標的構成要素に、参照されたＵＲＬのウェブページではなく、４０４（「見つかりません（ｎｏｔ  ｆｏｕｎｄ）」）エラー等のエラーメッセージを返させ得る。
【００２５】
シミュレーションに関連付けられた他の監視パラメータ２２９は、シミュレーションが実行をスケジュールされた回数、シミュレーションの開始時間、シミュレーションの持続時間、及び連続したシミュレーション実行の間隔を含むが、これに限定されない。待ち時間アプリケーション１６４は、選択された構成要素から発せられるすべてのメッセージが影響されるか、それともシステム管理者により指定される１つ以上のイベント記述子を満たすメッセージのみが影響されるかを決めることもできる。例えば、シミュレーションは、ユーザのメールアドレスを要求するメッセージのみに応答して待ち時間を導入するようにプログラムし得る。別の例では、シミュレーションは、標的構成要素から発せられるメッセージ総数のうちの特定の割合に影響するようにプログラムし得る。
【００２６】
標的アプリケーション構成要素が選択され、シミュレーションが開始されると、復元モニタ２２７は、標的アプリケーション構成要素に依存するアプリケーション構成要素の動作を観測し得る。復元モニタ２２７は、待ち時間及び他の情報を依存アプリケーション構成要素から収集し、次に、情報をログ２３５に記憶する。ログ２３５の内容は、監視パラメータ２２９により指定される情報を含むとともに、依存アプリケーション構成要素により作成されるログデータを含み得る。
【００２７】
図３は、本発明の一実施形態による分散計算システム内の２つのノード３００を示す。示されるように、ノードはアプリケーション構成要素３１６、クライアントインタフェース３１２、及びサーバインタフェース３１４を含む。
【００２８】
アプリケーション構成要素３１６は、ネットワーク化アプリケーションに関連付けられた１つ以上の機能を提供する。アプリケーション構成要素３１６は、サーバ、クライアント、又はサーバ及びクライアントの両方として機能し得る。例えば、アプリケーション構成要素３１６（０）は、アプリケーション構成要素３１６（１）のサーバとして機能する。それに対応して、アプリケーション構成要素３１６（１）は、アプリケーション構成要素３１６（０）のクライアントとして機能する。さらに、アプリケーション構成要素３１６（０）、３１６（１）は、他のノード（図示せず）で実行中の他のアプリケーション構成要素のクライアント及びサーバとして機能し得る。
【００２９】
サーバインタフェース３１４（０）は、アプリケーション構成要素３１６（０）により送信又は受信されるサーバに基づくメッセージを途中で捕捉する。それに対応して、サーバインタフェース３１４（１）は、アプリケーション構成要素３１６（１）により送信又は受信されるサーバに基づくメッセージを途中で補足する。サーバインタフェース３１４は、データ圧縮／圧縮解除及び不正確にフォーマットされたメッセージのエラー又は例外処理を含むが、これに限定されない様々な機能をこれらのメッセージに対して実行する。例えば、サーバインタフェース３１４（０）は、メッセージをクライアントインタフェース３１２（１）から受信し、適切なフォーマットに関してメッセージをチェックし、次に、メッセージをアプリケーション構成要素３１６（０）に渡し得る。アプリケーション構成要素３１６（０）はメッセージを処理し、応答メッセージを生成する。アプリケーション構成要素３１６（０）は、応答メッセージをサーバインタフェース３１４（０）に送信する。サーバインタフェース３１４（０）は、１つ以上の機能を応答メッセージに対して実行し、次に、応答メッセージをクライアントインタフェース３１２（１）に送信する。サーバインタフェース３１４は、クライアントからのメッセージとサーバからの対応する応答メッセージとの間の待ち時間の測定等のテスト及び測定機能を提供するようにプログラムすることもできる。次に、サーバインタフェース３１４は、後に検索し評価するために、これらの測定を記憶し得る。
【００３０】
クライアントインタフェース３１２（０）は、アプリケーション構成要素３１６（０）により送信又は受信されるクライアントに基づくメッセージを途中で捕捉する。それに対応して、クライアントインタフェース３１２（１）は、アプリケーション構成要素３１６（１）により送信又は受信されるクライアントに基づくメッセージを途中で捕捉する。クライアントインタフェース３１２は、データ圧縮／圧縮解除、不正確にフォーマットされたメッセージのエラー又は例外処理、及びメッセージへの応答がサーバから受信されない場合のメッセージの送信再試行を含むが、これに限定されない様々な機能をこれらのメッセージに対して実行する。例えば、アプリケ−ション構成要素３１６（１）は、メッセージを生成し、アプリケーション構成要素３１６（０）に送信し得る。アプリケーション構成要素３１６（１）は、メッセージをクライアントインタフェース３１２（１）に送信する。クライアントインタフェース３１２（１）は、１つ以上の機能をメッセージに対して実行し、次に、メッセージをサーバインタフェース３１４（０）に送信する。上述したように、サーバインタフェース３１４（０）及びアプリケーション構成要素３１６（０）は、メッセージを処理し、応答メッセージを生成する。クライアントインタフェース３１２（１）は、応答メッセージを受信して処理し、応答メッセージをアプリケーション構成要素３１６（１）に送信する。クライアントインタフェース３１２は、メッセージと対応する応答メッセージとの間の待ち時間の測定等のテスト及び測定機能を提供するようにプログラムすることもできる。次に、クライアントインタフェース３１２は、後に検索して評価するために、これらの測定を記憶し得る。
【００３１】
上述したように、管理サーバ１６２は、構成機能中、監視機能中、及びテスト機能中、通信リンク１３０を介してノード１０２のうちの１つ以上と通信する。待ち時間アプリケーション１６４は、通信リンク１３０を使用して、シミュレーションを構成し、シミュレーションの実行を開始し、シミュレーションから生じるメトリックを収集し得る。特に、待ち時間アプリケーション１６４は、クライアントインタフェース３１２及びサーバインタフェース３１４内のパラメータを設定して、メッセージが様々なアプリケーション構成要素３１６間で渡される際、メッセージに待ち時間又はエラー状況を導入する。例えば、待ち時間アプリケーション１６４は、サーバインタフェース３１４（０）内のパラメータを設定し、所定の期間だけアプリケーション構成要素３１６（０）に送信されるか、又はアプリケーション構成要素３１６（０）から送信されるメッセージを遅延させて、待ち時間の増大を導入し得る。別の例では、待ち時間アプリケーション１６４は、サーバインタフェース３１４（０）内のパラメータを設定して、メッセージを、元のメッセージとは異なるエラーメッセージと置換し得る。待ち時間アプリケーション１６４は、サーバインタフェース３１４（０）を通るすべてのメッセージ又はメッセージのうちの特定の割合を変更するようにサーバインタフェース３１４（０）を構成し得る。或いは、待ち時間アプリケーション１６４は、特定のユニフォームリソースロケータ（ＵＲＬ）へのアクセスを指定するメッセージを含むが、これに限定されない１つ以上の基準を満たすメッセージを変更するようにサーバインタフェース３１４（０）を構成し得る。待ち時間アプリケーション１６４は、サーバインタフェース３１４（０）に関して上述したのと同様に、クライアント３１２（０）のパラメータを設定することもできる。
【００３２】
シミュレーションにスケジュールされた時間に達すると、待ち時間アプリケーション１６４は、アプリケ−ション構成要素３１６（０）（標的アプリケーション構成要素）を選択し、シミュレーションの設定に従ってパラメータをクライアントインタフェース３１２（０）及びサーバインタフェース３１４（０）に書き込み、シミュレーションを開始する。シミュレーション中、標的アプリケーション構成要素３１６（０）に依存するアプリケーション構成要素は、シミュレーションにより導入される待ち時間又はエラー状況により、待ち時間の増大、エラー状況、又は他の問題を経験し得る。依存アプリケーション構成要素は、標的アプリケーション構成要素３１６（０）との直接接続（直接依存性）を有し得る。或いは、依存アプリケーション構成要素は、１つ以上のアプリケーション構成要素を通して標的アプリケーション構成要素３１６（０）との接続（間接的依存性）を有し得る。シミュレーションがスケジュールされた時間期間にわたって実行されると、待ち時間アプリケーション１６４は、クライアントインタフェース３１２（０）及びサーバインタフェース３１４（０）内のパラメータを元の演算値に復元し、シミュレーションは終了する。待ち時間アプリケーション１６４は、標的アプリケーション構成要素３１６（０）により直接又は間接的に影響を受けるアプリケーション構成要素に関連付けられたクライアントインタフェース３１２及びサーバインタフェース３１４に問い合わせることにより、待ち時間情報及び他のメトリックを収集する。待ち時間アプリケーション１６４は、システム管理者による後の分析のためにメトリックを記憶する。
【００３３】
図４は、本発明の一実施形態によるネットワーク化アプリケーションの弾力性を検証する方法４００を示す。方法ステップ４００は図１〜図３のシステムと併せて説明されるが、方法ステップ４００を任意の順序で実行するように構成される任意のシステムが本発明の範囲内にあることを当業者は理解するだろう。
【００３４】
方法４００はステップ４０２において開始され、待ち時間アプリケーション１６４は、シミュレーションのモードが待ち時間モードであるか否かを判断する。シミュレーションのモードが待ち時間モードである場合、方法はステップ４０４に進み、待ち時間アプリケーション１６４が、待ち時間モードをシミュレーションに設定し、シミュレーションに関連付けられる遅延時間を設定する。シミュレーション中、選択メッセージが、遅延時間に関連する増大した遅延を受け、ここで、遅延時間は、実際の遅延時間、最大遅延時間、又は平均遅延時間を表し得るが、これに限定されない。ステップ４０２に戻り、シミュレーションのモードが待ち時間モードではない場合、シミュレーションのモードはエラーモードである。方法４００はステップ４０６に進み、待ち時間アプリケーション１６４がエラーモードを設定する。エラーモードシミュレーションでは、選択メッセージが、適切なメッセージ応答ではなくエラーメッセージを返す。
【００３５】
ステップ４０４又は４０６のいずれかから、方法４００はステップ４０８に進み、待ち時間アプリケーション１６４は、すべてのメッセージではなく、特定のメッセージタイプが待ち時間の増大又はエラー状況を受けるように、シミュレーションに関連付けられた１つ以上のイベント記述子を設定し得る。例えば、シミュレーションは、ユーザのメールアドレスを要求するメッセージに対してのみ又指定されたユニフォームリソースロケータ（ＵＲＬ）へのアクセスを要求するメッセージに対してのみ、待ち時間又はエラー状況を導入し得る。イベント記述子が設定されない場合、アプリケーション構成要素により送信されるすべてのメッセージは、待ち時間の増大又はエラー応答を受ける。ステップ４１０において、待ち時間アプリケーション１６４はシミュレーションの頻度及び持続時間を設定する。例えば、シミュレーションは、１０分の持続時間で、１回、定期的に（１週間に１回等）、又はランダムな間隔で行われるようにスケジュールし得る。ステップ４１２において、待ち時間アプリケーション１６４は、標的アプリケーションに依存するアプリケーションセットを特定する。依存アプリケーションは、標的アプリケーションに直接依存し得、その場合、依存アプリケーションは標的アプリケーションとの直接通信リンクを有する。或いは、依存アプリケーションは標的アプリケーションに間接的に依存し得、その場合、依存アプリケーションは、１つ以上の介在アプリケーションを介して標的アプリケーションにより影響を受け得る。ステップ４１４において、待ち時間アプリケーション１６４は、上述したようなモード、任意の適切なイベント記述子、及び頻度を含むシミュレーションスケジュールを保存する。
【００３６】
ステップ４１６において、待ち時間アプリケーション１６４は、シミュレーション実行時間に達するまで待つ。シミュレーション実行時間に達すると、方法４００はステップ４１８に進み、待ち時間アプリケーション１６４は、前に保存されたシミュレーションに従ってクライアントインタフェース３１２又はサーバインタフェース３１４内のシミュレーション属性を設定する。ステップ４２０において、待ち時間アプリケーション１６４は、分散コンピュータシステム１００内の観測された待ち時間の記録を開始する。特に、待ち時間アプリケーション１６４は、標的アプリケーションに直接又は間接的に依存するアプリケーションが受ける待ち時間を記録する。ステップ４２２において、待ち時間アプリケーション１６４は、シミュレーション持続時間が切れるのを待つ。ステップ４２４において、待ち時間アプリケーション１６４は、シミュレーション前の元の値に従ってクライアントインタフェース３１２又はサーバインタフェース３１４内のシミュレーション属性をリセットする。ステップ４２６において、待ち時間アプリケーション１６４は、シミュレーションから記録された結果を収集する。待ち時間アプリケーション１６４は、関係データベース、リポート、又は一連のグラフ等の任意の技術的に実現可能な様式で収集結果を編成し得る。次に、方法４００は終了する。
【００３７】
要約すると、ネットワーク化アプリケーションの弾力性は、待ち時間又はエラー状況を様々な通信リンクに導入することにより、分散コンピュータシステム１００内で評価される。待ち時間アプリケーション１６４は、特定の標的アプリケーションに関連付けられた待ち時間の増大又はエラー状況を引き起こすシミュレーションをスケジュールするように構成される。一実施形態では、待ち時間アプリケーション１６４は、各アクティブアプリケーション構成要素を観測し、指定間隔又は非指定間隔で１つのアクティブアプリケーション構成要素を選択し、選択されたアクティブアプリケーション構成要素から発せられる１つ以上のメッセージに待ち時間又はエラーメッセージを導入する。次に、待ち時間アプリケーション１６４は、影響を受けるアクティブアプリケーション構成要素に依存する他のアクティブアプリケーション構成要素への待ち時間又はエラーメッセージの影響を測定する。
【００３８】
有利には、待ち時間又はエラーシミュレーションからの結果は、ネットワーク化アプリケーションに関連付けられた１つ以上のアプリケーション構成要素の弾力性の特定に有用であり得る。待ち時間及びエラー状況をシミュレーションに導入し、続けて、依存構成要素への影響を測定することにより、待ち時間アプリケーション１６４により収集された情報は、システム管理者がネットワーク化アプリケーション内の様々な構成要素を向上させて、待ち時間増大又はエラー状況の期間中の弾力性を高めるのに役立ち得る。
【００３９】
上記は本発明の実施形態を対象とするが、本発明の基本範囲から逸脱せずに、本発明の他の実施形態及びさらなる実施形態を考案し得る。例えば、本発明の態様は、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアとの組合せで実施し得る。本発明の一実施形態は、コンピュータシステムと併用されるプログラム製品として実施し得る。プログラム製品のプログラムは、実施形態（本明細書に記載される方法を含む）の機能を定義し、様々なコンピュータ可読記憶媒体内に含むことができる。例示的なコンピュータ可読記憶媒体は、（ｉ）情報が永久的に記憶される不揮発性記憶媒体（例えば、ＣＤ−ＲＯＭドライブにより読み取り可能なＣＤ−ＲＯＭディスク等のコンピュータ内の読み取り専用メモリ装置、フラッシュメモリ、ＲＯＭチップ、又は任意のタイプの固体状態不揮発性半導体メモリ）と、（ｉｉ）変更可能な情報が記憶される書き込み可能記憶媒体（例えば、ディスケットドライブ内の「フロッピー」ディスク、又はハードディスクドライブ、又は任意のタイプの固体状態ランダムアクセス半導体メモリ）とを含むが、これらに限定されない。そのようなコンピュータ可読記憶媒体は、本発明の機能を指示するコンピュータ可読命令を有する場合、本発明の実施形態である。
【００４０】
上記に鑑みて、本発明の範囲は以下の特許請求の範囲により決定される。
【符号の説明】
【００４１】
１００  分散計算システム
１０２、３００  計算ノード
１１０  クラウド
１２０  ネットワーク
１３０  通信リンク
１４２  クライアント装置
１４４  クライアントアプリケーション
１６２  管理サーバ
１６４  待ち時間アプリケーション
２０５  中央演算処理装置
２１０  Ｉ／Ｏ装置インタフェース
２１２  Ｉ／Ｏ装置
２１５  ネットワークインタフェース
２２０  相互接続
２２３  待ち時間構成要素
２２５  メモリ
２２７  復元モニタ
２２９  シミュレーション監視パラメータ
２３０  記憶装置
２３５  監視ログ
３１２  クライアントインタフェース
３１４  サーバインタフェース
３１６  アプリケーション構成要素
４００  ネットワーク化アプリケーションの弾力性を検証する方法
【図１】
2015092354.tif 000003
【図２】
2015092354.tif 000004
【図３】
2015092354.tif 000005
【図４】
2015092354.tif 000006