JP2023517565A - 状態更新を制御するための方法、システム、プログラム - Google Patents
状態更新を制御するための方法、システム、プログラム Download PDFInfo
- Publication number
- JP2023517565A JP2023517565A JP2022554268A JP2022554268A JP2023517565A JP 2023517565 A JP2023517565 A JP 2023517565A JP 2022554268 A JP2022554268 A JP 2022554268A JP 2022554268 A JP2022554268 A JP 2022554268A JP 2023517565 A JP2023517565 A JP 2023517565A
- Authority
- JP
- Japan
- Prior art keywords
- state
- service
- provider
- state provider
- services
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
- Micro-Organisms Or Cultivation Processes Thereof (AREA)
Abstract
クラウド・サービス環境において状態更新を制御するための方法が提供される。この方法は、状態プロバイダ定義の組を維持することを含み、各状態プロバイダ定義は、要求される入力変数定義の組と、出力変数定義の組と、関係するメタデータとを含む。また呼び出されるサービスによって要求される入力変数定義の組を決定することと、入力変数定義の決定された組を状態プロバイダ管理サービスによって受け取ることと、状態プロバイダ定義を選択することであって、選択された状態プロバイダ定義が入力変数定義の受け取られた組と互換性がある、選択すること、選択された状態プロバイダ定義と一致する状態プロバイダ・サービスの組を決定すること、状態プロバイダ・サービスの決定された組を点数化すること、最高点数の状態プロバイダ・サービスを呼び出すこと、状態データを呼び出されたサービスに送ること、を含む。
Description
本開示は、一般に、状態管理に関し、より詳細には、クラウド・サービスまたはコンピューティングあるいはその両方の環境において状態更新を制御するためのコンピュータ実装方法に関する。本開示はさらに、クラウド・サービス環境における状態更新を制御するためのストレージ制御システムと、コンピュータ・プログラム製品とに関する。
現代のコンピューティング環境は、多くの場合、クラウド・コンピューティング・プラットフォーム上でおよびクラウド・フレームワークにおいて展開されており、対話を行う複数のサービスまたはマイクロサービスあるいはその両方で構成されている。そのようなマイクロサービスの特性の1つは、それらが、多くの場合にステートレスであるということ、すなわち、ある呼び出しから次の呼び出しまで状態が持続しないということである。特に、マイクロサービスのあるセッションのデータを含む状態は、そのマイクロサービスに対して、次のセッションまたはコールのために保存されない。しかし、いくつかの場合には、関連するマイクロサービスの次のコールのために、マイクロサービスの状態を利用可能にすることは、有用であり得る。これは、例えば技術的なeコマースのインフラストラクチャなど、トランザクショナルなアプリケーションのための基礎となる技術として興味深いだけでなく、クラウド・コンピューティング・フレームワークまたはクラウド・コンピューティング環境におけるマルチプロセッサ・システムあるいはその両方の管理にとっても、興味深い。そのようなリソースは、異なる条件、パフォーマンス・レベル、およびサービス・レベル合意の下で、異なるプロバイダ組織から入手可能であり得る。しかし、そのようなリソースのためのリソース管理が、ステートレスなサービスまたはマイクロサービスあるいはその両方の相互作用にも基づき得る場合には、そのような状況では、それぞれのサービス/マイクロサービスの「古い」状態にアクセスすることが、有用であり得る。
クラウド・プロバイダは、典型的には、クライアントがサービス・コンピューティング環境の会員になりそのリソースを用いることができる物理的または仮想的なコンピューティング・リソースを提供し、他方で、クラウド・プロバイダは、配分と基礎となるコンピューティングおよびネットワーク・インフラストラクチャとを管理する。この動作モデルは、クライアントにとって有利であるが、その理由は、クライアントが動作コストを最適化できるからである。他方で、クラウド・プロバイダの真の利益は、ビジネス・モデルが実行可能となるように、動作および投資コストを最小化することである。したがって、クラウド・プロバイダは、典型的には、コンピュータ・リソースの配分を制限するのであって、その場合、この制限は、特定のプログラミング方法論によってサポートされるのが通例である。基礎となるプログラミング・モデルは、したがって、ステートレスで、イベント駆動型の、処理時間が限られたサーバレスなモデルである。
特定の実行要件にとっては有利であっても、このモデルは、いくつかの短所も有する。明らかに、1つの短所として、それがステートレスであるということ、すなわち、ある機能のある実行サイクルから次の実行サイクルまで、または、異なる機能またはサービスの間で、データまたは状態情報が容易に共有されない、ということがある。
クラウド・サービス環境における状態更新を制御するためのコンピュータ実装方法に関連する、いくつかの開示が存在する。
米国特許第9,749,387B2号は、アプリケーションによって実行される少なくとも1つの動作を含むアプリケーションと関連する受け取られた要求と第1の状態情報とに基づいて、ステートレスなアプリケーションのためのステートフルな実行を透過的に提供するための実施形態を開示している。
カナダ特許第2981271A1号は、カスタマの対話と関連する対話フロー状態のステートレスな表現を容易にするための方法および装置を開示しており、これは、オンライン・トランザクションの間にカスタマから受け取られたテキスト入力を示す第1のユニフォーム・リソース・ロケータ(URL)の生成を実現させることを含む。
知られているソリューションの短所は、それらが商業的なトランザクショナルなシステムに焦点を置くことが多く、競合するステートレスなサービスが用いられなければならないがその状態を維持することが依然として必要なマルチプロセッサ・ベースのクラウド・コンピューティング環境を制御して最適化するための深い技術的機能に対しては、あまり焦点を置いていないという点である。この問題へのソリューションを、提案されている概念の基礎となる目標として、見ることが可能である。
本開示のある態様によると、クラウド・サービス環境において状態更新を制御するためのコンピュータ実装方法が提供される。この方法は、状態プロバイダ・レジストリにおいて、状態プロバイダ管理サービスによって、状態プロバイダ定義の組を維持することを含む。各状態プロバイダ定義は、要求される入力変数定義の組と、出力変数定義の組と、関係するメタデータとを含む。
この方法はまた、サービスを呼び出すときに、呼び出されるサービスによって要求される入力変数定義の組を決定することを含む。この方法はさらに、入力変数定義の決定された組を、状態プロバイダ管理サービスによって受け取ることを含む。この方法はまた、状態プロバイダ管理サービスによって、状態プロバイダ・レジストリを参照することにより状態プロバイダ定義を選択することであって、選択された状態プロバイダ定義が入力変数定義の受け取られた組と互換性がある、選択することを含む。
さらに、この方法は、選択された状態プロバイダ定義と一致する状態プロバイダ・サービスの組を決定することを含む。この方法はまた、状態プロバイダ・サービスの決定された組の状態プロバイダ定義と関係するメタデータを用いて、状態プロバイダ・サービスの決定された組を点数化することを含む。この方法はさらに、最高点数の状態プロバイダ・サービスを呼び出すことにより、状態データを生成することと、状態データを呼び出されたサービスに送ることと、を含む。
本開示の別の態様によると、クラウド・サービス環境において状態更新を制御するための状態制御システムが提供される。この状態制御システムは、状態プロバイダ管理サービス・ユニットによって、状態プロバイダ定義の組を維持するように構成された状態プロバイダ・レジストリ・モジュールを備えており、各状態プロバイダ定義は、要求される入力変数定義の組と、出力変数定義の組と、関係するメタデータとを含む。このシステムはまた、サービスを呼び出すときに、呼び出されるサービスによって要求される入力変数定義の組を決定するように構成された第1の決定手段を備えており、状態プロバイダ管理サービス・ユニットはまた、入力変数定義の決定された組を受け取るようにも構成されている。
また、状態プロバイダ管理サービス・ユニットは、状態プロバイダ・レジストリを参照することにより状態プロバイダ定義を選択するように構成されており、選択された状態プロバイダ定義が入力変数定義の受け取られた組と互換性がある。
さらに、この状態制御システムは、選択された状態プロバイダ定義と一致する状態プロバイダ・サービスの組を決定するように構成された第2の決定手段を備えている。このシステムはまた、状態プロバイダ・サービスの決定された組の状態プロバイダ定義と関係するメタデータを用いて、状態プロバイダ・サービスの決定された組を点数化するように構成された点数化手段を備えている。このシステムはまた、最高点数の状態プロバイダ・サービスを呼び出すことにより状態データを生成するように構成された呼び出し手段を備えている。このシステムはさらに、状態データを呼び出されたサービスに送るように構成された送出手段を備える。
さらに、実施形態は、関係するコンピュータ・プログラム製品の形式を取り得るのであって、このコンピュータ・プログラム製品は、コンピュータもしくは任意の命令実行システムによって、または、コンピュータもしくは任意の命令実行システムと接続して用いられる、プログラム・コードを提供するコンピュータ可用またはコンピュータ可読媒体からアクセス可能である。この説明のため、コンピュータ可用またはコンピュータ可読媒体は、命令実行システム、装置、もしくはデバイスによって用いられる、または、命令実行システム、装置、もしくはデバイスと接続して用いられるための、プログラムを記憶、通信、伝搬、または輸送するための手段を含み得る任意の装置であり得る。したがって、クラウド・サービス環境において状態更新を制御するためのコンピュータ・プログラム製品が提供される。このコンピュータ・プログラム製品は、それにより具体化されるプログラム命令が記憶されたコンピュータ可読記憶媒体を含んでおり、プログラム命令は、1つもしくは複数のコンピューティング・システムまたはコントローラによって実行可能であり、1つまたは複数のコンピューティング・システムに、状態プロバイダ・レジストリにおいて、状態プロバイダ管理サービスによって、状態プロバイダ定義の組を維持させ、各状態プロバイダ定義は、要求される入力変数定義の組と、出力変数定義の組と、関係するメタデータとを含む。
プログラム命令はまた、1つまたは複数のコンピューティング・システムに、サービスを呼び出すときに、呼び出されるサービスによって要求される入力変数定義の組を決定させる。プログラム命令はさらに、1つまたは複数のコンピューティング・システムに、入力変数定義の決定された組を、状態プロバイダ管理サービスによって、受け取らせる。プログラム命令はまた、1つまたは複数のコンピューティング・システムに、状態プロバイダ管理サービスによって、状態プロバイダ・レジストリを参照することにより状態プロバイダ定義を選択させ、選択された状態プロバイダ定義が入力変数定義の受け取られた組と互換性がある。
プログラム命令はさらに、1つまたは複数のコンピューティング・システムに、選択された状態プロバイダ定義と一致する状態プロバイダ・サービスの組を決定させる。プログラム命令はまた、1つまたは複数のコンピューティング・システムに、状態プロバイダ・サービスの決定された組の状態プロバイダ定義と関係するメタデータを用いて、状態プロバイダ・サービスの決定された組を点数化させる。プログラム命令はさらに、1つまたは複数のコンピューティング・システムに、最高点数の状態プロバイダ・サービスを呼び出させることにより、状態データを生成させる。プログラム命令はまた、1つまたは複数のコンピューティング・システムに、状態データを呼び出されたサービスに送らせる。
クラウド・サービス環境において状態更新を制御するための、提案されているコンピュータ実装方法と、関係するシステムとは、複数の利点、技術的効果、貢献または改善あるいはこれらの組合せを提供し得る。
本明細書で提案されている概念は、クラウド・コンピューティング環境においてステートレスなサービスまたはマイクロサービスへの呼び出しコールをインターセプトし、サービス/マイクロサービスが前の実行の後で終了されたときからの同じサービスまたはマイクロサービスあるいはその両方の状態を注入するように、実現され得る。この機構は、1つのサービスまたはマイクロサービスあるいはその両方に対してだけでなく、基礎となるクラウド・コンピューティング環境における同じまたは異なるプロバイダによって提供された、複数の同一のサービスまたはマイクロサービスあるいはその両方に対しても機能する。状態プロバイダ・レジストリを用いることで、複数の状態プロバイダ・サービスが識別され、状態定義を充足し、呼び出しサービスまたはマイクロサービスを満たす。状態プロバイダ・レジストリと関係するメタデータに基づき、特定の状態プロバイダ・サービスが選択されるのであるが、この選択は、サービス・レベル合意もしくは他の予め定義された条件に従う場合、または呼び出し側のサービスもしくはマイクロサービスによってまたは状態プロバイダ管理サービスによって要求される規則に従う場合、あるいはその両方の場合があり得る。
これは、そうでなければステートレスなサービス/マイクロサービスの状態を管理することを可能にするだけでなく、予め定義された規則に従って適切な状態プロバイダ・サービスを選択することも可能にする。これは、クラウド・コンピューティング環境におけるサービス/マイクロサービスの状態管理における高い柔軟性を可能にするが、同じ特性を有する状態プロバイダ・サービスを提供する異なるエンティティ(例えば、プロバイダ)のリソースの間での負荷の均衡化も可能にする。
提案されている概念は、リソースのハードウェアに近い管理タスクにおいても、その利点を明らかにし得る。よって、プロセッサ、コプロセッサ、メモリ・ユニット、メモリ・システムまたはネットワーク・リソースあるいはこれらの組合せの状態は、提案され開示されている概念に従って今や装備が可能であり状態情報を用いることができる元々はステートレスなサービスを用いて、優雅にモニタされ管理され得る。
以下では、方法と関係のシステムとコンピュータ・プログラム製品とに適用可能な、開示された概念の追加的な実施形態が、説明される。
有利な実施形態によると、この方法は、状態プロバイダ管理サービスによって、各状態プロバイダ・サービスに対し、状態プロバイダ・サービスの各呼び出しのときに状態プロバイダ管理サービスによってインクリメントされる呼び出しカウンタを、メタデータ・レポジトリに記憶することをさらに含み得る。こうして、状態プロバイダ・サービスのどれが最も用いられるかが、決定され得る。このインジケータは、要求される入力データの与えられた組に対する状態プロバイダ・サービスの将来の選択のための、品質アセスメントと、パフォーマンス・アセスメントと、利用可能性および信頼性アセスメントとのために、用いられ得る。
与えられた状態プロバイダ定義と一致する状態プロバイダ・サービス要求に応答するときには、呼び出しカウンタがその中に記憶される状態プロバイダ・レジストリが、状態プロバイダ・サービスに対する応答データの一部として、呼び出しカウンタを、さらに戻すことがあり得る。状態プロバイダ管理サービスは、呼び出しカウンタを受け取ると、それを、選択された状態プロバイダ・サービスに対する最後に記憶された呼び出しカウンタと比較することができる。さらに、状態プロバイダ管理サービスは、選択された状態プロバイダ機能に対する受け取られた呼び出しカウンタが最後に記憶された呼び出しカウンタよりも大きいまたはそれと等しい場合には、実際のサービス要求を却下し得る。
有利な実施形態によると、この方法はまた、サービスの実行を終了させるときに、サービスの出力値を、状態データがそこから受け取られた状態プロバイダ・サービスに返却することをさらに含み得る。この動作はまた、状態プロバイダ管理サービスの制御の下でも、実行され得る。よって、状態プロバイダ管理サービスは、本明細書で提案されている概念において、中心的な役割を演じ得る。
さらに有用な実施形態によると、この方法はまた、状態データがそこから受け取られた状態プロバイダ・サービスによって、受け取られた状態データを持続的に記憶することを含み得る。こうして、状態プロバイダ・サービスは、予め定義された機能を充足するためにアプリケーションによって呼び出された関係のサービスの状態を追跡するというその目的を充足し得る。
拡張された実施形態によると、この方法は、呼び出された第1の状態プロバイダ・サービスが第2の状態を要求すると判断するときに、状態プロバイダ管理サービスを経由して、第2の状態プロバイダ・サービスを呼び出すことと、第2の状態プロバイダ・サービスのための入力変数の関係する組を決定することと、一致する第2の状態プロバイダ・サービスの組を決定することと、一致する第2の状態プロバイダ・サービスの組を点数化することと、最高点数の第2の状態プロバイダ・サービスを選択することにより、第2の状態データを生成することと、第2の状態データを、第2の状態プロバイダ・サービスに送ることと、第2の状態プロバイダ・サービスの実行の出力値を、第2の状態として戻すこととをさらに含み得る。
このようにして、与えられたサービスに対して、一連の従属状態を管理することが可能になる。この場合には、第1の選択されたサービス・プロバイダ・サービスから開始し、サービス・プロバイダ定義を用いて、1つまたは複数の追加的な状態プロバイダ・サービスがカスケード状に選択され活性化され、最終的に所望の状態を呼び出し側のサービスに戻すように、サービス・プロバイダのサービスが、サービス・プロバイダ管理サービスによって、回帰的な方法で活性化され得る。
この方法の別の有利な実施形態によると、状態プロバイダ・サービスの決定された組を点数化することが、同一の点数値を有する最高点数の状態プロバイダ・サービスの組を結果的に生じさせ、そして、最高点数の状態プロバイダ・サービスの特に完全な組を並列的に呼び出すことをさらに含み得る。このようにして、1つのサービス・プロバイダのサービスが、与えられた時刻において活性化されるだけではなく、同様に、状態プロバイダ・サービスを行動させること、すなわち、同じ状態に戻ることが可能になることが、並列的に実行され得る。このようにして、異なる状態プロバイダ・サービスに対してパフォーマンス・テストが可能になり得ることで、状態プロバイダ・サービスの活性化という将来の場合において、最高パフォーマンスを提供する1つの状態プロバイダ・サービスが選択されることが保証される。あるいは、異なるサービス・レベル合意の下で状態プロバイダ・サービスを実行し得る、クラウド・コンピューティング環境における異なるプロバイダからの状態プロバイダ・サービスが、相互に対して測定され得る。
この行動は、次のオプションである実施形態において表現されるのであるが、その実施形態によると、この方法はまた、最高点数の状態プロバイダ・サービスの組を実行するためのパフォーマンス値を測定することと、それぞれのパフォーマンス値を、それぞれの状態プロバイダ・サービスのメタデータに記憶することとを含み得る。よって、パフォーマンスの比較の結果は、状態プロバイダ管理サービスによっても制御されアクセス可能なメタデータに持続的に記憶され得る。
この方法のさらなる有用な実施形態によると、状態プロバイダ・サービスの組を決定することが、メタデータに関する予め定義された規則に従って、一致する状態プロバイダ・サービスを決定することも含み得る。そうする際に、状態プロバイダ・サービスは、予め定義された品質標準、サービス・レベル合意、パフォーマンス・インジケータまたはサービス・プロバイダ・サービスの他の行動インジケータあるいはこれらの組合せによって与えられるもののように、予め定義された規則に従って、選択され得る。
この方法のさらなる拡張された実施形態によると、状態プロバイダ・サービスの組を決定することがまた、クラウド・コンピューティング環境における現在のワークロード・プロファイルに従って、一致する状態プロバイダ・サービスを決定することを含み得る。このようにして、また、クラウド・コンピューティング環境の異なるセクションまたは部分、すなわち、与えられた時刻におけるコンピューティング・センタにおける異なるワークロードが、反映されるまたは制御されるあるいはその両方がなされ得る。
この方法のある許容される実施形態によると、最高点数の状態プロバイダ・サービスが、ラウンドロビン原理に従って決定され得る。よって、予め定義された状態プロバイダ・サービス定義による状態プロバイダ・サービスが呼び出されなければならないたびに、同じ定義に従う別の1つが実行される機会を獲得することがあり得る。
最高点数の定義は広義に理解されると指摘し得るのであって、すなわち、点数化は、クラウド・コンピューティング環境における予め定義された条件に従って動的に変更されるそれ自体の組の基礎となり得る。例えば、最高点数の状態プロバイダは、実際には、そのパフォーマンスが最高であること、すなわち、特定の状態プロバイダ・サービスが最短の時間で状態を戻すことを、特に過去の実行の間に示したものである場合があり得る。別の場合には、状態プロバイダ・サービスが、SLAまたは品質要件あるいはその両方の選択された組に従う最良の追跡記録を有するなど、別の規則に従って、選択されることもあり得る。
本開示の実施形態は異なる主題を参照して説明される、ということが留意されるべきである。特に、いくつかの実施形態は方法タイプの請求項を参照して説明され、他方で、他の実施形態は装置タイプの請求項を参照して説明される。しかし、当業者であれば、以上および以下の説明から、次のことを理解するはずであって、すなわち、そうではないと断らない限り、あるタイプの主題に属する特徴の任意の組合せに加え、異なる主題と関係する特徴の間の任意の組合せ、特に、方法タイプの請求項の特徴と装置タイプの請求項の特徴との間の任意の組合せは、本文書において開示されたものと考えられる。
本開示の上で明確にされた態様とさらなる態様とは、本明細書で以下に述べられる実施形態の例から明らかであり、実施形態の例を参照して説明されるが、本開示はそれらに限定されることはない。
本出願に含まれている図面は、明細書に組み入れられ、その一部を形成する。それらは、記述と共に本開示の実施形態を図解しており、本開示の原理を説明するように機能する。図面は、特定の実施形態の例証であり、本開示を限定しない。
この記述のコンテキストでは、以下の慣習、用語、または表現、あるいはこれらの組合せが用いられ得る。
用語「状態」は、特にマイクロサービスのサービスの場合には、コンピューティング・システムにおけるサービスまたはアプリケーションまたはプロセスの、最後に知られたまたは現在の状態として、定義され得る。サービスとの関係における状態はさらに、そのサービスの変数またはパラメータの現在値として作成されるのであって、状態は、アプリケーションが実行されると変化し得る。
用語「ステートフル」は、典型的には任意の時点でその状態を維持し得るアプリケーションまたはサービスを示し得る。対照的に、ステートレスなアプリケーションまたはサービスは、完全に自己完結的であり、データと実行トランザクションとの境界が、そのアプリケーションまたはサービスの始点および終点と一致する。したがって、ステートレスなサービスは、再度開始される場合には、それ以前のライフに関するいかなる記憶も有していない可能性があり、すなわち、以前の実行と用いられた変数のいずれかに関するデータをまったく有していない。
用語「サービス」は、本明細書では、1つまたは複数の能力またはリソースあるいはその両方へのアクセスを可能にする機構を意味し得るのであって、ここで、アクセスは、規定のインタフェースを用いて提供されるのであり、関係するサービスの記述によって特定される制約またはポリシあるいはその両方に一貫して従って実践され得る。ときには、ソフトウェア技術が、サービス指向アーキテクチャ(SOA)構造スタイルの本当の最後においてマイクロサービスを発展させるのに用いられる。この場合には、アプリケーションは、緩やかに結合されたサービスの集まりとして、構成され得る。マイクロサービス・アーキテクチャでは、より古典的なSOAコンピューティング環境と比較すると、サービスは、よりきめが細かく、プロトコルは、より軽量である。この文書のコンテキストでは、用語「サービス」および「マイクロサービス」は、相互交換可能に用いられ得る。
用語「状態プロバイダ管理サービス」は、これまでステートレスだったサービスに対して状態管理を可能にするというコンテキストにおける新たな機能を意味し得る。よって、また、ステートレスなサービスは、その機能においては、ステートレスなサービスをまったく変化させないで、ステートフルになると宣言され得る。ステートレスなサービスの状態は、状態プロバイダ・サービスによって、ステートレスなサービスの外部にある他のサービスとは独立に管理され得る。状態プロバイダ・サービスの集まりは、関係する状態プロバイダ管理サービスによって管理され得る。これは、状態プロバイダ定義を定義、変更、または削除するために、ユーザ・インタフェース(UI)220またはAPI(アプリケーション・プログラミング・インタフェース)を有する場合がある。典型的には、状態プロバイダ定義は、少なくとも、関係のサービスの要求される入力変数と出力変数とを含む。少なくともいくつかの実施形態では、1つの状態プロバイダ定義に対して、複数個の状態プロバイダ・サービスが存在し得る。よって、複数個の状態プロバイダ・サービスが呼び出されるし、並列的に実行され得る。
用語「状態プロバイダ・レジストリ」は、管理および操作されるのであって、すなわち、状態プロバイダ管理サービスによって、新たなエントリが定義、変更、または削除され得る。したがって、状態プロバイダ・レジストリは、状態プロバイダ・サービスを登録、問合せ、期限登録、および更新するためのAPIを提供し得る。
用語「状態プロバイダ・サービス」は、本明細書では、状態プロバイダ・レジストリに記憶され状態プロバイダ管理サービスによって管理される状態プロバイダ仕様または状態プロバイダ定義によって、定義され得る。よって、状態プロバイダ定義は、例えば、状態プロバイダ・サービスに応じてサービスの関係の要件に一致し得る要求される入力変数や、サービスの状態の持続的な記憶を保証するための出力変数など、状態プロバイダ・サービスの細目を決定し得る。
例として、z():id,*は、状態プロバイダ・サービスzを定義し得るのであって、これは、さらなる状態や状態プロバイダ・サービスには依存せず、すべてのサービスと状態プロバイダ・サービス(したがって、ワイルドカード「*」)に対して、状態変数「id」を提供し得る。
別の例として、y(id):名前、住所、xは、(ここでは、別の状態プロバイダによって提供される状態「id」に依存する)状態プロバイダ・サービスyを定義し得るのであって、この状態プロバイダ・サービスyは、サービス仕様「x」に付着するサービスと状態プロバイダのサービスとに対して状態変数「名前」および「住所」を提供する。なお、xは、サービス名に関する通常の表現であり得る。
用語「メタデータ」とは、特に状態プロバイダ・サービスのメタデータとは、問題となっている状態プロバイダ・サービスの特定の特性を意味し得る。メタデータは、パフォーマンス・インジケータ、品質パラメータ、特別サービス・レベル合意、プロバイダ、状態プロバイダ・サービスの動作または状態プロバイダ・サービスが有するそれ以外の行動特性あるいはこれらの組合せに向けられ得る。
この開示は、クラウド・コンピューティングに関する詳細な説明を含んでいるが、本明細書で引用される教示の実装はクラウド・コンピューティング環境に限定されないということは、理解されるべきである。むしろ、本開示の実施形態は、現時点で知られているか、または今後に開発されるどの他の形式のコンピューティング環境との関連でも実装されることが可能である。
当該技術分野で知られているように、用語「クラウド・コンピューティング」とは、そして同様に用語「クラウド・サービス環境」とは、このコンテキストでは、最小限の管理上の努力またはサービス・プロバイダとの対話で、迅速に供給およびリリースが可能である設定可能なコンピューティング資源(例えば、ネットワーク、サーバ、ストレージ、アプリケーション、およびサービス)の共用されるプールへの、便利でオンデマンドのネットワーク・アクセスを可能にするためのモデルとして、解釈され得る。このクラウド・モデルは、可用性を向上させ、少なくとも5つの特性と、少なくとも3つのサービス・モデルと、少なくとも4つの配置モデルとから構成される。
クラウド・コンピューティングの本質的な特性は、以下を含む。
(i)オンデマンド・セルフサービス:コンシューマは、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を、各サービス・プロバイダとの人的対話を要求することなく、必要に応じて自動的に、一方向的に供給することができる。
(ii)広範なネットワーク・アクセス:能力は、ネットワーク上で利用可能であり、異種のシンまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促す標準的機構を通して、アクセスされる。
(iii)リソースの共用:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを用い、コンシューマの需要に応じて動的に割り当てられるおよび再度割り当てられる異なる物理および仮想リソースと共に、複数のコンシューマに提供するように、共用される。コンシューマは提供される資源の厳密な位置に関する制御または知識を有していないのが一般的であり、抽象化のより高い階層での位置(例えば、国、州、またはデータセンタ)を特定することが可能な場合があり得るという点で、位置に依存しない感覚が存在する。
(iv)迅速な弾力性:能力は、迅速かつ弾力的に、場合によっては自動的に供給され、素早くスケールアウトし、迅速に解放して素早くスケールインすることが可能である。コンシューマにとっては、供給のために利用可能な能力は、多くの場合、無制限であるように見え、いつでも任意の量で購入することができる。
(v)測定されるサービス:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適したいくつかの抽象化レベルで計量能力を活用することによって、リソース使用を自動的に制御し、最適化する。リソースの使用は、監視し、制御し、報告することで、用いられるサービスのプロバイダおよびコンシューマの両方に対して、透明性を提供することができる。
(i)オンデマンド・セルフサービス:コンシューマは、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を、各サービス・プロバイダとの人的対話を要求することなく、必要に応じて自動的に、一方向的に供給することができる。
(ii)広範なネットワーク・アクセス:能力は、ネットワーク上で利用可能であり、異種のシンまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促す標準的機構を通して、アクセスされる。
(iii)リソースの共用:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを用い、コンシューマの需要に応じて動的に割り当てられるおよび再度割り当てられる異なる物理および仮想リソースと共に、複数のコンシューマに提供するように、共用される。コンシューマは提供される資源の厳密な位置に関する制御または知識を有していないのが一般的であり、抽象化のより高い階層での位置(例えば、国、州、またはデータセンタ)を特定することが可能な場合があり得るという点で、位置に依存しない感覚が存在する。
(iv)迅速な弾力性:能力は、迅速かつ弾力的に、場合によっては自動的に供給され、素早くスケールアウトし、迅速に解放して素早くスケールインすることが可能である。コンシューマにとっては、供給のために利用可能な能力は、多くの場合、無制限であるように見え、いつでも任意の量で購入することができる。
(v)測定されるサービス:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適したいくつかの抽象化レベルで計量能力を活用することによって、リソース使用を自動的に制御し、最適化する。リソースの使用は、監視し、制御し、報告することで、用いられるサービスのプロバイダおよびコンシューマの両方に対して、透明性を提供することができる。
クラウド・コンピューティングのためのサービス・モデルは、以下を含む。
(i)サービスとしてのクラウド・ソフトウェア(SaaS):コンシューマに提供される能力は、クラウド・インフラストラクチャ上で実行されるプロバイダのアプリケーションを用いることである。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブベースの電子メール)のようなシン・クライアント・インターフェースを通じて、様々なクライアント・デバイスからアクセス可能である。コンシューマが、限定されたユーザ固有のアプリケーション構成設定が除かれる場合があり得るが、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーションの能力も含む、基盤となるクラウド・インフラストラクチャを管理または制御することはない。
(ii)サービスとしてのクラウド・プラットフォーム(PaaS):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語とツールとを用いて作成された、コンシューマが作成または獲得したアプリケーションを、クラウド・インフラストラクチャ上に展開することである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基盤となるクラウド・インフラストラクチャを管理または制御することはないが、展開されたアプリケーションを制御し、可能であればアプリケーション・ホスティング環境の構成を制御する。
(iii)サービスとしてのクラウド・インフラストラクチャ(IaaS):コンシューマに提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的なコンピューティング・リソースの提供であり、コンシューマは、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアを展開し、実行させることが可能である。コンシューマは、基盤となるクラウド・インフラストラクチャを管理または制御することはないが、オペレーティング・システム、ストレージ、展開されたアプリケーションの制御を有し、可能であれば選択されたネットワーキング・コンポーネント(例えば、ホストのファイアウォール)の限定的な制御を有する。
(i)サービスとしてのクラウド・ソフトウェア(SaaS):コンシューマに提供される能力は、クラウド・インフラストラクチャ上で実行されるプロバイダのアプリケーションを用いることである。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブベースの電子メール)のようなシン・クライアント・インターフェースを通じて、様々なクライアント・デバイスからアクセス可能である。コンシューマが、限定されたユーザ固有のアプリケーション構成設定が除かれる場合があり得るが、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーションの能力も含む、基盤となるクラウド・インフラストラクチャを管理または制御することはない。
(ii)サービスとしてのクラウド・プラットフォーム(PaaS):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語とツールとを用いて作成された、コンシューマが作成または獲得したアプリケーションを、クラウド・インフラストラクチャ上に展開することである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基盤となるクラウド・インフラストラクチャを管理または制御することはないが、展開されたアプリケーションを制御し、可能であればアプリケーション・ホスティング環境の構成を制御する。
(iii)サービスとしてのクラウド・インフラストラクチャ(IaaS):コンシューマに提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的なコンピューティング・リソースの提供であり、コンシューマは、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアを展開し、実行させることが可能である。コンシューマは、基盤となるクラウド・インフラストラクチャを管理または制御することはないが、オペレーティング・システム、ストレージ、展開されたアプリケーションの制御を有し、可能であれば選択されたネットワーキング・コンポーネント(例えば、ホストのファイアウォール)の限定的な制御を有する。
クラウド・コンピューティングのための展開モデルは、次を含む。
(i)プライベート・クラウド:クラウド・インフラストラクチャは、1つの組織のみによって動作する。これは、その組織または第三者によって管理されるのであって、オン・プレミスまたはオフ・プレミスで存在し得る。
(ii)コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、共通の利害関係(例えば、ミッション、セキュリティ要件、ポリシ、およびコンプライアンスの考慮)を有する特定のコミュニティをサポートする。これは、それらの組織または第三者によって管理されるのであって、オン・プレミスまたはオフ・プレミスで存在し得る。
(iii)パブリック・クラウド:クラウド・インフラストラクチャは、公衆または大規模な産業グループが利用可能であるようになっており、クラウド・サービスを販売する組織によって所有される。
(iv)ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つまたはそれよりも多数のクラウド(プライベート、コミュニティ、またはパブリック)の混成であり、これらのクラウドは、固有のエンティティのままであるが、データおよびアプリケーションのポータビリティを可能にする標準化された技術またはプロプライエタリ技術によって相互に結合されている(例えば、クラウド間の負荷バランスのためのクラウド・バースティング)。
(i)プライベート・クラウド:クラウド・インフラストラクチャは、1つの組織のみによって動作する。これは、その組織または第三者によって管理されるのであって、オン・プレミスまたはオフ・プレミスで存在し得る。
(ii)コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、共通の利害関係(例えば、ミッション、セキュリティ要件、ポリシ、およびコンプライアンスの考慮)を有する特定のコミュニティをサポートする。これは、それらの組織または第三者によって管理されるのであって、オン・プレミスまたはオフ・プレミスで存在し得る。
(iii)パブリック・クラウド:クラウド・インフラストラクチャは、公衆または大規模な産業グループが利用可能であるようになっており、クラウド・サービスを販売する組織によって所有される。
(iv)ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つまたはそれよりも多数のクラウド(プライベート、コミュニティ、またはパブリック)の混成であり、これらのクラウドは、固有のエンティティのままであるが、データおよびアプリケーションのポータビリティを可能にする標準化された技術またはプロプライエタリ技術によって相互に結合されている(例えば、クラウド間の負荷バランスのためのクラウド・バースティング)。
クラウド・ソフトウェアは、ステートレス性(statelessness)(例外あり)、粗結合性(low coupling)、モジュール性、および意味的相互運用性(semanticinteroperability)に焦点を合わせたサービス指向であることによって、クラウド・パラダイムを十分に利用しているということが、特筆され得る。
以下では、図面の詳細な説明が与えられる。図面でのすべての指示は、概略的なものである。最初に、クラウド・サービス環境において状態更新を制御するための開示されたコンピュータ実装方法の実施形態のブロック図が与えられている。その後で、さらなる実施形態と、クラウド・サービス環境において状態更新を制御するためのストレージ制御システムの実施形態とについて、説明される。
図1は、クラウド・サービス環境において状態更新を制御するためのコンピュータ実装方法100の実施形態のブロック図を示す。方法100は、状態マネジャとしても示される状態プロバイダ管理サービスによって、状態プロバイダ・レジストリにおいて状態プロバイダ定義の組を維持すること102を、含む。各状態プロバイダ定義は、少なくとも、要求される入力変数定義の組(特別な場合には、この組が1つの入力変数定義だけを含むこともあり得る)と、出力変数定義の組(やはり、ただ1つの集まりである場合もあり得る)と、関係するメタデータとを含む。出力変数の組は、その実行エンド・ポイントでは、サービスの状態として見られることがあり得る。
方法100はまた、サービスを呼び出すときに、呼び出されるサービスによって要求される入力変数定義の組を決定すること104を、含む。要求される入力変数に関する情報は、サービス自体によって配送されるもしくはサービス自体から導かれる、または、関係するサービスもしくはマイクロサービス・レジストリから要求され得る。
追加的に、方法100は、状態プロバイダ管理サービスによって、入力変数定義の決定された組を受け取ること106と、状態プロバイダ管理サービスによって、状態プロバイダ・レジストリを参照することにより状態プロバイダ定義を選択すること108であって、選択された状態プロバイダ定義が入力変数定義の受け取られた組(この場合もやはり、定義がただ1つのこともあり得る)と互換性がある、選択すること108と、選択された状態プロバイダ定義と一致する状態プロバイダ・サービスの組(やはり、ただ1つのこともあり得る)を決定すること110を含む。
次に、方法100は、状態プロバイダ・サービスの決定された組の状態プロバイダ定義と関係するメタデータを用いて、状態プロバイダ・サービスの決定された組を点数化すること112と、特に所定の規則に従って最高点数の状態プロバイダ・サービスを呼び出すことにより、状態データを生成すること114と、状態データを呼び出されたサービスに送ること116とを含む。このようにして、設計によりステートレスなサービスまたはマイクロサービスは、注入された状態(ステート)を有し得ることになり、それによって、ステートレスな実行の利益を保存しつつ、また、ステートフルな行動の利益を得ることにもなる。
図2は、本明細書で提案される概念をサポートする関係ユニットと選択された通信経路との実施形態のブロック図200を示している。
第1に、サービス208の実行を要求するための始点である、呼び出しサービス、マイクロサービス、またはプログラム202が、言及されるべきである。サービスまたはマイクロサービスあるいはその両方は、(この図には、共に、示されていないが)サービス・レジストリと関係の制御機構とによって、管理および制御され得る。しかし、サービス208への要求は、状態マネジャ206または換言すると状態プロバイダ管理サービス206を含む要求プロキシ204によって、インターセプトまたは制御あるいはその両方がなされ得る。
状態プロバイダ管理サービス206は、状態プロバイダ・レジストリ210における状態プロバイダ定義へのアクセスを有する。状態プロバイダ・サービスのパフォーマンス、品質、および行動などのための測定データは、他のパフォーマンス・ログ218のストレージの制御も行い得るパフォーマンス・モニタ216によって、連続的または散発的に監視され得る。さらに、状態プロバイダ管理サービス206は、サービス・プロバイダ・レジストリにおけるエントリの手動で導かれる定義を可能にするためのレジストリUI(ユーザ・インタフェース)220か、または、サービス・プロバイダ・レジストリ210におけるエントリをシステム管理ツール(図示せず)が維持することを可能にするAPIを備えていることがあり得る。
状態プロバイダ管理サービス206は、状態プロバイダ・レジストリ210からの定義に従い、特定であり一致する状態プロバイダ・サービス212を呼び出すことができる。さらに、メタデータから導くことが可能であると同時に状態プロバイダ・レジストリ210に記憶もされている予め定義された規則214が、状態プロバイダ定義と関係する1つまたは複数の状態プロバイダ・サービス212の選択に影響し得る。
図3は、本明細書で提案されている概念のコア成分の間でのメッセージ・フローの実施形態の図300を示している。メッセージのフローは、図2のコンテキストで論じられた実施形態の機能を反映している。プロセス・フローは、クライアント・アプリケーション302(図2における202と比較してほしい)からの要求312により、開始する。この要求312は、状態マネジャまたは状態プロバイダ管理サービス304により、要求プロキシに到着する。これが、適切な状態プロバイダ・サービスを求めて、状態プロバイダ・レジストリ306に対して問合せを行う314。状態プロバイダ・レジストリ306は、1つまたは複数の状態プロバイダのシーケンスを用いて、応答する316。次に、状態プロバイダ管理サービス304が、1つの状態プロバイダ・サービス308または状態プロバイダ・サービス308のシーケンスを呼び出す318。この1つまたは複数の状態プロバイダ・サービス308は、持続的に記憶されている状態を戻す320。これに基づき、すなわち状態データを用いて、要求されたサービス310(特に、クライアント・アプリケーション302から要求されたもの)が、要求プロキシによって、現時点で入手可能な状態と共に、呼び出される。サービス310の実行の後で、結果が要求プロキシ304に戻され324、その結果が要求プロキシ304から元の呼び出し側のクライアント・アプリケーション302(またはサービス)に戻される。
完全性の理由により、図4は、クラウド・サービス環境における状態更新を制御するための状態制御システム400の実施形態のブロック図を示している。状態制御システム400は、状態プロバイダ管理サービス・ユニット404によって状態プロバイダ定義の組を維持するように構成された状態プロバイダ・レジストリ・モジュール402を備えている。それにより、各状態プロバイダ定義は、要求された入力変数定義の組と、出力変数定義の組と、関係するメタデータとを含む。
状態制御システム400はまた、サービスを呼び出すときに、呼び出されるサービスによって要求される入力変数定義の組を決定するように構成された第1の決定手段を、特に、第1の決定モジュール406を備えているが、ここで、状態プロバイダ管理サービス・ユニット404はまた、入力変数定義の決定された組を受け取るようにも構成されている。これにより、状態プロバイダ管理サービス・ユニット404はまた、状態プロバイダ・レジストリを参照することによって状態プロバイダ定義を選択するように構成されており、選択された状態プロバイダ定義は、入力変数定義の受け取られた組と互換性がある。
状態制御システム400はさらに、選択された状態プロバイダ定義と一致する状態プロバイダ・サービスの組を決定するように構成された第2の決定手段、特に、第2の決定モジュール408と、状態プロバイダ・サービスの決定された組の状態プロバイダ定義と関係するメタデータを用いて状態プロバイダ・サービスの決定された組を点数化するように構成された点数化手段、特に、点数化ユニット410と、最高点数の状態プロバイダ・サービスを呼び出すことにより状態データを生成するように構成された呼び出し手段、特に、呼び出しユニット412と、最後に、呼び出されたサービスに状態データを送るように構成された送出手段、特に、送信機414と、を備えている。
以上で述べたすべての手段、ユニット、モジュールなどは、それぞれが、ハードウェア・コントローラとして、特に、状態プロバイダ・レジストリ・モジュール402、状態プロバイダ管理サービス・ユニット404、第1の決定モジュール406、第2の決定モジュール408、点数化ユニット410、呼び出しユニット412、および送信機414として、実装され得る。これらのハードウェア実装された機能ユニットは、図3のコンテキストで論じられたように、メッセージを交換するために、電気接続416(個別のワイヤまたはバス・システム)を経由して、相互にリンクされることが可能である。
図5に進む前に、図6に、開示されている概念の少なくとも一部が展開されるクラウド・コンピューティング環境が示されている。
図6は、開示されている概念の少なくとも一部が展開されるクラウド・コンピューティング環境600を示す。クラウド・コンピューティング環境によって提供される機能的抽象化層の組が示されている。なお、図6に示されているコンポーネント、層、および機能は単に例示であることが意図されており、本開示の実施形態はこれらに限定されない、ということを予め理解されたい。示されているように、以下の層および対応する機能が提供されている。すなわち、ハードウェアおよびソフトウェア層602は、ハードウェア・コンポーネントとソフトウェア・コンポーネントとを含む。ハードウェア・コンポーネントの例は、メインフレーム604、サーバ606、縮小命令セット・コンピュータ(RISC)アーキテクチャベースのサーバ608、ブレード・サーバ610、記憶デバイス612、ネットワーク614、およびネットワーク・コンポーネント614を含む。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア616またはデータベース・ソフトウェア618あるいはその両方を含む。
仮想化層620は、抽象化層を提供するが、抽象化層からは、以下の仮想エンティティの例が提供され得る。すなわち、仮想サーバ622、仮想ストレージ624、仮想プライベート・ネットワークを含む仮想ネットワーク626、仮想アプリケーションおよびオペレーティング・システム628、ならびに仮想クライアント630である。一例として、管理層632は以下の機能を提供することができる。リソース供給634は、クラウド・コンピューティング環境の内部でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。測定および価格設定636は、クラウド・コンピューティング環境の内部でリソースが利用される際のコスト追跡と、これらのリソースの消費に対する請求またはインボイス送付を提供する。一例として、これらのリソースはアプリケーション・ソフトウェアのライセンスを含み得る。セキュリティは、データおよび他のリソースに対する保護だけでなく、クラウド・コンシューマおよびタスクのIDの認証を提供する。ユーザ・ポータル638は、コンシューマおよびシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理640は、要求されたサービス・レベルが充足されるように、クラウド・コンピューティング・リソースの配分および管理を提供する。サービス・レベル合意(SLA)の計画および履行642は、SLAに従って将来必要になると予想されるクラウド・コンピューティング・リソースの事前手配および調達を提供する。
ワークロード層644は、そのためにクラウド・コンピューティング環境が用いられる機能の例を提供する。この層から提供されるワークロードと機能との例は、マッピングおよびナビゲーション646、ソフトウェア開発およびライフサイクル管理648、仮想教室教育配信650、データ・アナリティクス処理652、トランザクション処理654、および状態制御モジュール656(図4の400と比較のこと)を含む。
本開示の実施形態は、プログラム・コードを記憶するまたは実行するあるいはその両方に適しているプラットフォームとは関係なく、仮想的に任意のタイプのコンピュータと共に実装され得る。図5は、一例として、提案されている方法と関係するプログラム・コードを実行するのに適したコンピューティング・システム500を示している。
コンピューティング・システム500は、適切なコンピュータ・システムの単なる1つの例であり、コンピュータ・システム500が実装可能であるまたは上述の機能のいずれかを実行可能であるあるいはその両方であるかとは関係なく、本明細書で説明されている本開示の実施形態の使用または機能の範囲として、いかなる制限を示唆することも意図されていない。コンピュータ・システム500には、多数の他の汎用もしくは専用コンピューティング・システム環境または構成と共に動作するコンポーネントが存在する。コンピュータ・システム/サーバ500と共に用いるのが適切であり得るよく知られたコンピュータ・システム、環境または構成あるいはその組合せの例としては、限定はされないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルド・デバイスまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能なコンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、ならびに上記のシステムまたはデバイスのいずれかおよびそれらの等価物を含む分散型クラウド・コンピューティング環境などが含まれる。
コンピュータ・システム/サーバ500は、コンピュータ・システム500によって実行されつつあるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的なコンテキストで記述され得る。一般に、プログラム・モジュールは、特定のタスクを実行するまたは特定の抽象的なデータ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム/サーバ500は、通信ネットワークを介してリンクされているリモート処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実行することができる。分散型クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ記憶デバイスを含むローカルおよびリモートのコンピュータ・システム記憶媒体の両方に配置され得る。
図面に示されているように、コンピュータ・システム/サーバ500は、汎用コンピューティング・デバイスの形式で示されている。コンピュータ・システム/サーバ500のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット502、システム・メモリ504、およびシステム・メモリ504を含む様々なシステム・コンポーネントをプロセッサ502に結合するバス506を含むが、これらに限定されない。バス506は、様々なバス・アーキテクチャのいずれかを用いるメモリ・バスまたはメモリコントローラ、周辺バス、アクセラレーテッド・グラフィクス・ポート、およびプロセッサまたはローカル・バスを含む複数種類のバス構造のうちのいずれかの1つまたは複数を表す。一例として、限定を意味しないが、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)バスを含む。コンピュータ・システム/サーバ500は、典型的には、様々なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ500によってアクセス可能な任意の利用可能な媒体であり得るが、揮発性および不揮発性の両方の媒体と、取り外し可能および取り外し不能な両方の媒体とを含む。
システム・メモリ504は、ランダム・アクセス・メモリ(RAM)508またはキャッシュ・メモリ510あるいはその両方など、揮発性メモリの形式でのコンピュータ・システム可読媒体を含み得る。コンピュータ・システム/サーバ500はさらに、その他の取り外し可能/取り外し不能で揮発性/不揮発性のコンピュータ記憶媒体を含み得る。単なる例ではあるが、取り外し不能で不揮発性の磁気媒体(図示されていないが、典型的には「ハードドライブ」と称される)との間での読み出しおよび書き込みのために、ストレージ・システム512が提供されることがあり得る。図示されていないが、取り外し可能で不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)との間の読み出しおよび書き込み用の磁気ディスク・ドライブと、CD-ROM、DVD-ROMまたは他の光学媒体などの取り外し可能で不揮発性の光ディスクとの間の読み出しおよび書き込み用の光ディスク・ドライブとが提供されることがあり得る。これらの例において、それぞれを、1つまたは複数のデータ媒体インタフェースによってバス506に接続することが可能である。以下で詳述されるように、メモリ504は、本開示の実施形態の機能を実行するように構成されたプログラム・モジュールの組(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことがあり得る。
プログラム・モジュール516の組(少なくとも1つ)を有するプログラム/ユーティリティは、例えば、限定は意味しないが、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ504に記憶され得る。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データまたはそれらの組合せは、それぞれが、ネットワーク環境の実装を含み得る。プログラム・モジュール516は、一般に、本明細書に記載されているように、本開示の実施形態の機能または方法もしくはその両方を実行する。例えば、プログラム・モジュール516は、状態プロバイダ・レジストリ・モジュール402、状態プロバイダ管理サービス・ユニット404、第1の決定モジュール406、第2の決定モジュール408、点数化ユニット410、呼び出しユニット412、および送信機414のうちの1つまたは複数を実装するように、1つまたは複数のプロセッサ502によって実行され得る。
コンピュータ・システム/サーバ500はまた、キーボード、ポインティング・デバイス、ディスプレイ520などの1つもしくは複数の外部装置518、ユーザとコンピュータ・システム/サーバ500との対話を可能にする1つもしくは複数のデバイス、またはコンピュータ・システム/サーバ500と1つもしくは複数の他のコンピューティング装置との通信を可能にする任意の装置(例えば、ネットワーク・カード、モデムなど)、あるいはこれらの組合せと通信し得る。そのような通信は、入力/出力(I/O)インタフェース514を介して、生じ得る。さらにまた、コンピュータ・システム/サーバ500は、ネットワーク・アダプタ522を介して、ローカル・エリア・ネットワーク(LAN)、汎用のワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(例えば、インターネット)あるいはこれらの組合せなど、1つもしくは複数のネットワークと通信することもできる。図示されているように、ネットワーク・アダプタ522は、バス506を介してコンピュータ・システム/サーバ500の他のコンポーネントと通信できる。なお、図示されていないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム/サーバ500と共に用いることができることは、理解されるべきである。その一例としては、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、データ・アーカイブ・ストレージ・システムなどが含まれる。
ここで図7を参照すると、例示的なクラウド・コンピューティング・ネットワーク700を図解する概略図が、提供されている。示されているように、クラウド・コンピューティング・ネットワーク700は、クラウド・コンシューマによって用いられるローカルなコンピューティング・デバイスが通信することができる1つまたは複数のクラウド・コンピューティング・ノード710を有するクラウド・コンピューティング環境750を含む。これらのローカルなコンピューティング・デバイスの例は、限定されることはないが、パーソナル・デジタル・アシスタント(PDA)もしくはセルラ電話754A、デスクトップ・コンピュータ754B、ラップトップ・コンピュータ754C、または自動車コンピュータ・システム754N、あるいはこれらの組合せを含む。ノード710の内部の個々のノードはさらに、相互に通信することができる。それらは、以上で説明されたプライベート、コミュニティ、パブリック、もしくはハイブリッド、またはこれらの組合せのクラウドなど、1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化され得る(図示せず)。これにより、クラウド・コンピューティング・ネットワーク700が、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはこれらの組合せを、クラウド・コンシューマがローカルなコンピューティング・デバイスにおいてリソースを維持する必要のないサービスとして提供することが、可能になる。図7に示されているコンピューティング・デバイス754A~Nのタイプは、単に例証的なものとして意図されており、クラウド・コンピューティング環境750は任意のタイプのネットワークまたはネットワーク・アドレス可能な接続もしくはその両方の上を(例えば、ウェブ・ブラウザを用いて)、任意のタイプのコンピュータ化されたデバイスを用いて通信することができる、ということを理解すべきである。
本開示の様々な実施形態の説明が例証のために提示されてきたが、網羅的であること、または、開示された実施形態に制限することは、意図されていない。当業者にとっては、説明された実施形態の範囲および趣旨から逸脱しない多くの修正および変動が、明らかであろう。本明細書で用いられている用語は、実施形態の原理、実際の応用例、もしくは市場で見出される技術に対する技術的改善を最もよく説明するように、または、当業者が本明細書で開示されている実施形態を理解できるように、選択された。
本開示は、システム、方法、またはコンピュータ・プログラム製品、もしくはこれらの組合せとして実施され得る。コンピュータ・プログラム製品は、本開示の諸態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
媒体は、伝搬媒体用の電子、磁気、光学、電磁気、赤外線、または半導体システムであり得る。コンピュータ可読媒体の例は、半導体すなわちソリッド・ステート・メモリ、磁気テープ、取り外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、リジッドな磁気ディスク、および光学ディスクを含み得る。光学ディスクの現行の例は、コンパクト・ディスク-リード・オンリ・メモリ(CD-ROM)、コンパクト・ディスク-リード/ライト(CD-R/W)、DVD、およびブルー・レイ・ディスクを含む。
コンピュータ可読記憶媒体は、命令実行デバイスによって用いられる命令を保持し記憶することが可能な有形的なデバイスであり得る。コンピュータ可読記憶媒体は、例えば、これらに限定されないが、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または上記のいずれかの適切な組み合わせであり得る。コンピュータ可読記憶媒体のより具体的な例の網羅的ではないリストはまた、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令がそこに記録された溝における隆起構造などの機械的にエンコードされたデバイス、および上記のいずれかの適切な組合せも含み得る。本明細書で用いられるコンピュータ可読記憶媒体とは、無線波もしくは他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体(例えば、光ファイバケーブルを通過する光パルス)を通過して伝搬する電磁波、またはワイヤを通過して伝送される電気信号などの一過性の信号それ自体としては、解釈されないものとする。
本明細書で説明されているコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークまたは無線ネットワークあるいはそれらの組合せなどのネットワークを介して、外部コンピュータもしくは外部ストレージ・デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはそれらの組合せを含み得る。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイスの内部のコンピュータ可読記憶媒体に記憶するために、転送する。
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、ソース・コードもしくはオブジェクト・コードであり得るが、ここで、ソース・コードとオブジェクト・コードとは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語と、を含む1つまたは複数のプログラミング言語の任意の組合せとして、記述される。コンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行される場合、一部がユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして実行される場合、一部がユーザのコンピュータ上で一部が遠隔コンピュータ上で実行される場合、または、全体が遠隔コンピュータもしくはサーバ上で実行される場合があり得る。後者のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続される場合があり得るし、または、(例えば、インターネット・サービス・プロバイダを用いて、インターネットを経由して)外部コンピュータへの接続がなされる場合もあり得る。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、本開示の諸態様を遂行するために、コンピュータ可読プログラム命令の状態情報を用いて、その電子回路をカスタマイズすることにより、コンピュータ可読プログラム命令を実行することがあり得る。
本開示の諸態様は、本開示の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャートによる図解またはブロック図あるいはその両方を参照して、本明細書において、説明されている。フローチャートによる図解またはブロック図あるいはその両方の各ブロックと、フローチャートによる図解またはブロック図あるいはその両方における複数のブロックの組合せとは、コンピュータ可読プログラム命令によって実装される、ということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを経由して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実装するための手段を生じさせるように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供され、マシンを生み出すことができる。これらのコンピュータ可読プログラム命令はまた、命令が記憶されているコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の諸態様を実装する命令を含む製品を備えるように、コンピュータ、プログラム可能なデータ処理装置または他のデバイスあるいはそれらの組合せに、特定の態様で機能するように命令することができるコンピュータ可読記憶媒体に記憶され得る。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能な装置、または他のデバイスの上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実装させるように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置または他のデバイス上で一連の動作ステップを実行させてコンピュータ実装プロセスを生じさせることができる。
図面におけるフローチャートまたはブロック図あるいはその両方は、本開示の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品のあり得る実装形態の、アーキテクチャ、機能および動作を図解している。この点に関し、フローチャートまたはブロック図における各ブロックは、特定された論理機能を実装するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。幾つかの代替的な実装形態では、ブロックに記載されている機能は、図面に記載されている順序とは異なる順序で、生じることがあり得る。例えば、連続して示されている2つのブロックが、関係する機能に応じて、実際には、実質的に同時に実行されることがあり得るし、または、これらのブロックが、ときには、逆の順序で実行されることもあり得る。ブロック図またはフローチャート図あるいはそれらの両方の各ブロックと、ブロック図またはフローチャート図あるいはそれらの両方における複数のブロックの組合せとは、特定の機能もしくは動作を実行するまたは専用のハードウェアとコンピュータ命令との組合せを実行する専用ハードウェア・ベースのシステムによって実装される、ということも、注意されるべきである。
本明細書で用いられる用語は、特定の実施形態を説明するという目的だけのためのものであり、本開示を限定することは意図していない。本明細書で用いられる場合、単数形「a」、「an」および「the」は、文脈が明確に他のことを示さない限り、複数形も含むことが意図されている。本明細書で用いられる場合、「含む(comprises)」という用語もしくは「含む(comprising)」という用語またはその両方は、記載された特徴、整数、ステップ、操作、要素、または構成要素あるいはこれらの組合せの存在を指定するが、1つまたは複数の他の機能、整数、ステップ、操作、要素、コンポーネントまたはこれらの組合せの存在または追加を排除するものではない。
後述の特許請求の範囲における対応する構造、材料、行為、および手段またはステップ・プラス機能要素のすべての均等物は、特に特許請求されているように、他の特許請求されている要素との組合せにおいて当該機能を遂行するための任意の構造、材料、または動作を含むことが意図されている。本開示の様々な説明は、例証の目的で提示されたが、網羅的であることまたは開示されている開示に限定されることは意図されていない。開示の範囲および思想から逸脱することなく、多くの修正および変形が、当業者には明らかであろう。実施形態は、開示の原理と実際の適用とを最もよく説明するために、そして、想定されている特定の使用に適するように、様々な修正を伴う様々な実施形態のために本開示を当業者が理解することを可能にするために選ばれ記述されている。
例示的な実施形態
例1は、クラウド・サービス環境において状態更新を制御するためのコンピュータ実装方法を含む。この方法は、状態プロバイダ・レジストリにおいて、状態プロバイダ管理サービスによって、状態プロバイダ定義の組を維持することを含んでおり、各状態プロバイダ定義は、要求される入力変数定義の組と、出力変数定義の組と、関係するメタデータとを含む。この方法はさらに、サービスを呼び出すときに、呼び出されるサービスによって要求される入力変数定義の組を決定することと、入力変数定義の決定された組を、状態プロバイダ管理サービスによって、受け取ることと、状態プロバイダ管理サービスによって、状態プロバイダ・レジストリを参照することにより状態プロバイダ定義を選択することであって、選択された状態プロバイダ定義が入力変数定義の受け取られた組と互換性がある、選択することと、選択された状態プロバイダ定義と一致する状態プロバイダ・サービスの組を決定することと、状態プロバイダ・サービスの決定された組の状態プロバイダ定義と関係するメタデータを用いて、状態プロバイダ・サービスの決定された組を点数化することと、最高点数の状態プロバイダ・サービスを呼び出すことにより状態データを生成することと、状態データを呼び出されたサービスに送ることと、を含む。
例1は、クラウド・サービス環境において状態更新を制御するためのコンピュータ実装方法を含む。この方法は、状態プロバイダ・レジストリにおいて、状態プロバイダ管理サービスによって、状態プロバイダ定義の組を維持することを含んでおり、各状態プロバイダ定義は、要求される入力変数定義の組と、出力変数定義の組と、関係するメタデータとを含む。この方法はさらに、サービスを呼び出すときに、呼び出されるサービスによって要求される入力変数定義の組を決定することと、入力変数定義の決定された組を、状態プロバイダ管理サービスによって、受け取ることと、状態プロバイダ管理サービスによって、状態プロバイダ・レジストリを参照することにより状態プロバイダ定義を選択することであって、選択された状態プロバイダ定義が入力変数定義の受け取られた組と互換性がある、選択することと、選択された状態プロバイダ定義と一致する状態プロバイダ・サービスの組を決定することと、状態プロバイダ・サービスの決定された組の状態プロバイダ定義と関係するメタデータを用いて、状態プロバイダ・サービスの決定された組を点数化することと、最高点数の状態プロバイダ・サービスを呼び出すことにより状態データを生成することと、状態データを呼び出されたサービスに送ることと、を含む。
例2は、状態プロバイダ管理サービスによって、各状態プロバイダ・サービスに対し、状態プロバイダ・サービスの各呼び出しのときに状態プロバイダ管理サービスによってインクリメントされる呼び出しカウンタを、メタデータ・レポジトリに記憶することをさらに含む、例1に記載の方法を含む。
例3は、サービスの実行を終了させるときに、サービスの出力値を、状態データがそこから受け取られた状態プロバイダ・サービスに返却することをさらに含む、例1または2に記載の方法を含む。
例4は、状態データがそこから受け取られた状態プロバイダ・サービスによって、受け取られた状態データを持続的に記憶することをさらに含む、例1ないし3に記載の方法を含む。
例5は、呼び出された状態プロバイダ・サービスが、第1の状態プロバイダ・サービスになり、さらに、呼び出された第1の状態プロバイダ・サービスが第2の状態を要求すると判断するときに、状態プロバイダ管理サービスを経由して、第2の状態プロバイダ・サービスを呼び出すことと、第2の状態プロバイダ・サービスのための入力変数の関係する組を決定することと、一致する第2の状態プロバイダ・サービスの組を決定することと、一致する第2の状態プロバイダ・サービスの組を点数化することと、最高点数の第2の状態プロバイダ・サービスを選択することにより、第2の状態データを生成することと、第2の状態データを、第2の状態プロバイダ・サービスに送ることと、第2の状態プロバイダ・サービスの実行の出力値を、第2の状態として戻すこととをさらに含む、例1ないし4のいずれかに記載の方法を含む。
例6は、状態プロバイダ・サービスの決定された組を点数化することが、同一の点数値を結果的に生じさせる最高点数の状態プロバイダ・サービスの組を生じさせ、さらに、最高点数の状態プロバイダ・サービスの組を並列的に呼び出すことをさらに含む、例1ないし5のいずれかに記載の方法を含む。
例7は、最高点数の状態プロバイダ・サービスの組を実行するためのパフォーマンス値を測定することと、それぞれのパフォーマンス値を、それぞれの状態プロバイダ・サービスのメタデータに記憶することとをさらに含む、例1ないし6に記載の方法を含む。
例8は、状態プロバイダ・サービスの組を決定することが、メタデータに関する予め定義された規則に従って、一致する状態プロバイダ・サービスを決定することをさらに含む、例1ないし7のいずれかに記載の方法を含む。
例9は、状態プロバイダ・サービスの組を決定することが、クラウド・コンピューティング環境における現在のワークロード・プロファイルに従って、一致する状態プロバイダ・サービスを決定することをさらに含む、例1ないし8のいずれかに記載の方法を含む。
例10は、最高点数の状態プロバイダ・サービスが、ラウンドロビン原理に従って決定される、例1ないし9のいずれかに記載の方法を含む。
例11は、クラウド・サービス環境において状態更新を制御するための状態制御システムを含む。この状態制御システムは、状態プロバイダ管理サービス・ユニットによって、状態プロバイダ定義の組を維持するように構成された状態プロバイダ・レジストリ・モジュールを備えており、各状態プロバイダ定義は、要求される入力変数定義の組と、出力変数定義の組と、関係するメタデータとを含む。この状態制御システムはまた、サービスを呼び出すときに、呼び出されるサービスによって要求される入力変数定義の組を決定するように構成された第1の決定手段を備えている。状態プロバイダ管理サービス・ユニットはまた、入力変数定義の決定された組を受け取るようにも構成されている。状態プロバイダ管理サービス・ユニットはまた、状態プロバイダ・レジストリを参照することにより状態プロバイダ定義を選択するように構成されている。選択された状態プロバイダ定義は、入力変数定義の受け取られた組と互換性がある。状態制御システムはまた、選択された状態プロバイダ定義と一致する状態プロバイダ・サービスの組を決定するように構成された第2の決定手段と、状態プロバイダ・サービスの決定された組の状態プロバイダ定義と関係するメタデータを用いて、状態プロバイダ・サービスの決定された組を点数化するように構成された点数化手段と、最高点数の状態プロバイダ・サービスを呼び出すことにより状態データを生成するように構成された呼び出し手段と、状態データを呼び出されたサービスに送るように構成された送出手段とを備えている。
例12は、状態プロバイダ管理サービス・ユニットがまた、各状態プロバイダ・サービスに対し、状態プロバイダ・サービスの各呼び出しのときに状態プロバイダ管理サービスによってインクリメントされる呼び出しカウンタを、メタデータ・レポジトリに記憶するようにも構成されている、例11に記載の状態制御システムを含む。
例13は、サービスの実行を終了させるときに、サービスの出力値を、状態データがそこから受け取られた状態プロバイダ・サービスに返却するように構成された返却手段をさらに備えている、例11または12のいずれかに記載の状態制御システムを含む。
例14は、状態データがそこから受け取られた状態プロバイダ・サービスによって、受け取られた状態データを持続的に記憶するように構成された記憶手段をさらに含む、例11ないし13に記載の状態制御システムを含む。
例15は、呼び出された状態プロバイダ・サービスが、第1の状態プロバイダ・サービスになり、さらに、呼び出された第1の状態プロバイダ・サービスが第2の状態を要求すると判断するときに、状態プロバイダ管理サービス・ユニットを経由して、第2の状態プロバイダ・サービスを呼び出すように構成されている、例11ないし14のいずれかに記載の状態制御システムを含む。この状態制御システムはさらに、第2の状態プロバイダ・サービスのための入力変数の関係する組を決定し、一致する第2の状態プロバイダ・サービスの組を決定し、一致する第2の状態プロバイダ・サービスの前記組を点数化し、最高点数の第2の状態プロバイダ・サービスを選択することにより、第2の状態データを生成し、第2の状態データを、第2の状態プロバイダ・サービスに送り、第2の状態プロバイダ・サービスの実行の出力値を、第2の状態として返却するようにも構成されている。
例16は、点数化手段がまた、同一の点数値を結果的に生じさせる最高点数の状態プロバイダ・サービスの組を結果的に生じさせる状態プロバイダ・サービスの決定された組を点数化するようにも構成されている、例11ないし15のいずれかに記載の状態制御システムを含む。この状態制御システムはさらに、最高点数の状態プロバイダ・サービスの前記組を並列的に呼び出すようにも構成されている。
例17は、最高点数の状態プロバイダ・サービスの組を実行するためのパフォーマンス値を測定し、それぞれのパフォーマンス値を、それぞれの状態プロバイダ・サービスのメタデータに記憶するように構成された測定手段をさらに備えている、例11ないし16に記載の状態制御システムを含む。
例18は、状態プロバイダ・サービスの組を決定するように構成された第2の決定手段が、メタデータにおいて予め定義された規則に従って、一致する状態プロバイダ・サービスを決定するようにも構成されている、例11ないし17のいずれかに記載の状態制御システムを含む。
例19は、第2の決定手段がまた、クラウド・コンピューティング環境における現在のワークロード・プロファイルに従って、一致する状態プロバイダ・サービスを決定するようにも構成されている、例11ないし18のいずれかに記載の状態制御システムを含む。
例20は、クラウド・サービス環境において状態更新を制御するためのコンピュータ・プログラム製品を含んでおり、このコンピュータ・プログラム製品は、それにより具体化されるプログラム命令が記憶されたコンピュータ可読記憶媒体を備えており、このプログラム命令は、1つまたは複数のコンピューティング・システムまたはコントローラによって実行可能であって、前記1つまたは複数のコンピューティング・システムに、状態プロバイダ・レジストリにおいて、状態プロバイダ管理サービスによって、状態プロバイダ定義の組を維持させ、各状態プロバイダ定義は、要求される入力変数定義の組と、出力変数定義の組と、関係するメタデータとを含んでおり、サービスを呼び出すときに、呼び出されるサービスによって要求される入力変数定義の組を決定させ、入力変数定義の決定された組を、状態プロバイダ管理サービスによって、受け取らせ、状態プロバイダ管理サービスによって、状態プロバイダ・レジストリを参照することにより状態プロバイダ定義を選択させる。選択された状態プロバイダ定義は、入力変数定義の受け取られた組と互換性がある。このプログラム命令はさらに、1つまたは複数のコンピューティング・システムまたはコントローラによって、選択された状態プロバイダ定義と一致する状態プロバイダ・サービスの組を決定し、状態プロバイダ・サービスの決定された組の状態プロバイダ定義と関係するメタデータを用いて、状態プロバイダ・サービスの決定された組を点数化し、最高点数の状態プロバイダ・サービスを呼び出すことにより、状態データを生成し、状態データを呼び出されたサービスに送るように実行可能である。
Claims (20)
- クラウド・サービス環境において状態更新を制御するためのコンピュータ実装方法であって、前記方法が、
状態プロバイダ・レジストリにおいて、状態プロバイダ管理サービスによって、状態プロバイダ定義の組を維持することであって、各状態プロバイダ定義が、要求される入力変数定義の組と、出力変数定義の組と、関係するメタデータとを含む、前記維持することと、
サービスを呼び出すときに、前記呼び出されるサービスによって要求される入力変数定義の組を決定することと、
入力変数定義の前記決定された組を、前記状態プロバイダ管理サービスによって、受け取ることと、
前記状態プロバイダ管理サービスによって、前記状態プロバイダ・レジストリを参照することにより状態プロバイダ定義を選択することであって、前記選択された状態プロバイダ定義が入力変数定義の前記受け取られた組と互換性がある、前記選択することと、
前記選択された状態プロバイダ定義と一致する状態プロバイダ・サービスの組を決定することと、
状態プロバイダ・サービスの前記決定された組の前記状態プロバイダ定義と関係する前記メタデータを用いて、状態プロバイダ・サービスの前記決定された組を点数化することと、
最高点数の状態プロバイダ・サービスを呼び出すことにより、状態データを生成することと、
前記状態データを前記呼び出されたサービスに送ることと、
を含む、コンピュータ実装方法。 - 前記状態プロバイダ管理サービスによって、各状態プロバイダ・サービスに対し、前記状態プロバイダ・サービスの各呼び出しのときに前記状態プロバイダ管理サービスによってインクリメントされる呼び出しカウンタを、メタデータ・レポジトリに記憶することをさらに含む、請求項1に記載の方法。
- 前記サービスの実行を終了させるときに、前記サービスの出力値を、前記状態データがそこから受け取られた前記状態プロバイダ・サービスに返却することをさらに含む、請求項1または2に記載の方法。
- 前記状態データがそこから受け取られた前記状態プロバイダ・サービスによって、前記受け取られた状態データを持続的に記憶することをさらに含む、請求項1ないし3のいずれか一項に記載の方法。
- 前記呼び出された状態プロバイダ・サービスが、第1の状態プロバイダ・サービスになり、前記方法が、
前記呼び出された第1の状態プロバイダ・サービスが第2の状態を要求すると判断するときに、
前記状態プロバイダ管理サービスを経由して、第2の状態プロバイダ・サービスを呼び出すことと、
前記第2の状態プロバイダ・サービスのための入力変数の関係する組を決定することと、
一致する第2の状態プロバイダ・サービスの組を決定することと、
一致する第2の状態プロバイダ・サービスの前記組を点数化することと、
最高点数の第2の状態プロバイダ・サービスを選択することにより、第2の状態データを生成することと、
前記第2の状態データを、前記第2の状態プロバイダ・サービスに送ることと、
前記第2の状態プロバイダ・サービスの実行の出力値を、前記第2の状態として戻すことと、
をさらに含む、請求項1ないし4のいずれか一項に記載の方法。 - 状態プロバイダ・サービスの前記決定された組を前記点数化することが、同一の点数値を結果的に生じさせる最高点数の状態プロバイダ・サービスの組を生じさせ、前記方法が、
最高点数の状態プロバイダ・サービスの前記組を並列的に呼び出すことをさらに含む、請求項1ないし5のいずれか一項に記載の方法。 - 最高点数の状態プロバイダ・サービスの前記組を実行するためのパフォーマンス値を測定することと、
それぞれのパフォーマンス値を、それぞれの状態プロバイダ・サービスの前記メタデータに記憶することと、
をさらに含む、請求項1ないし6のいずれか一項に記載の方法。 - 状態プロバイダ・サービスの前記組を前記決定することが、
前記メタデータに関する予め定義された規則に従って、前記一致する状態プロバイダ・サービスを決定することをさらに含む、請求項1ないし7のいずれか一項に記載の方法。 - 状態プロバイダ・サービスの前記組を前記決定することが、
前記クラウド・コンピューティング環境における現在のワークロード・プロファイルに従って、前記一致する状態プロバイダ・サービスを決定することをさらに含む、請求項1ないし8のいずれか一項に記載の方法。 - 最高点数の状態プロバイダ・サービスが、ラウンドロビン原理に従って決定される、請求項1ないし9のいずれか一項に記載の方法。
- クラウド・サービス環境において状態更新を制御するための状態制御システムであって、前記状態制御システムが、
状態プロバイダ管理サービス・ユニットによって、状態プロバイダ定義の組を維持するように構成された状態プロバイダ・レジストリ・モジュールであって、各状態プロバイダ定義が、要求される入力変数定義の組と、出力変数定義の組と、関係するメタデータとを含む、前記状態プロバイダ・レジストリ・モジュールと、
サービスを呼び出すときに、前記呼び出されるサービスによって要求される入力変数定義の組を決定するように構成された第1の決定手段と、
を備え、
前記状態プロバイダ管理サービス・ユニットはまた、入力変数定義の前記決定された組を受け取るようにも構成されており、
前記状態プロバイダ管理サービス・ユニットはまた、前記状態プロバイダ・レジストリを参照することにより状態プロバイダ定義を選択するように構成されており、前記選択された状態プロバイダ定義が入力変数定義の前記受け取られた組と互換性があり、
前記状態制御システムがさらに、
前記選択された状態プロバイダ定義と一致する状態プロバイダ・サービスの組を決定するように構成された第2の決定手段と、
状態プロバイダ・サービスの前記決定された組の前記状態プロバイダ定義と関係する前記メタデータを用いて、状態プロバイダ・サービスの前記決定された組を点数化するように構成された点数化手段と、
最高点数の状態プロバイダ・サービスを呼び出すことにより状態データを生成するように構成された呼び出し手段と、
前記状態データを前記呼び出されたサービスに送るように構成された送出手段と、
を備えている、状態制御システム。 - 前記状態プロバイダ管理サービス・ユニットがまた、各状態プロバイダ・サービスに対し、前記状態プロバイダ・サービスの各呼び出しのときに前記状態プロバイダ管理サービスによってインクリメントされる呼び出しカウンタを、メタデータ・レポジトリに記憶するようにも構成されている、請求項11に記載の状態制御システム。
- 前記サービスの実行を終了させるときに、前記サービスの出力値を、前記状態データがそこから受け取られた前記状態プロバイダ・サービスに返却するように構成された返却手段をさらに備えている、請求項11または12に記載の状態制御システム。
- 前記状態データがそこから受け取られた前記状態プロバイダ・サービスによって、前記受け取られた状態データを持続的に記憶するように構成された記憶手段をさらに含む、請求項11ないし13のいずれか一項に記載の状態制御システム。
- 前記呼び出された状態プロバイダ・サービスが、第1の状態プロバイダ・サービスになり、前記状態制御システムがまた、
前記呼び出された第1の状態プロバイダ・サービスが第2の状態を要求すると判断するときに、
前記状態プロバイダ管理サービス・ユニットを経由して、第2の状態プロバイダ・サービスを呼び出し、
前記第2の状態プロバイダ・サービスのための入力変数の関係する組を決定し、
一致する第2の状態プロバイダ・サービスの組を決定し、
一致する第2の状態プロバイダ・サービスの前記組を点数化し、
最高点数の第2の状態プロバイダ・サービスを選択することにより、第2の状態データを生成し、
前記第2の状態データを、前記第2の状態プロバイダ・サービスに送り、
前記第2の状態プロバイダ・サービスの実行の出力値を、前記第2の状態として返却するようにも構成されている、請求項11ないし14のいずれか一項に記載の状態制御システム。 - 前記点数化手段がまた、同一の点数値を結果的に生じさせる最高点数の状態プロバイダ・サービスの組を結果的に生じさせる状態プロバイダ・サービスの前記決定された組を点数化することにより、
最高点数の状態プロバイダ・サービスの前記組を並列的に呼び出すようにも構成されている、請求項11ないし15のいずれか一項に記載の状態制御システム。 - 最高点数の状態プロバイダ・サービスの前記組を実行するためのパフォーマンス値を測定し、それぞれのパフォーマンス値を、それぞれの状態プロバイダ・サービスの前記メタデータに記憶するように構成された測定手段をさらに備えている、請求項16に記載の状態制御システム。
- 状態プロバイダ・サービスの組を決定するように構成された前記第2の決定手段が、前記メタデータにおいて予め定義された規則に従って、前記一致する状態プロバイダ・サービスを決定するようにも構成されている、請求項11ないし17のいずれか一項に記載の状態制御システム。
- 前記第2の決定手段がまた、
前記クラウド・コンピューティング環境における現在のワークロード・プロファイルに従って、前記一致する状態プロバイダ・サービスを決定するようにも構成されている、請求項11ないし18のいずれか一項に記載の状態制御システム。 - クラウド・サービス環境において状態更新を制御するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、それにより具体化されるプログラム命令が記憶されたコンピュータ可読記憶媒体を備えており、前記プログラム命令は、1つまたは複数のコンピューティング・システムによって実行可能であり、前記1つまたは複数のコンピューティング・システムに、
状態プロバイダ・レジストリにおいて、状態プロバイダ管理サービスによって、状態プロバイダ定義の組を維持することであって、各状態プロバイダ定義は、要求される入力変数定義の組と、出力変数定義の組と、関係するメタデータとを含む、前記維持することと、
サービスを呼び出すときに、前記呼び出されるサービスによって要求される入力変数定義の組を決定することと、
入力変数定義の前記決定された組を、前記状態プロバイダ管理サービスによって、受け取ることと、
前記状態プロバイダ管理サービスによって、前記状態プロバイダ・レジストリを参照することにより状態プロバイダ定義を選択することであって、前記選択された状態プロバイダ定義が入力変数定義の前記受け取られた組と互換性がある、前記選択することと、
前記選択された状態プロバイダ定義と一致する状態プロバイダ・サービスの組を決定することと、
状態プロバイダ・サービスの前記決定された組の前記状態プロバイダ定義と関係する前記メタデータを用いて、状態プロバイダ・サービスの前記決定された組を点数化することと、
最高点数の状態プロバイダ・サービスを呼び出すことにより、状態データを生成することと、
前記状態データを前記呼び出されたサービスに送ることと、
を行わせる、コンピュータ・プログラム製品。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/823,516 US11347545B2 (en) | 2020-03-19 | 2020-03-19 | Adaptive state management for stateless services |
US16/823,516 | 2020-03-19 | ||
PCT/IB2021/051112 WO2021186259A1 (en) | 2020-03-19 | 2021-02-11 | Adaptive state management for stateless services |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023517565A true JP2023517565A (ja) | 2023-04-26 |
Family
ID=77748140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022554268A Pending JP2023517565A (ja) | 2020-03-19 | 2021-02-11 | 状態更新を制御するための方法、システム、プログラム |
Country Status (8)
Country | Link |
---|---|
US (1) | US11347545B2 (ja) |
JP (1) | JP2023517565A (ja) |
KR (1) | KR20220127327A (ja) |
CN (1) | CN115298653A (ja) |
AU (1) | AU2021236960B2 (ja) |
DE (1) | DE112021000619T5 (ja) |
GB (1) | GB2609575A (ja) |
WO (1) | WO2021186259A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230221995A1 (en) * | 2022-01-10 | 2023-07-13 | Tangoe Us, Inc. | Cloud application threshold based throttling |
US20240202835A1 (en) * | 2022-12-14 | 2024-06-20 | Goldman Sachs & Co. LLC | Transaction management system for managing transactions being written to storage |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040230681A1 (en) | 2002-12-06 | 2004-11-18 | John Strassner | Apparatus and method for implementing network resources to provision a service using an information model |
US7730123B1 (en) | 2005-12-20 | 2010-06-01 | At&T Intellectual Property Ii, Lp | Software application implemented using services from a services repository generated using a target services roadmap |
US8560563B2 (en) | 2008-07-09 | 2013-10-15 | International Business Machines Corporation | Apparatus and method of semantic service correlation system |
US9749387B2 (en) | 2009-08-13 | 2017-08-29 | Sap Se | Transparently stateful execution of stateless applications |
US9483312B2 (en) | 2010-08-16 | 2016-11-01 | International Business Machines Corporation | Locating service endpoints from a service registry |
WO2012068566A1 (en) | 2010-11-18 | 2012-05-24 | Google Inc. | Delayed shut down of computer |
US9934214B2 (en) * | 2014-12-11 | 2018-04-03 | International Business Machines Corporation | DOM snapshot capture |
US9967351B2 (en) | 2015-01-31 | 2018-05-08 | Splunk Inc. | Automated service discovery in I.T. environments |
US10498834B2 (en) | 2015-03-30 | 2019-12-03 | [24]7.ai, Inc. | Method and apparatus for facilitating stateless representation of interaction flow states |
US10277488B2 (en) * | 2016-09-09 | 2019-04-30 | International Business Machines Corporation | System and method for management and recovery of multi-service web transactions |
US10275235B2 (en) * | 2017-09-18 | 2019-04-30 | International Business Machines Corporation | Adaptable management of web application state in a micro-service architecture |
-
2020
- 2020-03-19 US US16/823,516 patent/US11347545B2/en active Active
-
2021
- 2021-02-11 KR KR1020227029377A patent/KR20220127327A/ko not_active Application Discontinuation
- 2021-02-11 CN CN202180021976.5A patent/CN115298653A/zh active Pending
- 2021-02-11 WO PCT/IB2021/051112 patent/WO2021186259A1/en active Application Filing
- 2021-02-11 GB GB2215190.6A patent/GB2609575A/en active Pending
- 2021-02-11 AU AU2021236960A patent/AU2021236960B2/en active Active
- 2021-02-11 DE DE112021000619.3T patent/DE112021000619T5/de active Pending
- 2021-02-11 JP JP2022554268A patent/JP2023517565A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
AU2021236960A1 (en) | 2022-09-01 |
AU2021236960B2 (en) | 2023-12-14 |
CN115298653A (zh) | 2022-11-04 |
WO2021186259A1 (en) | 2021-09-23 |
KR20220127327A (ko) | 2022-09-19 |
GB202215190D0 (en) | 2022-11-30 |
US11347545B2 (en) | 2022-05-31 |
DE112021000619T5 (de) | 2022-11-10 |
US20210294645A1 (en) | 2021-09-23 |
GB2609575A (en) | 2023-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10972532B2 (en) | Dynamic shared server resource allocation | |
US9535735B2 (en) | Adaptive virtual machine request approver | |
US9998534B2 (en) | Peer-to-peer seed assurance protocol | |
US10282208B2 (en) | Cognitive thread management in a multi-threading application server environment | |
US20180131678A1 (en) | Managing Idempotent Operations while Interacting with a System of Record | |
US20200412788A1 (en) | Asynchronous workflow and task api for cloud based processing | |
JP7395720B2 (ja) | ライブアップリンクストリーミングのための5gフレームワーク制御を通じたネットワークベースのメディア処理ワークフロー管理 | |
JP2023517565A (ja) | 状態更新を制御するための方法、システム、プログラム | |
WO2019180523A1 (en) | Using blockchain for flexible application licensing | |
US10657136B2 (en) | Searching data on a synchronization data stream | |
US11323534B2 (en) | Concurrency reduction through publish-subscribe patterns | |
US10778753B2 (en) | Deferential support of request driven cloud services | |
JP2023545985A (ja) | エッジ・コンピューティング環境におけるタスク・フローの管理 | |
US11740825B2 (en) | Object lifecycle management in a dispersed storage system | |
US20230164210A1 (en) | Asynchronous workflow and task api for cloud based processing | |
JP7321368B2 (ja) | 第3世代パートナーシッププロジェクト(3gpp)ライブアップリンクストリーミングのためのフレームワーク(flus)シンク機能を決定するための方法、コンピュータシステムおよびコンピュータプログラム | |
US11900078B2 (en) | Tuning a container orchestrator | |
US20230138727A1 (en) | Carbon footprint-based control of cloud resource consumption | |
US11487750B2 (en) | Dynamically optimizing flows in a distributed transaction processing environment | |
US20200065169A1 (en) | Utilizing reusable ajax requests | |
JP7450751B2 (ja) | 5gネットワークにおいてコンテンツ準備を使用する場合の逆アドレスマッピングのための方法、コンピュータシステム及びコンピュータプログラム | |
US20230009930A1 (en) | Continuous Liveness and Integrity of Applications During Migration | |
US20160078026A1 (en) | Parallel container and record organization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20220920 Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20221024 |
|
RD16 | Notification of change of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7436 Effective date: 20220919 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230721 |