(57)【特許請求の範囲】
【請求項１】
デプロイメントロケーションへのアプリケーションのセキュア・デプロイメントのためのコンピュータ実装方法であって、
分析のために前記アプリケーションを提供することであって、前記アプリケーションが、異なるロケーションにデプロイできる処理ノードに分割されることが可能であり、前記アプリケーションが、データ・アスペクトに対するデプロイメント制約を定義するアノテーションを含んでいるメッセージ・モデルに基づいてメッセージを処理し、前記データ・アスペクトがメッセージ全体、あるいは前記メッセージのデータ・フィールド、データ要素、またはデータ構造を含む、前記提供することと、
前記デプロイメント制約を有するデータ・アスペクトを参照する処理ノードを識別するために前記アプリケーションを分析することと、
前記参照されているデータ・アスペクトの前記デプロイメント制約に基づいて、処理ノードのデプロイメントに関する制限を決定することと、
前記決定された制限に従って前記アプリケーションの各処理ノードをデプロイすることと
を含む、コンピュータ実装方法。
【請求項２】
前記分析することおよび前記決定することが前記アプリケーションのデプロイメントで動的に実行される、請求項１に記載の方法。
【請求項３】
前記分析することおよび前記決定することが前記アプリケーションの前記デプロイメントよりも前に実行され、前記方法が、
前記処理ノードによって参照されるデータ・アスペクトに関連するメッセージ・モデル内でアノテートされたデプロイメント制約に対応する制限メタデータを使用して当該処理ノードにマークを付けることを含む、請求項１に記載の方法。
【請求項４】
デプロイすることが、前記制限メタデータを読み取り、前記制限に従って各処理ノードをデプロイすることによって、マークが付けられた処理ノードに対して実行される、請求項３に記載の方法。
【請求項５】
前記デプロイメント制約を有するデータ・アスペクトを追跡することと、
前記デプロイメント制約を有するデータ・アスペクトが、デプロイメント制約を有していないターゲットデータ・アスペクトに移動したかどうかを決定することと、
前記ターゲットデータ・アスペクトがデプロイメント制約を有することを記録することとを含む、請求項１に記載の方法。
【請求項６】
前記アプリケーションを分析することが、前記デプロイメント制約を有するとしてデータ・アスペクトが追跡されているどうかを決定することを含む、請求項５に記載の方法。
【請求項７】
前記メッセージ・モデル内でアノテートされた前記デプロイメント制約を決定するために前記メッセージ・モデルにアクセスすることを含む、請求項１に記載の方法。
【請求項８】
前記データ・アスペクトに対するデプロイメント制約を決定するために追跡データにアクセスすることを含む、請求項５に記載の方法。
【請求項９】
前記メッセージ・モデルと前記アプリケーションのコードとの間の論理的分離が提供され、デプロイメント制約が前記メッセージ・モデル内でのみ定義されることを可能にする、請求項１に記載の方法。
【請求項１０】
前記アプリケーションが、分散リソースにデプロイすることができる処理ノードを含んでいる分散アプリケーションである、請求項１に記載の方法。
【請求項１１】
前記アプリケーションが、１つまたは複数のインバウンド・インターフェイスおよび１つまたは複数のアウトバウンド・インターフェイスを有する処理ノードを含む統合フローであり、前記データ・アスペクトを参照する処理ノードを識別するために前記アプリケーションを分析することが、インバウンド・インターフェイスまたはアウトバウンド・インターフェイスがデプロイメント制約を有する前記データ・アスペクトを含むかどうかを決定することを含む、請求項１に記載の方法。
【請求項１２】
前記アプリケーションが、ハイブリッド・クラウド環境内にデプロイされることが可能であり、前記デプロイメント制約が、前記ハイブリッド・クラウド環境内の、ローカルなクライアントのデプロイメント、オンプレミスのデプロイメント、企業内のデプロイメント、地理的位置内のデプロイメント、またはパブリック・クラウド内のデプロイメントのグループのうちの１つまたは複数を含むデプロイメントのロケーションに関連する、請求項１に記載の方法。
【請求項１３】
デプロイメントロケーションへのアプリケーションのセキュア・デプロイメントのためのシステムであって、
プロセッサおよびメモリを備え、前記プロセッサが、
分析のために前記アプリケーションを提供することであって、前記アプリケーションが、異なるロケーションにデプロイできる処理ノードに分割されることが可能であり、前記アプリケーションが、データ・アスペクトに対するデプロイメント制約を定義するアノテーションを含んでいるメッセージ・モデルに基づいてメッセージを処理し、前記データ・アスペクトがメッセージ全体、あるいは前記メッセージのデータ・フィールド、データ要素、またはデータ構造を含む、前記提供することと、
前記デプロイメント制約を有するデータ・アスペクトを参照する処理ノードを識別するために前記アプリケーションを分析することと、
前記参照されているデータ・アスペクトの前記デプロイメント制約に基づいて、処理ノードのデプロイメントに関する制限を決定することと、
前記決定された制限に従って前記アプリケーションの各処理ノードをデプロイすることと
を実行するように構成される、システム。
【請求項１４】
前記分析することおよび前記決定することが前記アプリケーションのデプロイメントで動的に実行される、請求項１３に記載のシステム。
【請求項１５】
前記分析することおよび決定することが前記アプリケーションの前記デプロイメントよりも前に実行され、前記プロセッサが、前記処理ノードによって参照されるデータ・アスペクトに関連するメッセージ・モデル内でアノテートされたデプロイメント制約に対応する制限メタデータを使用して当該処理ノードにマークを付けるようにさらに構成される、請求項１３に記載のシステム。
【請求項１６】
デプロイすることが、前記制限メタデータを読み取り、前記制限に従って各処理ノードをデプロイすることによって、マークが付けられた処理ノードに対して実行される、請求項１５に記載のシステム。
【請求項１７】
前記プロセッサが、
前記デプロイメント制約を有するデータ・アスペクトを追跡することと、
前記デプロイメント制約を有するデータ・アスペクトが、デプロイメント制約を有していないターゲットデータ・アスペクトに移動したかどうかを決定することと、
前記ターゲットデータ・アスペクトがデプロイメント制約を有することを記録すること
を実行するようにさらに構成される、請求項１３に記載のシステム。
【請求項１８】
前記アプリケーションを分析することが、デプロイメント制約を有するとして特定のデータのアスペクトが追跡されているどうかを決定することを含む、請求項１７に記載のシステム。
【請求項１９】
前記プロセッサが、前記メッセージ・モデル内でアノテートされた前記デプロイメント制約を決定するために前記メッセージ・モデルにアクセスするようにさらに構成される、請求項１３に記載のシステム。
【請求項２０】
デプロイメントロケーションへのアプリケーションのセキュア・デプロイメントのためのコンピュータ・プログラムであって、前記コンピュータ・プログラムが、プログラム命令を備え、プロセッサによって実行可能な前記プログラム命令が、前記プロセッサに、
分析のために前記アプリケーションを提供することであって、前記アプリケーションが、異なるロケーションにデプロイできる処理ノードに分割されることが可能であり、前記アプリケーションが、データ・アスペクトに対するデプロイメント制約を定義するアノテーションを含んでいるメッセージ・モデルに基づいてメッセージを処理し、前記データ・アスペクトがメッセージ全体、あるいは前記メッセージのデータ・フィールド、データ要素、またはデータ構造を含む、前記提供することと、
前記デプロイメント制約を有するデータ・アスペクトを参照する処理ノードを識別するために前記アプリケーションを分析することと、
前記参照されているデータ・アスペクトの前記デプロイメント制約に基づいて、処理ノードのデプロイメントに関する制限を決定することと、
前記決定された制限に従って前記アプリケーションの各処理ノードをデプロイすることと
を実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデプロイメントロケーションにわたるアプリケーションのセキュア・デプロイメントに関する。
【背景技術】
【０００２】
ＩＢＭ  Ｉｎｔｅｇｒａｔｉｏｎ  Ｂｕｓ（ＩＢＭおよびＩｎｔｅｇｒａｔｉｏｎ  ＢｕｓはＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの商標である）などの製品は、エンタープライズ・サービス・バス（ＥＳＢ：enterprise service bus）技術に基づく汎用統合基盤（universal integration foundation）のオプションを提供する。各実装は、任意の産業における任意のサイズのビジネスに関する、クラウド環境およびメインフレーム・サーバを含むプラットフォームの範囲をカバーする、異種情報技術環境での接続および変換を可能にするのに役立つ。
【０００３】
特定の統合フローは、データが流れることができる場所に関連付けられた制限を有する可能性が高い極秘データを含んでいるメッセージに対する操作を実行することができる。例えば、特定のデータは企業のファイアウォール内に留まる必要があるか、または国外に出ることが許可されない場合がある。
【０００４】
企業は、クラウド技術を利用することによって、弾力的にスケーリングして、需要に対処し、情報技術インフラストラクチャを削減および合理化し、運用のコストを削減し、システムをより高速、簡単、かつオンデマンドにデプロイすることができる。
【０００５】
特定のエンドツーエンド統合アプリケーションまたはサービスはハイブリッド・クラウド環境内で実行される場合があり、ハイブリッド・クラウド環境では、一部の処理がパブリック・クラウド空間内で実行され、セキュア・データを使用する場合のある一部の処理が企業のファイアウォール内でオンプレミスで実行される。
【０００６】
ファイアウォールの背後にあるシステムに接続するセキュア・コネクタが知られている。データベースなどのシステムの場合、統合を実行するためにセキュア・コネクタが必要になる。セキュア・コネクタによって、パブリック・クラウド空間内で実行されている統合アプリケーションを、企業のファイアウォールの背後でオンプレミスで実行されているアプリケーションに接続することが可能になる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
複数のデプロイメントロケーションにわたるアプリケーションのセキュア・デプロイメントのための方法、システム、プログラムを提供する。
【課題を解決するための手段】
【０００８】
本発明の一実施形態によれば、デプロイメントロケーションへのアプリケーションのセキュア・デプロイメントのためのコンピュータ実装方法が提供され、このコンピュータ実装方法は、分析のためにアプリケーションを提供することであって、このアプリケーションが、異なるロケーションにデプロイできる処理ノードに分割されることが可能であり、このアプリケーションが、データ・アスペクト（aspect）に対するデプロイメント制約を定義するアノテーションを含んでいるメッセージ・モデルに基づいてメッセージを処理し、データ・アスペクトがメッセージ全体、あるいはメッセージのデータ・フィールド、データ要素、またはデータ構造を含む、提供することと、デプロイメント制約を有するデータ・アスペクトを参照する処理ノードを識別するためにアプリケーションを分析することと、参照されているデータ・アスペクトのデプロイメント制約に基づいて、処理ノードに関する制限を決定することと、決定された制限に従ってアプリケーションの各処理ノードをデプロイすることとを含む。
【０００９】
本発明の第２の実施形態によれば、デプロイメントロケーションへのアプリケーションのセキュア・デプロイメントのためのシステムが提供され、このシステムは、プロセッサと、定義された機能を提供するように配置された次のコンポーネントの機能を実行するためにコンピュータ・プログラム命令をプロセッサに提供するように構成されたメモリとを備え、それらのコンポーネントは、分析のためにアプリケーションを提供するための提供コンポーネントであって、このアプリケーションが、異なるロケーションにデプロイできる処理ノードに分割されることが可能であり、このアプリケーションが、データ・アスペクトに対するデプロイメント制約を定義するアノテーションを含んでいるメッセージ・モデルに基づいてメッセージを処理し、データ・アスペクトがメッセージ全体、あるいはメッセージのデータ・フィールド、データ要素、またはデータ構造を含む、提供コンポーネント、デプロイメント制約を有するデータ・アスペクトを参照する処理ノードを識別するためにアプリケーションを分析する分析コンポーネント、参照されているデータ・アスペクトのデプロイメント制約に基づいて、処理ノードのデプロイメントに関する制限を決定するための決定コンポーネント、決定された制限に従ってアプリケーションの各処理ノードをデプロイするためのデプロイメント・コンポーネントである。
【００１０】
本発明の第３の実施形態によれば、デプロイメントロケーションへのアプリケーションのセキュア・デプロイメントのためのコンピュータ・プログラム製品が提供され、このコンピュータ・プログラム製品は、具現化されたプログラム命令を含んでいるコンピュータ可読記憶媒体を備え、プロセッサによって実行可能なこのプログラム命令は、プロセッサに、分析のためにアプリケーションを提供することであって、このアプリケーションが、異なるロケーションにデプロイできる処理ノードに分割されることが可能であり、このアプリケーションが、データ・アスペクトに対するデプロイメント制約を定義するアノテーションを含んでいるメッセージ・モデルに基づいてメッセージを処理し、データ・アスペクトがメッセージ全体、あるいはメッセージのデータ・フィールド、データ要素、またはデータ構造を含む、提供することと、デプロイメント制約を有するデータ・アスペクトを参照する処理ノードを識別するためにアプリケーションを分析することと、参照されているデータ・アスペクトのデプロイメント制約に基づいて、処理ノードのデプロイメントに関する制限を決定することと、決定された制限に従ってアプリケーションの各処理ノードをデプロイすることとを実行させる。
【００１１】
本発明で説明される態様は、アプリケーションを例えば分散環境またはハイブリッド・クラウド環境にデプロイすることを望む顧客に、デプロイメント・モデルをシンプルかつ簡単に使用できるという利点を提供する。
【００１２】
本発明と見なされる対象は、本明細書の最後の部分において詳細に指摘され、明確に特許請求される。本発明は、添付の図面と併せて読まれたときに、以下の詳細な説明を参照することによって、処理の構造および方法に関して、本発明の対象、特徴、および利点と共に、最もよく理解することができる。
【００１３】
以下の図面を参照し、単に例として本発明の実施形態例について説明する。
【図面の簡単な説明】
【００１４】
【図１】本発明に記載された方法の実施形態例のフロー図である。
【図２】本発明に記載された方法の実施形態例のフロー図である。
【図３】本発明に記載された方法のさらに詳細な実施形態例のフロー図である。
【図４】本発明に記載されたシステムの実施形態例のブロック図である。
【図５】本発明が実装されてよいコンピュータ・システムの実施形態のブロック図である。
【図６】本発明に記載された方法を示す、統合環境内のメッセージ・フローのデプロイメントの例の概略図である。
【図７】本発明に記載された方法を示す、統合環境内のメッセージ・フローのデプロイメントの例の概略図である。
【図８】本発明に記載された、定義された追跡の態様を示すメッセージ・フローのデプロイメントの第２の例の概略図である。
【図９】本発明が実装されてよいコンピュータ・システムまたはクラウド・サーバの実施形態のブロック図である。
【図１０】本発明が実装されてよいクラウド・コンピューティング環境の概略図である。
【図１１】本発明が実装されてよいクラウド・コンピューティング環境の抽象モデル・レイヤの図である。
【発明を実施するための形態】
【００１５】
説明を簡単かつ明確にするために、図に示された各要素の縮尺は、必ずしも一定ではないということが理解されるであろう。例えば、一部の要素の寸法は、明確に示すために、他の要素よりも誇張されている場合がある。さらに、適切であると見なされる場合、参照番号は、対応する特徴または類似する特徴を示すために、図間で繰り返されることがある。
【００１６】
情報は、複数のハードウェア・プラットフォームおよびソフトウェア・プラットフォームにまたがって、全く異なるアプリケーション間を流れることが必要になる場合がある。これをサポートする１つのアーキテクチャは、サービス指向アーキテクチャにおいてアプリケーションとサービスの間の統合された接続を提供するエンタープライズ・サービス・バス・アーキテクチャである。ＩＢＭ  Ｉｎｔｅｇｒａｔｉｏｎ  Ｂｕｓ（以前の名称はＷｅｂＳｐｈｅｒｅ  Ｍｅｓｓａｇｅ  Ｂｒｏｋｅｒであり、ＩＢＭおよびＷｅｂＳｐｈｅｒｅはＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの商標である）は、そのようなアーキテクチャの例であり、ビジネス情報を、データにルールが適用され、情報をルーティングおよび変換するための統合ノード（メッセージ・ブローカーとも呼ばれる）を介して成長する統合アプリケーションとして、流すことができるようにする。
【００１７】
その他のアーキテクチャは分散コンピューティングを含むことができ、分散コンピューティングでは分散システムがソフトウェア・システムであり、このソフトウェア・システムにおいて、コンポーネントがネットワーク・コンピュータ上に配置され、メッセージを渡すことによって通信し、それらの動作を調整する。分散アプリケーションは、分散コンピューティング・アーキテクチャ全体で処理されてよい。
【００１８】
記載された方法およびシステムは、ハイブリッド・クラウド環境を使用することを含めてさまざまなロケーションにデプロイされてよい、統合フローまたは統合アプリケーションの分野において説明される。ただし、等価な方法およびシステムが分散コンピューティング環境に適用されてよいということが、当業者によって理解されるであろう。
【００１９】
記載された方法およびシステムでは、例えばメッセージ・モデルの形態であってよいデータ構造の記述またはモデルが、特定の制限を有するフィールドまたは構造、あるいは構造内の要素などのアスペクトを識別するためにアノテートされる。例えば、特定のフィールドまたは構造内のデータは、企業の構内に制限されること、企業のファイアウォール内に制限されること、国に制限されること、または制限されず、パブリック・クラウドに自由に入れることがある。
【００２０】
その後、統合アプリケーションは、アプリケーションの特定の処理が作用するデータ・フィールドまたはデータ構造を決定するために、分析される。この分析は、メッセージ・モデル内で提供される制限に基づいて、さまざまな制限を使用して実行される場合のある処理ノードを識別することができる。これらの制限は、処理を、メッセージ・モデル内で定義された制限に対応する特定のロケーションまたはロケーションのカテゴリに制限することができる。処理ノードには、制限を示すメタデータを使用してマークが付けられてよい。
【００２１】
分析および制限メタデータ（restricting metadata）のマーキングは、アプリケーションが開発され、アプリケーションのノード内で制限メタデータにマークが付けられてパッケージ化されるときに実行されてよい。あるいは、これは、アプリケーションのデプロイ時に実行されてよく、その場合、メタデータはノードでマークが付けられなくてよく、代わりにノードは、適用可能な制限に従ってデプロイされてよい。
【００２２】
統合アプリケーションがデプロイされるときに、処理ノードが処理しているデータ・フィールドまたはデータ構造に基づいて、処理ノードが環境内で適切にデプロイされる。
【００２３】
有利なことに、最高情報セキュリティ責任者（ＣＩＳＯ：Chief Information Security Officer）またはその他の適切な管理者は、データ・セキュリティに関して前もって制限を設定することができ、その後、それらの制限はメッセージ・モデルに適用される。その後、アプリケーション開発者または統合開発者（integration developer）および管理者は、データに関して存在している制限について詳細な知識を有する必要がない。これによって、ハイブリッド・クラウド環境内でより効率的にアプリケーションの開発および管理を行い、コストおよび複雑さを低減する。
【００２４】
データが安全に（すなわち、オンプレミスで）処理されることが可能であるか、または安全性の低い環境（例えば、クラウド）内で処理されてよい、データを処理するためのシステム内のデプロイメント・システムは、セキュリティまたはプライバシーに関連する制限メタデータ（ノード内でマークが付けられるか、またはリアルタイムに生成される）を調べることによって処理を分散することができ、ルールに基づいて、そのデータの特定の部分を、より安全な環境内で処理されることに制限しながら、機密性の低いデータを安全性の低い環境内で処理することができる。
【００２５】
この方法は、メッセージ・モデルを拡大すること、および、それをアプリケーション分析と連携して使用して、分散アプリケーションのさまざまな部分の適切なデプロイメントロケーションであり、後で処理が行われる必要があるロケーションを決定することについて説明する。記載された方法およびシステムは、データの伝搬に対する制限が適切な設計者によってメッセージ・モデル・レベルで設定されるため、開発者がそのような制限について知る必要がないように、メッセージ・モデルとコードの間の論理的分離を提供する。
【００２６】
一般に、メッセージ・モデルはコードとメッセージの記述の間の分離を提供する。この分離は、セキュア・データにアクセスするアプリケーションの、ハイブリッド・クラウド環境へのデプロイメントにおいて利益を得るために使用される。
【００２７】
図１および２は、記載された方法の２つの実施形態例を示すフロー図１００、１５０を、１つはアプリケーションの開発で、もう１つはそのアプリケーションのデプロイメントで示している。図１を参照すると、フロー図１００は、記載された方法の実施形態例を示しており、複数のシステムにまたがってデプロイされてよいアプリケーションのアプリケーション開発段階で実行されてよい。
【００２８】
準備手順として、メッセージ・モデルは、メッセージのアスペクト内のデータの使用に対する制限を提供するために、制約を使用してアノテートされてよい。制約が適用されるメッセージのアスペクトは、メッセージ全体、複合要素（子複合要素または単純な要素／フィールドを含むことができる）、あるいはメッセージの個別の要素またはフィールドであってよい。制限は、データがデプロイされてよいロケーションを定義するメッセージ・モデル内の制約として提供されてよい。メッセージ・モデルにアノテートすることによって、境界Ｘ内、境界Ｙ内など（すなわち、部署内、ファイアウォール内、国内など）に留まる必要があるデータ・フィールドまたはデータ構造を識別することができる。メッセージ・モデルは、アプリケーションによって処理される一時データ、およびデプロイメントロケーションの決定にこの一時データを使用することを記述するように拡大される。
【００２９】
メッセージ・モデルは、メッセージ形式のアノテートされたモデルを提供し、例えばメッセージ・モデルは、アノテートされた拡張マークアップ言語（ＸＭＬ：Extensible Markup Language）スキーマ・モデルまたはデータ・フォーマット記述言語（ＤＦＤＬ：Data Format Description Language）スキーマ・モデルであってよい。
【００３０】
メッセージ・モデルを作成する場合、管理者は、要素またはフィールドを作成することができ、制約を指定するために、要素またはフィールドに対してプロパティを設定することができる。既存のメッセージ・モデルが変更される場合、管理者は、適切な制約プロパティを設定することによって、既存の要素またはフィールドを変更することができる。アプリケーションは、メッセージ・モデルによって定義されたメッセージを処理するアプリケーションのノードまたはサブセットによって使用するために、開発時に、メッセージ・モデルをアプリケーション・フローに取り込むことができる。アプリケーションの開発において、分析のためにアプリケーションが提供されてよい（１０１）。このアプリケーションは、例えばネットワーク全体（つまり、ハイブリッド・クラウド環境）に分散される場合のある複数のシステムにまたがってデプロイされてよい処理ノードまたはコードのサブセットを含むことができる。
【００３１】
アプリケーションの分析が実行されて、メッセージ・モデル内で制約が課されたデータ・フィールド、データ要素、またはデータ構造を参照するアプリケーションの処理ノード、またはそのような制約が課されたメッセージを処理するアプリケーションの処理ノードを識別する（１０２）。分析は、アノテートされたメッセージ・モデルにアクセスすることができ（１０３）、このメッセージ・モデルにおいて、フィールド、要素、または構造、あるいはこれらの組み合わせに含まれるデータのデプロイメントロケーションに対する制限の詳細を取得するために、データ・フィールド、データ要素、またはデータ構造、あるいはこれらの組み合わせなどのメッセージのアスペクトは、制約を使用してアノテートされている。
【００３２】
一実施形態では、分析は、制限が適用され、制約されないメッセージのターゲットのアスペクトに移動したメッセージのアスペクトに関連する追跡データにアクセスすることもできる（１０４）。ターゲットのアスペクトは、追跡されてよく、それらのデータに適用される制約に対応することができる。ノードの分散に対する制約を示すために、アプリケーションのノードには、制限メタデータを使用してマークが付けられる（１０５）。制限メタデータは、ノードによって使用される方法のアスペクト（メッセージ、データ・フィールド、要素、または構造）に関連するメッセージ・モデル内の制約のアノテーションに基づく（１０６）。
【００３３】
アプリケーションの後でのデプロイメントでは、処理ノードの制限メタデータが読み取られてよく、アプリケーションのさまざまなノードが、そのノードの制限メタデータの要件を満たすシステムによって処理するために送信されてよい（１０７）。
【００３４】
図２を参照すると、フロー図１５０は、記載された方法の実施形態例を示しており、複数のシステムにまたがってデプロイされてよいアプリケーションのデプロイメントでリアルタイムに実行されてよい。図１の方法と同様に、準備手順として、メッセージ・モデルは、メッセージのアスペクト内のデータの使用に対する制限を提供するために、制約を使用してアノテートされてよい。デプロイメントのためのアプリケーションが提供されてよい（１５１）。このアプリケーションは、例えばネットワーク全体（つまり、ハイブリッド・クラウド環境）に分散される場合のある複数のシステムにまたがってデプロイされてよい処理ノードを含むことができる。
【００３５】
アプリケーションの分析が実行されて、メッセージ・モデル内で制約が課されたデータ・フィールド、データ要素、またはデータ構造を参照するアプリケーションの処理ノード、またはそのような制約が課されたメッセージを処理するアプリケーションの処理ノードを識別する（１５２）。分析は、アノテートされたメッセージ・モデルにアクセスすることができ（１５３）、このメッセージ・モデルにおいて、フィールド、要素、または構造、あるいはこれらの組み合わせに含まれるデータのデプロイメントロケーションに対する制限の詳細を取得するために、データ・フィールド、データ要素、またはデータ構造、あるいはこれらの組み合わせなどのメッセージのアスペクトは、制約を使用してアノテートされている。一実施形態では、分析は、制限が適用され、制約されないメッセージのターゲットのアスペクトに移動したメッセージのアスペクトに関連する追跡データにアクセスすることもできる（１５４）。ターゲットのアスペクトは、追跡されてよく、それらのデータに適用される制約に対応することができる。
【００３６】
処理ノードの制限は、メッセージ・モデル内の制約アノテーションおよび追跡データに基づいて決定されてよく（１５５）、アプリケーションのノードは、決定された制限に従ってデプロイされてよく（１５６）、アプリケーションのさまざまなノードは、そのノードの制限の要件を満たすシステムによって処理するために送信されてよい。デプロイメントのためにアプリケーションをノードに分割する（例えば、一部のノードがオンプレミスに存在し、一部のノードがパブリック・クラウド環境内に存在する）ことによって、オンプレミスのリソースが制約されるようになったときに、処理のクラウド・バースティングを可能にする。
【００３７】
図３を参照すると、フロー図２００は、複数のシステムにまたがってデプロイされてよいアプリケーションの開発後（２０１）に実行される、記載された方法の実施形態例をより詳細に示している。この実施形態は統合環境内で提供され、この統合環境では、アプリケーションは、１つまたは複数のインバウンド・インターフェイスおよび１つまたは複数のアウトバウンド・インターフェイスを有するノードを含む統合フローである。分散環境内の対応するアプリケーションは、同様の方法を使用することができる。
【００３８】
開発されたアプリケーションの静的分析が起動されてよく（２０２）、アプリケーションのノードがステップ２０３で分析されてよい。ノードのインバウンド・インターフェイスが制約されたフィールドまたはデータを含んでいるかどうかが決定されてよい（２０４）。ステップ２０４では、フィールドまたはデータに対して提供された制約を決定するために、メッセージ・モデルを参照することができる。ステップ２０４では、制約が適用されたフィールドを記録する追跡記憶装置（tracking store）２１０も参照することができる。ノードが制約されたフィールドを含んでいない場合、この方法は下で説明されるステップ２０８に進む。
【００３９】
ノードが制約されたフィールドを含んでいる場合、このノードは、適切に制限されているとしてマークが付けられてよい（２０５）。その後、このノードのロジックが制約されたフィールドをアウトバウンド・インターフェイス上のいずれかの他のフィールドに移動させたかどうかが決定されてよい（２０６）。ロジックが制約されたフィールドを移動させない場合、この方法は下で説明されるステップ２０８に進むことができる。しかし、ロジックが制約されたフィールドをさらに移動させる場合、ステップ２０８に進む前に、ターゲットのフィールドが制約されたデータを含んでいるということが追跡記憶装置２１０内に記録される（２０７）。
【００４０】
ステップ２０８で、ノードのアウトバウンド・インターフェイスが制約されたフィールドまたはデータを含んでいるかどうかが決定されてよい。ステップ２０８では、制約が適用されたフィールドを記録する追跡記憶装置２１０も参照することができる。そのような制約されたフィールドが存在する場合、このノードは、それに応じて制限されているとしてマークが付けられてよい（２０９）。その後、アプリケーション内にさらにノードが存在するかどうかが決定されてよい（２１１）。ノードが存在する場合、この方法は、ステップ２０３で次のノードを分析するためにループすることができる（２１３）。それ以上ノードが存在しない場合、アプリケーションは、ノード内でマークが付けられた制約に基づいて各ノードを適切なロケーションにデプロイして、ハイブリッド環境にデプロイされてよい（２１４）。
【００４１】
この実施形態では、デプロイメントの前の分析時に追跡記憶装置２１０が使用される。静的分析は、制約を指定しないスキーマに基づいている新しいメッセージを作成するために、制約されたフィールドが使用されるということを認識すると、追跡記憶装置２１０を参照して、その新しいメッセージがその後のノードによって処理されるときに、現在使用されているモデルは制約を有していないが、このメッセージが、前のメッセージ・モデル内で制約されているとしてマークが付けられていたフィールドを含んでおり、したがって前記ノードのデプロイメントまたは処理の範囲を制限するということを識別することができる。
【００４２】
追跡方法は、インターフェイスのみを分析するのとは対照的に、ノード自体に含まれるロジックを分析することを含むことができる。この分析は、ＡＰＩの知識または一般的な変換技術を使用して、他のアウトバウンド・フィールドへの入力として移動させるか、または使用されるフィールドを理解するために、製品ＡＰＩまたはさらに一般的なＡＰＩ（ＸＳＬＴ、ＸＱｕｅｒｙなど）を分析することであってよい。
【００４３】
図４を参照すると、ブロック図が、記載されたシステム３００の一実施形態例を示している。システム３００は、セキュア・デプロイメント・システム（secure deployment system）３１０を含む。セキュア・デプロイメント・システム３１０は、アプリケーション開発用の開発システムの一部、またはデプロイメントロケーションへのアプリケーションのデプロイメント用のデプロイメント・システムの一部として提供されてよい。図３では、セキュア・デプロイメント・コンポーネント３２０が独立して示されているが、セキュア・デプロイメント・コンポーネント３２０は、セキュア・デプロイメント・システム３１０がデプロイメント・システムとして提供される場合、セキュア・デプロイメント・システム３１０の出力コンポーネントとして組み込まれてよい。
【００４４】
メッセージ・モデル・アノテーション・コンポーネント（message model annotating component）３３０が提供されてよく、メッセージ・モデル・アノテーション・コンポーネント３３０は、セキュア・デプロイメント・システム３１０から独立していてよく、本明細書に記載されているように、デプロイメント制約を使用してメッセージ・モデルにアノテートするための管理者用のユーザ・インターフェイスとして提供されてよい。メッセージ・モデル・アノテーション・コンポーネント３３０は、アプリケーション開発から独立していてよい。セキュア・デプロイメント・システム３１０は、プロセッサ、および定義された機能を提供するように配置された以下のコンポーネントの機能を実行するためのコンピュータ・プログラム命令をプロセッサに提供するように構成されたメモリを含むことができる。
【００４５】
セキュア・デプロイメント・システム３１０は、分析のためにアプリケーション３１２を受信するように配置された受信コンポーネント３１１を含むことができ、このアプリケーションは、さまざまなロケーションにデプロイされてよい処理ノード４０１〜４０５に分割されることが可能である。アプリケーション３１２は、メッセージの特定のデータ・フィールドまたはデータ構造内のデータのデプロイメントに対する制約を定義するアノテーションを含んでいるメッセージ・モデル３１３に基づいてメッセージを処理する。必要なメッセージ・モデル３１３にアクセスするためのアクセス・コンポーネント３１７が提供されてよい。
【００４６】
セキュア・デプロイメント・システム３１０は、メッセージ・モデル３１３内のアノテーションによって定義されたデプロイメント制約を有する特定のデータ・フィールドまたはデータ構造を参照する処理ノード４０１〜４０５を識別するために、アプリケーションを分析するように配置された分析コンポーネント３１４を含むことができる。分析コンポーネント３１４は、デプロイメント制約を有するデータ・フィールドまたはデータ構造を追跡し、デプロイメント制約を有するデータ・フィールドまたはデータ構造を処理ノード５０１〜５０５から移動させるかどうかを決定するように配置された追跡コンポーネント３１６を参照することもできる。追跡記憶装置３１８は、移動させたデータ・フィールドまたはデータ構造がデプロイメント制約を有することを記録するために提供されてもよい。
【００４７】
セキュア・デプロイメント・システム３１０は、参照されるデータ・フィールドおよびデータ構造のデプロイメント制約に基づいて処理ノードに関する制限を決定するために、決定コンポーネント３２１を含むことができる。
【００４８】
デプロイメントの前にセキュア・デプロイメント・システム３１０が運用される実施形態では、セキュア・デプロイメント・システム３１０は、処理ノードによってアクセスされる特定のデータ・フィールドまたはデータ構造に関連するメッセージ・モデル３１３内でアノテートされたデプロイメント制約に対応する制限メタデータを使用して処理ノード４０１〜４０５にマークを付けるように配置されたマーキング・コンポーネント３１５を含むことができる。マーク付きアプリケーション出力コンポーネント（marked application output component）３１９は、必要に応じて、マークが付けられたアプリケーションを独立したデプロイメント・コンポーネント３２０に出力することができる。デプロイメント・コンポーネント３２０は、制限メタデータを読み取り、デプロイメント制約に従って各処理ノード４０１〜４０５をデプロイすることができる。
【００４９】
セキュア・デプロイメント・システム３１０がアプリケーションのデプロイメントで運用される実施形態では、決定コンポーネント３２１は、処理ノードに関する決定された制限を、それに応じて処理ノードをデプロイできるセキュア・デプロイメント・コンポーネント３２０に出力することができる。
【００５０】
図５を参照すると、ブロック図は、記載された方法およびシステムが実装されてよいシステム例４００を示している。示されたシステム例４００は、ハイブリッド・クラウド環境全体にデプロイされた統合アプリケーションの形態でのアプリケーション３１２である。説明を簡単にするために、ハイブリッド・クラウド環境は、オンプレミス・システム４１０およびパブリック・クラウド４２０として示されている。
【００５１】
オンプレミス・システム４１０およびパブリック・クラウド４２０は、ランタイム・エンジン４１１、４２１をそれぞれ含むことができる。ランタイム・エンジン４１１、４２１は、これらのランタイム・エンジンにデプロイされたアプリケーションを実行する。一実施形態例では、ランタイム・エンジンは統合サーバであってよい。アプリケーションは、メッセージ・モデル３１３などの関連するリソースを通常は格納することができるライブラリを参照する。
【００５２】
統合アプリケーション３１２は、関連付けられたメッセージ・モデル３１３と共に処理ノード４０１〜４０５を含んでいる。各ノード４０１〜４０５は、オンプレミスではランタイム・エンジン４１１において実行されてよく、またはパブリック・クラウド（あるいは、さらに複雑な配置におけるその他のロケーション）ではランタイム・エンジン４２１において実行されてよい。アプリケーション３１２内のロジックがノード４０１〜４０５に達したときに、ロジックがパブリック・クラウド４２０で実行される場合、処理されるメッセージおよびコンテキストがランタイム・エンジン４２１に送信される。ロジックがオンプレミス・システム４１０で実行される場合、処理されるメッセージおよびコンテキストがオンプレミス・システム４１０上のランタイム・エンジン４１１に送信される。
【００５３】
セキュア・コネクタ４２０は、オンプレミスのランタイム・エンジン４１１をクラウド４２０内のランタイム・エンジン４２１に接続するロケーション（オンプレミス、クラウド内、またはこれら２つの間で分割される）で実行されるプロセスとして提供されてよい。処理がクラウドのランタイム・エンジン４２１において完了すると、制御がオンプレミスのランタイム・エンジン４１１に戻る。そのため、セキュア・コネクタ４２０は、呼び出されるランタイム・エンジン４１１、４２１に関連する外部プロセスであり、オンプレミスのランタイム・エンジン４１１をクラウド内のランタイム・エンジン４２１に接続する。
【００５４】
記載されたセキュア・デプロイメント・コンポーネント３１０は、セキュア・コネクタ４２０で提供されてよく、処理ノード４０１〜４０５で制限メタデータを読み取ることができ、ノードがデプロイされてよいランタイム・エンジン４１１、４２１を決定することができる。
【００５５】
ここで、記載された方法を説明する例が提供される。
【００５６】
管理者は、メッセージ・モデル（ＸＭＬ／ＤＦＤＬスキーマなど）を使用してメッセージ構造を記述するときに、特定のデータ構造またはデータ・フィールドに対する制限を設定するアノテーションをさらに提供することができる。以下の例は、ＦＩＥＬＤ２が企業のファイアウォールから離れないというＦＩＥＬＤ２に対する制限、および複合構造ＰＥＲＳＯＮＡＬ＿ＤＡＴＡ内のデータが国から離れることが許可されないという制限を課す。
ＨＥＡＤＥＲ：：
ＦＩＥＬＤ１：：ＳＴＲＩＮＧ
ＢＯＤＹ：：
ＦＩＥＬＤ２：：ＳＴＲＩＮＧ：：ＯＮＰＲＥＭ
ＰＥＲＳＯＮＡＬ＿ＤＡＴＡ：：：：ＣＯＵＮＴＲＹ
ＦＩＥＬＤ３：：ＩＮＴＥＧＥＲ
ＦＩＥＬＤ４：：ＳＴＲＩＮＧ
ＦＩＥＬＤ５：：ＳＴＲＩＮＧ
ＦＯＯＴＥＲ：：
ＦＩＥＬＤ６：：ＤＡＴＥＴＩＭＥ
【００５７】
ＦＩＥＬＤ２およびＰＥＲＳＯＮＡＬ＿ＤＡＴＡフィールド／要素（子要素ＦＩＥＬＤ３、ＦＩＥＬＤ４、およびＦＩＥＬＤ５を含んでいる）は、制約を有する。ノードがこれらのフィールドとのインターフェイスを有する場合、そのノードは適切な環境内で実行されていなければならない。
【００５８】
その後、統合フロー開発者は、前記メッセージ・モデルを、説明されたメッセージを処理する統合フローに取り込むことができる。アプリケーションが完成し、パッケージ化またはデプロイされるときに、コードの静的分析が行われ、メッセージ・モデル内で制約が課されたフィールドにアクセスするか、またはそのような制約が課されたメッセージを処理するアプリケーションのノードを決定することができる。有利なことに、この決定は、メッセージ・モデルから出たデータ（例えば、上のＦＩＥＬＤ２から取り出し、アウトバウンド呼び出しを行うために、別のメッセージ・モデル内の制約されないフィールドに移動させたデータ）を追跡することをさらに含むことができる。
【００５９】
その後、アプリケーションのノードは、デプロイされてよいロケーションに示すために、分析に基づいてマークが付けられてよい。「ＯＮＰＲＥＭ」によって制約されたデータに作用するノードは、オンプレミス環境にのみデプロイされてよい。
【００６０】
統合の第１の例およびその後のデプロイメントが図６および７に示されている。図６では、入力５０１、ルーティング５０２、変換５０３、ＳＯＡＰ要求５０４、変換５０５、および出力５０６のノードを通る統合のメッセージ・フロー５００の実施形態例が示されている。メッセージ・ボックスが上下に重なって示されている場合、それは、上部のメッセージが下部のメッセージに変換されているか、または上部のメッセージが外部のサービスに送信され、下部のメッセージが返されていることを示している。
【００６１】
メッセージ５１１は、メッセージ・フローへの入力段階５０１で受信される。メッセージ５１１は、メッセージ内の下線が引かれたフィールドに基づいてルーティングされる（５０２）。簡単にするために、このポイントから選択できる他のパスは示されていない。メッセージ５１３は、上部に示されたメッセージ５１３Ａから下部に示されたメッセージ５１３Ｂに変換される（５０３）。下線が引かれたフィールドは、変換ノード５０３のアウトバウンド・メッセージに伝達するデータを示している。ＳＯＡＰ要求ノード５０４の上部のメッセージ５１４Ａは、外部のＳＯＡＰサービスに送信され、下の応答５１４Ｂが受信される。このノードを安全性の低い環境内で実行できるように、どちらのインターフェイスも、制約されたフィールドを参照しない。変換ノード５０５の上部のメッセージ５１５Ａは、下部に示されたメッセージ５１５Ｂに変換される。メッセージ５１６は、出力ノード５０６で統合から出力されることを示している。
【００６２】
入力ノード５０１とルーティング・ノード５０２の間、およびルーティング・ノード５０２と変換ノード５０３の間のインターフェイスのメッセージ・モデルは、制約されているＦＩＥＬＤ２フィールド、ならびにＰＥＲＳＯＮＡＬ＿ＤＡＴＡフィールドおよび要素（子要素ＦＩＥＬＤ３、ＦＩＥＬＤ４、およびＦＩＥＬＤ５を含んでいる）を含む。そのため、ノードがこれらのフィールドとのインターフェイスを有する場合、そのノードは適切な環境内で実行されていなければならない。
【００６３】
図７は、メッセージ・フロー５００の統合デプロイメントの結果を示している。入力ノード５０１、ルーティング・ノード５０２、変換ノード５０３は、制約されたデータを処理しているため、オンプレミス５２０で処理される必要がある。これらのノードは、制限メタデータを使用してマークが付けられ、オンプレミスにデプロイされる。要求ノード５０４、第２の変換ノード５０５、および出力ノード５０６は、制約されたデータを処理していないため、パブリック・クラウド環境５３０内でデプロイされて処理されることが可能である。
【００６４】
これらのノードは、前記環境の地理的位置が知られているか、または指定されることが可能である場合、クラウド環境内で使用されることが可能である。あるいは、これらのノードは、（例えば）データベースの位置が知られていないか、または前記地理的制約の範囲外にある場合、前記データベースに送信されることは不可能である。そのような状況の下では、データは送信されない（コンテンツから除去される）。これによって、アプリケーション内で、管理者／開発者に報告されるエラーが発生する可能性がある。
【００６５】
図８を参照すると、統合の第２の例が示されており、値ＰＮ５１５ＤＬを含む追跡されるフィールド５５１を示している。変換ノード５０３と要求ノード５０４の間のインターフェイスのメッセージ・モデルは制約されたフィールドを含んでいないが、静的分析は、制約されたフィールド５５１（値ＰＮ５１５ＤＬを含んでいる）が制約されないフィールド５５２に移動したことを示した。フィールド５５２は、制約されたデータを含んでいるため、制約（すなわち、オンプレミス）から離れることができない。したがって、要求ノード５０４はオンプレミスで処理されなければならない。要求ノード５０４と変換ノード５０５の間、および変換ノード５０５と出力５０６の間のインターフェイスは制約されたデータを含んでおらず、これらのメッセージ・モデルに入る制約された追跡されているデータは存在せず、したがって最後の２つのノード５０５、５０６はパブリック環境で処理されてよい。
【００６６】
上の実装および説明は統合アプリケーションに基づいているが、これらの方法は、構成要素に分割されてよい任意のアプリケーションにさらに広く適用可能である。
【００６７】
ここで図９を参照すると、コンピュータ・システムまたはサーバの形態でのシステム６００の例の概略図が示されている。
【００６８】
コンピュータ・システムまたはサーバ６１２は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用されてよい。コンピュータ・システム／サーバ６１２での使用に適した既知のコンピューティング・システム、環境、または構成、あるいはこれらの組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
【００６９】
コンピュータ・システム／サーバ６１２は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令の一般的な文脈において説明されてよい。通常、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含むことができる。コンピュータ・システム／サーバ６１２は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境で実行されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、ローカルおよびリモートの両方のコンピュータ・システムの、メモリ・ストレージ・デバイスを含む記憶媒体に配置されてよい。
【００７０】
図９では、コンピュータ・システム／サーバ６１２は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム／サーバ６１２のコンポーネントは、１つまたは複数のプロセッサまたはプロセッシング・ユニット６１６、システム・メモリ６２８、およびシステム・メモリ６２８を含むさまざまなシステム・コンポーネントをプロセッサ６１６に結合するバス６１８を含むことができるが、これらに限定されない。
【００７１】
バス６１８は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、１つまたは複数の任意の種類のバス構造を表す。例として、そのようなアーキテクチャは、ＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（Micro Channel Architecture）バス、ＥＩＳＡ（Enhanced ISA）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカル・バス、およびＰＣＩ（Peripheral Component Interconnects）バスを含むが、これらに限定されない。
【００７２】
コンピュータ・システム／サーバ６１２は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ６１２によってアクセスできる任意の使用可能な媒体にすることができ、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体を含む。
【００７３】
システム・メモリ６２８は、ランダム・アクセス・メモリ（ＲＡＭ）６３０またはキャッシュ・メモリ６３２あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ６１２は、その他の取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ・システム記憶媒体をさらに含むことができる。単に例として、取り外し不可、不揮発性の磁気媒体（図示されておらず、通常は「ハード・ドライブ」と呼ばれる）に対する読み取りと書き込みを行うために、ストレージ・システム６３４を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク（例えば、「フロッピー（Ｒ）・ディスク」）に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、１つまたは複数のデータ媒体インターフェイスによってバス６１８に接続することができる。下でさらに示され、説明されるように、メモリ６２８は、本発明の実施形態の機能を実行するように構成された一連の（例えば、少なくとも１つの）プログラム・モジュールを備える少なくとも１つのプログラム製品を含むことができる。
【００７４】
プログラム・モジュール６４２のセット（少なくとも１つ）を含んでいるプログラム／ユーティリティ６４０は、例えばメモリ６２８に記憶されてよく、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データにも記憶できるが、これらに限定されない。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組み合わせは、それぞれネットワーク環境の実装を含むことができる。プログラム・モジュール６４２は、通常、本明細書に記載された本発明の実施形態の機能または方法あるいはその両方を実行する。
【００７５】
また、コンピュータ・システム／サーバ６１２は、キーボード、ポインティング・デバイス、ディスプレイ６２４などの１つまたは複数の外部デバイス６１４、ユーザがコンピュータ・システム／サーバ６１２と情報をやりとりできるようにする１つまたは複数のデバイス、またはコンピュータ・システム／サーバ６１２が１つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるいはこれらの組み合わせと通信することもできる。そのような通信は、入力／出力（Ｉ／Ｏ：Input/Output）インターフェイス６２２を介して行うことができる。さらに、コンピュータ・システム／サーバ６１２は、ローカル・エリア・ネットワーク（ＬＡＮ：Local Area Network）、一般的な広域ネットワーク（ＷＡＮ：Wide Area Network）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはこれらの組み合わせなどの１つまたは複数のネットワークと、ネットワーク・アダプタ６２０を介して通信することができる。図示されているように、ネットワーク・アダプタ６２０は、バス６１８を介してコンピュータ・システム／サーバ６１２の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム／サーバ６１２と併用できるということが理解されるべきである。その例は、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどを含むが、これらに限定されない。
【００７６】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはこれらの組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいる１つまたは複数のコンピュータ可読記憶媒体を含むことができる。
【００７７】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および記憶できる有形のデバイスにすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read-only memoryまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されているコンピュータ可読記憶媒体は、本質的に、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一時的信号であると解釈されるべきではない。
【００７８】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはこれらの組み合わせ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードすることができる。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはこれらの組み合わせを備えてもよい。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【００７９】
本発明の処理を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードにすることができる。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータを、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）または広域ネットワーク（ＷＡＮ：wide area network）を含む任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続を、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行うことができる。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate arrays）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic arrays）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行できる。
【００８０】
本発明の態様は、本明細書において、本発明の実施形態に記載された方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できるということが理解されるであろう。
【００８１】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはこれらの組み合わせに特定の方式で機能するように指示できるものであってもよい。
【００８２】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータ実装プロセスを生成すべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれ、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で一連の動作可能なステップを実行させるものであってもよい。
【００８３】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に記載されているシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および処理を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表すことができる。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生させることができる。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、指定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令を組み合わせて実行する専用ハードウェアベースのシステムによって実装できるということにも注意する。
【００８４】
クラウド・コンピューティング
本開示にはクラウド・コンピューティングの詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないということが、あらかじめ理解される。本発明の実施形態は、既知または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【００８５】
クラウド・コンピューティングは、構成可能なコンピューティング・リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス）の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、および少なくとも４つのデプロイメント・モデルを含むことができる。
【００８６】
特徴は、次のとおりである。
【００８７】
オンデマンドのセルフ・サービス：クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどのコンピューティング能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【００８８】
幅広いネットワーク・アクセス：クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、およびＰＤＡ）による利用を促進する。
【００８９】
リソース・プール：プロバイダのコンピューティング・リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベル（例えば、国、州、データセンター）では、場所を指定できる場合がある。
【００９０】
迅速な順応性：クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、無制限に見え、任意の量をいつでも購入できることである。
【００９１】
測定されるサービス：クラウド・システムは、計測機能を活用することによって、サービスの種類（例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント）に適した何らかの抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
【００９２】
サービス・モデルは、次のとおりである。
【００９３】
ＳａａＳ（Software as a Service）：利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションを使用することである。それらのアプリケーションは、Ｗｅｂブラウザ（例えば、Ｗｅｂベースの電子メール）などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能さえも含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【００９４】
ＰａａＳ（Platform as a Service）：利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【００９５】
ＩａａＳ（Infrastructure as a Service）：利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的なコンピューティング・リソースをプロビジョニングすることであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント（例えば、ホスト・ファイアウォール）を限定的に制御できる。
【００９６】
デプロイメント・モデルは、次のとおりである。
【００９７】
プライベート・クラウド：このクラウド・インフラストラクチャは、組織のためにのみ運用される。これは、この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【００９８】
コミュニティ・クラウド：このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事（例えば、任務、セキュリティ要件、ポリシー、および適合性に関する考慮事項）を共有している特定のコミュニティをサポートする。これは、これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【００９９】
パブリック・クラウド：このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【０１００】
ハイブリッド・クラウド：このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術（例えば、クラウド間の負荷バランスを調整するためのクラウド・バースティング）によって固有の実体を残したまま互いに結合された２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の複合である。
【０１０１】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを備えるインフラストラクチャである。
【０１０２】
ここで図１０を参照すると、クラウド・コンピューティング環境７５０の例が示されている。図示されているように、クラウド・コンピューティング環境７５０は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス（例えば、ＰＤＡ（Personal Digital Assistant）または携帯電話７５４Ａ、デスクトップ・コンピュータ７５４Ｂ、ラップトップ・コンピュータ７５４Ｃ、または自動車コンピュータ・システム７５４Ｎ、あるいはこれらの組み合わせなど）が通信できる１つまたは複数のクラウド・コンピューティング・ノード６００を備える。ノード６００は、互いに通信することができる。ノード６００は、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組み合わせなど、１つまたは複数のネットワーク内で物理的または仮想的にグループ化されてよい（図示せず）。これによって、クラウド・コンピューティング環境７５０は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはこれらの組み合わせをサービスとして提供できる。図１０に示されたコンピューティング・デバイス７５４Ａ〜Ｎの種類は、例示のみが意図されており、コンピューティング・ノード６００およびクラウド・コンピューティング環境７５０は、任意の種類のネットワークまたはネットワーク・アドレス指定可能な接続（例えば、Ｗｅｂブラウザを使用した接続）あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信できるということが理解される。
【０１０３】
ここで図１１を参照すると、クラウド・コンピューティング環境７５０（図１０）によって提供される機能的抽象レイヤのセットが示されている。図１１に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【０１０４】
ハードウェアおよびソフトウェア・レイヤ８６０は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム８６１、ＲＩＳＣ（Reduced Instruction Set Computer）アーキテクチャベースのサーバ８６２、サーバ８６３、ブレード・サーバ８６４、ストレージ・デバイス８６５、ならびにネットワークおよびネットワーク・コンポーネント８６６を含む。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア８６７およびデータベース・ソフトウェア８６８を含む。
【０１０５】
仮想化レイヤ８７０は、仮想サーバ８７１、仮想ストレージ８７２、仮想プライベート・ネットワークを含む仮想ネットワーク８７３、仮想アプリケーションおよびオペレーティング・システム８７４、ならびに仮想クライアント８７５などの仮想的実体を提供できる抽象レイヤを設ける。
【０１０６】
一例を挙げると、管理レイヤ８８０は、以下で説明される機能を提供することができる。リソース・プロビジョニング８８１は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよびその他のリソースの動的調達を行う。計測および価格設定８８２は、クラウド・コンピューティング環境内でリソースが利用された際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウドの利用者およびタスクのＩＤ検証を行うとともに、データおよびその他のリソースの保護を行う。ユーザ・ポータル８８３は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理８８４は、必要なサービス・レベルを満たすように、クラウドのコンピューティング・リソースの割り当てと管理を行う。サービス水準合意（ＳＬＡ：Service Level Agreement）計画および実行８８５は、今後の要求が予想されるクラウドのコンピューティング・リソースの事前準備および調達を、ＳＬＡに従って行う。
【０１０７】
ワークロード・レイヤ８９０は、クラウド・コンピューティング環境で利用できる機能の例を提供する。このレイヤから提供できるワークロードおよび機能の例は、マッピングおよびナビゲーション８９１、ソフトウェア開発およびライフサイクル管理８９２、仮想クラスルーム教育の配信８９３、データ分析処理８９４、トランザクション処理８９５、およびデプロイメントロケーションへのセキュア・デプロイメントのためのデプロイメントおよび接続機能８９６を含む。
【０１０８】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、または開示された実施形態に限定されない。説明された実施形態の範囲および思想を逸脱することなく多くの変更および変形が、当業者にとって明らかになる。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするため選択されている。
【０１０９】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、または開示された実施形態に限定されない。開示された実施形態の範囲および思想を逸脱することなく多くの変更および変形が、当業者にとって明らかになる。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするため選択されている。
【図１】
0006714693.tif 000002
【図２】
0006714693.tif 000003
【図３】
0006714693.tif 000004
【図４】
0006714693.tif 000005
【図５】
0006714693.tif 000006
【図６】
0006714693.tif 000007
【図７】
0006714693.tif 000008
【図８】
0006714693.tif 000009
【図９】
0006714693.tif 000010
【図１０】
0006714693.tif 000011
【図１１】
0006714693.tif 000012