IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7560223スケーラブル・アプリケーションとの相互作用の制御
<>
  • 特許-スケーラブル・アプリケーションとの相互作用の制御 図1
  • 特許-スケーラブル・アプリケーションとの相互作用の制御 図2
  • 特許-スケーラブル・アプリケーションとの相互作用の制御 図3
  • 特許-スケーラブル・アプリケーションとの相互作用の制御 図4
  • 特許-スケーラブル・アプリケーションとの相互作用の制御 図5
  • 特許-スケーラブル・アプリケーションとの相互作用の制御 図6
  • 特許-スケーラブル・アプリケーションとの相互作用の制御 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-24
(45)【発行日】2024-10-02
(54)【発明の名称】スケーラブル・アプリケーションとの相互作用の制御
(51)【国際特許分類】
   H04L 67/63 20220101AFI20240925BHJP
【FI】
H04L67/63
【請求項の数】 20
(21)【出願番号】P 2022529633
(86)(22)【出願日】2020-11-23
(65)【公表番号】
(43)【公表日】2023-01-27
(86)【国際出願番号】 IB2020061039
(87)【国際公開番号】W WO2021105851
(87)【国際公開日】2021-06-03
【審査請求日】2023-04-24
(31)【優先権主張番号】16/696,300
(32)【優先日】2019-11-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ロス、マーティン
(72)【発明者】
【氏名】エバンズ、ジャック、ウィリアム、ドナト
(72)【発明者】
【氏名】ポーレット、ルーク、ジェームズ
(72)【発明者】
【氏名】スティーブンソン、ジャック、リチャード、ウィリアム
【審査官】木村 雅也
(56)【参考文献】
【文献】米国特許出願公開第2016/0316016(US,A1)
【文献】米国特許出願公開第2005/0066327(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/63
(57)【特許請求の範囲】
【請求項1】
コンピュータの情報処理により、スケーラブル・アプリケーションとの相互作用を制御する方法であって、前記方法は、
インターフェース仕様をアプリケーションに登録することであって、メタデータは前記インターフェース仕様と関連付けられる、登録することと、
前記アプリケーションについての前記インターフェース仕様と関連付けられた前記メタデータに基づいて、前記アプリケーションの複数のインスタンスに送られるべき要求を識別し、前記アプリケーションの前記複数のインスタンスのそれぞれ前記要求をルーティングすることと、
前記アプリケーションについての前記インターフェース仕様と関連付けられた前記メタデータに基づいて、前記アプリケーションの前記複数のインスタンスからの複数の応答を結合して集約応答を形成することと
を含む、方法。
【請求項2】
前記アプリケーションについての前記インターフェース仕様は、前記アプリケーションと関連付けられたアプリケーション・インターフェースとの相互作用及び合に関連する命令を含む、請求項1に記載の方法。
【請求項3】
前記メタデータは、前記要求及び記複数の応答との相互作用に関連する命令を含む、請求項1に記載の方法。
【請求項4】
前記インターフェース仕様をアプリケーションに登録することは、
前記メタデータを作成することと、
前記作成されたメタデータを前記インターフェース仕様と関連付けることと、
前記インターフェース仕様を前記アプリケーションに登録することと
を含む、請求項1に記載の方法。
【請求項5】
前記アプリケーションの前記複数のインスタンスのそれぞれに前記要求をルーティングすることは、
前記アプリケーションについての前記登録されたインターフェース仕様を分析することと、
前記分析されたインターフェース仕様と関連付けられた前記メタデータを識別することと、
前記分析されたインターフェース仕様と関連付けられた前記識別されたメタデータに基づいて、前記アプリケーションの前記複数のインスタンスのそれぞれに前記要求をルーティングすることと
を含む、請求項1に記載の方法。
【請求項6】
前記アプリケーションの前記複数のインスタンスからの複数の応答を結合して集約応答を形成することは、
前記アプリケーションの前記複数のインスタンスから前記複数の応答を受け取ることであって、前記複数の応答はルーティングされた前記要求と関連付けられる、受け取ることと、
受け取った記複の応答を格納することと、
格納された記複の応答を結合して前記集約応答を形成することと
を含む、請求項1に記載の方法。
【請求項7】
前記要求は、前記アプリケーションの前記インスタンスに対して実行されるコマンドを含む、請求項1に記載の方法。
【請求項8】
前記コマンドは、前記アプリケーションのトレースを可能にするコマンドである、請求項7に記載の方法。
【請求項9】
前記アプリケーションは、スケーラブル・クラウド環境内に配置される、請求項1に記載の方法。
【請求項10】
請求項1から請求項9までのいずれかに記載の方法をコンピュータに実行させる、コンピュータ・プログラム。
【請求項11】
請求項10に記載のコンピュータ・プログラムを格納した、コンピュータ可読ストレージ媒体。
【請求項12】
スケーラブル・アプリケーションとの相互作用を制御するためのシステムであって、前記システムは、
インターフェース仕様をアプリケーションに登録するように構成された登録ユニットであって、メタデータは前記インターフェース仕様と関連付けられる、登録ユニットと、
前記アプリケーションについての前記インターフェース仕様と関連付けられた前記メタデータに基づいて、前記アプリケーションの複数のインスタンスに送られるべき要求を識別し、前記アプリケーションの前記複数のインスタンスのそれぞれ前記要求をルーティングするように構成されたルーティング・ユニットと、
前記アプリケーションについての前記インターフェース仕様と関連付けられた前記メタデータに基づいて、前記アプリケーションの前記複数のインスタンスからの複数の応答を結合して集約応答を形成するための結合ユニットと
を含む、システム。
【請求項13】
前記アプリケーションについての前記インターフェース仕様は、前記アプリケーションと関連付けられたアプリケーション・インターフェースとの相互作用及び合に関連する命令を含む、請求項12に記載のシステム。
【請求項14】
前記メタデータは、前記要求及び記複数の応答との相互作用に関連する命令を含む、請求項12に記載のシステム。
【請求項15】
前記登録ユニットは、前記メタデータを作成し、前記作成されたメタデータを前記インターフェース仕様と関連付けるように構成された作成ユニットを含み、
前記登録ユニットは、前記インターフェース仕様を前記アプリケーションに登録するように構成される、請求項12に記載のシステム。
【請求項16】
前記ルーティング・ユニットは、
前記アプリケーションについての前記登録されたインターフェース仕様を分析するように構成された処理ユニットと、
前記分析されたインターフェース仕様と関連付けられた前記メタデータを識別するように構成された識別ユニットと
を含み、
前記ルーティング・ユニットは、前記分析されたインターフェース仕様と関連付けられた前記識別されたメタデータに基づいて、前記アプリケーションの前記複数のインスタンスのそれぞれに前記要求をルーティングするようにさらに構成される、請求項12に記載のシステム。
【請求項17】
前記結合ユニットは、前記アプリケーションの前記複数のインスタンスから前記複数の応答を受け取るように構成された受信ユニットであって、前記複数の応答はルーティングされた前記要求と関連付けられる、受信ユニットと、
受け取った記複の応答を格納するように構成された格納ユニットと
を含み、
前記結合ユニットは、格納された記複の応答を結合して前記集約応答を形成するようにさらに構成される、請求項12に記載のシステム。
【請求項18】
前記要求は、前記アプリケーションの前記インスタンスに対して実行されるコマンドを含む、請求項12に記載のシステム。
【請求項19】
前記コマンドは、前記アプリケーションのトレースを可能にするコマンドである、請求項18に記載のシステム。
【請求項20】
前記アプリケーションは、スケーラブル・クラウド環境内に配置される、請求項12に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、スケーラブル・アプリケーションとの相互作用に関し、より特定的には、スケーラブル・アプリケーションとの相互作用の制御に関する。
【0002】
本発明はまた、システムのプロセッサ、又はネットワークの複数のプロセッサが、そうした方法を実施することを可能にするコンピュータ可読プログラム・コードを含むコンピュータ・プログラム製品にも関する。
【0003】
本発明はさらに、少なくとも1つのプロセッサ及びそうしたコンピュータ・プログラム製品を含むコンピュータ・システムにも関し、少なくとも1つのプロセッサは、コンピュータ・プログラム製品のコンピュータ可読プログラム・コードを実行するように適合されている。
【0004】
本発明はまた、スケーラブル・アプリケーションとの相互作用を制御するためのシステムにも関する。
【背景技術】
【0005】
多くの従来のコンピュータ・アプリケーション・プラットフォームは、アプリケーション又はアプリケーションのコンポーネントを、システムの残りの部分から独立してデプロイし、スケーリングできるマイクロサービス・アーキテクチャを可能にする。これらのアプリケーション・プラットフォームは、クラウド・ベース(すなわち、クラウド・コンピューティング・プロバイダのサーバからインターネットを介してユーザがオンデマンドで利用可能)とすることができ、さらに、各々が特定のアプリケーション・サービスを提供する1つより多いクラウド・プラットフォーム(すなわち、マルチクラウド・アプリケーション・プラットフォーム)の使用も可能にする。このように、マイクロサービスにより、アプリケーションを疎結合サービスの集合体として構造化することが可能になる。従来のマイクロサービス・アーキテクチャでは、アプリケーションは異なるより小さいサービスに分解され、それにより、アーキテクチャのモジュール性が改善する。
【0006】
上述のようなプラットフォームのアプリケーションの場合、ワークロード・バランサは、一般的には、アプリケーションのインスタンス(すなわち、レプリカ)のフロント側に実装される。ワークロード・バランサは、インスタンス間のトラフィックをルーティングする(例えば、トラフィックは、各インスタンスがトラフィックを受け取るように、インスタンス間で連続的に分散される)。
【0007】
ワークロード・バランサを使用することは、実行時のワークロードに対して有益である。しかしながら、アプリケーションのインスタンスのうちの1つだけにコマンドがルーティングされるため、コマンド(例えば、トレースの収集)において、問題が発生する。従来のマルチクラウド・アプリケーション・プラットフォームは、ハイパーテキスト転送プロトコル(Hypertext Transfer Protocol、HTTP)要求(すなわち、1つのコンピュータが別のコンピュータに送信して通信する情報のパケット)をアプリケーションの特定のインスタンスに送信する能力、又はアプリケーションインスタンス間で要求を連続的に分散させるワークロード・バランサを実装する能力を提供する。その結果、要求を分散させ得る速度が制限され、結果としてアプリケーション・プラットフォームの効率性が損なわれてしまう。
【0008】
例えば、典型的なスケーラブル・アプリケーションのインスタンスからトレースをキャプチャするには、対応するHTTP要求を送信することによりトレースを開始するコマンドを発行することを要する。この要求は、ワークロード・バランサ(例えば、ルーティング・コンポーネント)を介して、アプリケーションの1つのインスタンスにルーティングされる。次いで、問題が識別され、トレースを停止するためのコマンドが送信される。しかしながら、トレースを停止するためのコマンドは、アプリケーションの異なるインスタンスにルーティングされることがある。このシナリオでは、トレースは、問題/イベントをキャプチャすることなく、インスタンスから取り出される。その結果、問題は識別されたが、トレースされたインスタンスとは異なるインスタンスでエラーが発生した。
【発明の概要】
【0009】
本発明は、スケーラブル・アプリケーションとの相互作用を制御するためのコンピュータ実施方法を提供しようとする。
【0010】
本発明はさらに、処理ユニットにより実行されるとき、提案される方法を実施するためのコンピュータ・プログラム・コードを含むコンピュータ・プログラム製品も提供しようとする。
【0011】
本発明はまた、このコンピュータ・プログラム・コードを実行するように適合された処理システムも提供しようとする。
【0012】
本発明はまた、スケーラブル・アプリケーションとの相互作用を制御するためのシステムも提供しようとする。
【0013】
本発明の態様によると、コンピュータ実施方法が提供される。方法は、インターフェース仕様をアプリケーションに登録することを含み、メタデータはインターフェース仕様と関連付けられる。次に、方法は、アプリケーションについてのインターフェース仕様と関連付けられたメタデータに基づいて、アプリケーションのインスタンスに要求をルーティングすることを含む。次に、方法はさらに、アプリケーションについてのインターフェース仕様と関連付けられたメタデータに基づいて、アプリケーションのインスタンスからの1つ又は複数の応答を結合して集約応答を形成することを含む。
【0014】
本発明のさらに別の態様によると、スケーラブル・アプリケーションとの相互作用を制御するためのシステムが提供される。システムは、インターフェース仕様をアプリケーションに登録するように構成された登録ユニットを含み、メタデータはインターフェース仕様と関連付けられる。システムは、アプリケーションについてのインターフェース仕様と関連付けられたメタデータに基づいて、アプリケーションのインスタンスに要求をルーティングするように構成されたルーティング・ユニットをさらに含む。システムは、アプリケーションについてのインターフェース仕様と関連付けられたメタデータに基づいて、アプリケーションのインスタンスからの1つ又は複数の応答を結合して集約応答を形成するための結合ユニットをさらに含む。
【0015】
本発明の別の態様によると、スケーラブル・アプリケーションとの相互作用を制御するためのコンピュータ・プログラム製品が抵抗される。コンピュータ・プログラム製品は、処理ユニットにより実行可能であり、処理ユニットに方法を実行させるプログラム命令がそこに具体化されたコンピュータ可読ストレージ媒体を含む。
【0016】
本発明の別の態様によると、実施形態による、少なくとも1つのプロセッサ及びコンピュータ・プログラム製品を含む処理システムが提供される。少なくとも1つのプロセッサは、コンピュータ・プログラム製品のコンピュータ・プログラム・コードを実行するように適合される。
【図面の簡単な説明】
【0017】
ここで、本発明の好ましい実施形態が、以下の図面を参照しながら、単なる例として説明されるであろう。
【0018】
図1】例示的な実施形態の態様を実装することができる例示的な分散システムの図による表現を示す。
図2】例示的な実施形態の態様を実装することができる例示的なシステムのブロック図である。
図3】スケーラブル・アプリケーションとの相互作用を制御するためのコンピュータ実施方法のフロー図である。
図4】スケーラブル・アプリケーションとの相互作用を制御するためのシステムの例示的な実施形態の簡単化されたブロック図である。
図5】スケーラブル・アプリケーションとの相互作用を制御するためのシステムの例示的な実施形態の簡単化されたブロック図である。
図6】本発明の実施形態によるクラウド・コンピューティング環境を示す。
図7】本発明の実施形態による抽象化モデル層を示す。
【発明を実施するための形態】
【0019】
図は概略的なものに過ぎず、尺度通りに描かれてはいないことを理解されたい。また、図を通して、同じ参照数字が同じ又は類似の部分を示すように使用されていることを理解されたい。
【0020】
本出願の文脈において、本発明の実施形態が方法を構成する場合、そのような方法は、コンピュータによる実行のためのプロセスとすることができる、すなわち、コンピュータ実施の方法とすることができることを理解されたい。従って、方法の種々のステップは、コンピュータ・プログラムの種々の部分、例えば、1つ又は複数のアルゴリズムの種々の部分を反映することができる。
【0021】
また、本出願の文脈において、システムは、本発明の方法の1つ又は複数の実施形態を実行するように適合された、単一のデバイス又は分散デバイスの集合体とすることができる。例えば、システムは、パーソナル・コンピュータ(PC)、サーバ、又は、本発明の方法の少なくとも1つの実施形態を協調的に実行するためにローカル・エリア・ネットワーク、インターネットなどのネットワークを介して接続されたPCの集合体もしくはサーバ、又はその両方とすることができる。
【0022】
スケーラブル・アプリケーションとの相互作用を制御するという概念が提案される。クラウド環境の文脈におけるスケーラビリティ(拡張性、scalability)は、トラフィック需要を可能な方法で満たすためのリソースの増減に対処する能力と捉えることができる。本質的には、スケーラビリティは、必要に応じて拡大又は縮小できる機能のレベルを提供することができる。
【0023】
こうした概念は、インターフェース仕様をアプリケーションに登録するという概念を要することがあり、メタデータはインターフェース仕様と関連付けられる。メタデータは、ユーザによって手動で作成される、又は機械学習アルゴリズムを用いて自動的に生成されるインターフェース仕様に対する注釈(annotations)とすることができる。開発者又はエンジニアは、メタデータ注釈を含むインターフェース仕様を作成することができる。メタデータは、予想される要求のタイプ(PUT、GET、POSTなど)に基づいて組み込むことができ、又は予想される要求が分からない場合は、基本的なメタデータのセットを含むことができる。メタデータは、要求もしくは応答、又はその両方のルーティング(すなわち、調整/管理)を異なる方法又は特定の方法で扱うべきであるという表示を提供することができる。例えば、アプリケーションのトレースを可能にするコマンド(すなわち、要求)の場合、注釈(すなわち、メタデータ)は、要求を、1つのインスタンスだけでなく、アプリケーションの全てのインスタンスに送るべきであると示す。インターフェース仕様は、デプロイ時にプラットフォーム技術(すなわち、マルチクラウド・アプリケーション・プラットフォーム)で登録することができ、プラットフォームは、アプリケーションのインスタンスのフロント側にルーティング・ユニット(すなわち、ルーティング・コンポーネント)を所有する/ホストすることができる。このようにして、要求は、ルーティング・ユニットによって、インターフェース仕様によって概説されるアプリケーションの対応するインスタンスの各々に分散することができる。
【0024】
実施形態は、インターフェース仕様と併せて実施することができる。インターフェース仕様は、インターフェース文書、API(アプリケーション・プログラミング・インターフェース)文書、UI(ユーザ・インターフェース)仕様、又はSwagger文書と呼ぶこともでき、標準化されたフレームワークに準拠するアプリケーションについての仕様又は記述を含むことができる。インターフェース仕様は、ソフトウェア・ユーザ・インターフェースの詳細を書かれた文書にキャプチャし、エンド・ユーザがアプリケーションを介して実行できる全ての可能なアクション、並びにアプリケーションにおける全ての視覚、聴覚及び他の相互作用要素を網羅することができる。従って、インターフェース仕様は、アプリケーションがどのように動作すべきかについての実装/統合情報の主なソースとなり得る。実装以外に、インターフェース仕様は、有用性、局所化、及びデモの制限を考慮することができる。一般に、要件仕様の目的は、製品(すなわち、アプリケーション)が何ができるかを記述することであり、一方、インターフェース仕様は、これらの要件が実際にどのように実装されるかを詳述することであり得る。例えば、Swagger(登録商標)文書(又は、Swagger(登録商標)仕様)は、RESTful(representational state transfer)Webサービス(すなわち、アプリケーション)を記述、生成、消費、及び視覚化し、RESTful APIを文書化するための機械可読インターフェース・ファイルのための仕様である。Swagger(登録商標)は、NutraClick,LLCの登録商標である。representational state transferは、webサービスの作成に使用される制約のセットを定義するソフトウェア・アーキテクチャ・スタイルである。RESTアーキテクチャ・スタイルに従うwebサービス(すなわち、RESTful webサービス)は、インターネット上のコンピュータ・システム間の相互運用性を提供する。RESTful APIは、HTTP要求を用いて、2つ又はそれより多いアプリケーションが互いに通信することを可能にするアプリケーション・プログラミング・インターフェースである。
【0025】
提案される実施形態は、RESTfulインターフェースを介して、アプリケーションの全てのインスタンス(又は、選択されたインスタンス)にルーティングされ完了されるコマンド(すなわち、要求)を呼び出すという概念を利用することができる。コマンドがどのように呼び出されるかは、アプリケーションについてのインターフェース仕様と関連付けられたメタデータに基づくことができる。
【0026】
従って、本発明者らは、ルーティング・ユニット(すなわち、ルーティング・コンポーネント)を設けることを提案する。そのようなルーティング・ユニットは、アプリケーションについてのインターフェース仕様と関連付けられたメタデータに基づいて、アプリケーションのインスタンスに要求をルーティングするように構成することができる。要求がなされてアプリケーションに提供されると、要求はまずルーティング・ユニットによって処理され、そこで登録されたインターフェース仕様が分析され、その後、関連付けられたメタデータに従って要求をルーティングすることができる。次に、ルーティング・ユニットによって対応する応答がキャッシュされ(すなわち、格納され)、次いで、アプリケーション・プログラミング・インターフェースによって定められた方法で呼び出し元のアプリケーションに返され得る。ルーティング・ユニットは、応答を作成し集約する際に一時的エラーが発生した場合の適切な再試行論理を伴って構成することができる。
【0027】
従って、実施形態は、スケーラブル・アプリケーションへの要求の管理又はルーティング及び調整を容易にすることができる。要求は、アプリケーションについてのインターフェース仕様(すなわち、API文書)と関連付けられたメタデータに基づいて、実行中のアプリケーションの全てのインスタンスにルーティングすることができる。幾つかの実施形態では、要求は、アプリケーションのインスタンスのうちの所定の選択にルーティングすることができる。関連付けられたメタデータに基づいて、次に、アプリケーションのインスタンスから応答を集約し、クライアントに対する単一の応答を形成することができる。
【0028】
幾つかの実施形態では、アプリケーションについてのインターフェース仕様は、アプリケーションと関連付けられたアプリケーション・インターフェースとの相互作用もしくは統合、又はその両方に関連する命令を含むことができる。このようにして、ソフトウェア・ユーザ・インターフェースの詳細(例えば、アプリケーション・プログラム・インターフェースについての実装情報)をキャプチャし、アプリケーション・インターフェースと相互作用もしくは統合する、又はその両方を行う機械/ユーザの、仕様への改善されたアクセスが可能になる。その結果、アプリケーションと相互作用する機械/ユーザは、アプリケーションを実装する際にエンド・ユーザが実行することができる全ての可能なアクション、並びに全ての視覚、聴覚、及び他の相互作用要素にアクセスすることができる。その結果、アプリケーションと相互作用する機械/ユーザとの間の通信の容易さを改善することができる。
【0029】
幾つかの実施形態では、メタデータは、要求もしくは1つ又は複数の応答、又はその両方との相互作用に関連する命令を含むことができる。このようにして、要求もしくは応答、又はその両方をどのように処理すべきかに関連する情報を、ルーティング・コンポーネント(例えば、ワークロード・バランサ)に提供することができる。このように、アプリケーションのインスタンスへの要求もしくは応答、又はその両方のルーティングの管理に関する明確な命令を提供することができ、これにより、要求/応答の調整の効率を改善することができる。さらに、これにより、特定の要求をアプリケーションの複数のインスタンスに分散させることが可能になる。これは、アプリケーションの全てのインスタンス、又はアプリケーションのインスタンスの一部/選択を含み得る。その結果、アプリケーションの特定のインスタンスを見落とす又は見逃すことによって、要求を完了しないリスクを効率的に低減させることができる。
【0030】
提案される実施形態において、インターフェース仕様をアプリケーションに登録することは、メタデータを作成することと、次に、作成されたメタデータをインターフェース仕様と関連付けることとを含むことができる。次に、ステップは、インターフェース仕様をアプリケーションに登録することを含むことができる。このように、メタデータは、ユーザにより手動で作成することができ、又は、機械学習アルゴリズムを用いて自動的に生成することもできる。その結果、アプリケーションについての相互作用もしくは統合、又はその両方に関連する情報を、所定の目的のために(例えば、ユーザによって)特別に合わせることができる。これにより、アプリケーションとの相互作用を管理する際の制御及び調整を改善することが可能になる。
【0031】
提案される実施形態において、アプリケーションのインスタンスに要求をルーティングすることは、アプリケーションについての登録されたインターフェース仕様を分析することを含むことができる。次に、ステップは、分析されたインターフェース仕様と関連付けられたメタデータを識別することを含むことができる。ステップは、分析されたインターフェース仕様と関連付けられた識別されたメタデータに基づいて、アプリケーションのインスタンスに要求をルーティングすることをさらに含むことができる。このようにして、要求のルーティングの管理を改善することができ、これにより、スケーラブル・アプリケーションとの相互作用を調整する際の制御の容易さを改善することが可能になる。その結果、各要求についてのルーティングを、アプリケーションについてのユーザが定めた要件に合わせることができ、これにより、インターフェース仕様の汎用性及び有用性を改善することができる。その結果、各インスタンスを評価することによってトラフィックをインスタンスにわたってインテリジェントに分散させる必要性を軽減することができ、これにより、要求される処理時間が低減し、効率を改善することができる。
【0032】
提案される実施形態において、アプリケーションのインスタンスからの1つ又は複数の応答を結合して集約応答を形成することは、アプリケーションのインスタンスから1つ又は複数の応答を受け取ることを含むことができ、1つ又は複数の応答はルーティングされた要求と関連付けられる。次に、ステップは、1つ又は複数の受け取った応答を格納することと、次に、1つ又は複数の格納された応答を結合して集約応答を形成することとを含むことができる。このようにして、結果として得られる集約応答は、1つ又は複数の結合された応答に関連する情報を、改善された明瞭さでユーザに提供することができる。例えば、集約応答は、ルーティングされたアプリケーションの各インスタンスについての要求の成功度に関連する情報を含むことができる。このようにして、ユーザは、アプリケーションとマルチクラウド・アプリケーション・プラットフォームとの間の相互作用もしくは統合、又はその両方に関する改善した視認性を有することができる。その結果、あらゆる起こり得るエラー又は要求の失敗を、改善された効率及び信頼性で識別し解決することができる。従って、アプリケーションとの相互作用におけるエラーを見落とすリスクが低減される。
【0033】
幾つかの実施形態において、要求は、アプリケーションのインスタンスに対して実行されるコマンドを含むことができる。コマンドの例として、これらに限定されるものではないが、アプリケーションのインスタンスにおけるエラーを識別もしくは解決する、又はその両方を行うコマンド(例えば、TRACE HTTP要求)、アプリケーションのインスタンスの状態を含む状態通知を受け取るコマンド(例えば、STATUS HTTP要求)、アプリケーションのインスタンスから情報を取り出すコマンド(例えば、GET HTTP要求)、例えば顧客情報、ファイル・アップロードなどのデータをアプリケーションに送るコマンド(例えば、POST HTTP要求)、所定の情報を除去するコマンド(例えば、DELETE HTTP要求)、アプリケーションとの通信フローを確立するコマンド(例えば、CONNECT HTTP要求)、アプリケーションについての通信オプションを記述するコマンド(例えば、OPTIONS HTTP要求)が挙げられる。このように、アプリケーション及びそのインスタンスとの相互作用の汎用性を改善することができ、これにより、アプリケーションとの相互作用の管理を改善することが可能になる。
【0034】
幾つかの実施形態において、アプリケーションは、スケーラブル・クラウド環境に配置することができる。このようにして、必要に応じて増大又は縮小するできるアプリケーションについての計画された容量レベルに基づいて、要求もしくは応答、又はその両方をどのように処理するかについてのメタデータにより提供される命令を生成することができる。その結果、トラフィックの増大に起因するアプリケーション・クラッシュ(又は、速度低下さえも)のリスクを軽減させることができる。
【0035】
図1は、例示的な実施形態の態様を実装することができる例示的な分散システムの図による表現を示す。分散システム100は、例示的な実施形態の態様を実装することができるコンピュータのネットワークを含むことができる。分散システム100は、少なくとも1つのネットワーク102を含み、そのネットワークは、分散データ処理システム100内で互いに接続された種々のデバイスとコンピュータとの間の通信リンクを提供するように使用される媒体である。ネットワーク102は、有線、無線通信リンク、又は光ファイバ・ケーブルなどの接続部を含むことができる。
【0036】
示される例において、第1のサーバ104及び第2のサーバ106が、ストレージ・ユニット108と共にネットワーク102に接続される。さらに、クライアント110、112、及び114もまたネットワーク102に接続される。クライアント110、112、及び114は、例えば、パーソナル・コンピュータ、ネットワーク・コンピュータなどとすることができる。示される例において、第1のサーバ104は、ブート・ファイル、オペレーティング・システム・イメージのようなデータ、及びアプリケーションをクライアント110、112、及び114に提供する。クライアント110、112、及び114は、示される例では、第1のサーバ104に対するクライアントである。分散処理システム100は、図示されていない付加的なサーバ、クライアント、及び他のデバイスを含むことができる。
【0037】
示される例において、分散システム100は、互いに通信するためのプロトコルの伝送制御プロトコル/インターネット・プロトコル(Transmission Control Protocol/Internet Protocol、TCP/IP)スイートを使用するネットワーク及びゲートウェイの世界的な集合体を表すネットワーク102を有するインターネットとすることができる。このインターネットの中心にあるのは、データ及びメッセージをルーティングする何千もの商用、政府用、教育用、及び他のコンピュータ・システムからなる、主要ノード又はホスト・コンピュータ間の高速データ通信ラインのバックボーンである。分散システム100はまた、例えば、イントラネット、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)などの多数の異なるタイプのネットワークを含むように実装することもできる。上述のように、図1は、本発明の異なる実施形態に対するアーキテクチャ上の制限としてではなく、例として意図され、図1に示される特定の要素は、本発明の例示的な実施形態を実施することができる環境に関する限定と考えるべきではない。
【0038】
図2は、例示的な実施形態の態様を実施することができる例示的なシステム200のブロック図である。システム200は、本発明の例示的な実施形態のためのプロセスを実施するコンピュータ使用可能コード又は命令を配置することができる、図1のクライアント110などのコンピュータの一例である。例えば、システム200は、実施形態による、登録ユニット、ルーティング・ユニット、及び結合ユニットを実装するように構成することができる。
【0039】
示される例では、システム200は、ノース・ブリッジ及びメモリ・コントローラ・ハブ(NB/MCH)202と、サウス・ブリッジ及び入力/出力(I/O)コントローラ・ハブ(SB/ICH)204とを含むハブ・アーキテクチャを利用する。処理ユニット206、メイン・メモリ208、及びグラフィックス・プロセッサ210は、NB/MCH202に接続される。グラフィックス・プロセッサ210は、アクセラレーテッド・グラフィックス・ポート(AGP)を通してNB/MCH202に接続することができる。
【0040】
示される例では、ローカル・エリア・ネットワーク(LAN)・アダプタ212は、SB/ICH204に接続される。音声アダプタ216、キーボード及びマウス・アダプタ220、モデム222、読み出し専用メモリ(ROM)224、ハード・ディスク・ドライブ(HDD)226、CD-ROMドライブ230、ユニバーサル・シリアル・バス(USB)ポート及び他の通信ポート232、並びにPCI/PCIeデバイス234は、第1のバス238及び第2のバス240を通してSB/ICH204に接続される。PCI/PCIeデバイスは、例えば、イーサネット・アダプタ、アドイン・カード、及びノートブック・コンピュータ用のPCカードを含むことができる。PCIは、カード・バス・コントローラを使用するが、PCIeは使用しない。ROM224は、例えば、フラッシュ基本入力/出力システム(BIOS)とすることができる。
【0041】
HDD226及びCD-ROMドライブ230は、第2のバス240を通してSB/ICH204に接続される。HDD226及びCD-ROMドライブ230は、例えば、インテグレーティド・ドライブ・エレクトロニクス(integrated drive electronics、IDE)、シリアル・アドバンスド・テクノロジ・アタッチメント(serial advanced technology attachment、SATA)インターフェースを使用することができる。スーパーI/O(SIO)デバイス236は、SB/ICH204に接続することができる。
【0042】
オペレーティング・システムは、処理ユニット206上で動作する。オペレーティング・システムは、図2のシステム200内の種々のコンポーネントの制御を調整及び提供する。クライアントとして、オペレーティング・システムは、市販のオペレーティング・システムとすることができる。Java(登録商標)プログラミング・システムなどのオブジェクト指向プログラミング・システムは、オペレーティング・システムと共に動作することができ、システム200上で実行するJava(登録商標)プログラム又はアプリケーションからオペレーティング・システムに呼び出しを提供する。Java(登録商標)は、Oracle又はその関係会社の登録商標である。
【0043】
サーバとして、システム200は、例えば、Advanced Interactive Executive(AIX(登録商標))オペレーティング・システム又はLINUX(登録商標)オペレーティング・システムを実行する、IBM(商標)eServer(商標)System p(商標)コンピュータ・システムとすることができる。システム200は、処理ユニット206内の複数のプロセッサを含む対称型マルチプロセッサ(SMP)システムとすることができる。代替的に、シングル・プロセッサ・システムを利用することもできる。IBM(商標)、eServer(商標)及びSystem p(商標)は、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。AIX(登録商標)は、インターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標であり。LINUX(登録商標)は、Linus Torvaldsの登録商標である。
【0044】
オペレーティング・システム、プログラミング・システム、及びアプリケーション又はプログラムのための命令は、HDD226などのストレージ・デバイス上に配置され、処理ユニット206による実行のために、メイン・メモリ208にロードすることができる。同様に、実施形態による1つ又は複数のメッセージ処理プログラムは、ストレージ・デバイスもしくはメイン・メモリ208、又はその両方により格納されるように適合することができる。
【0045】
本発明の例示的な実施形態のためのプロセスは、例えば、メイン・メモリ208、ROM224などのメモリ内、又は1つ又は複数の周辺デバイス226及び230内に配置することができるコンピュータ使用可能プログラム・コードを用いて、処理ユニット206により実行することができる。
【0046】
図2に示される第1のバス238又は第2のバス240などのバス・システムは、1つ又は複数のバスを含むことができる。もちろん、バス・システムは、ファブリック又はアーキテクチャに取り付けられた異なるコンポーネントもしくはデバイス間のデータの転送を提供する任意のタイプの通信ファブリック又はアーキテクチャを用いて実装することができる。図2のモデム222又はネットワーク・アダプタ212などの通信ユニットは、データを送受信するために使用される1つ又は複数のデバイスを含むことができる。メモリは、例えば、メイン・メモリ208、ROM224、又は図2のNB/MCH202に見出されるようなキャッシュとすることができる。
【0047】
当業者であれば、図1及び図2のハードウェアは、実装に応じて変化し得ることを理解するであろう。フラッシュ・メモリ、同等の不揮発性メモリ、又は光学ディスク・ドライブなどといった、他の内部ハードウェア又は周辺デバイスは、図1及び図2に示されるハードウェアに加えて、又はその代わりに使用することができる。さらに、例示的な実施形態のプロセスは、本発明の趣旨及び範囲から逸脱することなく、前述のシステム以外のマルチプロセッサ・データ処理システムに適用することもできる。
【0048】
さらに、システム200は、クライアント・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話又は他の通信デバイス、携帯情報端末(PDA)などを含む多数の異なるデータ処理システムのいずれかの形をとることもできる。幾つかの例示的な例では、システム200は、例えば、オペレーティング・システム・ファイルもしくはユーザ生成データ、又はその両方を格納するための不揮発性メモリを提供するためにフラッシュ・メモリを有すうように構成された携帯型コンピューティング・デバイスとすることができる。従って、システム200は、本質的には、アーキテクチャ上の制限なしに、あらゆる既知の又は後で開発されるデータ処理システムとすることができる。
【0049】
ここで図3を参照すると、スケーラブル・アプリケーションとの相互作用を制御するためのコンピュータ実施方法のフロー図が示される。
【0050】
ステップ310は、インターフェース仕様をアプリケーションに登録することを含み、メタデータは、インターフェース仕様と関連付けられる。例えば、アプリケーションは、所定の場所に関連付けられたSwagger(登録商標)文書(すなわち、インターフェース仕様)を有する。例において、アプリケーションは、ルーティング及びスケーリング機能(既に広く知られており利用可能である)を提供するオープン・ソースのマルチクラウド・アプリケーション・プラットフォームにデプロイされる。
【0051】
実施形態において、アプリケーションについてのインターフェース仕様は、アプリケーションと関連付けられたアプリケーション・インターフェースとの相互作用もしくは統合、又はその両方に関連する命令を含む。例えば、インターフェース仕様は、Swagger(登録商標)文書もしくはAPI文書、又はその両方を含む。
【0052】
実施形態において、メタデータは、要求もしくは1つ又は複数の応答、又はその両方との相互作用に関連する命令を含む。例において、インターフェース仕様(すなわち、Swagger(登録商標)文書)は、要求が全てのインスタンスにファン・アウトされる(すなわち、全てのインスタンスに同時に分散される)べきであり、応答が後に集約されるべきであることを示すための、/v1/startTrace API上のメタデータを含む。インターフェース仕様と関連付けられたメタデータの例は以下の通りである。
【表1】
【0053】
例において、API文書(すなわち、インターフェース仕様)は、アプリケーション・プラットフォーム、具体的には、アプリケーション・プラットフォームのルーティング・コンポーネントに登録(すなわち、関連付け又はリンク)される。
【0054】
例として、インターフェース仕様をアプリケーションに登録することは、ステップ312、314、及び316を含む。ステップ312は、メタデータを作成することを含む。ステップ314は、作成されたメタデータをインターフェース仕様と関連付けることを含む。ステップ316は、インターフェース仕様をアプリケーションに登録することを含む。
【0055】
ステップ320は、アプリケーションについてのインターフェース仕様と関連付けられたメタデータに基づいて、アプリケーションのインスタンスに要求をルーティングすることを含む。
【0056】
実施形態において、アプリケーションのインスタンスに要求をルーティングすることは、ステップ322、324、及び326を含む。ステップ322は、アプリケーションについての登録されたインターフェース仕様を分析することを含む。ステップ324は、分析されたインターフェース仕様と関連付けられたメタデータを識別することを含む。ステップ326は、分析されたインターフェース仕様と関連付けられた識別されたメタデータに基づいて、アプリケーションのインスタンスに要求をルーティングすることを含む。
【0057】
例において、アプリケーションにおいて問題が識別され、トレースが必要とされる。これに応答して、ユーザはRESTful API(Representational State Transfer Application Program Interface)を介して、トレースを開始するコマンド(すなち、要求)を発行する。RESTful APIは、HTTP要求を用いてデータをGET、PUT、POST、及びDELETEするアプリケーション・プログラム・インターフェースである。要求(すなわち、コマンド)は、アプリケーション・プラットフォームのルーティング・コンポーネントに送られ、そこでSwagger(登録商標)文書(すなわち、インターフェース仕様)が検査される。その結果、要求は、1つのインスタンスにルーティングするだけではなく、メタデータが記述するように、アプリケーションの全てのインスタンスにルーティングされる。
【0058】
実施形態において、要求は、アプリケーションのインスタンスに対して実行されるコマンドを含む。例においては、トレース開始要求(すなわち、コマンド)が使用される(/v1/startTrace)が、他の要求を実施することもできる。そのような要求の例として、これらに限定されるものではないが、トレース停止要求(/v1/stopTrace)、各インスタンスから状態オブジェクトの結合を返す要求(GET /v1/status)、及び各インスタンスの準備ができたかどうかに関連する確認を返す要求(GET /v1/already、ここで、全てのインスタンスの準備ができた場合には、204 HTTP状態コードが返され、1つのインスタンスの準備がまだできていない場合には、503 HTTP状態コードが返される)が挙げられる。
【0059】
ステップ330は、アプリケーションについてのインターフェース仕様と関連付けられたメタデータに基づいて、アプリケーションのインスタンスからの1つ又は複数の応答を結合して集約応答を形成することを含む。
【0060】
実施形態において、アプリケーションのインスタンスからの1つ又は複数の応答を結合して集約応答を形成することは、ステップ332、334、及び336を含む。ステップ332は、アプリケーションのインスタンスから1つ又は複数の応答を受け取ることを含み、1つ又は複数の応答は、ルーティングされた要求と関連付けられる。ステップ334は、1つ又は複数の受け取った応答を格納することを含む。ステップ336は、1つ又は複数の格納された応答を結合して集約応答を形成することを含む。
【0061】
例において、アプリケーションの各インスタンスが、要求(すなわち、トレース開始コマンド)を受け取る。各インスタンスは、要求を成功裏に処理し、HTTP 200 OK成功状態応答コード(すなわち、応答)を送り、要求が成功したこと、及びトレースが開始したことを確認応答する。アプリケーション・プラットフォームのルーティング・コンポーネント(すなわち、ルーティング・ユニット)は、要求がルーティングされた全てのインスタンスからの応答を待ち、次に、受け取った応答の各々を集約して(すなわち、結合して)クライアント・アプリケーションについての単一の応答(すなわち、集約応答)にする。例えば、全ての応答が集約されて配列になる。全ての応答が同一である(例えば、各応答がHTTP状態コード204を含む、すなわち、アプリケーション/サーバが要求を成功裏に履行し、応答ペイロード・ボディ内に送るべき追加のコンテンツがない)場合、単一の集約応答は、単一のHTTP状態コード204を含む。別の例では、1つの応答がHTTP状態コード500(すなわち、アプリケーション/サーバが、要求の履行を妨げる予期しない条件に遭遇した)を含み、残りの応答がHTTP状態コード204を含む場合、単一の集約応答は、HTTP状態コード500と、アプリケーションのインスタンスを示すための識別子とを含む。例において、ルーティング・コンポーネント(すなわち、ルーティング・ユニット)は、応答を作成し集約する際に一時的エラーが発生した場合の適切な再試行論理を有するよう構成される。集約応答の例は、以下の通りである。
【表2】
【0062】
こうした例において、トレースは、アプリケーションの全てのインスタンスに対して開始している。ひとたびトレースが完了すると、トレース・ログを取り出し、イベントをキャプチャすることができる。
【0063】
実施形態において、アプリケーションは、スケーラブル・クラウド環境内に配置される。
【0064】
ここで図4を参照すると、スケーラブル・アプリケーションとの相互作用を制御するためのシステムの例示的な実施形態の簡略化されたブロック図が示される。
【0065】
システムは、インターフェース仕様をアプリケーションに登録するように構成された登録ユニット410を含み、メタデータはインターフェース仕様と関連付けられる。システムは、アプリケーションについてのインターフェース仕様と関連付けられたメタデータに基づいて、アプリケーションのインスタンスに要求をルーティングするように構成されたルーティング・ユニット420をさらに含む。システムは、アプリケーションについてのインターフェース仕様と関連付けられたメタデータに基づいて、アプリケーションのインスタンスからの1つ又は複数の応答を結合して集約応答を形成するように構成された結合ユニット430をさらに含む。
【0066】
実施形態において、アプリケーションについてのインターフェース仕様は、アプリケーションと関連付けられたアプリケーション・インターフェースとの相互作用もしくは統合、又はその両方に関連する命令を含む。
【0067】
実施形態において、メタデータは、要求もしくは1つ又は複数の応答、又はその両方との相互作用に関連する命令を含む。
【0068】
実施形態において、登録ユニット410は、メタデータを作成し、作成されたメタデータをインターフェース仕様と関連付けるように構成された作成ユニット412を含む。登録ユニット410は、インターフェース仕様をアプリケーションに登録するように構成される。
【0069】
実施形態において、ルーティング・ユニット420は、アプリケーションについての登録されたインターフェース仕様を分析するように構成された処理ユニット422を含む。ルーティング・ユニット420は、分析されたインターフェース仕様と関連付けられたメタデータを識別するように構成された識別ユニット424をさらに含む。ルーティング・ユニット420は、分析されたインターフェース仕様と関連付けられた識別されたメタデータに基づいて、アプリケーションのインスタンスに要求をルーティングするようにさらに構成される。
【0070】
実施形態において、結合ユニット430は、アプリケーションのインスタンスから1つ又は複数の応答を受け取るように構成された受信ユニット432を含み、1つ又は複数の応答はルーティングされた要求と関連付けられる。結合ユニット430は、1つ又は複数の受け取った応答を格納するように構成された格納ユニット434をさらに含む。結合ユニット430は、1つ又は複数の格納された応答を結合して集約応答を形成するようにさらに構成される。
【0071】
実施形態において、要求は、アプリケーションのインスタンスに対して実行されるコマンドを含む。
【0072】
実施形態において、アプリケーションは、スケーラブル・クラウド環境内に配置される。
【0073】
さらに別の例として、図5に示されるように、実施形態は、ネットワーク化されたシステム7の一部を形成することができるコンピュータ・システム70を含むことができる。例えば、ルーティング・ユニットは、コンピュータ・システム70によって実装することができる。コンピュータ・システム/サーバ70のコンポーネントは、これらに限定されるものではないが、例えば、プロセッサ又は処理ユニット71、システム・メモリ74、及びシステム・メモリ74を含む種々のシステム・コンポーネントを処理ユニット71に結合するバス90を含む、1つ又は複数の処理構成を含むことができる。
【0074】
システム・メモリ74は、ランダム・アクセス・メモリ(RAM)75もしくはキャッシュ・メモリ76、又はその両方といった揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ70は、他の取り外し可能/取り外し不能、揮発性/不揮発性コンピュータ・システム・ストレージ媒体をさらに含むことができる。そのような場合には、1つ又は複数のデータ媒体インターフェースによって、各々をバス90に接続することができる。メモリ74は、提案される実施形態の機能を実行するように構成されたプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。例えば、メモリ74は、処理ユニット71により実行可能であり、システムに、提案される実施形態による、スケーラブル・アプリケーションとの相互作用を制御するための方法を実行させるプログラムを有するコンピュータ・プログラム製品を含むことができる。
【0075】
プログラム/ユーティリティ78は、プログラム・モジュール79のセット(少なくとも1つ)を有しており、メモリ74内に格納することができる。プログラム・モジュール79は、一般に、スケーラブル・アプリケーションとの相互作用を制御するための提案される実施形態の機能もしくは方法、又はその両方を実行する。
【0076】
コンピュータ・システム/サーバ70はまた、キーボード、ポインティング・デバイス、ディスプレイ85などの1つ又は複数の外部デバイス80、ユーザがコンピュータ・システム/サーバ70と相互作用することを可能とする1つ又は複数のデバイス、もしくはコンピュータ・システム/サーバ70が、1つ又は複数の他のコンピューティング・デバイスと通信するのを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、又はそれらの組み合わせと通信することもできる。そのような通信は、入力/出力(I/O)インターフェース72を介して行うことができる。またさらに、コンピュータ・システム/サーバ70は、(例えば、再作成されたコンテンツをシステム又はユーザに通信するために)ネットワーク・アダプタ73を介して、ローカル・エリア・ネットワーク(LAN)、一般的な広域ネットワーク(WAN)もしくはパブリック・ネットワーク(例えば、インターネット)又はそれらの組み合わせといった1つ又は複数のネットワークと通信することができる。
【0077】
本出願の文脈において、本発明の実施形態が方法を構成する場合、そのような方法は、コンピュータによる実行のためのプロセスである、すなわち、コンピュータ実施可能な方法であることを理解されたい。従って、方法の種々のステップは、コンピュータ・プログラムの種々の部分、例えば、1つ又は複数のアルゴリズムの種々の部分を反映する。
【0078】
ここで図6を参照すると、例示的なクラウド・コンピューティング環境600が示される。図示のように、クラウド・コンピューティング環境600は、例えば、携帯情報端末(PDA)又は携帯電話640A、デスクトップ・コンピュータ640B、ラップトップ・コンピュータ640C、もしくは自動車コンピュータ・システム640N、又はそれらの組み合わせなどのような、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスと通信することができる1つ又は複数のクラウド・コンピューティング・ノード610を含む。クラウド・コンピューティング・ノード610は、互いに通信することができる。これらのノードは、プライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、又はハイブリッド・クラウドのような1つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる(図示せず)。これにより、クラウド・コンピューティング環境600が、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のない、infrastructure as a service、platform as a service、もしくはsoftware as a service又はそれらの組み合わせを提供することが可能になる。図6に示されるコンピューティング・デバイス640A~Nのタイプは単に例示であることを意図し、クラウド・コンピューティング・ノード610及びクラウド・コンピューティング環境600は、任意のタイプのネットワーク上もしくはネットワーク・アドレス指定可能な接続上で(例えば、ウェブ・ブラウザを用いて)又はその両方で、任意のタイプのコンピュータ化デバイスと通信できることを理解されたい。
【0079】
ここで図7を参照すると、クラウド・コンピューティング環境600(図6に示されるような)によって提供される機能抽象化層のセットが示される。図7に示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
【0080】
ハードウェア及びソフトウェア層760は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、メインフレーム761と、RISC(Reduced Instruction Set Computer(縮小命令セットコンピュータ))アーキテクチャ・ベースのサーバ762と、サーバ763と、ブレード・サーバ764と、ストレージ・デバイス765と、ネットワーク及びネットワーキング・コンポーネント766と、が含まれる。幾つかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア767と、データベース・ソフトウェア768とを含む。
【0081】
仮想化層770は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ771と、例えば図5に示されるようなシステム・メモリ74などの仮想ストレージ772と、仮想プライベート・ネットワークを含む仮想ネットワーク773と、仮想アプリケーション及びオペレーティング・システム774と、仮想クライアント775とを提供することができる。
【0082】
一例において、管理層780は、以下で説明される機能を提供することができる。リソース・プロビジョニング781は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定782は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、これらのリソースの消費に対する課金又は請求とを提供する。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータル783は、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理784は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(Service Level Agreement、SLA)の計画及び履行785は、SLAに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
【0083】
ワークロード層790は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例として、マッピング及びナビゲーション791と、ソフトウェア開発及びライフサイクル管理792と、仮想教室教育配信793と、データ分析処理794と、トランザクション処理795と、ログ・ファイル管理プログラム796とが挙げられる。ログ・プログラム796は、スケーラブル・アプリケーションとの相互作用を制御することができる。
【0084】
本発明は、システム、方法もしくはコンピュータ・プログラム製品又はそれらの組み合わせとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
【0085】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、ストレージ・クラス・メモリ(SCM)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカードもしくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【0086】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク又はその組み合わせなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジサーバ又はその組み合わせを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に格納するためにコンピュータ可読プログラム命令を転送する。
【0087】
本発明のオペレーションを実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語、又は類似のプログラミング言語などの通常の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コード又はオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部がリモート・コンピュータ上で実行される場合もあり、又は完全にリモート・コンピュータもしくはサーバ上で実行される場合もある。最後のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて、電子回路を個別化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
【0088】
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図もしくはブロック図又はその両方を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実施できることが理解されるであろう。
【0089】
これらのコンピュータ可読プログラム命令を、コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令はまた、コンピュータ、プログラム可能データ処理装置、もしくは他のデバイス又はそれらの組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、その中に格納された命令を有するコンピュー可読媒体が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
【0090】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連のオペレーション・ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作を実施するようにすることもできる。
【0091】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及びオペレーションを示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実施するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には、実質的に同時に実行されることもあり、又はブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又はその両方の各ブロック、及びブロック図もしくはフローチャート図又はその両方内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実施できることにも留意されたい。
【0092】
本開示の種々の実施形態の説明は、例証の目的のために提示されたが、これらは、網羅的であること、又は開示した実施形態に限定することを意図するものではない。当業者には、説明される実施形態の範囲から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際の適用、又は市場に見られる技術に優る技術的改善を最もよく説明するため、又は、当業者が、本明細書に開示される実施形態を理解するのを可能にするために選択された。
図1
図2
図3
図4
図5
図6
図7