(57)【特許請求の範囲】
【請求項１】
アプリケーションをクラウドに移行する方法であって、
前記クラウドに特有の１セットの移行規則にアクセスするステップであり、前記移行規則が、前記クラウド内でホストされるときにアプリケーションが有すべきプロパティ、および、前記アプリケーションへの対応する訂正を識別する、ステップと、
前記クラウド内ではないハードウェアプラットフォームで実行するように構成されたアプリケーションに前記セットの移行規則を適用するステップであり、前記適用が、前記クラウド内で実行するために前記アプリケーションを修正するための修正および／または推奨を生成する、ステップと、
前記アプリケーションを修正して前記クラウド内で実行するために前記修正および／または推奨を使用するステップと、
を含む、方法において、
前記アプリケーションが、ウェブフロントエンドを少なくとも部分的に備え、前記修正および／または推奨が、クライアント状態が前記ウェブフロントエンドによってどのように保持されるかに関する、方法。
【請求項２】
アプリケーションをクラウドに移行する方法であって、
前記クラウドに特有の１セットの移行規則にアクセスするステップであり、前記移行規則が、前記クラウド内でホストされるときにアプリケーションが有すべきプロパティ、および、前記アプリケーションへの対応する訂正を識別する、ステップと、
前記クラウド内ではないハードウェアプラットフォームで実行するように構成されたアプリケーションに前記セットの移行規則を適用するステップであり、前記適用が、前記クラウド内で実行するために前記アプリケーションを修正するための修正および／または推奨を生成する、ステップと、
前記アプリケーションを修正して前記クラウド内で実行するために前記修正および／または推奨を使用するステップと
を含む、方法において、
前記アプリケーションが仮想機械イメージで記憶され、前記規則が前記仮想機械イメージをマウントすることによって適用される、方法。
【請求項３】
前記規則が、固有のプラットフォームリソースの使用から前記クラウドによって提供されるリソースの使用に転換することができる前記アプリケーション内の論理を識別する、
請求項１又は２に記載の方法。
【請求項４】
前記リソースが、ロードバランシングリソース、データベースサービスリソース、データ記憶サービス、またはスケーリングリソースを備える、請求項３に記載の方法。
【請求項５】
ＳＱＬ論理またはコードを識別するステップと、前記クラウド内の任意のアプリケーションに提供されるデータベースサービスの対応する規則を適用するステップとをさらに含み、前記データベースサービスが前記任意のアプリケーションのデータベースインスタンスを管理する、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
請求項１〜５のいずれか一項に記載の方法を実行するためのプログラム。
【請求項７】
請求項１〜５のいずれか一項に記載の方法を実行するためのプログラムを記録した記録媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]近年、ＰａａＳ（Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ、サービスとしてのプラットフォーム）と時に称される、コンピュータークラウドの使用および可用性が増加している。コンピュータークラウドの例は、Ｗｉｎｄｏｗｓ  Ａｚｕｒｅ（登録商標）、Ａｍａｚｏｎ  ＥＣ２（登録商標）、Ｂｕｎｇｅｅ  Ｃｏｎｎｅｃｔ（登録商標）、Ｇｏｏｇｌｅ  Ａｐｐ  Ｅｎｇｉｎｅ（登録商標）などである。これらのコンピュータークラウドは、通常は、多数のテナントをホストし、各々が、それら自体の隔離されたウェブアプリケーション、または、クライアントブラウザによって通常はアクセスされるウェブサービスを実行する。そのテナントのアプリケーションは、しばしば、仮想機械（ＶＭ）内で動作する。そのコンピュータークラウドは、アプリケーションに対して透過的であることを意図された方法で、変化する状態および需要に対処することができる実行環境を提供する。たとえば、着信する要求のロードのバランシング、ネットワーク帯域幅のプロビジョニング（ｐｒｏｖｉｓｉｏｎｉｎｇ）、リソースの処理、記憶装置、アプリケーションのスケーリング（たとえば、インスタンスの数の調整）、仮想機械およびアプリケーションインスタンスの再配置などである。共用されたコンピューティングクラウドは、オペレーター実体によって管理され、テナントがそれらのアプリケーションに第一に関与できるようにする。
【０００２】
[0002]しかし、コンピューティングクラウドは、実行環境として、そのコンピューティングクラウドで動作するように元来設計されていないアプリケーションと不整合の、利益と制限の両方を含む特色を有することがある。たとえば、特定の非クラウドリソース（たとえば、リレーショナルデータベース）と場合によっては様々なソフトウェアおよびハードウェア設備とを使用する特定のオペレーティングシステムで動作するように元々設計された３階層のウェブアプリケーションを考える。そのアプリケーションは、ロードの変動を処理するための組込み論理を有するウェブフロントエンド（ｗｅｂ  ｆｒｏｎｔ−ｅｎｄ）を有し得る。そのフロントエンドは、ビジネス論理を実装する中間階層とインターフェースをとることができ、データベースなどのローカルファイル記憶装置およびバックエンド記憶装置と対話する。このアプリケーションは、クラウドでは必要ではない自己スケーリングのためのセマンティック（ｓｅｍａｎｔｉｃ、意味論）を有し得る。そのアプリケーションは、それ自体のデータベース層と、クラウドでは必要とされない付随の管理ソフトウェアとを有し得る。そのアプリケーションは、クラウドによる制御と矛盾するオペレーティングシステム構成設定を有することがある（いくつかのクラウドは、オペレーティングシステムを必要とさえしないことがある）。そのアプリケーションの態様は、そのアプリケーションがコンピューティングクラウドで効率的に実行できるようにするために、変更、除去、または追加される必要があり得る。
【０００３】
[0003]以下に論じる技法は、アプリケーションおよび仮想機械をコンピューティングクラウドに移行するためのツールに関する。
【発明の概要】
【課題を解決するための手段】
【０００４】
[0004]以下の概要は、発明を実施するための形態で以下に論じるいくつかの概念を紹介するためにのみ含まれる。本概要は、包括的ではなく、最後に提示される特許請求の範囲によって定められる特許請求される対象の範囲を線引きするものではない。
【図面の簡単な説明】
【０００５】
【図１】[0005]汎用コンピューティングクラウドを示す図である。
【図２】[0006]汎用コンピューティングクラウドの別のビューを示す図である。
【図３】[0007]２つの例示的コンピューティングクラウドアーキテクチャを示す図である。
【図４】[0008]別のコンピューティングクラウドアーキテクチャを示す図である。
【図５】[0009]ターゲットアプリケーションのコンピューティングクラウドへの例示的移行を示す図である。
【図６】[0010]移行ツールを示す図である。
【図７】[0011]規則または移行ライブラリーのビューを示す図である。
【図８】[0012]移行ツールによって実行されるプロセスを示す図である。
【図９】[0013]移行ツールによって使用される読取りツールの例示的セットを示す図である。
【発明を実施するための形態】
【０００６】
[0014]付随する特徴の多数は、添付の図面に関連して考慮される以下の詳細な記載を参照して、以下に説明される。
[0015]本明細書は、同様の参照番号が添付の記載における同様の部分を指定するためにその中で使用される添付の図面を踏まえて読まれて以下の詳細な記載からよりよく理解されよう。
【０００７】
[0016]アプリケーションをコンピュータークラウドに移行するためのツールおよび技法が、本明細書で説明される。ツールが、コンピュータークラウドの特定の実装形態に任意のアプリケーションを移行するために使用され得る。そのツールは、移行規則のライブラリーを使用し、その規則を選択されたアプリケーションに適用し、その過程で移行出力を生成することができる。その移行出力は、助言情報、改定されたコード、パッチ、または同様のものでもよい。異なるクラウドコンピュータープラットフォームのために異なる規則のセットが存在することが可能であり、アプリケーションが異なるクラウドに移行することを可能にする。その規則は、広範なアプリケーション機能と、アプリケーションを移行するための対応する訂正アクションとを説明し得る。規則は、アプリケーションの意味的動き、コードまたはコール、記憶、データベースインスタンス、データベースとの対話、そのアプリケーションをホストするオペレーティングシステムなどを指定することができる。
概説
[0017]以下に論じる実施形態は、アプリケーションをコンピューティングクラウドに移行するための移行ツールに関する。考察は、コンピューティングクラウドの説明で始まり、いくつかの例がそれに続く。例示的アプリケーションが、論じられる。移行ツール、移行規則、および移行のプロセスを含む、移行するためのツールおよび技法が、次に説明される。
コンピューティングクラウド
[0018]図１は、汎用コンピューティングクラウド１００を示す。データネットワーク１０２は、コンピューティングクラウド１００を構成する様々なコンピューター（図示せず）の間に接続性を提供する。一般に、多数のコンピューターが、隔離されたテナントアプリケーションをホストする仮想機械をホストする。様々なクラウドサービス１０４は、通信待ち行列、ロードバランシングなどの機能を提供することができる。クラウドプラットフォーム１０６は、それを介してテナントがそれらのアプリケーションをアップロードおよび管理することができる、テナントのためのインターフェースの機能を果たすことができる。クラウドプラットフォーム１０６はまた、実際に各アプリケーションのコンピューター環境を提供し、テナントのアプリケーションをラップするおよび管理することができる。クラウド基盤１０８は、課金および管理要素を含み得る。たとえば、クラウド基盤１０８は、コンピューターをオンラインおよびオフラインにして、アプリケーションおよび／またはコンピューティングクラウド１００のロードにおける変化に対処することができる。クラウド記憶装置１１０は、たとえば、それぞれのテナントによって制御および構成されるデータベースのインスタンスを提供するリレーショナルデータベースサービス、単純なブロブ（バイナリーラージオブジェクト）記憶装置、表記憶装置、ファイルシステム記憶装置など、様々な形をとることができる。
【０００８】
[0019]図２は、汎用コンピューティングクラウド１００の別のビューを示す。このビューでは、テナント１２０、１２２は、それぞれのクラウドホスト型アプリケーション１２４、１２６を有する。コンピューティングクラウド１００は、アプリケーション１２４、１２６のコンピューター環境１２８、１３０を管理するファブリック１２５を有する。ファブリック１２５は、ゲストオペレーティングシステム、記憶サービスなどでＶＭを実行する多数のコンピューターを有し得る。アプリケーション１２４、１２６は、ウェブベースのアクセスに典型的な様々な構成要素を備えることができ、コンピューティングクラウド１００によって提供されるリソースを使用することができる。コンピューター環境１２８、１３０は、Ａｍａｚｏｎ  ＥＣ２インスタンス（アマゾンマシンイメージ（ＡＭＩ）によって構成されるような）、ロール（Ｍｉｃｒｏｓｏｆｔ  Ａｚｕｒｅにおけるような）、管理されたコード環境を有するサンドボックスされたシミュレートされた部分的オペレーティングシステム（Ｇｏｏｇｌｅ  Ａｐｐ  Ｅｎｇｉｎｅにおけるような）などに類似していてもよい。コンピューター環境１２８、１３０は、ロード、ネットワークトラフィック、予期せぬ故障などの現在の状態に従って、ファブリック１２５によって「拡張」され得る。そのような拡張は、必要に応じて計算リソース（ハードウェア、ＶＭ、サービスインスタンス、データベースインスタンスなど）を透過的に追加または取り除くステップを含み得る。
【０００９】
[0020]アプリケーション１２４、１２６は、テナント１２０、１２２によって、アップロードおよび構成される。アプリケーション１２４、１２６は、コンピューティングクラウド１００によって管理されるものとして動作し、そして、クライアント１２８は、ブラウザまたは他のタイプのクライアントソフトウェアを使用し、アプリケーション１２４、１２６のインスタンスにアクセスする。アプリケーションの観点からすると、そのアプリケーションはプラットフォームで動作していて、コンピューティングクラウド１００の活動はほとんど透過的であることに留意されたい。それらのアプリケーションは、基盤となるハードウェア、データネットワーク、あるいは、そのアプリケーションとクライアントの間のクラウド層はどうあれ、通信プロトコルを介してアクセスされる。
【００１０】
[0021]図３は、２つの例示的コンピューティングクラウドアーキテクチャを示す。クラウドアーキテクチャ２５０は、Ａｍａｚｏｎ  ＥＣ２クラウドの１つのバージョンである。アプリケーション開発および配備は、テナントクライアントによって処理される。本クラウドは、機械イメージおよびオンデマンドインスタンスの形でクラウドコンピューティングサービスを提供する。アプリケーションは、仮想機械内のゲストオペレーティングシステムでホストされる。仮想機械およびデータベースのインスタンスは、サポートサービスからの必要に応じてクラウドによって提供される。待ち行列サービスは、仮想機械とアプリケーションインスタンスの間の通信を円滑に進めることができる。これらの構成要素がどのように作動し、協力するかの詳細は、他の場所で入手可能である。
【００１１】
[0022]クラウドアーキテクチャ２５２は、Ｇｏｏｇｌｅ  Ａｐｐ  Ｅｎｇｉｎｅクラウドの１つのバージョンである。様々な開発ツールが、アプリケーションを構築および配備するために使用される。Ａｐｐ  Ｅｎｇｉｎｅ自体は、他の場所で完全に文書化されている。重要な特徴は、アプリケーションが配備された後には、Ａｐｐ  Ｅｎｇｉｎｅが自動的にスケーリングを処理し、リソースおよび／またはインスタンスが必要に応じて追加および除去されるということである。様々なサポートサービスが、アプリケーションによってアクセスされ得る。アカウントサービス、データ表サービスなどがそのアプリケーションによって使用され、これらのリソースはまたクラウドによってスケールを変更され、管理される。
【００１２】
[0023]図４は、Ｍｉｃｒｏｓｏｆｔ  Ａｚｕｒｅの１つのバージョンのコンピューティングクラウドアーキテクチャ２５４を示す。管理されたコードで構築された個別スケーラブル構成要素である、ロール（ｒｏｌｅ）が提供される。作業者ロールは、一般化された開発を目的とし、ウェブロールのためのバックグラウンド処理を実行することができる。ウェブロールは、ウェブサーバーを提供し、ＨＴＴＰ（ハイパーテキスト転送プロトコル）またはＨＴＴＰＳ（ＨＴＴＰセキュア）エンドポイントを介してウェブ要求を聴き、応答する。ＶＭロールは、テナント定義された構成（たとえば、リソース、ゲストオペレーティングシステム）に従って、インスタンス化される。オペレーティングシステムおよびＶＭ更新は、クラウドによって管理される。ウェブロールおよび作業者ロールは、そのテナントの制御下にある仮想機械であるＶＭロール内で動作する。記憶装置およびＳＱＬサービスが、ロールによる使用のために利用可能である。他のクラウドと同様に、スケーリング、ロードバランシングなどを含めて、ハードウェアおよびソフトウェア環境またはプラットフォームは、クラウドによって処理される。
【００１３】
[0024]要約すると、ＰａａＳタイプのコンピューティングクラウドでは、クラウドコンピューティングプラットフォーム自体が、ほとんどの管理機能を担う。そのプラットフォームは、オペレーティングシステムパッチの適用、システムまたはデータベースソフトウェアの新しいバージョンのインストール、コンピューターおよびＶＭのオンライン化、ＶＭの移行、ネットワーク帯域幅の割当てなどの事柄を自動的に（そしてテナントに対して透過的に）処理することができる。アプリケーションの何らかの意味的動き（次の項で論じられる）と交差し得るこの透過的管理は、それでもなお、パッチング、ハードウェア故障、オーバーロード、および他の理由に起因するアプリケーションの使用不可能性を解消することができる。さらに、物理および仮想機械を制御するそのクラウドは、アプリケーションスケーリングを処理し、そのクラウドは、適切なレベルのリソースがいつでも使用可能であることを確保する。コンピューティングクラウドプラットフォームは、他の特徴を有し得る。たとえば、ブラウザベースの開発ツール、そのクラウドにおけるホストされるランタイム環境へのシームレスな配備（すなわち、そのクラウドにアクセスするクライアントからアプリケーションを配備および始動する能力）、テナントのウェブベースの管理およびモニタリングツール、従量制課金などである。
アプリケーション移行
[0025]前記で提案したように、コンピューティングクラウドで実行するように元来設計されていないアプリケーションは、コンピューティングクラウドのアーキテクチャおよびサービスによって影響を及ぼされることがある設計特色（意味論）、コードプロパティ、および構成特徴を有し得る。アプリケーションは、クラウド環境では不必要なロードバランシングおよびスケーリングなどの機能を有し得る。アプリケーションはまた、クラウド環境ではエラー、データ損失、または他の故障につながる可能性のある特徴も有し得る。アプリケーションをクラウド環境に移行するとき、互換性、信頼性、効率性、コストの最小化、適切なインストールなどのために行うことができるまたは行われるべき修正が、しばしば存在する。
【００１４】
[0026]図５は、ターゲットアプリケーション２８０のコンピューティングクラウドへの例示的移行を示す。ターゲットアプリケーション２８０は、特定のオペレーティングシステムおよびカスタムインフラストラクチャ、たとえば、組織内の情報技術（ＩＴ）環境、のために元来設計された、機械またはホストベースのアプリケーションである。ターゲットアプリケーション２８０は、クライアント要求を処理するウェブサーバー２８２のフロントエンドを含む、３階層のアーキテクチャを有する。特注のロードバランサー２８４は、ウェブサーバー２８２の間でクライアント要求を分散する。中間階層は、ターゲットアプリケーション２８０の論理および主要な機能を処理するアプリケーションサーバー２８６を含む。その中間階層は、ＳＱＬサーバー２８８によって管理されるデータベース内でデータおよびアプリケーション状態を記憶する。そのＳＱＬサーバーは、フェイルオーバーおよびバックアップのためのデータベースミラーを保持する。アプリケーションサーバー２８６は、ＳＱＬコールまたは同様のものでＳＱＬサーバー２８８とインターフェースをとる。ロードバランサー２９０は、ウェブサーバー２８２とアプリケーションサーバー２８６の間で対話を平衡させる。ターゲットアプリケーション２８０は、前述の要素のうちのいずれかのインスタンスを追加することによって、スケーリングのためのカスタム論理を有することができる。さらに、ターゲットアプリケーション２８０がそこで実行するコンピュータープラットフォームを管理する管理ソフトウェアの層が存在し得る。この層は、バックアップ、システム更新、ゾンビプロセスまたはシステムの再起動、ホストコンピューター間の仮想機械の移行、フェイルオーバーシステムへの出力先変更などを実行することができる。
【００１５】
[0027]図５の下方部分は、移行されたアプリケーション２９２を示す。その移行されたバージョンは、後で論じる多数の方法で修正され得る。たとえば、ロードバランシング機構２９４は、コンピューティングクラウドによって提供され得る（移行されたアプリケーション２９２に対する可視性なしで）。移行されたアプリケーション２９２のウェブサーバー２９６はＨＴＴＰサーバーを取り除かれ、そのコンピューティングクラウドに依存してＨＴＴＰ要求を処理することができる。または、ウェブサーバー２９６は、そのクラウドによってインスタンス化および管理され得る。そのクラウドはまた、移行されたアプリケーションサーバー２９８のロードバランシングおよびスケーリングを提供することができる。移行されたアプリケーション２９２のデータ階層は、ＳＱＬ命令文および論理（恐らく修正された）をやはり使用するが、アプリケーションデータは、直ちに記憶され、クラウド管理されたデータベースインスタンス３００から供される。クラウドに移行されたアプリケーション２９２をインストールするテナントは、やはり、そのデータベースを構成し、それの要件を指定することができるが、そのデータベースは、一般にはユーザー提供のスキーマまたは同様のものに従って、そのクラウド内の他のテナントのデータベースを提供する（および隔離する）データベースサービスによって提供される。移行ツールおよびそれによるアプリケーションへの他の起こり得る修正の詳細が、次に説明される。
【００１６】
[0028]図６は、移行ツール３２０を示す。本移行ツールは、１つまたは複数のコンピューター上で動作し、選択されたアプリケーション３２２の移行分析を実行し、場合によっては、選択されたアプリケーション３２２を修正および／または情報を出力して、開発者が選択されたアプリケーション３２２を手動で修正できるようにする。本ツールは、それぞれのクラウドの移行規則３２６のセットを有する移行ライブラリー３２４を使用する。たとえば、１セットの移行規則３２６である。ユーザーが移行ツール３２０を使用するとき、ターゲットクラウドプラットフォームが選択され、対応するセットの移行規則３２６が移行ツール３２０によって使用されて移行出力３２８を生成する。移行出力３２８は、改定されたソースコード、選択されたアプリケーション３２２に適用されることになるパッチ、報告通知コード、意味論、または、アーキテクチャの変更、あるいは、そのような出力の組合せでもよい。
【００１７】
[0029]図７は、規則または移行ライブラリー３２４のビューを示す。前述のように、異なるコンピューティングクラウドプラットフォームのために移行規則の異なるセットが存在し得る。例示的規則セット３２６Ａは、コード規則３５０、オペレーティングシステム規則３５２、意味的規則３５４、ＳＱＬもしくはデータベース規則３５６、インストーラー規則３５８、および／または、その他を含み得る。
【００１８】
[0030]コード規則３５０は、以下の形の規則を含み得る：＜状態＞＜アクション＞。状態は、コード命令文の構文、含まれるまたは除外されるべき特定のライブラリー、特定の記憶装置のタイプまたは場所、パスなどを指定することができる。共通コードパターンもまた、指定され得る。アクションは、異なり得る。いくつかのアクションは、コードを修正する、または事前定義されたコメントを挿入することができる。他のアクションは、移行報告ログに出力を追加することができる。コード規則３５０は、１セットの特定のコールまたは方法を認識し、それらをクラウド特有のアプリケーションプログラミングインターフェース（ＡＰＩ）に変換することができる。規則は、特定のライセンスサーバーまたはライセンスライブラリーへのコールを認識することができる。規則はまた、そのターゲットコンピューティングクラウドで使用可能ではないネットワークサービス（たとえば、Ａｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙ（登録商標））に向けられたコードを認識することができる。対応する訂正アクション、報告および／または改正が、含まれ得る。
【００１９】
[0031]１セットのオペレーティングシステム構成規則３５２は、ターゲットアプリケーションが特定のオペレーティングシステムのために構築された環境のために提供され得る（移行の後、そのクラウド内のＶＭゲストの形で）。ある場合には、オペレーティングシステム規則は、そのオペレーティングシステムとインターフェースをとるアプリケーションコードに関し得る。コンピューティングクラウドが特定のオペレーティングシステムをテナントが指定またはインストールできるようにする場合、本規則は、そのオペレーティングシステムを直接調べることができる。たとえば、関連するコンピューティングクラウドがゲストオペレーティングシステム更新を自動的に処理する場合、ゲストオペレーティングシステムは、自動更新を不能にするように構成されるべきである。許可または特別なユーザーアカウントが、修正または追加され得る。一部のクラウドは、特定のオペレーティングシステムバージョン（リリースバージョン、３２対６４ビットバージョンなど）のみをサポートすることができるので、その規則はオペレーティングシステムの要求を識別することができ、アクションは、そのオペレーティングシステムの変更、そのオペレーティングシステムのアップグレード、または、それを行う必要性にフラグを立てることを含み得る。一部のクラウドでは、アプリケーションインスタンスまたはＶＭは複数の地理的時間帯に亘って動作し得るので、特定の時間帯設定、たとえば協定世界時（ＵＴＣ）などにオペレーティングシステム時間帯設定をセットすることが、一貫性を保つために、望ましいことがある。さらに、対応する訂正またはパッチが、本規則に含まれ得る。
【００２０】
[0032]意味的規則３５４は、ターゲットアプリケーションのアーキテクチャまたは設計の態様を指定することができる。たとえば、前述のように、いくつかのアプリケーション機能が、コンピューティングクラウドでもはやサポートされていないことがある。意味的規則３５４は、ロードバランサー、スケーリング論理、データバックアップまたはミラーリングなどを識別するための手掛かりを指定することができる。手掛かりは、ビルドマニフェスト（ｂｕｉｌｄ  ｍａｎｉｆｅｓｔ）、キーワード認識、または、既製のもしくはオープンソースの構成要素の知られている表示に由来し得る。手掛かりはまた、コードをコンパイルするステップ、および、そのコードの特色を分析もしくはプロファイリングするステップを含み得る、自動コード分析に由来し得る。認識するための意味的プロパティは、再始動論理（クラウドによって処理されることになる）、リソース使用、およびフェイルオーバー論理を含み得る。一部のクラウドでは、ＶＭはそのクラウドによって自由に動かす（停止および再始動する）ことができるので、その規則は、ローカル記憶装置に依存するアプリケーションの部分を認識し、そのアプリケーションの状態を確実に保持するためにクラウドベースの永続的記憶装置の使用を推奨することができる。一実施形態で、規則は、アプリケーション構成要素の１つのインスタンスによって記憶された状態が、そのクラウドによって自動的に始動された新しいインスタンスによって認識される必要があることを認識することができる。他の意味的規則は、たとえばそれのホストＶＭを再開するときに、アプリケーションのインスタンスがそれがその中断より前のそれの状態と一貫性を保った状態を有することを確認できるようにするために、いつホストオペレーティングシステムがスリープまたは一時停止状態に入った（または再始動した）か、を識別するためのフックを追加する（またはその追加を推奨する）ことができる。
【００２１】
[0033]記憶装置またはデータベース規則３５６は、そのコンピューティングクラウドの部分であるデータベースサービスのインスタンスでもよい、クラウドベースのデータベースサーバーへの通常のデータベースサーバーからの変更に関する規則を含み得る。これらの規則はまた、特定のデータベースから、クラウド内のブロブ記憶装置、クラウド内のキー値記憶装置、表サービスからの単純な表などの別の形の記憶装置に変更するステップを含み得る。一般に、前述のように、アプリケーションをホストするＶＭでの記憶からクラウドベースの記憶にそのアプリケーションの記憶戦略を変更することを試みる規則が存在し得る。他のデータベース規則３５６は、特定のＳＱＬコール、データベースミラーリング論理、を探すことができる。接続規則が、データベーストランザクション中により頻繁な接続検査をもたらすために、含まれ得る。たとえば、一部のクラウドベースのデータベースサービスは、頻繁に、新しいインスタンスをスピンアップ（ｓｐｉｎ  ｕｐ）し、アプリケーションのデータベースの古いインスタンスを遮断することがあり、元のアプリケーションは、接続がコードの範囲を通して使用可能なままであると仮定し得るが、一方で、接続検査は、クラウドに移行されるときに役立つ。もう１つの実施形態で、クラウドベースのデータベースは、複数の表に亘るトランザクションを保証しないことがあり、規則は、複数の表を含むＳＱＬトランザクションにフラグを立てることができる。サポートされないまたは必要とされないＳＱＬコールもまた、認識され得る。
【００２２】
[0034]インストーラー規則３５８は、ターゲットアプリケーションのインストールパッケージ形式を調べ、ターゲットクラウドでのインストールに関する規則を適用することができる。たとえば、コンピューティングクラウドがそのアプリケーションをホストするＶＭを制御する場合、様々なインストール構成要素が再配置される必要があることがあり、元のアプリケーションが存在すると仮定する構成要素（たとえば、アセンブリまたはライブラリー）が、実際には、移行されるアプリケーションのインストレーションプロセスに含まれる必要があることがある。一部のアプリケーション構成要素の設定は、クラウドベースの環境にインストールされるときに変更される必要があることがある。一実施形態では、インストールパッケージ全体が、そのクラウドと互換性がないものとしてフラグを立てられ得る。もう１つの実施形態で、インストール規則は、そのアプリケーションのインストールパッケージをある形式からそのターゲットクラウドと互換性のある形式に変換することができる。規則は、そのアプリケーションをインストールするために、そのクラウドにアクセスするために必要とされる認証情報を追加することもできる。さらに、対応するアクション、訂正および／または助言が、その規則で含まれ得る。
【００２３】
[0035]他のタイプの規則もまた、含まれ得る。一実施形態で、その移行ライブラリーは、関連するクラウドに関するコスト情報を含み得る。そのような情報は、そのクラウド内でどのようにコストが生じるかと、クラウドリソースの様々なユニットのコストとを説明することができる。本規則は、順に、そのコスト情報にアクセスしてターゲットクラウド内のアプリケーションの潜在的コストに関する分析を実行することができる。そのような分析が関わり得る。一実施形態で、そのコスト情報は、ターゲットクラウド内のライセンス供与権または機会に関する情報を含み得る。これらの規則は、適用されるとき、そのアプリケーションの構成要素（たとえば、ゲストオペレーティングシステム、データベースインスタンスなど）の新しいライセンス供与協定を捜し出す勧告、あるいは、ライセンス要件をカバーし、それによってライセンスの料金を別個に支払う必要を回避することになるクラウドのオペレーター（または他のベンダー）からのライセンス提供を移行報告に追加することができる。
【００２４】
[0036]前述の多数の規則は、限定的ではなく、他の特定の規則および他のカテゴリーの規則が使用され得る。さらに、規則は単に、コンピューティングクラウドにおけるニーズおよび優先に関する情報を表す便利な形式である。本明細書で「規則」という用語は、任意のアプリケーションの（任意のアプリケーションに適用可能である）元の状態、またはそれの環境、および、そのアプリケーションがコンピューティングクラウド内で実行されることになる場合に関連する特定のコンピューティングクラウドの対応する態様を説明する、任意の情報を含むように定義される。本明細書で「規則」はまた、実際の修正、パッチもしくは報告の生成、または、使用することができる他の情報を含めて、その規則によって指定される状態がターゲットアプリケーション内に存在すると判定されるときに取られ得る任意のアクションを含むように定義される。したがって、実際には、規則は、宣言型または論理言語での命令文、スクリプティング言語を含む通常の手続きコード、コンパイル済みコードなどを含む、多数の形を取り得る。規則のタイプおよび特質は、その規則セットに対応する特定のコンピューティングクラウドに応じて、ある規則セット３２６と次の規則セットでは異なり得る。一実施形態では、１つのみの規則セット３２６が存在し、移行ライブラリー３２４は、コンピューティングクラウドの１つの実装形態のみを目的とする。さらに別の実施形態で、規則は、実行可能ツールの部分として実装される。
【００２５】
[0037]図８は、移行ツール３２０によって実行されるプロセスを示す。ステップ３８０で、移行ツール３２０のユーザーは、コンピューティングクラウドに移行されることになるターゲットソフトウェアまたはアプリケーションを指定する（そのツールおよび規則は、任意のアプリケーションに適用可能であるように設計される）。ステップ３８２で、移行ツール３２０が、ターゲットアプリケーションにアクセスする。これは、パッケージ形式を開くステップ、ソースコードファイルおよび構成ファイルを読み取るステップ、ＶＭイメージをマウントするステップ、または、そのアプリケーションを調査するための他の手段を伴い得る。移行ツール３２０は、要素間の関係、依存状態、関連するファイル（たとえば、マニフェストおよびビルドスクリプト）などを識別することができる。ステップ３８４で、関連する規則セットが、規則ライブラリーからロードされる。ステップ３８６で、そのアプリケーションの様々な構成要素がパーズ（ｐａｒｓｅ、構文解析）され、関連する規則が適用される。ステップ３８８で、出力が生成される。その出力は、パッチ、コード修正、推奨、または、その他を含む、前述の様々な形を取り得る。
【００２６】
[0038]図９は、移行ツール３２０によって使用される読取りツール４００の例示的セットを示す。アプリケーションの内容にアクセスするために、移行ツール３２０は、ＶＭイメージマウンター４０２、コードパーサー（コード構文解析ツール）４０４、インストールパッケージインスペクター４０６、アセンブリリーダー４０８、スキーマリーダー４１０、スクリプトリーダー４１２もしくはパーサー、コンパイラー、ソフトウェア開発環境、および／または、移行されるアプリケーションのタイプに関連する任意の他の知られている技法を使用することができる。ＶＭイメージマウンター４０２は、ＶＭイメージ形式を読み取り、ファイルシステムにそのイメージをマウントするように構成され得る。
結論
[0039]前述の実施形態および特徴は、揮発性または非揮発性コンピューターまたはデバイス可読媒体に記憶された情報の形で実現することができる。これは、光記憶装置（たとえば、コンパクトディスク読取り専用メモリー（ＣＤ−ＲＯＭ））、磁気媒体、フラッシュ読取り専用メモリー（ＲＯＭ）、または、デジタル情報を記憶する任意の現在のもしくは未来の手段などの媒体を少なくとも含むと考えられる。その記憶された情報は、機械実行可能命令（たとえば、コンパイル済み実行可能２進コード）、ソースコード、バイトコード、または、コンピューティングデバイスが前述の様々な実施形態を実行することを可能にするまたはそのようにコンピューティングデバイスを構成するために使用することができる任意の他の情報の形でもよい。これはまた、一実施形態を実行するプログラムの実行中に中央処理装置（ＣＰＵ）命令などの情報を記憶するランダムアクセスメモリ（ＲＡＭ）および／または仮想メモリーなどの揮発性メモリーを少なくとも含み、同様に、プログラムまたは実行ファイルをロードおよび実行できるようにする情報を記憶する非揮発性媒体を含むと考えられる。それらの実施形態および特徴は、携帯用デバイス、ワークステーション、サーバー、モバイルワイヤレスデバイスなどを含む任意のタイプのコンピューティングデバイスで実行することができる。
【図１】
0006030646.tif 000002
【図２】
0006030646.tif 000003
【図３】
0006030646.tif 000004
【図４】
0006030646.tif 000005
【図５】
0006030646.tif 000006
【図６】
0006030646.tif 000007
【図７】
0006030646.tif 000008
【図８】
0006030646.tif 000009
【図９】
0006030646.tif 000010