クラウドプロセスを開始するステップであって、前記クラウドプロセスは、ステートレスであり、およびクラウドストレージを有する、ステップと、前記クラウドプロセスに仮想化レイヤをロードし、および実行するするステップであって、前記仮想化レイヤは、状態変更を捕捉するとともに、クラウドストレージシステムへ前記状態変更をリダイレクトする、ステップと、前記仮想化レイヤが状態変更を特定し、および前記クラウドストレージシステムに前記状態変更を格納するように、前記クラウドプロセス上でステートフルアプリケーションを実行するステップとを備えることを特徴とする方法。前記クラウドプロセスは仮想マシン上で動作を行うことを特徴とする請求項1に記載の方法。前記クラウドプロセスはデータセンタ内で動作を行うことを特徴とする請求項2に記載の方法。前記クラウドストレージシステムはバーチャルハードディスクを備え、前記仮想化レイヤは前記状態変更を前記バーチャルハードディスクに格納するように構成されることを特徴とする請求項1に記載の方法。前記ステートフルアプリケーションはパッケージに格納されることを特徴とする請求項1に記載の方法。前記パッケージは前記状態変更を備えることを特徴とする請求項5に記載の方法。前記状態変更は前記パッケージとは独立していることを特徴とする請求項5に記載の方法。第二のクラウドプロセスを開始するステップと、前記仮想化レイヤをロードするステップと、前記ステートフルアプリケーションをロードするステップと、前記状態変更をロードするステップと、前記状態変更を使用して前記ステートフルアプリケーションを実行するステップとを更に備えることを特徴とする請求項1に記載の方法。複数の前記状態変更から前記状態変更を選択するステップであって、前記複数の状態変更の各々が、前記クラウドプロセスの複数のインスタンスに対応する状態変更を備える、ステップを更に備えることを特徴とする請求項8に記載の方法。前記複数の状態変更の各々は、異なるクラウドプロセスによって作成されることを特徴とする請求項9に記載の方法。前記複数のインスタンスの各々は、バーチャルハードディスクに格納されることを特徴とする請求項9に記載の方法。前記複数のインスタンスの各々は、単一の前記クラウドプロセスに対応する異なるバージョンの前記状態変更であることを特徴とする請求項11に記載の方法。クラウドプロセスを有するクラウドコンピューティング環境であって、前記クラウドプロセスの各々は、クラウドコンピューティングハードウェアファブリック上で実行するステートレスプロセスである、クラウドコンピューティング環境と、前記クラウドプロセス内で動作可能な仮想化レイヤであって、前記仮想化レイヤは、前記クラウドプロセスへの状態変更を捕捉し、および前記状態変更をクラウドストレージに格納する、仮想化レイヤと、第一のクラウドプロセスを開始し、前記第一のクラウドプロセスへなされた状態変更を捕捉し、および前記クラウドストレージに前記状態変更を格納するように、前記仮想化レイヤをロードし、前記仮想化レイヤ内でステートフルアプリケーションを実行する、クラウドプロセス管理システムとを備えることを特徴とするシステム。前記クラウドストレージ内でバーチャルハードディスクを更に作成する前記クラウドプロセス管理システムを備えることを特徴とする請求項13に記載のシステム。システム。前記バーチャルハードディスクをあらかじめ定められた間隔で格納し、前記バーチャルハードディスクの複数のバージョンを更に作成する前記クラウドプロセス管理システムを備えることを特徴とする請求項14に記載のシステム。クラウドコンピューティング環境は、アプリケーションへの状態変更を捕捉することおよびアプリケーションが停止または再開するときに状態変更が存続するために、仮想化レイヤを使用することができる。仮想化レイヤは、状態情報を格納するためにアプリケーションによって使用される様々なストレージ機構を監視することができ、そして、仮想化レイヤは、状態情報のために独立したストレージ機構を作成し管理することができる。仮想化レイヤは、ストレージ機構へのコールを認識することができ、独立したストレージ機構へのコールをリダイレクトすることができる。アプリケーションの状態情報は、クラウドストレージシステム内に格納することができ、アプリケーションが停止および再開する間、状態情報は存続することができる。多くの実施形態では、状態情報を格納するためにバーチャルハードディスクを使用することができ、そしてこのようなバーチャルハードディスクはクラウドストレージシステムに直接格納することができる。ある実施形態では、アプリケーションのマルチプルコピーを実行することができ、各々は独立した状態情報を有することができる。アプリケーションを実行しているプロセスが停止すると、状態情報を格納することができ、プロセスが再開されると、格納された状態情報のグループから状態情報を選択することができ、プロセスを以前の状態から再開することができる。図中の説明を通じて類似の参照番号が同一の構成要素を特定するように、本明細書においても同一の参照番号が同一の構成要素を特定する。構成要素が接続されているまたは連結されていると言及される時は、構成要素が互いに直接的に接続されているかまたは連結されている場合か、若しくは構成要素の間に介在する一つ以上の別の構成要素も更に存在する可能性がある。反対に、構成要素が直接的に接続されているまたは直接的に連結されていると言及される場合は、介在する別の構成要素は存在しない。発明の技術的範囲は、装置、システム、方法、及び/またはコンピュータプログラム製品として具現化することができる。従って、発明の技術的範囲の幾つかまたは全てはハードウェアにおいて及び/またはソフトウェアファームウェア、常駐ソフトウェア、マイクロコード、ステートマシーン、ゲートアレイ等を含むに具現化することができる。更には、発明の技術的範囲は、コンピュータが使用可能なまたはコンピュータが読み取り可能な記憶媒体上のコンピュータプログラム製品の形式をとることができる。そして、その記憶媒体は、演算実行システムによる使用のため、または演算実行システムに関連して、コンピュータが使用可能な、またはコンピュータが読み取り可能な記憶媒体において具現化されたプログラムコードを持つ。本明細書の文脈にて、コンピュータが使用可能なまたはコンピュータが読み取り可能な媒体は、あらゆる媒体を含む。これら媒体は、演算実行システム、装置または機器による使用またはこれらに関連して、プログラムを内包し、格納し、通信し、頒布しまたは伝送することができる。コンピュータが使用可能な、またはコンピュータが読み取り可能な媒体は、例えば、以下に限定されないが、電気的、磁気的、光学的、電磁的、赤外線を利用したもの、あるいは半導体システム、装置、機器または頒布用媒体である。例として、限定するものではないが、コンピュータが読み取り可能な媒体は、コンピュータ記憶媒体及び通信媒体を構成する。コンピュータ記憶媒体は、揮発性及び不揮発性、取り外し可能及び取り外し不可能な媒体を含み、コンピュータが読み取り可能な命令、データ構造、プログラムモジュールまたはその他のデータのように情報の格納のためのあらゆる方法や技術で実装される。コンピュータ記憶媒体は、以下に限定はされないが、RAM、ROM、EEPROM、フラッシュメモリまたはその他のメモリ技術であるCD-ROM、DVDまたはその他光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたはその他磁気ストレージ装置または所望の情報を格納するために使われ、命令実行システムによってアクセスすることができるその他あらゆる媒体が含まれる。注意するべきは、コンピュータが使用可能な、またはコンピュータが読み取り可能な媒体は、紙またはプログラムが印刷されるのに相応しいその他媒体である可能性がある。なぜならば、例えば、紙またはプログラムが印刷されるのに相応しいその他媒体から光学的読み取りを介してプログラムは電子的に読み取られる可能性があり、そしてコンパイルされ、解釈され、さもなければ好適に処理され、必要ならば、コンピュータのメモリに記憶されるからである。通信媒体は、典型的には、コンピュータが読み取り可能な命令、データ構造、プログラムモジュールまたは搬送波や他の伝送機構のように変調されたデータ信号におけるその他のデータを具現化する。また、通信媒体は、典型的には、あらゆる情報配信媒体を含む。変調されたデータ信号という用語は、一つ以上の特徴的な信号セットを持つ信号または信号内の情報を符号化するような態様で変調された信号として定義される。例として、以下は限定するものではないが、通信媒体は有線ネットワーク及び直接接続のような有線媒体を含む。そして、通信媒体は音波、高周波、赤外線及びその他無線媒体のような無線媒体を含む。上記に言及されたあらゆる組み合わせは、いずれもコンピュータが読み取り可能な媒体の範囲に含まれるであろう。発明の技術的範囲が、コンピュータが実行可能な命令の、一般的環境において具現化される時には、実施形態はプログラムモジュールを備えることができ、これらは一つ以上のシステム、コンピュータまたはその他の装置によって実行される。一般的に、プログラムモジュールはルーチン、プログラム、オブジェクト、コンポーネント、データ構造等が含まれる。そしてこれらは、特定のタスク処理または特定の抽象データ形式を実装する処理を行う。典型的に、プログラムモジュールの機能性は、様々な所望の態様で結合または配布することができる。図1は実施形態100に係るブロック構成図であり、クラウドコンピューティング環境を示している。クラウドコンピューティング環境は、ステートレスクラウドコンピューティングプロセスを使用してステートフルアプリケーションを実行することができる環境である。実施形態100は、クラウドコンピューティング環境およびステートフルアプリケーションの実行を可能とする様々なコンポーネントの簡素化された例である。図1は、システムの機能コンポーネントを示す。ある場合では、コンポーネントはハードウェアコンポーネント、ソフトウェアコンポーネントまたはハードウェアとソフトウェアの組み合わせとすることができる。あるコンポーネントはアプリケーションレベルのソフトウェアであり、その一方でその他のコンポーネントはオペレーティングシステムレベルのコンポーネントとすることができる。ある場合では、コンポーネント同士の接続は、二つ以上のコンポーネントが単一のハードウェアプラットフォーム上で動作している密接な接続とすることができる。その他の場合では、接続は、長距離にわたるネットワーク接続を経由することができる。各々の実施形態では、発明の詳細な説明における機能を達成するために、異なるハードウェア、ソフトウェア、および相互接続のアーキテクチャを使用することができる。多くのアプリケーション、特に従来型のデスクトップまたはサーバアプリケーションは、ステートフルであり得る。ステートフルという用語は、アプリケーションが動作し、およびインストール中および使用中にアプリケーションの状態情報を変更することができるということを指し示すために使用される。多くの場合では、ステートフルアプリケーションは、システムレジストリ、設定ファイル、設定データベースまたは他のストレージ機構に設定情報を格納することができる。ステートフルアプリケーションの例では、アプリケーションによって、ユーザが所定のプロパティをカスタマイズし、またはユーザインターフェースを特定の態様に変更することができる。それらカスタマイズは、アプリケーションの状態情報を構成することができる。もう一つの実施形態では、アプリケーションを頻繁に更新することができるが、各々の更新はアプリケーションの状態情報を構成することを伴う。あるクラウドコンピューティング環境では、当該環境で実行しているプロセスは、生成された時からステートレスである。多くのこのような実施形態では、プロセスはデータセンタ内で実行することができ、そしてプロセスはあるハードウェアプラットフォーム上の仮想マシンから別のハードウェアプラットフォーム上の仮想マシンへ移すことができる。このようなプロセスの移行中、データセンタはプロセスをあちこちに移すことができる。しかし、データセンタは、ハードウェアプラットフォーム、仮想マシン、仮想マシン内で動作するオペレーティングシステムまたはその他何れのコンポーネントのような、様々なバックエンドコンポーネントと関連付けられた何れの状態情報をも移すことはできない。このようなアーキテクチャにより、クラウドコンピューティング環境は、基礎となるハードウェアおよびオペレーティングシステムを非常に効率的な態様で管理することができる。使用率が低い間、プロセスはハードウェアプラットフォームの小さなサブセットに統合される一方で、その他のハードウェアプラットフォームはオフとなり得る。オペレーティングシステムの新しいバージョンが利用可能となった時、または既存のオペレーティングシステムへのアップグレードまたはパッチが作成された時、プロセスを一時的に停止しまたは更新版のオペレーティングシステムと共に他のハードウェアプラットフォームへ移すことができる。その後、元のプラットフォームに戻され、更新版のオペレーティングシステムと共にプロセスを動作することができる。多くのクラウドコンピューティングサービスは、多くの異なるコンピューティングプロセスをホストし、そして多くの異なる顧客にサービスを提供する。各々の顧客は自己のプロセスに責任を持ち得るが、クラウドコンピューティングサービスはハードウェアおよびソフトウェアサポートサービスを提供することができる。クラウドコンピューティングサービスは大規模なデータセンタでのプロセスを管理することができるが、クラウドコンピューティングサービスでは、物理的なセキュリティ、ハードウェアおよびソフトウェア基盤の専門的な管理、高速なネットワーク帯域、冗長化されたハードウェアプラットフォーム、そして稼動の保証を、他の便益の中から提供することができる。あるクラウドコンピューティング環境は、世界中に存在する複数のデータセンタを動作させることができる。このような環境により、ユーザは異なるタイムゾーンで自己のプロセスと実行するアプリケーションを有することができ、世界中の従業員や顧客にアクセスを提供する時に、より早い接続とより少ないネットワークコストで行うことができる。多くのクラウドコンピューティング環境はまた、クラウドストレージを提供する。クラウドストレージは、時々ブロブストレージとしても知られているが、データセンタで動作することができるデータストレージシステムとなり得る。多くの実施形態では、クラウドストレージは、データおよびサービスとしての実行可能コードのためにストレージを提供することができる。このようなサービスは、ハードウェアとソフトウェア基盤をデータストレージサービスと独立して管理することができ、そして、ユーザはハードウェアおよび基盤を直接触らないで済むようになる。ユーザの視点からすると、クラウドストレージシステムは高可用および高信頼な無限のサイズのストレージシステムとして見ることができる。従来型のステートフルアプリケーションをステートレスプロセスにて動作させるために、状態情報を格納できる領域に対する全ての読み取りおよび書き込みコールを捕捉し、クラウドストレージシステムに格納され得る独立した状態情報へ当該コールをリダイレクトするために仮想化レイヤを使用することができる。仮想化レイヤは、ステートフルプロセス内で動作することができ、アプリケーション内部の実行可能コードの読み取りおよび書き込み動作を監視することができる。ある実施形態では、仮想化レイヤを構成することができ、読み取りおよび書き込み動作の所定のサブセットを、状態が関連した動作と状態が関連していないその他の動作とに特定する。状態が関連した各々の読み取りおよび書き込み動作のために、仮想化レイヤはアプリケーション状態情報ストレージオブジェクトに当該動作をリダイレクトすることができる。例えば、典型的なステートフルアプリケーションは、オペレーティングシステムのレジストリまたは設定ファイルへ、変更を書き込むことができる。それら書き込み動作は、仮想化レイヤによって捕捉され、そしてクラウドストレージオブジェクトに格納される、アプリケーション状態情報ストレージオブジェクトへリダイレクトすることができる。ある実施形態では、仮想化レイヤが、アプリケーション状態情報ストレージオブジェクトを、ステートレスクラウドプロセスによってアクセス可能となるローカルのストレージオブジェクトに格納する。このような実施形態では、クラウドプロセス管理システムは、クラウドプロセスが停止される時に仮想化レイヤにコマンドを送ることができる。クラウドプロセス管理システムは、別の仮想マシンへプロセスが移される時か、さもなければメンテナンスまたはその他の理由により一時停止される時に、そのようなコマンドを発行することができる。そのような実施形態では、仮想化レイヤは、あらゆる変更を、ローカルに格納されたアプリケーション状態情報からクラウドストレージ内のオブジェクトへと書き込むことができる。そのような実施形態は、通常動作の間のあらゆる変更に伴って定期的にクラウドストレージオブジェクトを更新することができる。その他の実施形態では、仮想化レイヤは、読み取りおよび書き込み動作を直接的にクラウドストレージオブジェクトへリダイレクトすることができる。読み取りおよび書き込み動作がローカルに格納され、次いでクラウドストレージオブジェクトに対してコピーされる実施形態は、アプリケーション状態情報への高頻度のアクセスを実行するステートフルアプリケーションにとって、有益であり得る。このようなアプリケーションは、アプリケーション状態情報がクラウドストレージオブジェクトに対してネットワーク接続を経由して格納される時は、より低速で動作することができる。アプリケーションが、アプリケーション状態情報に低頻度でアクセスすることができるその他の実施形態は、クラウドストレージオブジェクトに対して直接的に読み取りおよび書き込みを行うことが、より好適である。ある実施形態では、アプリケーションは、パッケージの形式でロードおよび格納することができる。パッケージは、アプリケーションの様々なコンポーネントの全てを含むことができ、全ての実行可能コード、実行可能なライブラリ、そしてアプリケーション状態情報を含む。パッケージは、シーケンサを伴う仮想化レイヤを使用することができる、パッケージングシステムにより作成することができる。シーケンサは、アプリケーションによって使用される実行可能コード全てを特定することができ、ライブラリ、アセンブリ、そしてアプリケーション自体と一緒に配布されまたは配布されないその他コンポーネントを含む。パッケージは、アプリケーションによって使用されるあらゆるデータファイルを伴う、アプリケーション実行可能ファイルを含むパッケージを作成することができる。ある実施形態では、パッケージはアプリケーション状態情報を含むことができるが、他の実施形態では、アプリケーション状態情報を独立したストレージオブジェクトに格納することができる。実施形態100は、クラウドコンピューティングプラットフォーム102を図示する。クラウドコンピューティングプラットフォーム102は、ユーザによって管理することができるステートレスクラウドプロセスおよびクラウドコンピューティング提供事業者によって管理することができる様々なハードウェアとソフトウェア基盤を提供することができる。クラウドコンピューティングプラットフォーム102は、多くのハードウェアコンピューティングプラットフォームから構成される、クラウドコンピューティングファブリック104と共に、様々なソフトウェアコンポーネント106を有することができる。クラウドコンピューティングファブリック104は、多くのサーバコンピュータによって構成することができる。ある実施形態では、単一のデータセンタが、数百、数千または数十万台にも及ぶハードウェアプラットフォームを有することができる。ハードウェアプラットフォームは、各々プロセッサ108、ローカルメモリ110そしてローカルストレージ112を有することができる。ある場合では、ハードウェアプラットフォームは、ユーザインターフェース114およびネットワークインターフェース116を有することができる。ソフトウェアコンポーネント106の一部として、クラウドコンピューティング環境102は、クラウドソフトウェアコンポーネント118を有することができる。クラウドソフトソフトウェアコンポーネント118は、クラウドサービス提供事業者によって管理され、そしてユーザが直接触ることができない。クラウドソフトウェアコンポーネント118は、クラウド管理システム121だけではなくクラウドオペレーティングシステム120も含むことができる。クラウドオペレーティングシステム120は、各々のハードウェアプラットフォーム上の一つ以上の仮想マシン122をホストするためのハイパーバイザとして動作を行うことができる。各々の仮想マシン122は、ステートレスなクラウドプロセス126が実行可能なオペレーティングシステム124を有することができる。クラウド管理システム121は、クラウドコンピューティングサービスの様々なコンポーネントを管理することができる。クラウド管理システム121は、仮想マシンをあるハードウェアプラットフォームから別のプラットフォームへ移し、仮想マシンを開始し、停止しそして一時停止し、異なるプロセスにリソースを割り振り、その他の管理サービスを実行するような機能を実行する能力がある。クラウド管理システム121は、オペレーティングシステムを更新するため、ハードウェアをアップデートまたは修理するため、そしてさもなければデータセンタ内部のハードウェアとソフトウェアの管理を行うためにクラウドサービス提供者によって使用されるシステムであり得る。クラウドプロセス126は、ユーザがクラウドコンピューティング環境102内でアプリケーションを実行することができるように、ユーザが直接触ることができるようになっている。クラウドプロセス126はステートレスプロセスであり、プロセス継続中のいかなる状態情報をもセーブやリストアすることができない。仮想化レイヤ128およびステートフルアプリケーション130は、ステートレスなクラウドプロセス126によって実行することができる。仮想化レイヤ128が、アプリケーション130に関連付けられた実行可能コードを監視し、状態情報を検知するために、アプリケーション130は、仮想化レイヤ128に登録することができる。ある実施形態では、アプリケーション130は、パッケージの形式でクラウドコンピューティングプラットフォーム102に提供することができる。パッケージは、実行可能コード並びにアプリケーションの初期状態情報を含むことができる。初期状態情報は、最初にインストールされ設定された時のアプリケーション130の状態情報であり得る。アプリケーション130が動作を開始した後に、仮想化レイヤ128は、初期の状態情報と現在の状態情報との差である第二の状態情報のセットを作成および維持することができる。このような実施形態では、仮想化レイヤ128は様々な差分機構を含むことができ、差分機構は初期状態情報への変更を特定することおよびそれら変更情報を独立した変更データベースへ格納することができる。また、差分機構は、初期状態情報をロードし、独立した変更データベースを使用して現在の状態情報を再度作成することにより、アプリケーション130を格納された状態情報へ戻すことができる。ある実施形態では、アプリケーション130はパッケージを使用することなくインストールされ、および実行されることができる。このような実施形態では、スクリプトまたはその他機構が、クラウドプロセス126上の仮想化レイヤ128を最初にインストールおよび実行することができ、次いで、アプリケーション130をインストールおよび実行することができる。アプリケーション130のインストール動作中、仮想化レイヤ128はアプリケーション状態情報に作用する読み取りおよび書き込み動作を、データベースや他のストレージ機構へリダイレクトすることができる。仮想化レイヤ128は、アプリケーション状態情報136をクラウドストレージ134に格納することができ、クラウドストレージ134はネットワーク132を経由してアクセスすることができる。ある実施形態では、仮想化レイヤ128は、読み取りおよび書き込み処理をクラウドストレージ134に直接的に行うことができ、それぞれがアプリケーション状態情報136への読み取りおよび書き込み動作となり得る。このような実施形態では、アプリケーション状態情報136はバーチャルハードディスクに格納することができる。アプリケーション状態情報136を内包するバーチャルハードディスクは、クラウドプロセス126が開始された時にクラウドプロセス126にマウントすることができ、そして仮想化レイヤ128が読み取りおよび書き込み動作をアプリケーション状態情報136に対して実行することができる簡素な機構を提供することができる。他の実施形態では、仮想化レイヤ128は、クラウドプロセス126内にローカルアプリケーション状態情報を維持することができる。このような実施形態では、クラウド管理システム121はクラウドプロセス126のために停止コマンドを発行することができる。そして、仮想化レイヤ128は、そのようなコマンドを受信すると、ローカルに格納されたアプリケーション状態情報を、クラウドストレージ134に格納されたアプリケーション状態情報136に書き込むことができる。クラウドストレージ134は、アプリケーションパッケージ138並びに実行可能な仮想化レイヤ140を含むことができる。ある実施形態では、インストーラーパッケージは、アプリケーションパッケージと共に仮想化レイヤの実行可能なコンポーネントを内包することができる。実行可能な仮想化レイヤ140およびアプリケーションパッケージ138は、アプリケーション130が開始される時に、クラウドプロセス126にロードすることができる。多くの実施形態では、仮想化レイヤ128とアプリケーション130のロードおよび実行は、スクリプトまたはその他実行可能ファイルで定義することができる。ある場合では、ユーザが手作業で仮想化レイヤ128をロードおよび構成し、次いでアプリケーション130をロードおよび開始することができる。アプリケーション130はサーバアプリケーションとすることができ、様々なクライアント装置142がネットワーク132を経由してアクセスすることができる。ネットワーク132はローカルエリアネットワーク、ワイドエリアネットワーク、インターネットまたはその他のネットワーク構成であり得る。サーバアプリケーションとして、アプリケーション130は、クライアント装置142によって開始される通信へ応答することができる。そのようなアプリケーションの例は、電子メールメッセージをデータベースに格納することができる、電子メールまたはメッセージングシステムとすることができる。クライアント装置142は、ウェブブラウザ、電子メールクライアントまたはその他クライアントベースのソフトウェアを使用して、データベース内の電子メールメッセージへアクセスすることができる。別の例では、アプリケーション130は、クライアントがウェブブラウザを使用してアクセスができるウェブサイトとすることができる。アプリケーションパッケージが使用される時、パッケージ生成システム144は、アプリケーションパッケージの初期バージョンを作成することができる。パッケージ生成システム144は、ハードウェアプラットフォーム146を有することができる。ハードウェアプラットフォーム146は、プロセッサ、RAM、ローカルストレージおよびユーザインターフェースとネットワークインターフェースと共に、様々なアプリケーションが動作するオペレーティングシステム148を含むことができる。仮想化レイヤ150は、シーケンサ152と共に使用することができ、アプリケーション154をインストールおよび実行し、アプリケーションパッケージ156を作成する。多くの実施形態では、アプリケーションパッケージ156はアプリケーション状態情報158を含むことができるが、アプリケーション状態情報158は初期の状態情報とすることができる。図2は実施形態200フローチャートであり、アプリケーションパッケージの作成方法を示している。実施形態200の処理は、どのようにアプリケーションパッケージが仮想化レイヤを使用して作成され、実行のための準備をすることができるかを示した簡素化された例である。他の実施形態では、異なるシーケンス、追加的またはより少ないステップそして異なる専門技術や用法を使用して同様の機能を実現することができる。ある実施形態では、様々な動作または動作セットは、その他の動作と並行して、同期状態でも非同期状態でも実行することができる。図2の動作ステップは、簡素化された形態で動作の原理を図示するために選択された。実施形態200は、アプリケーションパッケージを作成するための方法の例である。アプリケーションパッケージは、アプリケーションのための初期状態または基準状態を定義することができる。ある実施形態では、アプリケーションパッケージが、クラウドプロセス内でインストールされそして実行することができる。このような実施形態は、仮想化レイヤをインストールすることができ、そしてアプリケーションパッケージを実行するためにロードすることができる、管理アプリケーションやスクリプトを含むことができる。アプリケーションパッケージは、アプリケーションによって呼び出された全ての実行可能ファイルを内包することができるが、これらはライブラリ、アセンブリ、または様々な追加コンポーネントと共に、インストールまたは通常動作中にアプリケーションによって格納されたあらゆるアプリケーション状態情報を含む。実施形態200の動作は、インストールまたは通常動作中に、様々な実行可能ファイルを特定するため、そしてアプリケーションの状態を捕捉するために実行することができる。特定されるコンポーネントの全ては、パッケージに追加することができ、そしてパッケージは、実施形態200の動作が終了する時の状態で、アプリケーションを再生成するために使用することができる。実施形態200の動作は、パッケージ生成システム114および、特にシーケンサ152と仮想化レイヤ150によって実行されるそれら動作が相当し得る。ブロック202で、システムは開始する。ブロック204で、仮想化レイヤがロードされる。ブロック206で、監視すべきストレージオブジェクトが特定される。ストレージオブジェクトは、設定ファイル、設定データベース、レジストリまたはその他オブジェクトとすることができる。ブロック208で、オブジェクトは仮想化レイヤに登録され、そして仮想化レイヤがそれらオブジェクトの変更を監視し、それら変更情報をアプリケーション状態情報ストレージシステムに保存する。ある実施形態では、仮想化レイヤはシステムにおける全てのオブジェクトの変更を監視することができる。その他の実施形態は、特定のプロセスの変更を監視することができる。異なる実施形態は、アプリケーション状態情報を格納するために、異なるストレージシステムを使用することができる。ある実施形態では、アプリケーションまたはサービスは、独立したレジストリ、データベース、設定ファイルまたはその他のストレージオブジェクトを維持することができ、そしてアプリケーション状態情報への読み取りおよび書き込み要求に対して応答することができる。ある実施形態では、そのような機能は仮想化レイヤによって実行することができる。ステップ210で、仮想化レイヤは、監視されたストレージオブジェクトへのリダイレクトパスを作成することができる。リダイレクトパスは、読み取りおよび書き込みコールをリダイレクトすることができる。読み取りおよび書き込みコールは、アプリケーション状態情報ストレージオブジェクトへリダイレクトするために、監視されたストレージオブジェクトへ方向付けすることができる。ブロック212で、アプリケーション内部では、アプリケーション状態情報を作成し使用可能なサービスまたは実行可能ファイルが特定される。ある実施形態では、サービスまたは実行可能ファイルは、アプリケーションを実行する前に個別に特定することができる。その他の実施形態では、サービスまたは実行可能ファイルは、アプリケーションを実行した後に特定することができ、そしてアプリケーションに関連付けられるとともに監視されたオブジェクトへ読み取りまたは書き込みを行う、それらサービスまたは実行可能ファイルによって特定することができる。ステップ214で、アプリケーションの実行を開始することができる。ある実施形態では、アプリケーションはインストールプロセスを開始することができる。その他の実施形態では、アプリケーションは、単に実行を開始するに過ぎない。ブロック216で、実行またはインストールの間、監視されたストレージオブジェクトのうち一つへの変更を検出することができる。ブロック216で変更が検出された時、ブロック218で変更を格納することができる。ある実施形態では、ブロック216およびブロック218の動作は、アプリケーションのインストールの間に実行することができ、そしてアプリケーションの初期または好適な状態を生成することができる。ブロック220で、アプリケーションが実行中のある一点において、終了コマンドを受信することができる。その後、アプリケーションおよび状態情報ストレージオブジェクトをアプリケーションパッケージ内に保存することができる。また、多くの実施形態では、アプリケーションに関連付けられた実行可能ファイルおよびデータは、特定されるとともにアプリケーションパッケージに格納することができる。図3は実施形態300に係る、ステートレスクラウドプラットフォームのようなステートレスプラットフォーム内部の、ステートフルアプリケーションを開始および再開するための方法を示すフローチャートを図示したものである。実施形態300の処理は、クラウドコンピューティング環境においてどのようにアプリケーションが開始または再開することができるかを示した、簡素化された例である。クラウドコンピューティング環境内では、ステートレスクラウドコンピューティングプラットフォームで実行しているアプリケーションは、一時停止しそして再開することができる。なぜならば、クラウドコンピューティングサービス提供事業者は、ハードウェアまたはソフトウェアのメンテナンスを実行するため、ハードウェアまたはソフトウェアを更新するため、またはデータセンタ内部のプロセス管理のために、プロセスを異なるハードウェアまたはソフトウェアプラットフォームに移すことができるからである。その他の実施形態では、異なるシーケンス、追加的またはより少ないステップそして異なる専門技術や用法を使用して同様の機能を実現することができる。ある実施形態では、様々な動作または動作セットは、その他の動作と並行して、同期状態でも非同期状態でも実行することができる。図3の動作ステップは、簡素化された形態で動作の原理を図示するために選択された。実施形態300は、ステートレスプロセス内でステートフルアプリケーションをロードおよび実行する処理の方法を表している。仮想化レイヤは、アプリケーション状態情報に関連付けられる読み取りおよび書き込みコールをリダイレクトするために使用することができる。実施形態300の処理は、アプリケーション状態情報を内包するバーチャルハードディスクを使用することができる。バーチャルハードディスクは、ハードディスクストレージ装置をソフトウェアで代替したものである得る。バーチャルハードディスクは、物理的なハードディスクストレージ装置と似たような態様でマウントおよび操作することができる。しかし、バーチャルハードディスクは、バーチャルハードディスクが簡素なコンピュータファイルであるかのように、移動され、複製され、バックアップされ、そしてその他の動作を実行することができる。多くの実施形態では、バーチャルハードディスクは、ネットワーク接続を経由してマウントおよびアクセスすることができる。バーチャルハードディスクが非常に頻繁にアクセスされるようなある実施形態では、ネットワーク接続が多くのネットワーク帯域を占有し得る。全ての帯域と遅延を含む、ネットワークの性能を考慮することにも依存するが、ある実施形態は、バーチャルハードディスクを、ローカルストレージ装置または性能を最大化するためにローカルプロセッサの近くの別のストレージ装置へ移すことができる。クラウドストレージシステムは、時々ブロブストレージとして知られているが、アプリケーション状態情報を内包するバーチャルハードディスクを格納するために使用することができる。このような実施形態では、バーチャルハードディスクは、ネットワークコネクションを通じてクラウドストレージシステムへアクセスすることができる。アプリケーション状態情報が頻繁にアクセスされる、またはクラウドストレージシステムへのネットワーク接続のレイテンシまたは帯域が、逆にネットワークの性能に影響を及ぼす実施形態では、アプリケーション状態情報のコピーは、クラウドプロセスがアプリケーションを実行するために、ローカルストレージ装置に配置することができる。このような実施形態では、アプリケーション状態情報は、クラウドストレージシステム上のバーチャルハードディスクに定期的に同期することができる。実施形態300は、ステートレスなクラウドコンピューティングプラットフォームのような、ステートレスプラットフォーム内で、ステートフルアプリケーションを開始または再開するための方法を図示する。実施形態300の処理は、ユーザがアプリケーションを最初に開始するときにユーザが実行することができる。ある場合では、実施形態300は、クラウドサービス提供事業者がメンテナンスを行うため、処理容量を調整するため、またはその他の理由のためにプロセスを停止および再開する時にクラウドサービス提供事業者が実行することができる。ブロック302で、クラウドプロセスを開始することができる。クラウドプロセスは、システムまたはアプリケーション状態情報が格納されずまたは管理されていない場合では、ステートレスプロセスとなり得る。ブロック304で、仮想化レイヤをロードすることができる。仮想化レイヤは、設定ファイルや、設定情報、設定データベース、レジストリまたはその他ストレージオブジェクトを含むディレクトリのような特定のストレージオブジェクトへの読み取りおよび書き込みコールを監視することができる。仮想化レイヤは、それらコールをアプリケーション状態情報ストレージオブジェクトへ、またはバーチャルハードディスク上に格納されたストレージオブジェクトのセット内へリダイレクトすることができる。ブロック304で、仮想化レイヤがロードされた後に、ブロック306で、実行されるであろうアプリケーションは、監視する仮想化レイヤと関連付けることができる。関連付けを行う機構は、様々な実施形態毎に異なり得る。ある実施形態では、仮想化レイヤは、監視対象のアプリケーション内の特定の実行可能ファイルと関連付けることができる。ある実施形態では、仮想化レイヤは、監視対象の特定のストレージオブジェクトと関連付けることができる。ブロック310で、アプリケーションの以前の状態情報を内包することができるバーチャルハードディスクのために、クラウドストレージを検索することができる。ブロック312で、適切なバーチャルハードディスクを選択した後で、ブロック314で、バーチャルハードディスクをマウントすることができる。ある実施形態では、マルチプルバーチャルハードディスクは、アプリケーションの異なるバージョンのために作成することができる。例えば、夜間毎または週毎のバックアップ動作は、アプリケーションの状態情報の異なるバージョンを作成することができる。ある実施形態では、アプリケーションのマルチプルインスタンスを実行することができ、各々は独立したステートレススレッドで実行することができる。一例は、負荷分散システムで組み込むことができるアプリケーションである。アプリケーションは、アプリケーションの二つ、三つ、または数百ものインスタンスを、大きな負荷に応答するために負荷分散システムによって管理することができる。このような実施形態では、アプリケーションの各々のインスタンスは、アプリケーションの特定のインスタンスのための特定のアプリケーション状態情報を内包することができる、個別のバーチャルハードディスクを有することができる。このような例では、アプリケーション状態情報を内包することができるバーチャルハードディスクを、バーチャルハードディスクのプール内に配置することができる。アプリケーションへの負荷が増すに伴って、新しいステートレスプロセスを作成することができ、そしてアプリケーションインスタンスのためのアプリケーション状態情報を提供するために、プール内のバーチャルハードディスクの一つを選択することおよび使用することができる。ブロック314で、バーチャルハードディスクがマウントされる時、他のプロセスによってはバーチャルハードディスクのマウントができなくなる場合がある。ブロック314で、一旦バーチャルハードディスクがマウントされると、ブロック316で、バーチャルハードディスクは仮想化レイヤと関連付けることができる。ブロック316の関連付けは、バーチャルハードディスクのアプリケーション状態情報ストレージオブジェクトを特定すること、および仮想化レイヤにそれらストレージオブジェクトを登録することを含むことができる。ある実施形態では、バーチャルハードディスクは、アプリケーションの実行可能コードを内包することができるが、コードはアプリケーションパッケージ形式であってもなくてもよい。ある実施形態では、アプリケーション実行可能コードまたはアプリケーションパッケージは独立してロードすることができる。アプリケーションパッケージが使用される時に、アプリケーションパッケージは、アプリケーション状態情報の初期または好適なコピーを含むことができる。アプリケーションが使用されるに伴って、アプリケーション状態情報への変更は、独立したアプリケーション状態情報ストレージオブジェクトに作成されそして格納されることができる。このような実施形態では、差分機構は、初期のアプリケーション状態情報を変更されないように保持するために使用することができるが、差分機構は、変更を初期のアプリケーション状態情報へ適用することができ、そしてそのような変更をバーチャルハードディスク内のストレージオブジェクトの第二のセットに格納することができる。ブロック318で、アプリケーションが開始または再開動作を行うことができる。ブロック320で、アプリケーションの動作中、監視された状態情報のロケーションへのコールを監視することができる。ブロック322で、読み取り動作が行われる時に、ブロック324で、読み取り動作は、バーチャルハードディスク内の適切なストレージオブジェクトへリダイレクトすることができる。差分機構を使用することができ、アプリケーション状態情報の初期バージョンと現在のバージョンを独立して格納することができる実施形態では、差分機構は、どのストレージオブジェクトへアクセスを行い要求された状態情報を取り出すかを決定することができる。ブロック322で、書き込み動作が行われた時に、ブロック326で、書き込み動作はバーチャルハードディスク上の適切なストレージオブジェクトへリダイレクトすることができる。アプリケーション状態情報が、ローカルに格納されたコピーを有ことができる実施形態では、ブロック328で、バーチャルハードディスクに格納されたアプリケーション状態情報のコピーを、更新することができる。発明の範囲についての先の記述は、図示および詳細な説明の目的のためになされたものである。発明の詳細な説明は網羅的であることまたは発明の範囲を開示された厳密な形態に限定することを意図したものではない。そして、その他の修正や関連する形態も上述の教示に照らし取り得るものである。本実施形態が選択され説明されたが、これは発明の原理を最も良く説明するためのものであり、実施形態の実際上の適用によって、当業者が様々な実施形態や様々な修正形態で考えられる特定の用途に適する通りに発明を利用することが可能となる。添付された特許請求の範囲が従来技術によって限定される範囲を除いて、その他代替される実施形態を含むと解釈されることを意図している。