(57)【要約】  コンポーネントプログラムに対して施行することができる構成設定が、サービスモデルから抽出される。サービスアプリケーション上での負荷レベルに対する、および／またはサービスモデル内の仕様に対する変化に従ってサービスアプリケーションを管理するためのインスタンス化プロセスが開始される。インスタンス化プロセスは、データセンター内のコンポーネントプログラムを展開し、または使用可能と識別すること、および構成設定から導出された定式化値を、展開されたコンポーネントプログラム全体に自動的に伝搬することを含む。導出されたこうした定式化値は、コンポーネントプログラムに組み込まれ、そうすることによって、サービスモデルに整合した、サービスアプリケーションの機能性を提供する。【選択図】図２
2011512579.tif 000002
【特許請求の範囲】
【請求項１】
実行されると、サービスモデルに従ってサービスアプリケーション内で１つまたは複数のコンポーネントプログラムを管理する方法を実施するコンピューター実行可能命令をその上に具現化させた１つまたは複数のコンピューター記憶媒体であって、
前記サービスアプリケーションにおける負荷レベルを判定するステップ（３０５）であって、前記サービスアプリケーションが、データセンター内の別個のコンピューティングデバイス上で実行可能な前記１つまたは複数のコンポーネントプログラムを備えるステップと、
前記サービスモデルから、前記１つまたは複数のコンポーネントプログラムに対して施行することができる構成設定を抽出するステップ（３１０）と、
前記負荷の前記レベルに従って前記サービスアプリケーションを管理するインスタンス化プロセスを開始するステップ（３１５）であって、前記インスタンス化プロセスが、
（１）前記データセンター内の前記１つまたは複数のコンポーネントプログラムを展開する工程（３２０）、および
（２）前記構成設定から導出された定式化値を、前記展開された１つまたは複数のコンポーネントプログラム全体に自動的に伝搬する工程（３３０）を含むステップと、
前記定式化値を、前記１つまたは複数のコンポーネントプログラムに少なくとも一時的に組み込み、そうすることによって、前記サービスモデルに整合した前記サービスアプリケーションの機能性を提供するステップ（３３５）とを含む方法。
【請求項２】
負荷レベルを判定するステップが、前記サービスアプリケーションをホストするウェブサイトでのトラフィックを監視するステップを含む、請求項１に記載の１つまたは複数のコンピューター記憶媒体。
【請求項３】
前記サービスアプリケーションが、ウェブブラウザーアプリケーションを介してクライアントにとってアクセス可能なアプリケーションサービスプロバイダーによって維持されるデータセンター上にあるソフトウェアを含む、請求項１に記載の１つまたは複数のコンピューター記憶媒体。
【請求項４】
前記サービスモデルが、部分的には、前記アプリケーションサービスプロバイダーと前記クライアントとの間で確立されたサービス記述コントラクトに従って生成される、請求項３に記載の１つまたは複数のコンピューター記憶媒体。
【請求項５】
前記組み込まれた定式化値に従って前記サービスアプリケーションを実行するステップをさらに含む、請求項１に記載の１つまたは複数のコンピューター記憶媒体。
【請求項６】
前記インスタンス化プロセスが、
前記展開された１つまたは複数のコンポーネントプログラムそれぞれの状態を判定する工程と、
変換マップにアクセスする工程であって、前記変換マップが、前記構成設定を、前記１つまたは複数のコンポーネントプログラムそれぞれの前記状態に対応する定式化値として表す論理を含む工程と、
前記変換マップの前記論理に従って前記構成設定から前記定式化値を導出する工程とをさらに含む、請求項１に記載の１つまたは複数のコンピューター記憶媒体。
【請求項７】
１つまたは複数のコンポーネントプログラムに構成設定を伝搬することによって、サービスアプリケーションをインスタンス化し、そうすることによって前記サービスアプリケーションの機能性を促進する方法を実施するコンピューターシステムであって、
前記サービスアプリケーションの動作をサポートする前記１つまたは複数のコンポーネントプログラムを実行するための第１のコンピューティングデバイス（２５５）と、
サービスモデルに従って前記サービスアプリケーションを実装するインスタンス化プロセスを開始するための第２のコンピューティングデバイス（２６５）とを備え、前記インスタンス化プロセスが、
（１）前記サービスモデル内の仕様から構成設定を抽出する工程と、
（２）前記第１のコンピューティングデバイス上にある前記１つまたは複数のコンポーネントプログラムを、インスタンス化に使用可能であると識別する工程と、
（３）前記１つまたは複数のコンポーネントプログラム内のパラメーターに問い合わせて、前記１つまたは複数のコンポーネントプログラムの一部が前記構成設定に適合するかどうか確認する工程と、
（４）前記構成設定から導出された定式化値を、前記１つまたは複数の適合コンポーネントプログラム全体に自動的に伝搬する工程と、
（５）前記定式化値に従って前記１つまたは複数の適合コンポーネントプログラムの前記パラメーターを構成する工程とを含むコンピューターシステム。
【請求項８】
前記インスタンス化プロセスが、
前記サービスモデルの前記仕様に対する修正の指示を受信する工程と、
前記修正された仕様から、アップデートされた構成設定を抽出する工程とをさらに含む、請求項７に記載のコンピューターシステム。
【請求項９】
前記第１のコンピューティングデバイス上にある前記１つまたは複数のコンポーネントプログラムが、前記アップデートされた構成設定から定式化値を受信すると、前記パラメーターに自動的に再構成させる一連の規則に従って開発される、請求項８に記載のコンピューターシステム。
【請求項１０】
前記第２のコンピューティングデバイスが、前記サービスアプリケーションの動作をサポートする前記１つまたは複数のコンポーネントプログラムを実行するようにさらに構成される、請求項７に記載のコンピューターシステム。
【請求項１１】
前記構成設定がコンポーネントアドレスを含み、前記コンポーネントアドレスが、前記第１のコンピューティングデバイス上にある前記１つまたは複数のコンポーネントプログラムに、前記第２のコンピューティングデバイス上にある前記１つまたは複数のコンポーネントプログラムと活動を協調させる、請求項１０に記載のコンピューターシステム。
【請求項１２】
前記構成設定がアルゴリズム識別子を含み、前記アルゴリズム識別子が、ある特定のアルゴリズムを起動するよう、前記１つまたは複数のコンポーネントプログラムに命令し、そうすることによって、前記サービスアプリケーションの実行に影響を与える、請求項７に記載のコンピューターシステム。
【請求項１３】
前記サービスアプリケーションの動作をサポートするための１組の依存サービスをさらに備え、前記サービスアプリケーションが、アプリケーションサービスプロバイダーによって管理され、前記１組の依存サービスが、前記アプリケーションサービスプロバイダーとは別個の少なくとも１つのエンティティーによって管理される、請求項７に記載のコンピューターシステム。
【請求項１４】
前記構成設定がリソース配置を含み、前記リソース配置が、前記１つまたは複数のコンポーネントプログラムに、前記第１のコンピューティングデバイスおよび前記第２のコンピューティングデバイスの外部に配置された前記１組の依存サービスと活動を協調させる、請求項１３に記載のコンピューターシステム。
【請求項１５】
活動を協調させることが、
前記１組の依存サービスと前記１つまたは複数のコンポーネントプログラムとの間でメッセージを交換すること、ならびに
前記交換されたメッセージを、前記１つまたは複数の適合コンポーネントプログラムの前記パラメーターの所に組み込まれた前記定式化値と比較することを含む、請求項１４に記載のコンピューターシステム。
【請求項１６】
前記定式化値が予測値を含み、前記交換されたメッセージが、ユーザー提供の資格情報を含み、インスタンス化が起こると、前記１つまたは複数のコンポーネントプログラムが、前記ユーザー提供の資格情報を前記予測値のうち対応する予測値と一致すると、ユーザーに前記サービスアプリケーションへのアクセスを認めるように構成される、請求項１５に記載のコンピューターシステム。
【請求項１７】
前記インスタンス化プロセスが、
前記１つまたは複数の適合コンポーネントプログラムから構造マップにアクセスする工程であって、前記構造マップが、前記１つまたは複数の適合コンポーネントプログラム内に前記パラメーターを配置する論理を含む工程と、
前記構成設定から導出された前記定式化値を、前記構造マップの前記論理に従って適切なパラメーターに向ける工程とをさらに含む、請求項７に記載のコンピューターシステム。
【請求項１８】
前記第１のコンピューティングデバイスおよび前記第２のコンピューティングデバイスが、データセンターを成し、前記データセンターが、データを格納するメモリーリソースを含み、前記メモリーリソースの所にある前記データが、前記１つまたは複数のコンポーネントプログラムによってアクセス可能である、請求項７に記載のコンピューターシステム。
【請求項１９】
前記構成設定がメモリーリソースアドレスを含み、前記メモリーリソースアドレスが、前記１つまたは複数のコンポーネントプログラムに、前記データにアクセスする適切なメモリーリソースを配置させる、請求項１８に記載のコンピューターシステム。
【請求項２０】
インスタンス化方式に従って、データセンター内で動作する、サービスアプリケーションのコンポーネントプログラムを構成するコンピューター化方法であって、
サービスモデルに問い合わせることによって構成設定を判定するステップ（３１０）と、
前記インスタンス化方式にアクセスするステップ（３１５）であって、前記インスタンス化方式が、前記サービスモデルを満足するために、どのコンポーネントプログラムを展開するか指示し、前記インスタンス化方式が変換マップを提供するステップと、
前記指示されたコンポーネントプログラムを、前記データセンター内の複数のコンピューティングデバイス上で展開するステップ（３２０）と、
前記構成設定を、前記変換マップに部分的に基づいて、定式化値にコンバートするステップ（３２５）と、
前記定式化値を、前記展開されたコンポーネントプログラムに自動的に分配するステップ（３３０）と、
前記分配された定式化値を、前記展開されたコンポーネントプログラムに関連づけて、少なくとも一時的に格納するステップ（３３５）とを含む方法。
【発明の詳細な説明】
【背景技術】
【０００１】
一般に、ソフトウェアアプリケーションは、その構成において多自由度を認めるように書かれる。この特性を活用する際、様々なユーザーが、ユーザーそれぞれに特有なやり方で実施するように、ある特定のソフトウェアアプリケーションをセットアップすることができる。したがって、単一のソフトウェアアプリケーションに組み入れられるこうした自由により、ソフトウェアアプリケーションが全く異なる結果を生じることが可能になる。
【０００２】
このタイプのソフトウェアアプリケーションは、ユーザーにインターネットを介してアプリケーションを遠隔に操作させるアプリケーションサービスプロバイダー（ＡＳＰ）によって使用される。ソフトウェアアプリケーションは自由度を含むので、ユーザーは、アプリケーションに手動でプログラムを組み込むための性能要求をＡＳＰに与えることができる。さらに、ほとんどのソフトウェアアプリケーションは、個々に識別され、手動でプログラムされなければならない別個の基底要素を含み、その結果ソフトウェアアプリケーションが性能要求を表し得る。受け取った性能要求に従って基底要素を手動プログラムするプロセスは、労力がかかり、エラーを起こしやすい。したがって、ソフトウェアアプリケーションをカスタマイズするこのアドホック方法により、ＡＳＰからのソフトウェアアプリケーションの提供にもろさが生じる。こうした手動プログラミングの短所は、多数のユーザーが、それぞれの性能要求を絶えず与え、変更していると一層大きくなる。
【発明の概要】
【０００３】
本概要は、「発明を実施するための形態」において後でさらに説明される概念を、簡略化された形で紹介するためのものである。本概要は、本特許請求対象の主要な特徴または本質的な特徴を識別することは意図しておらず、本特許請求対象の範囲を決定する一助として使われることも意図していない。
【０００４】
本発明の実施形態は、サービスモデルに従ってサービスアプリケーション内でコンポーネントプログラムを自動的に管理する構造（たとえば、インスタンス化方式）を提供することによって、手動プログラミングの短所を減らすサービスモデリング手法を提供する。最初に、サービスアプリケーション内でコンポーネントプログラムをインスタンス化するためのトリガーが検出される。実施形態において、トリガーは、サービスアプリケーション上の負荷レベルに対する変化の指示（たとえば、サービスアプリケーションをホストするウェブサイトでのトラフィックを監視することによる）、またはサービスモデル内の仕様に対する変化の指示（たとえば、アプリケーションサービスプロバイダーとクライアントとの間で確立されたサービス記述コントラクトを修正することによる）に基づく。
【０００５】
トリガーの検出に付随して、サービスモデルの仕様から構成設定が抽出され、構成設定（たとえば、コンポーネントプログラムのアドレス、アルゴリズム識別子、サービスロケーション、メモリーリソースアドレスなど）は、コンポーネントプログラム内のパラメーターを構成するのに使用される。ある例では、コンポーネントプログラムは、サービスアプリケーションを実行するデータセンター内の様々なコンピューティングデバイスの所で展開される。別の例では、様々なコンピューティングデバイス上にある予め確立されたコンポーネントプログラムが、インスタンス化に使用可能であると識別される。こうした展開され、かつ／または識別されたコンポーネントプログラムは、マップ（たとえば、変換マップ、構造マップ）にアクセスする論理ステップと、変換マップに従って構成設定から定式化値を導出する論理ステップと、コンポーネントプログラム全体に定式化値を自動的に伝搬する論理ステップと、構造マップに従って定式化値に対応するパラメーターを配置する論理ステップと、適切なパラメーターの所で定式化値を組み込む論理ステップとを含むインスタンス化プロセスに従って構成される。この堅牢なインスタンス化プロセスは、コンポーネントプログラムを自動的に構成し、したがって、手動プログラミングに固有な短所（上で論じた）を大幅に削減する。
【０００６】
本発明の実施形態が、添付の図面を参照して後で詳細に説明される。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施形態を実装する際の使用に適した例示的なコンピューティング環境を示すブロック図である。
【図２】本発明の実施形態を実装する際の使用に適した例示的なコンピューティングシステムを示すブロック図である。
【図３】本発明の実施形態による、サービスモデルに従ってサービスアプリケーション内でコンポーネントを管理する方法を示すフロー図である。
【図４】定式化値を、コンポーネントプログラムの適切なパラメーターに組み込む方法を示すフロー図である。
【図５】定式化値を、コンポーネントプログラムの適切なパラメーターに組み込む方法を示すフロー図である。
【図６】本発明の実施形態による、トリガーイベントに応答する方法を示すフロー図である。
【発明を実施するための形態】
【０００８】
法的要件を満たすために、本発明の実施形態の主題を明確に本明細書において説明する。ただし、この説明自体は、本特許の範囲を限定することを意図していない。そうではなく、本発明者は、特許請求の対象が、本文書において説明されるものと類似した、異なるステップまたはステップの組合せを含むように、現在または将来の他の技術とともに、他の方法でも実施されることを企図している。さらに、「ステップ」および／または「ブロック」という用語は、本明細書において、利用される方法の異なる要素を意味するのに用いることができるが、この用語は、個々のステップの順序が明確に記述されない限り、本明細書において開示される様々なステップの間のいかなる具体的な順序も含意すると解釈されるべきでない。
【０００９】
本発明の実施形態は、サービスモデルに従ってサービスアプリケーション内でコンポーネントプログラムを自動的に管理する方法、システム、および実行されると、本発明の実施形態による方法を実施するコンピューター実行可能命令をその上に具現化させたコンピューター記憶媒体に関する。最初に、サービスアプリケーション内でコンポーネントプログラムをインスタンス化するためのトリガーが検出される。実施形態において、トリガーは、サービスアプリケーション上での負荷レベルに対する変化の指示（たとえば、サービスアプリケーションをホストするウェブサイトでのトラフィックを監視することによる）、またはサービスモデル内の仕様に対する変化の指示（たとえば、アプリケーションサービスプロバイダーとクライアントとの間で確立されたサービス記述コントラクトを修正することによる）に基づく。
【００１０】
トリガーの検出に付随して、サービスモデルの仕様から構成設定が抽出され、構成設定（たとえば、コンポーネントプログラムのアドレス、アルゴリズム識別子、サービスロケーション、メモリーリソースアドレスなど）は、コンポーネントプログラム内のパラメーターを構成するのに使用される。ある例では、コンポーネントプログラムは、サービスアプリケーションを実行するデータセンター内の様々なコンピューティングデバイスの所で展開される。別の例では、様々なコンピューティングデバイス上にある予め確立されたコンポーネントプログラムが、インスタンス化に使用可能であると識別される。こうした展開され、かつ／または識別されたコンポーネントプログラムは、マップ（たとえば、変換マップ、構造マップ）にアクセスする論理ステップと、変換マップに従って、構成設定から定式化値を導出する論理ステップと、定式化値をコンポーネントプログラム全体に自動的に伝搬する論理ステップと、構造マップに従って、定式化値に対応するパラメーターを配置する論理ステップと、定式化値を適切なパラメーターの所で組み込む論理ステップとを含むインスタンス化プロセスに従って構成される。
【００１１】
したがって、一態様では、本発明の実施形態は、実行されると、サービスモデルに従ってサービスアプリケーション内で１つまたは複数のコンポーネントプログラムを管理する方法を実施するコンピューター実行可能命令をその上に具現化させた１つまたは複数のコンピューター記憶媒体に関する。この方法は、データセンター内の別個のコンピューティングデバイス上で実行可能なコンポーネントプログラムを含むサービスアプリケーション上での負荷レベルを判定すること、コンポーネントプログラムに対して施行することができる構成設定をサービスモデルから抽出すること、および負荷のレベルに従ってサービスアプリケーションを管理するインスタンス化プロセスを開始することを含む。インスタンス化プロセスは、データセンター内でコンポーネントプログラムを展開すること、構成設定から導出された定式化値を、展開されたコンポーネントプログラム全体に自動的に伝搬すること、および定式化値をコンポーネントプログラムに少なくとも一時的に組み込み、そうすることによって、サービスモデルに整合したサービスアプリケーションの機能性を提供することを含む。実施形態において、この方法は、組み込まれた定式化値に従ってサービスアプリケーションを実行することをさらに含む。
【００１２】
別の態様では、本発明の実施形態は、コンポーネントプログラムに構成設定を伝搬することによってサービスアプリケーションをインスタンス化し、そうすることによってサービスアプリケーションの機能性を促進する方法を実施するコンピューター実行可能命令をその上に具現化させた１つまたは複数のコンピューター記憶媒体上に具現化されるコンピューターシステムに関する。このコンピューターシステムは、第１のコンピューティングデバイスおよび第２のコンピューティングデバイスを含む。第１のコンピューティングデバイスは、サービスアプリケーションの動作をサポートするコンポーネントプログラムを実行する。第２のコンピューティングデバイスは、サービスモデルに従ってサービスアプリケーションを実装するインスタンス化プロセスを開始する。インスタンス化プロセスは、サービスモデル内の仕様から構成設定を抽出すること、第１のコンピューティングデバイス上にあるコンポーネントプログラムを、インスタンス化に使用可能であると識別すること、コンポーネントプログラムの一部が構成設定に適合するかどうか確認するために、コンポーネントプログラム内のパラメーターに問い合わせること、構成設定から導出された定式化値を、適合コンポーネントプログラム全体に自動的に伝搬すること、および定式化値に従って適合コンポーネントプログラムのパラメーターを構成することを含む。
【００１３】
さらに別の態様では、本発明の実施形態は、インスタンス化方式に従ってデータセンター内で動作する、サービスアプリケーションのコンポーネントプログラムを構成するコンピューター化方法に関する。このコンピューター化方法は、サービスモデルに問い合わせることによって構成設定を判定するステップと、インスタンス化方式にアクセスするステップであって、インスタンス化方式が、サービスモデルを満足するためにどのコンポーネントプログラムを展開するか指示し、インスタンス化方式が変換マップを提供するステップと、指示されたコンポーネントプログラムを、データセンター内の複数のコンピューティングデバイス上で展開するステップと、変換マップに部分的に基づいて、構成設定を定式化値にコンバートするステップと、定式化値を、展開されたコンポーネントプログラムに自動的に分配するステップと、分配された定式化値を、展開されたコンポーネントプログラムに関連づけて少なくとも一時的に格納するステップとを少なくとも含む。
【００１４】
本発明の実施形態の概要を手短に説明したが、本発明の実施形態の実装に適した例示的な動作環境について、以下で説明する。
【００１５】
図面全体を参照するが、最初は特に図１を参照すると、本発明の実施形態を実装する例示的な動作環境が示され、全体としてコンピューティングデバイス１００と指定される。コンピューティングデバイス１００は、適切なコンピューティング環境の一例に過ぎず、本発明の実施形態の使用または機能性の範囲に関していかなる限定を示唆することも意図していない。コンピューティング環境１００は、図示するコンポーネントのいずれかまたは組合せに関するいかなる依存または要件を有すると解釈されるべきでもない。
【００１６】
本発明の実施形態は、コンピューターまたは携帯情報端末もしくは他のハンドヘルドデバイスなどの他のマシンによって実行されるプログラムコンポーネントなど、コンピューター実行可能命令を含むコンピューターコードまたはマシン使用可能命令という一般的コンテキストにおいて説明することができる。概して、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むプログラムコンポーネントは、特定のタスクを実施し、または特定の抽象データタイプを実装するコードを指す。本発明の実施形態は、ハンドヘルドデバイス、家電製品、汎用コンピューター、特殊コンピューティングデバイスなどを含む、様々なシステム構成で実施することができる。本発明の実施形態は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実施される分散型コンピューティング環境において実施することもできる。
【００１７】
図１の参照を続けると、コンピューティングデバイス１００は、メモリー１１２、１つまたは複数のプロセッサー１１４、１つまたは複数の提示コンポーネント１１６、入出力（Ｉ／Ｏ）ポート１１８、Ｉ／Ｏコンポーネント１２０、および例示的電源１２２というデバイスを直接または間接的に結合するバス１１０を含む。バス１１０は、何が１つまたは複数のバスであり得るかを表す（アドレスバス、データバス、またはその組合せなど）。図１の様々なブロックは、分かりやすくするために線で示してあるが、実際には、様々なコンポーネントの線引きはあまり明確でなく、例えて言うならば、線はより正確にはグレーでありあいまいであろう。たとえば、ディスプレイデバイスなどの提示コンポーネントを、Ｉ／Ｏコンポーネントであるとみなすことができる。また、プロセッサーはメモリーを有する。本発明者らは、このようなことが当該分野の性質であると認識し、図１の線図は、本発明の１つまたは複数の実施形態に関連して使うことができる例示的なコンピューティングデバイスを例示するに過ぎないことを繰り返しておく。「ワークステーション」、「サーバー」、「ラップトップ」、「ハンドヘルドデバイス」のようなカテゴリはすべて、図１の範囲内であることを企図しており、「コンピューター」または「コンピューティングデバイス」を指すので、こうしたカテゴリの間は区別されない。
【００１８】
コンピューティングデバイス１００は一般に、様々なコンピューター可読媒体を含む。限定ではなく例として、コンピューター可読媒体は、ランダムアクセスメモリー（ＲＡＭ）、読出し専用メモリー（ＲＯＭ）、電子的消去可能プログラム可能読出し専用メモリー（ＥＥＰＲＯＭ）、フラッシュメモリーもしくは他のメモリー技術、ＣＤＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光もしくはホログラフメディア、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは所望の情報をエンコードするのに使うことができ、コンピューティングデバイス１００によってアクセスすることができる他のどの媒体も備え得る。
【００１９】
メモリー１１２は、揮発性および／または不揮発性メモリーの形のコンピューター記憶媒体を含む。メモリーは、取外し可能、固定式、またはその組合せでよい。例示的なハードウェアデバイスは、固体状態メモリー、ハードドライブ、光ディスクドライブなどを含む。コンピューティングデバイス１００は、メモリー１１２やＩ／Ｏコンポーネント１２０など、様々なエンティティーからデータを読み取る１つまたは複数のプロセッサーを含む。提示コンポーネント（１つまたは複数）１１６は、ユーザーまたは他のデバイスにデータ指示を提示する。例示的な提示コンポーネントは、ディスプレイデバイス、スピーカ、印刷コンポーネント、振動コンポーネントなどを含む。Ｉ／Ｏポート１１８は、コンピューティングデバイス１００を、その一部が内蔵型でよいＩ／Ｏコンポーネント１２０を含む他のデバイスに論理的に結合させる。例示的コンポーネントは、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、プリンタ、無線デバイスなどを含む。
【００２０】
ここで図２に移ると、サービスモデルに従ってサービスアプリケーション２１０内でコンポーネントプログラム２０１、２０２、２０３、２０４を管理するように構成されたコンピューティングシステム２００を示す、本発明の実施形態によるブロック図が示されている。図２に示すコンピューティングシステム２００は、適切な１つのコンピューティングシステム環境の単なる例であり、本発明の実施形態の使用または機能性の範囲に関するいかなる限定も示唆することは意図していないことが当業者には理解されよう。また、コンピューティングシステム２００は、図示してあるどの単一のコンポーネントまたはコンポーネントの組合せに関しても、いかなる依存または要件も有すると解釈されるべきではない。さらに、図２の様々なブロックは、分かりやすくするために線で示してあるが、実際には、様々なコンポーネントの線引きはあまり明確でなく、例えて言うならば、線はより正確にはグレーでありあいまいであろう。
【００２１】
コンピューティングシステム２００は、クライアントコンピューティングデバイス２１５、依存サービスプロバイダー２２０、およびデータセンター２２５を含み、これらはすべて、ネットワーク（図示せず）を介して相互に通信する。ネットワークは、限定ではなく、１つまたは複数のローカルエリアネットワーク（ＬＡＮ）および／またはワイドエリアネットワーク（ＷＡＮ）を含み得る。このようなネットワーク接続環境は、オフィス、企業規模のコンピューターネットワーク、イントラネット、およびインターネットにおいてよく見られる。したがって、ネットワークについては、本明細書においてさらに説明する。
【００２２】
図２に示すクライアントコンピューティングデバイス２１５、依存サービスプロバイダー２２０、およびデータセンター２２５はそれぞれ、たとえば、図１を参照して上述したコンピューティングデバイス１００など、どのタイプのコンピューティングデバイスでもよい。限定ではなく単に例示目的として、クライアントコンピューティングデバイス２１５、および依存サービスプロバイダー２２０はそれぞれ、パーソナルコンピューター、デスクトップコンピューター、ラップトップコンピューター、ハンドヘルドデバイス、モバイルハンドセット、家庭用電子機器などでよい。実施形態において、データセンター２２５は、サーバー、コンピューティングデバイスの集合体、またはサービスアプリケーション２１０を実行することが可能な他のマシンでよい。さらに、クライアントコンピューティングデバイス２１５は、その上にある、データセンター２２５への有線または無線ネットワークパスを介してサービスアプリケーション２１０にアクセスするためのウェブブラウザーアプリケーション２３０をさらに含み得る。ただし、本発明の実施形態は、このようなコンピューティングデバイス上での実装に限定されず、本発明の実施形態の範囲内で、異なる様々なタイプのコンピューティングデバイスのいずれの上でも実装することができることに留意されたい。
【００２３】
図２に示すように、クライアントコンピューティングデバイス２１５は、ウェブブラウザーアプリケーション２３０を実行してサービスアプリケーション２１０にアクセスするように構成される。サービスアプリケーション２１０は、概して直接的に、通信経路２３５を介して、または依存サービスプロバイダー２２０によりアクセスされ得る。実施形態において、依存サービスプロバイダー２２０によるアクセスは、ユーザー提供の資格情報２４０をプロバイダー２２０に伝えることを含む。一般に、ユーザー提供の資格情報２４０は、ログインデータ、パスワード、または依存サービスプロバイダー２２０の所で実装されるセキュリティープロトコルを満足するようにクライアントによって提供される他のどの情報でもよい。これに対して、依存サービスプロバイダー２２０は、資格情報２４０をメッセージ２４５に入れて、コンポーネント２０１、２０２、２０３、２０４の１つまたは複数との間で交換する。
【００２４】
実施形態において、依存サービスプロバイダー２２０は、データセンター２２５の外部に配置され、サービスアプリケーション２１０を維持するアプリケーションサービスプロバイダーとは別個のエンティティーによって管理される。ただし、依存サービスプロバイダー２２０は、メッセージ２４５をその間で交換することによって、活動をコンポーネントプログラム２０１、２０２、２０３、２０４と協調させることができる。依存サービスプロバイダー２２０とコンポーネントプログラム２０１、２０２、２０３、２０４との間の活動の協調は、依存サービスプロバイダー２２０をターゲットとするリソース配置によって容易にされる。こうしたリソース配置は一般に、サービスモデル内の仕様によって確立される。
【００２５】
概して、サービスモデルは、サービスアプリケーション２１０のコンポーネントプログラム２０１、２０２、２０３、２０４を管理する命令を提供するインターフェイス設計図である。したがって、サービスモデルは、インスタンス化中にどのマップを利用するか、コンポーネントプログラム２０１、２０２、２０３、２０４の伝搬中にどのコンピューティングデバイスを使用するか、コンポーネントプログラム２０１、２０２、２０３、２０４の間の通信経路２４６、２４７がどこに配置されるか、およびサービスアプリケーション２１０がデータセンター２２５によって実行される具体的なやり方を記述する他の任意の情報のような管理側面を識別する仕様を含む。ある例では、サービスモデルは、部分的には、クライアントとアプリケーションサービスプロバイダーとの間に確立されたサービス記述コントラクトに従って生成される。サービス記述コントラクトの結果として、クライアントは、サービスアプリケーション２１０、およびアプリケーションサービスプロバイダーによって維持される他のソフトウェアへのアクセスを与えられる。
【００２６】
さらに、サービスモデルは、仕様から暗黙的および明示的構成設定を抽出させるフックを仕様内に提供する。実施形態において、暗黙的構成設定は、コンポーネントプログラム２０１、２０２、２０３、２０４および／または他のコンポーネント（たとえば、依存サービスプロバイダー２２０、メモリーリソース２５０）それぞれの間の対話を容易にするための構造的情報（たとえば、コンポーネントアドレス、リソース配置、およびメモリーリソースアドレス）を与える。さらに、暗黙的構成設定は、上記コンポーネントの間でメッセージを消費し翻訳するアプリケーションプログラミングインターフェイス（ＡＰＩ）を提供し、そうすることによって、コンポーネントに、調和して通信を行わせる。実施形態において、明示的構成設定は、コンポーネントプログラムの機能性に影響する、コンポーネントプログラム２０１、２０２、２０３、２０４内のパラメーターに命令（たとえば、アルゴリズム識別子および他の構成値）を与える。単に例示目的として、クライアントをサービスアプリケーション２１０にログインさせる、指定された資格情報は、サービスモデルの中に記憶（ｍｅｍｏｒｉａｌｉｚｅ）される。サービスモデル中のフックは、こうした資格情報を明示的構成設定に与え、構成設定は、資格情報を予測値としてコンポーネント２０１に分配する。こうした予測値は、メッセージ２４５に入れて依存サービスプロバイダー２２０から伝えられる、ユーザー提供の資格情報２４０と比較される。メッセージ２４５を受信すると、コンポーネント２０１は、ユーザー提供の資格情報２４０を予測値と比較する。比較の結果、合致が生じる場合、クライアントは、サービスアプリケーション２１０へのアクセスを与えられる。
【００２７】
データセンター２２５は、他のものの中でも特に、サービスアプリケーション２１０の実行用に設けられる。サービスアプリケーション２１０は、使用（たとえば、１時間あたりのクライアントのヒット数）に合わせて、またはサービスモデルに対する修正によって拡張することができる１組のコンポーネントプログラム２０１、２０２、２０３、２０４を含む。一般に、サービスアプリケーション２１０は、異なる多くのコンポーネント（たとえば、コンポーネントプログラム２０１、２０２、２０３、２０４）からなることを特徴とし、これは従来のアプリケーションと同様である。例示的な実施形態において、サービスアプリケーション２１０は、異なるコンポーネントが複合インターネットサービスとして一緒に機能するように、こうしたコンポーネントを管理する。例として、サービスアプリケーション２１０は、様々なクライアントに、ある特定のウェブサイトでコメントを投稿させるブログサービスである。可能性としては、全員がブログサービスにアクセスする数千人のクライアントが存在し得るので、ブログサービスによって、その動作の継続をサポートするために複数のコンポーネントが展開される。こうしたコンポーネントは、単一のアプリケーションとして機能するように、互いに合わせてアクションを協調させるので、コンポーネントの展開および破棄がクライアントにとって透過である。
【００２８】
サービスアプリケーション２１０の一例が図示され説明されたが、データセンター２２５内で複数のサービスアプリケーションが実行されることができ、本発明の実施形態は、図示し説明したサービスアプリケーション２１０に限定されないことを当業者は理解されたい。複数のサービスアプリケーションを有するこうした実施形態において、サービスアプリケーション２１０および他のサービスアプリケーション（図示せず）は、それぞれ独立に、および／または互いに共同して動作し得る。一例では、データセンター２２５上で同時に稼動するサービスアプリケーションは、１組のコンポーネントプログラム２０１、２０２、２０３、２０４を共有する。単に例示目的として、１組のコンポーネントプログラム２０１、２０２、２０３、２０４は、新規サービスアプリケーションによって消費する（たとえば、使用要件に従って供給し直す）ことも、サービスアプリケーション（たとえば、プログラムコンポーネントにアクセスする複数のサービスアプリケーション）の間で共有することもできる。したがって、データセンター２２５上のリソースは、実施形態において、多くの相互依存または独立サービスアプリケーションの相互運用性を提供する。
【００２９】
実施形態において、データセンター２２５は、第１のコンピューティングデバイス２５５および第２のコンピューティングデバイス２６５などの様々なマシン、ならびにメモリーリソース２５０を含む。コンピューティングデバイス２５５、２６５は、たとえば、コンピューティングデバイス１００（図１を参照）、パーソナルコンピューター、サーバー、コンピューティングデバイスの集合体、またはサービスアプリケーション２１０を実行することが可能な他のマシンなど、どのタイプのコンピューティングデバイスでもよい。さらに、コンピューティングデバイス２５５、２６５は、コンポーネントプログラム２０１、２０２、２０３、２０４を格納し実行することが可能である。コンポーネントプログラム２０１、２０２、２０３、２０４は、サービスアプリケーション２１０によって管理される数々のコンポーネントプログラムのうちいくつかのコンポーネントを実施する。実施形態において、コンポーネントプログラム２０１、２０２、２０３、２０４は、サービスモデル内の仕様に従って開発され、または書かれる。一例では、コンポーネントプログラム２０１、２０２、２０３、２０４の１つまたは複数は、構成設定に対するアップデートが起きたと判定すると、パラメーター２７０に自動的に再構成させるサービスモデル内の一連の規則に従って開発される。４つのコンポーネントプログラムが図２に示され、本明細書において説明されたが、本発明の実施形態は、サービスアプリケーション２１０の動作をサポートするための任意の数のコンポーネントプログラムを使用することを企図している。例示的な実施形態において、コンポーネントプログラムの数は、サービスアプリケーション２１０上でのクライアントの負荷レベルに関連し、負荷のレベルが高くなるほど、より多くのコンポーネントプログラムが展開される。
【００３０】
パラメーター２７０は一般に、コンポーネントプログラム２０１、２０２、２０３、２０４上、またはそれぞれコンポーネント２０１、２０４上にある要素２６６、２７５上にある。概して、パラメーターは、コンポーネントがそれぞれ内部で行う決定を微調整し、そうすることによって、コンポーネントの協働パフォーマンスを改良する。パラメーター２７０は、数および性質において例示的である。つまり、特定のコンポーネントプログラムまたは要素上にいくつかのパラメーターが示されているが、本発明の実施形態は、コンポーネントプログラムまたは要素のいずれかの上にある、ゼロから多くのパラメーターまでを企図している。
【００３１】
メモリーリソース２５０は一般に、データセンター２２５上にあり、データを格納するように構成される。実施形態において、メモリーリソース２５０は、そのリソースと関連づけられて格納された項目の１つまたは複数を求めて検索可能である。データストアー２５０に格納されたデータは、構成可能でよく、サービスアプリケーション２１０の実行に適したどの情報も含み得ることが当業者には理解されよう。このような情報の内容およびボリュームは、本発明の実施形態の範囲をいかようにも限定することは意図していない。さらに、単一の独立コンポーネントとして図示してあるが、メモリーリソース２５０は、実際には、複数のデータストアー、たとえば、データベースクラスターでよい。さらに、メモリーリソース２５０の所に格納されたデータは、コンポーネントプログラム２０１、２０２、２０３、２０４によってアクセス可能である。一実施形態では、構成設定は、データにそこからアクセスするために、コンポーネントプログラム２０１、２０２、２０３、２０４の１つまたは複数にメモリーリソース２５０を配置させるメモリーリソースアドレス、または別の適切なメモリー割振りを与えられる。
【００３２】
動作の際、サービスアプリケーション２１０は、コンポーネントプログラム２０１、２０２、２０３、２０４を管理するように構成される。管理の一側面は、トリガーイベントを検出すると、コンポーネントプログラム２０１、２０２、２０３、２０４を確立し構成することを伴う。トリガーイベントは、トリガーイベントを検出するとサービスアプリケーション２１０内でコンポーネントプログラム２０１、２０２、２０３、２０４をインスタンス化するよう、サービスアプリケーション２１０に警告する。実施形態において、トリガーは、図６を参照して後でより詳しく論じるように、サービスアプリケーション２１０上での負荷レベルに対する変化の指示（たとえば、１つもしくは複数のクライアントコンピューティングデバイス２１５からのトラフィックを監視することによる）、またはサービスモデル内の仕様に対する変化の指示（たとえば、アプリケーションサービスプロバイダーとクライアントとの間で確立されたサービス記述コントラクトを修正することによる）に基づく。
【００３３】
トリガーの検出に付随して、構成設定２８０が、サービスモデルの仕様および／またはフックから抽出される。概して、構成設定２８０は、サービスアプリケーション２１０を正しく管理することを容易にする。実施形態において、構成設定２８０は、より詳しく上で論じたように、暗黙的または明示的構成設定でよい。特定の例において、構成設定２８０は、コンポーネントプログラムのアドレス、アルゴリズム識別子、サービスロケーション、メモリーリソースアドレス、またはコンポーネントプログラム内のパラメーターを構成するのに使用される他のどのデータストリングも含む。
【００３４】
構成設定２８０の抽出に付随して、またはそれと同時に、コンポーネントプログラム２０１、２０２、２０３、２０４が、負荷を満たし、アップデートされたサービスモデルを満足するために、またはサービスアプリケーション２１０の動作に関する他のどの理由でも確立される。一例では、コンポーネントプログラム２０１、２０２、２０３、２０４を確立することは、データセンター２２５内の様々なコンピューティングデバイス２５５、２６５の所でコンポーネントプログラム２０１、２０２、２０３、２０４を展開することを含む。別の例では、コンポーネントプログラム２０１、２０２、２０３、２０４を確立することは、様々なコンピューティングデバイス２５５、２５６上にあり、識別されている予め確立されたコンポーネントプログラムを、インスタンス化に使用可能であると識別することを含む。コンポーネントプログラム２０１、２０２、２０３、２０４の２通りの確立法が示されているが、コンポーネントプログラム２０１、２０２、２０３、２０４を確立する他の方法が使用されてよく、本発明の実施形態は、本明細書において示し説明したやり方に限定されないことを当業者は理解されたい。
【００３５】
こうした展開され、かつ／または識別されたコンポーネントプログラム２０１、２０２、２０３、２０４は、インスタンス化プロセスに従って構成され、このプロセスは、マップ（たとえば、変換マップ、構造マップ）にアクセスする論理ステップと、変換マップに従って構成設定２８０から定式化値２９０を導出する論理ステップと、定式化値２９０をコンポーネントプログラム２０１、２０２、２０３、２０４全体に自動的に伝搬する論理ステップと、構造マップに従って定式化値２９０に対応するパラメーター２７０を配置する論理ステップと、定式化値２９０を適切なパラメーター２７０の所に組み込む論理ステップとを含む。例示的な実施形態において、パラメーター２７０は、定式化値２９０の組込みに先立って、コンポーネント２０１、２０２、２０３、２０４それぞれが構成設定２８０と適合するかどうか判定するために、サービスアプリケーション２１０によって問い合わせられる。
【００３６】
ここで図３に移ると、本発明の実施形態による、サービスモデルに従ってサービスアプリケーション内でコンポーネントを管理する全体的方法３００を示すフロー図が示されている。最初に、ブロック３０５に示すように、サービスアプリケーションの所で指示（たとえば、トリガーイベント）が受信される。トリガーイベントは、図６を参照してより詳しく論じる。一般に、指示は、サービスアプリケーションの統一動作を維持するために、より多くの、またはより少ないコンポーネントプログラムが確立されるべきであるとサービスアプリケーションに警告する。例示的な実施形態において、コンポーネントプログラムの追加および削減は、サービスアプリケーションに現時点でアクセスしているクライアントに対して透過である。ブロック３１０に示すように、サービスモデル内の仕様に問い合わせると、フックから構成設定が抽出される。上でより詳しく論じたように、暗黙的および明示的構成設定など、様々なタイプの構成設定が抽出され得る。
【００３７】
ブロック３１５に示すように、トリガーイベントに従って、サービスアプリケーションを管理するインスタンス化プロセスが開始される。実施形態において、インスタンス化プロセスは、コンポーネントプログラムを確立する論理ステップと、定式化値を導出する論理ステップと、定式化値を自動的に伝搬する論理ステップと、定式化値を組み込む論理ステップとを少なくとも含む。具体的には、ブロック３２０に示すように、コンポーネントプログラムは、展開し（たとえば、新規コンポーネントプログラムを生成し）、またはデータセンター内のマシン上の既存コンポーネントプログラムを使用可能と識別することによって確立される。使用可能な既存コンポーネントプログラムを識別する例示的な実施形態では、既存のコンポーネントプログラム内のパラメーターは、構成設定に適合するかどうか判定するために問い合わせられる。したがって、こうした「適合」コンポーネントプログラムは、伝搬中に定式化値を受信する。
【００３８】
実施形態において、こうしたコンポーネントプログラムは、データセンター内の１つまたは様々なコンピューティングデバイスの所に配置される。この遠隔展開スタイルは、構成設定によってコンポーネントデバイスに与えられる命令（たとえば、コンポーネントアドレス）によって可能にされる。さらに、構成設定は、コンポーネントプログラムの一部の所でＡＰＩを構成し、そうすることによって、各コンポーネントプログラムを、コンポーネントプログラム、メモリーリソース、および遠隔依存サービスプロバイダー（たとえば、通信相手によって維持されるサービス）の他のタイプおよびインスタンスと協調させる命令を含む。
【００３９】
ブロック３２５に示すように、構成設定から定式化値が導出される。実施形態において、定式化値は、変換マップ、コンポーネントプログラムそれぞれの判定された状態、またはその組合せに従って導出される。こうした定式化値は、ブロック３３０に示すように、展開されたコンポーネントプログラム、適合コンポーネントプログラム、またはその組合せに自動的に伝搬される。こうしたステップ（たとえば、ブロック３２０、３２５、３３０）は、どの順序でも、または付随的にとることができる。ブロック３３５に示すように、定式化値は、コンポーネントプログラムのパラメーターの所で組み込まれる。他の実施形態では、定式化値は、対応するパラメーターに関連づけられて一時的に格納される。パラメーターの組込みに付随して、サービスアプリケーションは、ブロック３４０に示すように、定式化値に従って実行される。
【００４０】
ここで図４、５に移ると、本発明の実施形態による、コンポーネントプログラムの適切なパラメーターに定式化値を組み込む方法４００、５００を示すフロー図が示されている。図４を参照すると、最初に、ブロック４１０に示すように、サービスアプリケーションによってマップ構造がアクセスされる。他の実施形態では、構造マップは、構成設定によってアクセスされ、またはその中に格納される。ブロック４２０に示すように、コンポーネントプログラム内のパラメーターは、構造マップ内の論理に従って配置される。したがって、ブロック４３０に示すように、構造マップの論理は、適切なパラメーターに定式化値を向けるのを助け、そうすることによって、定式化値の正しい組込みを促進する。
【００４１】
図５を参照すると、ブロック５１０に示すように、確立されたコンポーネントプログラムそれぞれの状態が決定される。実施形態において、状態は概して、コンポーネントプログラムのインスタンスもしくはタイプ、またはコンポーネントプログラムの既存の構成に関する。ブロック５２０に示すように、変換マップがアクセスされる。例示的な実施形態において、変換マップは、コンポーネントプログラムそれぞれの判定された状態に入ると、構成設定を定式化値として表現する論理を含む。この論理に基づいて、コンポーネントプログラムの各インスタンスに対応する定式化値が導出される。
【００４２】
図６は、本発明の実施形態による、トリガーイベントに応答する方法６００を示すフロー図である。ブロック６１０に示すように、サービス記述コントラクトに対する修正の指示が受信される。ブロック６２０に示すように、サービスモデル内の仕様に修正が影響するかどうかの判定が行われる。判定が、大幅な感情が生成されないこと示す場合、ブロック６３０に示すように、コンポーネントプログラムの現在の構成が維持される。ブロック６４０に示すように、サービスアプリケーションでのトラフィックが監視される。ブロック６５０に示すように、負荷レベルに変化があるかどうかの判定が行われる。負荷のレベルに対する変化も大幅な調整も示されないことを判定が示す場合、ブロック６３０に示すように、コンポーネントプログラムの現在の構成が維持される。
【００４３】
ただし、ブロック６２０、６５０の判定が、トリガーイベントが起きた（たとえば、負荷のレベルに大幅な変化が起こり、または仕様に対する修正が大幅な効果を駆り立てた）ことを示す場合、ブロック６６０に示すように、アップデートされた構成設定が、サービスモデルに従って抽出される。アップデートされた構成設定を作成するための、サービスモデルの使用は、図２を参照して上でより詳しく論じた。ブロック６７０に示すように、定式化値は、アップデートされた構成設定から導出される。ブロック６８０に示すように、コンポーネントプログラムは、導出された定式化値を用いて再構成される。実施形態において、再構成は、図３に列挙したステップを含む。
【００４４】
本発明の実施形態が、すべての点において制限的ではなく例示的であることを意図している、特定の実施形態との関係において説明された。本発明の実施形態が、その範囲から逸脱することなく属す代替実施形態が、当業者には明らかであろう。
【００４５】
上記内容から、本発明は、明白であり本システムおよび方法に固有な他の利点とともに、上で説明した目的をすべて達成するのに十分に適応したものであることが分かるであろう。特定のいくつかの特徴およびサブコンビネーションは、有用であり、他の特徴およびサブコンビネーションに言及せずに利用され得ることが理解されよう。このことは、請求項によって企図されるとともに、その範囲内である。
【図１】
2011512579.tif 000003
【図２】
2011512579.tif 000004
【図３】
2011512579.tif 000005
【図４】
2011512579.tif 000006
【図５】
2011512579.tif 000007
【図６】
2011512579.tif 000008
【国際調査報告】
2011512579.tif 000009
2011512579.tif 000010