(57)【特許請求の範囲】
【請求項１】
プロセスを開始するステップであって、前記プロセスはステートレスである、ステップと、
前記プロセスに仮想化レイヤをロードし、実行するステップであって、前記仮想化レイヤは、前記プロセス上で動作するステートフルアプリケーションからの状態変更を捕捉し、前記プロセスが動作するハードウェアファブリックから独立したストレージシステムへ前記状態変更をリダイレクトする、ステップと、
前記プロセス上で前記ステートフルアプリケーションを実行して、前記仮想化レイヤが、前記ステートフルアプリケーションの状態変更を特定し、前記ストレージシステムに前記状態変更を格納するようにするステップと
を含むことを特徴とする方法。
【請求項２】
請求項１に記載の方法であって、前記プロセスは仮想マシン上で動作することを特徴とする方法。
【請求項３】
請求項２に記載の方法であって、前記プロセスはデータセンタ内で動作することを特徴とする方法。
【請求項４】
請求項１に記載の方法であって、前記ストレージシステムはバーチャルハードディスクを含み、前記仮想化レイヤは前記状態変更を前記バーチャルハードディスクに格納するように構成されることを特徴とする方法。
【請求項５】
請求項１に記載の方法であって、前記ステートフルアプリケーションはパッケージに格納されることを特徴とする方法。
【請求項６】
請求項５に記載の方法であって、前記パッケージは前記状態変更を含むことを特徴とする方法。
【請求項７】
請求項５に記載の方法であって、前記状態変更は前記パッケージとは独立していることを特徴とする方法。
【請求項８】
請求項１に記載の方法であって、前記プロセスは第１のプロセスであり、前記方法は、
第２のプロセスを開始するステップと、
前記仮想化レイヤを前記第２のプロセスにロードするステップと、
前記ステートフルアプリケーションをロードするステップと、
前記状態変更をロードするステップと、
前記状態変更とともに前記ステートフルアプリケーションを前記第２のプロセス上で実行するステップと
を更に含むことを特徴とする方法。
【請求項９】
請求項８に記載の方法であって、
複数の前記状態変更から前記状態変更を選択するステップであって、複数の前記状態変更の各々が、前記第１のプロセスおよび前記第２のプロセスの複数のインスタンスについての状態変更を含む、ステップを更に含む
ことを特徴とする方法。
【請求項１０】
請求項９に記載の方法であって、複数の前記状態変更の各々は、異なるプロセスによって作成されることを特徴とする方法。
【請求項１１】
請求項９に記載の方法であって、複数のインスタンスの各々は、バーチャルハードディスクに格納されることを特徴とする方法。
【請求項１２】
請求項１１に記載の方法であって、前記複数のインスタンスの各々は、前記第１のプロセスおよび前記第２のプロセスのうちの１つについての前記状態変更の異なるバージョンであることを特徴とする方法。
【請求項１３】
プロセスを有するコンピューティング環境であって、前記プロセスの各々は、コンピューティングハードウェアファブリック上で実行するステートレスプロセスである、コンピューティング環境と、
プロセス内で動作可能な仮想化レイヤであって、前記仮想化レイヤは、前記プロセスのうちの１つにおいて実行するステートフルアプリケーションへの状態変更を捕捉し、前記状態変更を、前記コンピューティングハードウェアファブリックから独立したストレージに格納する、仮想化レイヤと、
プロセス管理システムであって、
第１のプロセスを開始し、
前記第１のプロセスにおいて実行する前記ステートフルアプリケーションへなされた状態変更が、捕捉され、前記ストレージに格納されるように、前記仮想化レイヤを前記第１のプロセス内でロードし、
前記仮想化レイヤ内で前記ステートフルアプリケーションを実行する、
プロセス管理システムと
を備えることを特徴とするシステム。
【請求項１４】
請求項１３に記載のシステムであって、前記プロセス管理システムは、
前記ストレージ内でバーチャルハードディスクを更に作成し、
前記バーチャルハードディスクをあらかじめ定められた間隔で格納して、前記バーチャルハードディスクの複数のバージョンを作成する
ことを特徴とするシステム。
【請求項１５】
請求項１３に記載のシステムであって、
前記ステートフルアプリケーションを実行し、該アプリケーションおよび第１の状態を含むパッケージを作成するシーケンサ
を更に備えることを特徴とするシステム。
【請求項１６】
請求項１５に記載のシステムであって、前記第１の状態は、オペレーティングシステムのレジストリ設定及び少なくとも１つの設定ファイルの変更を含むことを特徴とするシステム。
【請求項１７】
複数のプロセスが動作するハードウェアファブリックであって、前記プロセスの各々はステートレスプロセスである、ハードウェアファブリックと、
前記プロセス上で動作可能な仮想化レイヤであって、ステートフルアプリケーションからの状態変更を特定し、該状態変更を、前記ハードウェアファブリックから独立したストレージに格納し、前記状態変更のコールを前記ストレージにリダイレクトする仮想化レイヤと、
プロセスマネージャであって、開始コマンドを受け、第１のステートレスプロセスを開始し、前記仮想化レイヤを前記第１のステートレスプロセス内でロードし、前記プロセス内で前記ステートフルアプリケーションを実行するプロセスマネージャと
を備えることを特徴とするクラウドコンピューティングプラットフォーム。
【請求項１８】
請求項１７に記載のクラウドコンピューティングプラットフォームであって、前記プロセスマネージャは、
前記ストレージ内でバーチャルハードディスクを更に作成し、
前記バーチャルハードディスクをあらかじめ定められた間隔で格納して、前記バーチャルハードディスクの複数のバージョンを作成する
ことを特徴とするクラウドコンピューティングプラットフォーム。
【請求項１９】
請求項１７または１８に記載のクラウドコンピューティングプラットフォームであって、前記状態変更は、
オペレーティングシステムのレジストリ設定と、
設定ファイルの変更と
を含むことを特徴とするクラウドコンピューティングプラットフォーム。
【請求項２０】
請求項１９に記載のクラウドコンピューティングプラットフォームであって、前記状態変更は、前記ステートフルアプリケーションとともにアプリケーションパッケージに格納されることを特徴とするクラウドコンピューティングシステム。
【請求項２１】
少なくとも１つのコンピューティングデバイスに、
第１のプロセスを開始するステップであって、前記第１のプロセスはステートレスである、ステップと、
前記第１のプロセスに仮想化レイヤをロードし、実行するステップであって、前記仮想化レイヤは、前記第１のプロセス上で動作するステートフルアプリケーションからの、状態を有する特定のストレージオブジェクトへの読み書きのためのコールを監視するように構成され、前記仮想化レイヤは、前記ステートフルアプリケーションからの状態変更を捕捉し、前記少なくとも１つのコンピューティングデバイスから独立したストレージシステムへ前記状態変更をリダイレクトする、ステップと、
前記第１のプロセス上でステートフルアプリケーションを実行して、前記仮想化レイヤが前記ステートフルアプリケーションの状態変更を特定し、前記ストレージシステムに前記状態変更を格納するようにするステップと、
第２のプロセスを開始するステップと、
前記仮想化レイヤを前記第２のプロセスにロードするステップと、
前記ステートフルアプリケーションをロードするステップと、
前記状態変更をロードするステップと、
前記ステートフルアプリケーションを前記状態変更とともに前記第２のプロセス上で実行するステップと、
複数の前記状態変更から前記状態変更を選択するステップであって、複数の前記状態変更の各々が、前記第１のプロセスおよび前記第２のプロセスの複数のインスタンスについての状態変更を含み、異なるプロセスにより作成される、ステップと
を実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はクラウドコンピューティング環境に関し、より詳細にはステートレスクラウドコンピューティングプロセス内の仮想化レイヤを使用することができ、プロセス内で実行するステートフルアプリケーション(stateful application)によって生成された状態情報を取得し、格納し、そして取り出すクラウドコンピューティング環境に関する。
【背景技術】
【０００２】
クラウドコンピューティングは、プロセスがステートレス(stateless)に動作を行うコンピューティング環境である。典型的なクラウドコンピューティング環境では、ユーザのプロセスが、一つ以上のデータセンタ内のハードウェアプラットフォームのファブリック(fabric)上で動作することができ、そして、データセンタのオペレータは、ユーザのプロセスを、一つのサーバまたは一つのハードウェアプラットフォームから別のサーバまたはハードウェアプラットフォームへと移すことができる。データセンタオペレータは、このようなプロセスの移動を異なる時間で実行することができるので、クラウドコンピューティング環境で実行しているプロセスは、当該プロセス内に状態情報を格納することができない。
【０００３】
クラウドコンピューティングのプロセスとは対象的に、多くの従来型のアプリケーションは、オペレーティングシステムのレジストリ設定の形式で、設定ファイルの形式で、そしてその他変更形式でプロセスの状態情報を格納することができる。時間が経過してもアプリケーションが期待されたように実行するために、当該アプリケーションの状態情報を存続することができ、都度またはアプリケーションが再起動されたときに、アプリケーションの状態情報を呼び戻すことができる。
【発明の概要】
【０００４】
クラウドコンピューティング環境は、ステートレスクラウドコンピューティングプロセス内の仮想化レイヤを使用することができ、プロセス内で実行するステートフルアプリケーション(stateful application)によって生成された状態情報を捕捉し、格納し、そして取り出す。仮想化レイヤは、様々なステートストレージシステムを監視することができ、ステートフル項目への変更を特定し、そして当該ステートフル項目をステートストレージ機構に格納する。仮想化レイヤは、ステートストレージ機構に格納されたステートフル項目へのコールを受信およびリダイレクトすることができる。クラウドコンピューティングマネージャは、ステートレスクラウドコンピューティングプロセスを開始および停止することができ、そして状態情報を復旧し、アプリケーションの実行を再開することができる。
【０００５】
本発明の概要は、後述の発明の詳細な説明においてより詳細に説明される技術思想を、簡潔な態様での抜粋を紹介するために示された。本発明の概要は、特許請求の範囲に記載された発明の技術的範囲の中核となる特徴や本質的な特徴を特定することを意図したものではなく、発明の概要は特許請求の範囲に記載された発明の技術的範囲を制限するために使用されるものでもない。
【図面の簡単な説明】
【０００６】
【図１】本発明の実施形態における、ステートフルアプリケーションのためのクラウドコンピューティング環境を示すブロック構成図である。
【図２】本発明の実施形態における、アプリケーションパッケージを作成する方法を示すフローチャートである。
【図３】本発明の実施形態における、ステートレスプロセスでのステートフルアプリケーションを開始または再開する方法を示すフローチャートである。
【発明を実施するための形態】
【０００７】
クラウドコンピューティング環境は、アプリケーションへの状態変更を捕捉することおよびアプリケーションが停止または再開するときに状態変更が存続するために、仮想化レイヤを使用することができる。仮想化レイヤは、状態情報を格納するためにアプリケーションによって使用される様々なストレージ機構を監視することができ、そして、仮想化レイヤは、状態情報のために独立したストレージ機構を作成し管理することができる。仮想化レイヤは、ストレージ機構へのコールを認識することができ、独立したストレージ機構へコールをリダイレクトすることができる。
【０００８】
アプリケーションの状態情報は、クラウドストレージシステム内に格納することができ、アプリケーションが停止および再開する間、状態情報は存続することができる。多くの実施形態では、状態情報を格納するためにバーチャルハードディスクを使用することができ、そしてこのようなバーチャルハードディスクはクラウドストレージシステムに直接格納することができる。
【０００９】
ある実施形態では、アプリケーションのマルチプルコピー(multiple copies)を実行することができ、各々は独立した状態情報を有することができる。アプリケーションを実行しているプロセスが停止すると、状態情報を格納することができ、プロセスが再開されると、格納された状態情報のグループから状態情報を選択することができ、プロセスを以前の状態から再開することができる。
【００１０】
図中の説明を通じて類似の参照番号が同一の構成要素を特定するように、本明細書においても同一の参照番号が同一の構成要素を特定する。
【００１１】
構成要素が「接続されている」または「連結されている」と言及される時は、構成要素が互いに直接的に接続されているかまたは連結されている場合か、若しくは構成要素の間に介在する一つ以上の別の構成要素も更に存在する可能性がある。反対に、構成要素が「直接的に接続されている」または「直接的に連結されている」と言及される場合は、介在する別の構成要素は存在しない。
【００１２】
発明の技術的範囲は、装置、システム、方法、及び／またはコンピュータプログラム製品として具現化することができる。従って、発明の技術的範囲の幾つかまたは全てはハードウェアにおいて及び／またはソフトウェア（ファームウェア、常駐ソフトウェア、マイクロコード、ステートマシーン、ゲートアレイ等を含む）に具現化することができる。更には、発明の技術的範囲は、コンピュータが使用可能なまたはコンピュータが読み取り可能な記憶媒体上のコンピュータプログラム製品の形式をとることができる。そして、その記憶媒体は、演算実行システムによる使用のため、または演算実行システムに関連して、コンピュータが使用可能な、またはコンピュータが読み取り可能な記憶媒体において具現化されたプログラムコードを持つ。本明細書の文脈にて、コンピュータが使用可能なまたはコンピュータが読み取り可能な媒体は、あらゆる媒体を含む。これら媒体は、演算実行システム、装置または機器による使用またはこれらに関連して、プログラムを内包し、格納し、通信し、頒布しまたは伝送することができる。
【００１３】
コンピュータが使用可能な、またはコンピュータが読み取り可能な媒体は、例えば、以下に限定されないが、電気的、磁気的、光学的、電磁的、赤外線を利用したもの、あるいは半導体システム、装置、機器または頒布用媒体である。例として、限定するものではないが、コンピュータが読み取り可能な媒体は、コンピュータ記憶媒体及び通信媒体を構成する。
【００１４】
コンピュータ記憶媒体は、揮発性及び不揮発性、取り外し可能及び取り外し不可能な媒体を含み、コンピュータが読み取り可能な命令、データ構造、プログラムモジュールまたはその他のデータのように情報の格納のためのあらゆる方法や技術で実装される。コンピュータ記憶媒体は、以下に限定はされないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたはその他のメモリ技術であるＣＤ−ＲＯＭ、ＤＶＤまたはその他光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたはその他磁気ストレージ装置または所望の情報を格納するために使われ、命令実行システムによってアクセスすることができるその他あらゆる媒体が含まれる。注意するべきは、コンピュータが使用可能な、またはコンピュータが読み取り可能な媒体は、紙またはプログラムが印刷されるのに相応しいその他媒体である可能性がある。なぜならば、例えば、紙またはプログラムが印刷されるのに相応しいその他媒体から光学的読み取りを介してプログラムは電子的に読み取られる可能性があり、そしてコンパイルされ、解釈され、さもなければ好適に処理され、必要ならば、コンピュータのメモリに記憶されるからである。
【００１５】
通信媒体は、典型的には、コンピュータが読み取り可能な命令、データ構造、プログラムモジュールまたは搬送波や他の伝送機構のように変調されたデータ信号におけるその他のデータを具現化する。また、通信媒体は、典型的には、あらゆる情報配信媒体を含む。「変調されたデータ信号」という用語は、一つ以上の特徴的な信号セットを持つ信号または信号内の情報を符号化するような態様で変調された信号として定義される。例として、以下は限定するものではないが、通信媒体は有線ネットワーク及び直接接続のような有線媒体を含む。そして、通信媒体は音波、高周波、赤外線及びその他無線媒体のような無線媒体を含む。上記に言及されたあらゆる組み合わせは、いずれもコンピュータが読み取り可能な媒体の範囲に含まれるであろう。
【００１６】
発明の技術的範囲が、コンピュータが実行可能な命令の、一般的環境において具現化される時には、実施形態はプログラムモジュールを備えることができ、これらは一つ以上のシステム、コンピュータまたはその他の装置によって実行される。一般的に、プログラムモジュールはルーチン、プログラム、オブジェクト、コンポーネント、データ構造等が含まれる。そしてこれらは、特定のタスク処理または特定の抽象データ形式を実装する処理を行う。典型的に、プログラムモジュールの機能性は、様々な所望の態様で結合または配布することができる。
【００１７】
図１は実施形態１００に係るブロック構成図であり、クラウドコンピューティング環境を示している。クラウドコンピューティング環境は、ステートレスクラウドコンピューティングプロセスを使用してステートフルアプリケーションを実行することができる環境である。実施形態１００は、クラウドコンピューティング環境およびステートフルアプリケーションの実行を可能とする様々なコンポーネントの簡素化された例である。
【００１８】
図１は、システムの機能コンポーネントを示す。ある場合では、コンポーネントはハードウェアコンポーネント、ソフトウェアコンポーネントまたはハードウェアとソフトウェアの組み合わせとすることができる。あるコンポーネントはアプリケーションレベルのソフトウェアであり、その一方でその他のコンポーネントはオペレーティングシステムレベルのコンポーネントとすることができる。ある場合では、コンポーネント同士の接続は、二つ以上のコンポーネントが単一のハードウェアプラットフォーム上で動作している密接な接続とすることができる。その他の場合では、接続は、長距離にわたるネットワーク接続を経由することができる。各々の実施形態では、発明の詳細な説明における機能を達成するために、異なるハードウェア、ソフトウェア、および相互接続のアーキテクチャを使用することができる。
【００１９】
多くのアプリケーション、特に従来型のデスクトップまたはサーバアプリケーションは、ステートフル(stateful)であり得る。ステートフルという用語は、アプリケーションが動作し、およびインストール中および使用中にアプリケーションの状態情報を変更することができるということを指し示すために使用される。多くの場合では、ステートフルアプリケーションは、システムレジストリ、設定ファイル、設定データベースまたは他のストレージ機構に設定情報を格納することができる。
【００２０】
ステートフルアプリケーションの例では、アプリケーションによって、ユーザが所定のプロパティをカスタマイズし、またはユーザインターフェースを特定の態様に変更することができる。それらカスタマイズは、アプリケーションの状態情報を構成することができる。もう一つの実施形態では、アプリケーションを頻繁に更新することができるが、各々の更新はアプリケーションの状態情報を構成することを伴う。
【００２１】
あるクラウドコンピューティング環境では、当該環境で実行しているプロセスは、生成された時からステートレスである。多くのこのような実施形態では、プロセスはデータセンタ内で実行することができ、そしてプロセスはあるハードウェアプラットフォーム上の仮想マシンから別のハードウェアプラットフォーム上の仮想マシンへ移すことができる。このようなプロセスの移行中、データセンタはプロセスをあちこちに移すことができる。しかし、データセンタは、ハードウェアプラットフォーム、仮想マシン、仮想マシン内で動作するオペレーティングシステムまたはその他何れのコンポーネントのような、様々なバックエンドコンポーネントと関連付けられた何れの状態情報をも移すことはできない。
【００２２】
このようなアーキテクチャにより、クラウドコンピューティング環境は、基礎となるハードウェアおよびオペレーティングシステムを非常に効率的な態様で管理することができる。使用率が低い間、プロセスはハードウェアプラットフォームの小さなサブセットに統合される一方で、その他のハードウェアプラットフォームはオフとなり得る。オペレーティングシステムの新しいバージョンが利用可能となった時、または既存のオペレーティングシステムへのアップグレードまたはパッチが作成された時、プロセスを一時的に停止しまたは更新版のオペレーティングシステムと共に他のハードウェアプラットフォームへ移すことができる。その後、元のプラットフォームに戻され、更新版のオペレーティングシステムと共にプロセスを動作することができる。
【００２３】
多くのクラウドコンピューティングサービスは、多くの異なるコンピューティングプロセスをホストし、そして多くの異なる顧客にサービスを提供する。各々の顧客は自己のプロセスに責任を持ち得るが、クラウドコンピューティングサービスはハードウェアおよびソフトウェアサポートサービスを提供することができる。クラウドコンピューティングサービスは大規模なデータセンタでのプロセスを管理することができるが、クラウドコンピューティングサービスでは、物理的なセキュリティ、ハードウェアおよびソフトウェア基盤の専門的な管理、高速なネットワーク帯域、冗長化されたハードウェアプラットフォーム、そして稼動の保証を、他の便益の中から提供することができる。
【００２４】
あるクラウドコンピューティング環境は、世界中に存在する複数のデータセンタを動作させることができる。このような環境により、ユーザは異なるタイムゾーンで自己のプロセスと実行するアプリケーションを有することができ、世界中の従業員や顧客にアクセスを提供する時に、より早い接続とより少ないネットワークコストで行うことができる。
【００２５】
多くのクラウドコンピューティング環境はまた、クラウドストレージを提供する。クラウドストレージは、時々ブロブストレージ(blob storage)としても知られているが、データセンタで動作することができるデータストレージシステムとなり得る。多くの実施形態では、クラウドストレージは、データおよびサービスとしての実行可能コードのためにストレージを提供することができる。このようなサービスは、ハードウェアとソフトウェア基盤をデータストレージサービスと独立して管理することができ、そして、ユーザはハードウェアおよび基盤を直接触らないで済むようになる。ユーザの視点からすると、クラウドストレージシステムは高可用および高信頼な無限のサイズのストレージシステムとして見ることができる。
【００２６】
従来型のステートフルアプリケーションをステートレスプロセスにて動作させるために、状態情報を格納できる領域に対する全ての読み取りおよび書き込みコールを捕捉し、クラウドストレージシステムに格納され得る独立した状態情報へ当該コールをリダイレクトするために仮想化レイヤを使用することができる。
【００２７】
仮想化レイヤは、ステートフルプロセス内で動作することができ、アプリケーション内部の実行可能コードの読み取りおよび書き込み動作を監視することができる。ある実施形態では、仮想化レイヤを構成することができ、読み取りおよび書き込み動作の所定のサブセットを、状態が関連した動作と状態が関連していないその他の動作とに特定する。状態が関連した各々の読み取りおよび書き込み動作のために、仮想化レイヤはアプリケーション状態情報ストレージオブジェクトに当該動作をリダイレクトすることができる。
【００２８】
例えば、典型的なステートフルアプリケーションは、オペレーティングシステムのレジストリまたは設定ファイルへ、変更を書き込むことができる。それら書き込み動作は、仮想化レイヤによって捕捉され、そしてクラウドストレージオブジェクトに格納される、アプリケーション状態情報ストレージオブジェクトへリダイレクトすることができる。
【００２９】
ある実施形態では、仮想化レイヤが、アプリケーション状態情報ストレージオブジェクトを、ステートレスクラウドプロセスによってアクセス可能となるローカルのストレージオブジェクトに格納する。このような実施形態では、クラウドプロセス管理システムは、クラウドプロセスが停止される時に仮想化レイヤにコマンドを送ることができる。クラウドプロセス管理システムは、別の仮想マシンへプロセスが移される時か、さもなければメンテナンスまたはその他の理由により一時停止される時に、そのようなコマンドを発行することができる。
【００３０】
そのような実施形態では、仮想化レイヤは、あらゆる変更を、ローカルに格納されたアプリケーション状態情報からクラウドストレージ内のオブジェクトへと書き込むことができる。そのような実施形態は、通常動作の間のあらゆる変更に伴って定期的にクラウドストレージオブジェクトを更新することができる。その他の実施形態では、仮想化レイヤは、読み取りおよび書き込み動作を直接的にクラウドストレージオブジェクトへリダイレクトすることができる。
【００３１】
読み取りおよび書き込み動作がローカルに格納され、次いでクラウドストレージオブジェクトに対してコピーされる実施形態は、アプリケーション状態情報への高頻度のアクセスを実行するステートフルアプリケーションにとって、有益であり得る。このようなアプリケーションは、アプリケーション状態情報がクラウドストレージオブジェクトに対してネットワーク接続を経由して格納される時は、より低速で動作することができる。アプリケーションが、アプリケーション状態情報に低頻度でアクセスすることができるその他の実施形態は、クラウドストレージオブジェクトに対して直接的に読み取りおよび書き込みを行うことが、より好適である。
【００３２】
ある実施形態では、アプリケーションは、パッケージの形式でロードおよび格納することができる。パッケージは、アプリケーションの様々なコンポーネントの全てを含むことができ、全ての実行可能コード、実行可能なライブラリ、そしてアプリケーション状態情報を含む。パッケージは、シーケンサを伴う仮想化レイヤを使用することができる、パッケージングシステムにより作成することができる。シーケンサは、アプリケーションによって使用される実行可能コード全てを特定することができ、ライブラリ、アセンブリ、そしてアプリケーション自体と一緒に配布されまたは配布されないその他コンポーネントを含む。パッケージは、アプリケーションによって使用されるあらゆるデータファイルを伴う、アプリケーション実行可能ファイルを含むパッケージを作成することができる。ある実施形態では、パッケージはアプリケーション状態情報を含むことができるが、他の実施形態では、アプリケーション状態情報を独立したストレージオブジェクトに格納することができる。
【００３３】
実施形態１００は、クラウドコンピューティングプラットフォーム１０２を図示する。クラウドコンピューティングプラットフォーム１０２は、ユーザによって管理することができるステートレスクラウドプロセスおよびクラウドコンピューティング提供事業者によって管理することができる様々なハードウェアとソフトウェア基盤を提供することができる。
【００３４】
クラウドコンピューティングプラットフォーム１０２は、多くのハードウェアコンピューティングプラットフォームから構成される、クラウドコンピューティングファブリック１０４と共に、様々なソフトウェアコンポーネント１０６を有することができる。
【００３５】
クラウドコンピューティングファブリック１０４は、多くのサーバコンピュータによって構成することができる。ある実施形態では、単一のデータセンタが、数百、数千または数十万台にも及ぶハードウェアプラットフォームを有することができる。ハードウェアプラットフォームは、各々プロセッサ１０８、ローカルメモリ１１０そしてローカルストレージ１１２を有することができる。ある場合では、ハードウェアプラットフォームは、ユーザインターフェース１１４およびネットワークインターフェース１１６を有することができる。
【００３６】
ソフトウェアコンポーネント１０６の一部として、クラウドコンピューティング環境１０２は、クラウドソフトウェアコンポーネント１１８を有することができる。クラウドソフトソフトウェアコンポーネント１１８は、クラウドサービス提供事業者によって管理され、そしてユーザが直接触ることができない。
【００３７】
クラウドソフトウェアコンポーネント１１８は、クラウド管理システム１２１だけではなくクラウドオペレーティングシステム１２０も含むことができる。クラウドオペレーティングシステム１２０は、各々のハードウェアプラットフォーム上の一つ以上の仮想マシン１２２をホストするためのハイパーバイザとして動作を行うことができる。各々の仮想マシン１２２は、ステートレスなクラウドプロセス１２６が実行可能なオペレーティングシステム１２４を有することができる。
【００３８】
クラウド管理システム１２１は、クラウドコンピューティングサービスの様々なコンポーネントを管理することができる。クラウド管理システム１２１は、仮想マシンをあるハードウェアプラットフォームから別のプラットフォームへ移し、仮想マシンを開始し、停止しそして一時停止し、異なるプロセスにリソースを割り振り、その他の管理サービスを実行するような機能を実行する能力がある。クラウド管理システム１２１は、オペレーティングシステムを更新するため、ハードウェアをアップデートまたは修理するため、そしてさもなければデータセンタ内部のハードウェアとソフトウェアの管理を行うためにクラウドサービス提供者によって使用されるシステムであり得る。
【００３９】
クラウドプロセス１２６は、ユーザがクラウドコンピューティング環境１０２内でアプリケーションを実行することができるように、ユーザが直接触ることができるようになっている。クラウドプロセス１２６はステートレスプロセスであり、プロセス継続中のいかなる状態情報をもセーブやリストアすることができない。
【００４０】
仮想化レイヤ１２８およびステートフルアプリケーション１３０は、ステートレスなクラウドプロセス１２６によって実行することができる。仮想化レイヤ１２８が、アプリケーション１３０に関連付けられた実行可能コードを監視し、状態情報を検知するために、アプリケーション１３０は、仮想化レイヤ１２８に登録することができる。
【００４１】
ある実施形態では、アプリケーション１３０は、パッケージの形式でクラウドコンピューティングプラットフォーム１０２に提供することができる。パッケージは、実行可能コード並びにアプリケーションの初期状態情報を含むことができる。初期状態情報は、最初にインストールされ設定された時のアプリケーション１３０の状態情報であり得る。アプリケーション１３０が動作を開始した後に、仮想化レイヤ１２８は、初期の状態情報と現在の状態情報との差である第二の状態情報のセットを作成および維持することができる。
【００４２】
このような実施形態では、仮想化レイヤ１２８は様々な差分機構を含むことができ、差分機構は初期状態情報への変更を特定することおよびそれら変更情報を独立した変更データベースへ格納することができる。また、差分機構は、初期状態情報をロードし、独立した変更データベースを使用して現在の状態情報を再度作成することにより、アプリケーション１３０を格納された状態情報へ戻すことができる。
【００４３】
ある実施形態では、アプリケーション１３０はパッケージを使用することなくインストールされ、および実行されることができる。このような実施形態では、スクリプトまたはその他機構が、クラウドプロセス１２６上の仮想化レイヤ１２８を最初にインストールおよび実行することができ、次いで、アプリケーション１３０をインストールおよび実行することができる。アプリケーション１３０のインストール動作中、仮想化レイヤ１２８はアプリケーション状態情報に作用する読み取りおよび書き込み動作を、データベースや他のストレージ機構へリダイレクトすることができる。
【００４４】
仮想化レイヤ１２８は、アプリケーション状態情報１３６をクラウドストレージ１３４に格納することができ、クラウドストレージ１３４はネットワーク１３２を経由してアクセスすることができる。
【００４５】
ある実施形態では、仮想化レイヤ１２８は、読み取りおよび書き込み処理をクラウドストレージ１３４に直接的に行うことができ、それぞれがアプリケーション状態情報１３６への読み取りおよび書き込み動作となり得る。このような実施形態では、アプリケーション状態情報１３６はバーチャルハードディスクに格納することができる。アプリケーション状態情報１３６を内包するバーチャルハードディスクは、クラウドプロセス１２６が開始された時にクラウドプロセス１２６にマウントすることができ、そして仮想化レイヤ１２８が読み取りおよび書き込み動作をアプリケーション状態情報１３６に対して実行することができる簡素な機構を提供することができる。
【００４６】
他の実施形態では、仮想化レイヤ１２８は、クラウドプロセス１２６内にローカルアプリケーション状態情報を維持することができる。このような実施形態では、クラウド管理システム１２１はクラウドプロセス１２６のために停止コマンドを発行することができる。そして、仮想化レイヤ１２８は、そのようなコマンドを受信すると、ローカルに格納されたアプリケーション状態情報を、クラウドストレージ１３４に格納されたアプリケーション状態情報１３６に書き込むことができる。
【００４７】
クラウドストレージ１３４は、アプリケーションパッケージ１３８並びに実行可能な仮想化レイヤ１４０を含むことができる。ある実施形態では、インストーラーパッケージは、アプリケーションパッケージと共に仮想化レイヤの実行可能なコンポーネントを内包することができる。実行可能な仮想化レイヤ１４０およびアプリケーションパッケージ１３８は、アプリケーション１３０が開始される時に、クラウドプロセス１２６にロードすることができる。多くの実施形態では、仮想化レイヤ１２８とアプリケーション１３０のロードおよび実行は、スクリプトまたはその他実行可能ファイルで定義することができる。ある場合では、ユーザが手作業で仮想化レイヤ１２８をロードおよび構成し、次いでアプリケーション１３０をロードおよび開始することができる。
【００４８】
アプリケーション１３０はサーバアプリケーションとすることができ、様々なクライアント装置１４２がネットワーク１３２を経由してアクセスすることができる。ネットワーク１３２はローカルエリアネットワーク、ワイドエリアネットワーク、インターネットまたはその他のネットワーク構成であり得る。
【００４９】
サーバアプリケーションとして、アプリケーション１３０は、クライアント装置１４２によって開始される通信へ応答することができる。そのようなアプリケーションの例は、電子メールメッセージをデータベースに格納することができる、電子メールまたはメッセージングシステムとすることができる。クライアント装置１４２は、ウェブブラウザ、電子メールクライアントまたはその他クライアントベースのソフトウェアを使用して、データベース内の電子メールメッセージへアクセスすることができる。別の例では、アプリケーション１３０は、クライアントがウェブブラウザを使用してアクセスができるウェブサイトとすることができる。
【００５０】
アプリケーションパッケージが使用される時、パッケージ生成システム１４４は、アプリケーションパッケージの初期バージョンを作成することができる。パッケージ生成システム１４４は、ハードウェアプラットフォーム１４６を有することができる。ハードウェアプラットフォーム１４６は、プロセッサ、ＲＡＭ、ローカルストレージおよびユーザインターフェースとネットワークインターフェースと共に、様々なアプリケーションが動作するオペレーティングシステム１４８を含むことができる。
【００５１】
仮想化レイヤ１５０は、シーケンサ１５２と共に使用することができ、アプリケーション１５４をインストールおよび実行し、アプリケーションパッケージ１５６を作成する。多くの実施形態では、アプリケーションパッケージ１５６はアプリケーション状態情報１５８を含むことができるが、アプリケーション状態情報１５８は初期の状態情報とすることができる。
【００５２】
図２は実施形態２００フローチャートであり、アプリケーションパッケージの作成方法を示している。実施形態２００の処理は、どのようにアプリケーションパッケージが仮想化レイヤを使用して作成され、実行のための準備をすることができるかを示した簡素化された例である。
【００５３】
他の実施形態では、異なるシーケンス、追加的またはより少ないステップそして異なる専門技術や用法を使用して同様の機能を実現することができる。ある実施形態では、様々な動作または動作セットは、その他の動作と並行して、同期状態でも非同期状態でも実行することができる。図２の動作ステップは、簡素化された形態で動作の原理を図示するために選択された。
【００５４】
実施形態２００は、アプリケーションパッケージを作成するための方法の例である。アプリケーションパッケージは、アプリケーションのための初期状態または基準状態を定義することができる。ある実施形態では、アプリケーションパッケージが、クラウドプロセス内でインストールされそして実行することができる。このような実施形態は、仮想化レイヤをインストールすることができ、そしてアプリケーションパッケージを実行するためにロードすることができる、管理アプリケーションやスクリプトを含むことができる。
【００５５】
アプリケーションパッケージは、アプリケーションによって呼び出された全ての実行可能ファイルを内包することができるが、これらはライブラリ、アセンブリ、または様々な追加コンポーネントと共に、インストールまたは通常動作中にアプリケーションによって格納されたあらゆるアプリケーション状態情報を含む。実施形態２００の動作は、インストールまたは通常動作中に、様々な実行可能ファイルを特定するため、そしてアプリケーションの状態を捕捉するために実行することができる。特定されるコンポーネントの全ては、パッケージに追加することができ、そしてパッケージは、実施形態２００の動作が終了する時の状態で、アプリケーションを再生成するために使用することができる。
【００５６】
実施形態２００の動作は、パッケージ生成システム１１４および、特にシーケンサ１５２と仮想化レイヤ１５０によって実行されるそれら動作が相当し得る。
【００５７】
ブロック２０２で、システムは開始する。ブロック２０４で、仮想化レイヤがロードされる。
【００５８】
ブロック２０６で、監視すべきストレージオブジェクトが特定される。ストレージオブジェクトは、設定ファイル、設定データベース、レジストリまたはその他オブジェクトとすることができる。ブロック２０８で、オブジェクトは仮想化レイヤに登録され、そして仮想化レイヤがそれらオブジェクトの変更を監視し、それら変更情報をアプリケーション状態情報ストレージシステムに保存する。ある実施形態では、仮想化レイヤはシステムにおける全てのオブジェクトの変更を監視することができる。その他の実施形態は、特定のプロセスの変更を監視することができる。
【００５９】
異なる実施形態は、アプリケーション状態情報を格納するために、異なるストレージシステムを使用することができる。ある実施形態では、アプリケーションまたはサービスは、独立したレジストリ、データベース、設定ファイルまたはその他のストレージオブジェクトを維持することができ、そしてアプリケーション状態情報への読み取りおよび書き込み要求に対して応答することができる。ある実施形態では、そのような機能は仮想化レイヤによって実行することができる。
【００６０】
ステップ２１０で、仮想化レイヤは、監視されたストレージオブジェクトへのリダイレクトパスを作成することができる。リダイレクトパスは、読み取りおよび書き込みコールをリダイレクトすることができる。読み取りおよび書き込みコールは、アプリケーション状態情報ストレージオブジェクトへリダイレクトするために、監視されたストレージオブジェクトへ方向付けすることができる。
【００６１】
ブロック２１２で、アプリケーション内部では、アプリケーション状態情報を作成し使用可能なサービスまたは実行可能ファイルが特定される。ある実施形態では、サービスまたは実行可能ファイルは、アプリケーションを実行する前に個別に特定することができる。その他の実施形態では、サービスまたは実行可能ファイルは、アプリケーションを実行した後に特定することができ、そしてアプリケーションに関連付けられるとともに監視されたオブジェクトへ読み取りまたは書き込みを行う、それらサービスまたは実行可能ファイルによって特定することができる。
【００６２】
ステップ２１４で、アプリケーションの実行を開始することができる。ある実施形態では、アプリケーションはインストールプロセスを開始することができる。その他の実施形態では、アプリケーションは、単に実行を開始するに過ぎない。
【００６３】
ブロック２１６で、実行またはインストールの間、監視されたストレージオブジェクトのうち一つへの変更を検出することができる。ブロック２１６で変更が検出された時、ブロック２１８で変更を格納することができる。ある実施形態では、ブロック２１６およびブロック２１８の動作は、アプリケーションのインストールの間に実行することができ、そしてアプリケーションの初期または好適な状態を生成することができる。
【００６４】
ブロック２２０で、アプリケーションが実行中のある一点において、終了コマンドを受信することができる。その後、アプリケーションおよび状態情報ストレージオブジェクトをアプリケーションパッケージ内に保存することができる。また、多くの実施形態では、アプリケーションに関連付けられた実行可能ファイルおよびデータは、特定されるとともにアプリケーションパッケージに格納することができる。
【００６５】
図３は実施形態３００に係る、ステートレスクラウドプラットフォームのようなステートレスプラットフォーム内部の、ステートフルアプリケーションを開始および再開するための方法を示すフローチャートを図示したものである。実施形態３００の処理は、クラウドコンピューティング環境においてどのようにアプリケーションが開始または再開することができるかを示した、簡素化された例である。クラウドコンピューティング環境内では、ステートレスクラウドコンピューティングプラットフォームで実行しているアプリケーションは、一時停止しそして再開することができる。なぜならば、クラウドコンピューティングサービス提供事業者は、ハードウェアまたはソフトウェアのメンテナンスを実行するため、ハードウェアまたはソフトウェアを更新するため、またはデータセンタ内部のプロセス管理のために、プロセスを異なるハードウェアまたはソフトウェアプラットフォームに移すことができるからである。
【００６６】
その他の実施形態では、異なるシーケンス、追加的またはより少ないステップそして異なる専門技術や用法を使用して同様の機能を実現することができる。ある実施形態では、様々な動作または動作セットは、その他の動作と並行して、同期状態でも非同期状態でも実行することができる。図３の動作ステップは、簡素化された形態で動作の原理を図示するために選択された。
【００６７】
実施形態３００は、ステートレスプロセス内でステートフルアプリケーションをロードおよび実行する処理の方法を表している。仮想化レイヤは、アプリケーション状態情報に関連付けられる読み取りおよび書き込みコールをリダイレクトするために使用することができる。
【００６８】
実施形態３００の処理は、アプリケーション状態情報を内包するバーチャルハードディスクを使用することができる。バーチャルハードディスクは、ハードディスクストレージ装置をソフトウェアで代替したものである得る。バーチャルハードディスクは、物理的なハードディスクストレージ装置と似たような態様でマウントおよび操作することができる。しかし、バーチャルハードディスクは、バーチャルハードディスクが簡素なコンピュータファイルであるかのように、移動され、複製され、バックアップされ、そしてその他の動作を実行することができる。
【００６９】
多くの実施形態では、バーチャルハードディスクは、ネットワーク接続を経由してマウントおよびアクセスすることができる。バーチャルハードディスクが非常に頻繁にアクセスされるようなある実施形態では、ネットワーク接続が多くのネットワーク帯域を占有し得る。全ての帯域と遅延を含む、ネットワークの性能を考慮することにも依存するが、ある実施形態は、バーチャルハードディスクを、ローカルストレージ装置または性能を最大化するためにローカルプロセッサの近くの別のストレージ装置へ移すことができる。
【００７０】
クラウドストレージシステムは、時々ブロブストレージ(blob storage)として知られているが、アプリケーション状態情報を内包するバーチャルハードディスクを格納するために使用することができる。このような実施形態では、バーチャルハードディスクは、ネットワークコネクションを通じてクラウドストレージシステムへアクセスすることができる。アプリケーション状態情報が頻繁にアクセスされる、またはクラウドストレージシステムへのネットワーク接続のレイテンシまたは帯域が、逆にネットワークの性能に影響を及ぼす実施形態では、アプリケーション状態情報のコピーは、クラウドプロセスがアプリケーションを実行するために、ローカルストレージ装置に配置することができる。このような実施形態では、アプリケーション状態情報は、クラウドストレージシステム上のバーチャルハードディスクに定期的に同期することができる。
【００７１】
実施形態３００は、ステートレスなクラウドコンピューティングプラットフォームのような、ステートレスプラットフォーム内で、ステートフルアプリケーションを開始または再開するための方法を図示する。実施形態３００の処理は、ユーザがアプリケーションを最初に開始するときにユーザが実行することができる。ある場合では、実施形態３００は、クラウドサービス提供事業者がメンテナンスを行うため、処理容量を調整するため、またはその他の理由のためにプロセスを停止および再開する時にクラウドサービス提供事業者が実行することができる。
【００７２】
ブロック３０２で、クラウドプロセスを開始することができる。クラウドプロセスは、システムまたはアプリケーション状態情報が格納されずまたは管理されていない場合では、ステートレスプロセスとなり得る。
【００７３】
ブロック３０４で、仮想化レイヤをロードすることができる。仮想化レイヤは、設定ファイルや、設定情報、設定データベース、レジストリまたはその他ストレージオブジェクトを含むディレクトリのような特定のストレージオブジェクトへの読み取りおよび書き込みコールを監視することができる。仮想化レイヤは、それらコールをアプリケーション状態情報ストレージオブジェクトへ、またはバーチャルハードディスク上に格納されたストレージオブジェクトのセット内へリダイレクトすることができる。
【００７４】
ブロック３０４で、仮想化レイヤがロードされた後に、ブロック３０６で、実行されるであろうアプリケーションは、監視する仮想化レイヤと関連付けることができる。関連付けを行う機構は、様々な実施形態毎に異なり得る。ある実施形態では、仮想化レイヤは、監視対象のアプリケーション内の特定の実行可能ファイルと関連付けることができる。ある実施形態では、仮想化レイヤは、監視対象の特定のストレージオブジェクトと関連付けることができる。
【００７５】
ブロック３１０で、アプリケーションの以前の状態情報を内包することができるバーチャルハードディスクのために、クラウドストレージを検索することができる。ブロック３１２で、適切なバーチャルハードディスクを選択した後で、ブロック３１４で、バーチャルハードディスクをマウントすることができる。ある実施形態では、マルチプル(multiple)バーチャルハードディスクは、アプリケーションの異なるバージョンのために作成することができる。例えば、夜間毎または週毎のバックアップ動作は、アプリケーションの状態情報の異なるバージョンを作成することができる。
【００７６】
ある実施形態では、アプリケーションのマルチプル(multiple)インスタンスを実行することができ、各々は独立したステートレススレッドで実行することができる。一例は、負荷分散システムで組み込むことができるアプリケーションである。アプリケーションは、アプリケーションの二つ、三つ、または数百ものインスタンスを、大きな負荷に応答するために負荷分散システムによって管理することができる。このような実施形態では、アプリケーションの各々のインスタンスは、アプリケーションの特定のインスタンスのための特定のアプリケーション状態情報を内包することができる、個別のバーチャルハードディスクを有することができる。
【００７７】
このような例では、アプリケーション状態情報を内包することができるバーチャルハードディスクを、バーチャルハードディスクのプール内に配置することができる。アプリケーションへの負荷が増すに伴って、新しいステートレスプロセスを作成することができ、そしてアプリケーションインスタンスのためのアプリケーション状態情報を提供するために、プール内のバーチャルハードディスクの一つを選択することおよび使用することができる。ブロック３１４で、バーチャルハードディスクがマウントされる時、他のプロセスによってはバーチャルハードディスクのマウントができなくなる場合がある。
【００７８】
ブロック３１４で、一旦バーチャルハードディスクがマウントされると、ブロック３１６で、バーチャルハードディスクは仮想化レイヤと関連付けることができる。ブロック３１６の関連付けは、バーチャルハードディスクのアプリケーション状態情報ストレージオブジェクトを特定すること、および仮想化レイヤにそれらストレージオブジェクトを登録することを含むことができる。
【００７９】
ある実施形態では、バーチャルハードディスクは、アプリケーションの実行可能コードを内包することができるが、コードはアプリケーションパッケージ形式であってもなくてもよい。ある実施形態では、アプリケーション実行可能コードまたはアプリケーションパッケージは独立してロードすることができる。
【００８０】
アプリケーションパッケージが使用される時に、アプリケーションパッケージは、アプリケーション状態情報の初期または「好適な」コピーを含むことができる。アプリケーションが使用されるに伴って、アプリケーション状態情報への変更は、独立したアプリケーション状態情報ストレージオブジェクトに作成されそして格納されることができる。このような実施形態では、差分機構は、初期のアプリケーション状態情報を変更されないように保持するために使用することができるが、差分機構は、変更を初期のアプリケーション状態情報へ適用することができ、そしてそのような変更をバーチャルハードディスク内のストレージオブジェクトの第二のセットに格納することができる。
【００８１】
ブロック３１８で、アプリケーションが開始または再開動作を行うことができる。
【００８２】
ブロック３２０で、アプリケーションの動作中、監視された状態情報のロケーション(location)へのコールを監視することができる。ブロック３２２で、読み取り動作が行われる時に、ブロック３２４で、読み取り動作は、バーチャルハードディスク内の適切なストレージオブジェクトへリダイレクトすることができる。差分機構を使用することができ、アプリケーション状態情報の初期バージョンと現在のバージョンを独立して格納することができる実施形態では、差分機構は、どのストレージオブジェクトへアクセスを行い要求された状態情報を取り出すかを決定することができる。
【００８３】
ブロック３２２で、書き込み動作が行われた時に、ブロック３２６で、書き込み動作はバーチャルハードディスク上の適切なストレージオブジェクトへリダイレクトすることができる。アプリケーション状態情報が、ローカルに格納されたコピーを有ことができる実施形態では、ブロック３２８で、バーチャルハードディスクに格納されたアプリケーション状態情報のコピーを、更新することができる。
【００８４】
発明の範囲についての先の記述は、図示および詳細な説明の目的のためになされたものである。発明の詳細な説明は網羅的であることまたは発明の範囲を開示された厳密な形態に限定することを意図したものではない。そして、その他の修正や関連する形態も上述の教示に照らし取り得るものである。本実施形態が選択され説明されたが、これは発明の原理を最も良く説明するためのものであり、実施形態の実際上の適用によって、当業者が様々な実施形態や様々な修正形態で考えられる特定の用途に適する通りに発明を利用することが可能となる。添付された特許請求の範囲が従来技術によって限定される範囲を除いて、その他代替される実施形態を含むと解釈されることを意図している。
【図１】
0005961173.tif 000002
【図２】
0005961173.tif 000003
【図３】
0005961173.tif 000004