(57)【特許請求の範囲】
【請求項１】
コンピュータ実行可能コンポーネントを格納するメモリと、
前記メモリに操作可能に結合され、前記メモリに格納されたコンピュータ実行可能コンポーネントを実行するプロセッサとを備えているシステムであって、前記コンピュータ実行可能コンポーネントが、
コンテナ化するためのターゲット・アプリケーションによって使用される情報を特定する収集コンポーネントと、
１つまたは複数の定義されたしきい値内で、前記情報に関して１つまたは複数のリスク違反が存在するかどうかを判定するリスク評価コンポーネントと、
コンプライアンス違反またはセキュリティ違反が前記情報に存在するかどうかを判定するコンプライアンスコンポーネントであって、前記コンプライアンスコンポーネントによる前記判定が、前記リスク評価コンポーネントによる１つまたは複数のリスク違反が存在しないということの決定に基づいて実行される、前記コンプライアンスコンポーネントと、
コンプライアンス違反もセキュリティ違反も前記情報に存在しないということの決定に基づいて、下層のオペレーティング・システムなしで前記ターゲット・アプリケーションを実行可能にする、前記ターゲット・アプリケーションの定義されたコンポーネントに対応する新しいコンテナを生成する、構築コンポーネントとを備えている、システム。
【請求項２】
１つまたは複数の特徴を、１つもしくは複数のシステム動作または１つもしくは複数のライブラリに自動的にマッピングするマッピング・コンポーネントをさらに備えている、請求項１に記載のシステム。
【請求項３】
１つまたは複数の特徴を、１つもしくは複数のシステム動作または１つもしくは複数のライブラリにマッピングすることが、１つまたは複数のコンプライアンスに関連する特徴のマッピングを含んでいる、請求項２に記載のシステム。
【請求項４】
１つまたは複数の特徴を、１つもしくは複数のシステム動作または１つもしくは複数のライブラリにマッピングすることが、１つまたは複数のセキュリティに関連する特徴のマッピングを含んでいる、請求項２に記載のシステム。
【請求項５】
１つまたは複数のコンテナ・イメージを自動的に作成するために採用された１つまたは複数のパターンを生成するパターン・コンポーネントをさらに備えている、請求項１に記載のシステム。
【請求項６】
前記１つまたは複数のパターンの前記生成が、前記リスク評価コンポーネントによる、前記情報に関して１つまたは複数のリスク違反が存在するということの決定に基づいて、または前記コンプライアンスコンポーネントによる、コンプライアンス違反またはセキュリティ違反が前記情報に存在するということの決定に基づいて実行される、請求項５に記載のシステム。
【請求項７】
前記システムが、サービスの実行を容易にするターゲット・コードを含んでいる１つまたは複数のランタイムの動的生成を提供する、請求項１に記載のシステム。
【請求項８】
前記オペレーティング・システムのプロセスを停止する操作コンポーネントをさらに備えている、請求項１に記載のシステム。
【請求項９】
プロセッサに動作可能に結合されたシステムによって、コンテナ化するためのターゲット・アプリケーションによって使用される情報を特定することと、
前記システムによって、１つまたは複数の定義されたしきい値内で、前記情報に関して１つまたは複数のリスク違反が存在するかどうかを判定することと、
前記システムによって、コンプライアンス違反またはセキュリティ違反が前記情報に存在するかどうかを判定することであって、前記コンプライアンス違反またはセキュリティ違反が存在するかどうかを前記判定することが、前記１つまたは複数のリスク違反が存在しないということの決定に基づいて実行される、前記判定することと、
前記システムによって、下層のオペレーティング・システムなしで前記ターゲット・アプリケーションを実行可能にする、前記ターゲット・アプリケーションの定義されたコンポーネントに対応するコンポーネントの新しいコンテナを生成することであって、前記生成することが、コンプライアンス違反もセキュリティ違反も前記情報に存在しないということの決定に基づく、前記生成することとを含んでいる、コンピュータ実装方法。
【請求項１０】
請求項２乃至８のいずれか一項に記載のシステムが備える各コンポーネントが実行する各ステップを含むコンピュータ実装方法。
【請求項１１】
コンテナのコンプライアンスを認識するランタイム生成を容易にするためのコンピュータ・プログラムであって、プロセッサに、
コンテナ化するためのターゲット・アプリケーションによって使用される情報を特定すること、
１つまたは複数の定義されたしきい値内で、前記情報に関して１つまたは複数のリスク違反が存在するかどうかを判定すること、
コンプライアンス違反またはセキュリティ違反が前記情報に存在するかどうかを判定することであって、前記コンプライアンス違反またはセキュリティ違反に関する前記判定が、１つまたは複数のリスク違反が存在しないということの決定に基づく、前記判定すること、
下層のオペレーティング・システムなしで前記ターゲット・アプリケーションを実行可能にする、前記ターゲット・アプリケーションの定義されたコンポーネントに対応するコンポーネントの新しいコンテナを生成すること、を実行させるためのコンピュータ・プログラム。
【請求項１２】
請求項１１に記載のコンピュータ・プログラムを記録したコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテナのコンプライアンスを認識するランタイム生成を容易にすることに関する。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
コンテナのコンプライアンスを認識するランタイム生成を容易にするシステム、コンピュータ実装方法、およびコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【０００３】
以下に、本発明の１つまたは複数の実施形態の基本的理解を可能にするための概要を示す。この概要は、主要な要素または重要な要素を特定するよう意図されておらず、本発明の特定の実施形態の範囲または特許請求の範囲を正確に説明するよう意図されていない。この概要の唯一の目的は、後で提示されるより詳細な説明のための前置きとして、概念を簡略化された形態で提示することである。１つまたは複数の実施形態では、コンテナのコンプライアンスを認識するランタイム生成を容易にするデバイス、システム、コンピュータ実装方法、装置、またはコンピュータ・プログラム製品、あるいはその組合せが説明される。
【０００４】
本発明の一実施形態によれば、システムが提供される。このシステムは、コンピュータ実行可能コンポーネントを格納するメモリを備えることができる。このシステムは、メモリに操作可能に結合され、メモリに格納されたコンピュータ実行可能コンポーネントを実行することができる、プロセッサを備えることもできる。コンピュータ実行可能コンポーネントは、コンテナ化するためのターゲット・アプリケーションによって使用される情報を特定できる収集コンポーネントを含むことができる。コンピュータ実行可能コンポーネントは、１つまたは複数の定義されたしきい値内で、情報に関して１つまたは複数のリスク違反が存在するかどうかを判定できるリスク評価コンポーネントをさらに含むことができる。コンピュータ実行可能コンポーネントは、コンプライアンス違反またはセキュリティ違反が情報に存在するかどうかを判定できるコンプライアンス・コンポーネントをさらに含むことができ、コンプライアンス・コンポーネントによるこの判定は、リスク評価コンポーネントによる１つまたは複数のリスク違反が存在しないということの決定に基づいて実行される。コンピュータ実行可能コンポーネントは、コンプライアンス違反もセキュリティ違反も情報に存在しないということの決定に基づいて、下層のオペレーティング・システムなしでターゲット・アプリケーションを実行可能にする、ターゲット・アプリケーションの定義されたコンポーネントに対応する新しいコンテナを生成できる、構築コンポーネントをさらに含むことができる。
【０００５】
本発明の別の実施形態によれば、コンピュータ実装方法が提供される。このコンピュータ実装方法は、プロセッサに動作可能に結合されたシステムによって、コンテナ化するためのターゲット・アプリケーションによって使用される情報を特定することを含むことができる。このコンピュータ実装方法は、システムによって、１つまたは複数の定義されたしきい値内で、情報に関して１つまたは複数のリスク違反が存在するかどうかを判定することをさらに含むことができる。このコンピュータ実装方法は、システムによって、コンプライアンス違反またはセキュリティ違反が情報に存在するかどうかを判定することをさらに含むことができ、コンプライアンス違反またはセキュリティ違反が存在するかどうかを判定することは、リスク評価コンポーネントによる１つまたは複数のリスク違反が存在しないということの決定に基づいて実行される。このコンピュータ実装方法は、システムによって、下層のオペレーティング・システムなしでターゲット・アプリケーションを実行可能にする、ターゲット・アプリケーションの定義されたコンポーネントに対応するコンポーネントの新しいコンテナを生成することをさらに含むことができ、この生成することは、コンプライアンス違反もセキュリティ違反も情報に存在しないということの決定に基づく。
【０００６】
本発明の別の実施形態によれば、コンテナのコンプライアンスを認識するランタイム生成を容易にするためのコンピュータ・プログラム製品が提供される。このコンピュータ・プログラム製品は、プログラム命令が具現化されているコンピュータ可読記憶媒体を備えることができる。プログラム命令は、プロセッサに、コンテナ化するためのターゲット・アプリケーションによって使用される情報を特定させるように、プロセッサによって実行可能であることができる。プログラム命令は、プロセッサに、１つまたは複数の定義されたしきい値内で、情報に関して１つまたは複数のリスク違反が存在するかどうかを判定させるように、プロセッサによってさらに実行可能であることができる。プログラム命令は、プロセッサに、コンプライアンス違反またはセキュリティ違反が情報に存在するかどうかを判定させるように、プロセッサによってさらに実行可能であることができ、コンプライアンス違反またはセキュリティ違反に関する判定は、リスク評価コンポーネントによる１つまたは複数のリスク違反が存在しないということの決定に基づく。プログラム命令は、プロセッサに、下層のオペレーティング・システムなしでターゲット・アプリケーションを実行可能にする、ターゲット・アプリケーションの定義されたコンポーネントに対応するコンポーネントの新しいコンテナを生成させるように、プロセッサによってさらに実行可能であることができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の１つまたは複数の実施形態による、コンテナのコンプライアンスを認識するランタイム生成を容易にする、例示的なシステムのブロック図である。
【図２】本明細書に記載された１つまたは複数の実施形態による、マッピング・コンポーネントを含んでいる、コンテナのコンプライアンスを認識するランタイム生成を容易にする、例示的な非限定的システムのブロック図である。
【図３】本明細書に記載された１つまたは複数の実施形態による、パターン・コンポーネントを含んでいる、コンテナのコンプライアンスを認識するランタイム生成を容易にする、例示的な非限定的システムのブロック図である。
【図４】本明細書に記載された１つまたは複数の実施形態による、操作コンポーネントを含んでいる、コンテナのコンプライアンスを認識するランタイム生成を容易にする、例示的な非限定的システムのブロック図である。
【図５】本明細書に記載された１つまたは複数の実施形態による、コンテナのコンプライアンスを認識するランタイム生成を容易にする、例示的な非限定的コンピュータ実装方法を示す図である。
【図６】本明細書に記載された１つまたは複数の実施形態による、コンプライアンスおよびセキュリティの分類を容易にする、例示的な非限定的コンピュータ実装方法を示す図である。
【図７】本明細書に記載された１つまたは複数の実施形態による、コンテナのコンプライアンスを認識するランタイム生成を容易にする、例示的な非限定的コンピュータ実装方法を示す図である。
【図８】本明細書に記載された１つまたは複数の実施形態による、コンテナのコンプライアンスを認識するランタイム生成を容易にする、例示的な非限定的コンピュータ実装方法を示す図である。
【図９】本明細書に記載された１つまたは複数の実施形態による、コンテナのコンプライアンスを認識するランタイム生成を容易にする、例示的な非限定的コンピュータ実装方法を示す図である。
【図１０】本明細書に記載された１つまたは複数の実施形態による、コンテナのコンプライアンスを認識するランタイム生成を容易にする、例示的な非限定的コンピュータ実装方法を示す図である。
【図１１】本明細書に記載された１つまたは複数の実施形態を容易にすることができる例示的な非限定的動作環境のブロック図である。
【図１２】本明細書に記載された１つまたは複数の実施形態を容易にすることができるクラウド・コンピューティング環境を示す図である。
【図１３】本明細書に記載された１つまたは複数の実施形態を容易にすることができる抽象モデル・レイヤを示す図である。
【発明を実施するための形態】
【０００８】
以下の詳細な説明は、例にすぎず、本発明もしくは本出願またはその両方の実施形態、あるいは本発明の実施形態の使用を制限するよう意図されていない。さらに、先行する「背景技術」または「発明の概要」のセクション、あるいは「発明を実施するための形態」のセクションで提示された、いずれかの明示されたか、または暗示された情報によって制約されるという意図はない。
【０００９】
ここで、図面を参照して本発明の１つまたは複数の実施形態が説明され、図面全体を通じて、類似する参照番号が、類似する要素を参照するために使用されている。以下の説明では、説明の目的で、本発明を十分に理解できるように、多数の特定の詳細が示されている。しかし、これらの特定の詳細がなくても、さまざまな事例において、本発明が実践され得るということは明らかである。
【００１０】
本明細書に記載された本発明の１つまたは複数の実施形態は、下層のオペレーティング・システムなしでアプリケーション（例えば、実行可能ファイル、サービス、サービス・インスタンス、アプリケーション・インスタンスなど）を実行可能にすることができる、コンプライアンスを認識するランタイム・コンテナを自動的に生成することができる。本明細書において使用されるとき、用語「アプリケーション」、「実行可能ファイル」、「サービス」、「サービス・インスタンス」、「プロセス」、または「アプリケーション・インスタンス」、あるいはその組合せは、本明細書では交換可能に使用され得る。
【００１１】
図１は、コンテナのコンプライアンスを認識するランタイム生成を容易にすることができるシステム１００のブロック図を示している。本開示で説明されるシステム（例えば、システム１００など）、装置、またはプロセスの態様は、１つまたは複数のマシン内で具現化された（例えば、１つまたは複数のマシンに関連付けられた１つまたは複数のコンピュータ可読媒体内で具現化された）１つまたは複数の機械実行可能コンポーネントを構成することができる。そのようなコンポーネントは、１つまたは複数のマシン（例えば、コンピュータ、コンピューティング・デバイス、仮想マシンなど）によって実行された場合に、マシンに、説明された動作を実行させることができる。
【００１２】
本発明のさまざまな実施形態では、システム１００は、プロセッサを備えている任意の種類のコンポーネント、マシン、デバイス、設備、装置、または機器、あるいはその組合せであることができる。一部の実施形態では、システム１００は、有効に、または動作可能に、あるいはその両方で、有線ネットワークまたは無線ネットワークあるいはその両方と通信することができる。システム１００を構成できるコンポーネント、マシン、装置、デバイス、設備、または機器、あるいはその組合せは、タブレット・コンピューティング・デバイス、ハンドヘルド・デバイス、サーバ・クラス・コンピューティング・マシンまたはデータベースあるいはその両方、ラップトップ・コンピュータ、ノートブック・コンピュータ、デスクトップ・コンピュータ、携帯電話、スマートフォン、民生用装置または民生用機器あるいはその両方、工業用デバイスまたは商用デバイスあるいはその両方、デジタル・アシスタント、インターネットが有効化されたマルチメディア電話、マルチメディア・プレイヤーなどを含むことができるが、これらに限定されない。
【００１３】
図１に示されているように、システム１００は、プロセッサ１０２、メモリ１０４、収集コンポーネント１０６、リスク評価コンポーネント１０８、コンプライアンス・コンポーネント１１０、または構築コンポーネント１１２、あるいはその組合せを備えることができる。本発明の一部の実施形態では、プロセッサ１０２、メモリ１０４、収集コンポーネント１０６、リスク評価コンポーネント１０８、コンプライアンス・コンポーネント１１０、または構築コンポーネント１１２、あるいはその組合せのうちの１つまたは複数は、システム１００の１つまたは複数の機能を実行するために、通信可能に、または動作可能に、あるいはその両方が可能に、互いに結合され得る。
【００１４】
システム１００の１つまたは複数の実施形態では、予測分析を使用して、１つまたは複数のコンプライアンスを認識するランタイム・コンテナを自動的に生成できる。例えば、この自動生成は、パターン知識ベースに保持されている情報に基づくことができる。本明細書において使用されるとき、「知識ベース」という用語は、１つまたは複数の種類の情報を格納できるデータベースまたはその他の格納場所もしくは保存場所であることができる。本発明のすべてのそのような実施形態が想定される。
【００１５】
パターン知識ベースは、１つまたは複数のアプリケーションに関連する情報を含むことができる。本発明の一部の実施形態では、１つまたは複数のアプリケーションに関連する情報を、時間をかけて収集し、パターン知識ベースに保持することができる。一部の実施形態では、収集された情報は、ターゲット・アプリケーションに使用されるリスク違反、コンプライアンス違反、またはセキュリティ違反、あるいはその組合せを含むことができる。取得された情報に基づいて、アプリケーションが開始されたとき、または開始された後に、システム１００は、パターン知識ベース（または複数のパターン知識ベース）を評価して、１つまたは複数のパターンを生成することができ、またはターゲット・アプリケーションに関して知られている情報を、他のアプリケーションに関して知られている情報にマッピングすることができ、あるいはその両方を実行することができる。システム１００の予測分析は、ターゲット・アプリケーションの情報が１つまたは複数の他のアプリケーションに類似している場合に、類似するアプリケーションのコンプライアンスを認識するランタイム・コンテナを利用してターゲット・アプリケーションを自動的に実行できるということを、決定することができる。
【００１６】
本明細書に記載されたコンピュータ処理システム、コンピュータ実装方法、装置、またはコンピュータ・プログラム製品あるいはその組合せは、本質的に高度に技術的であり、抽象的ではなく、人間による一連の精神的活動として実行できない、コンプライアンスを認識するランタイム・コンテナを生成するために、ハードウェアまたはソフトウェアあるいはその両方を採用することができる。例えば、本発明の１つまたは複数の実施形態は、使用可能な情報に対して、長時間の解釈および分析を実行し、１つまたは複数のランタイム・コンテナのうちのどのランタイム・コンテナがターゲット・アプリケーションに利用されるべきかを決定することができる。別の例では、本発明の１つまたは複数の実施形態は、大量のデータに対して予測分析を実行し、ターゲット・アプリケーションに関する詳細な知識がない場合でも、高い精度で、コンテナのコンプライアンスを認識するランタイム生成を自動的に容易にすることができる。トレーニング・セットをテスト・セットと比較することによって、精度を評価することができる。トレーニング・セットを使用してモデルをトレーニングした後に、テスト・セットを使用して、トレーニング・セットの要素に対して実行されたモデルによって生成された出力のうちの、予測目標に一致する出力の割合を計算することによって、精度を計算できる。
【００１７】
本発明のさまざまな実施形態では、収集コンポーネント１０６は、デプロイするためにターゲット・アプリケーションによって採用されているダイナミック・ライブラリ（例えば、依存ファイルおよび依存ライブラリ）およびシステム・コール（例えば、実行されるサービスのプロセスによる要求）などの、ただしこれらに限定されない、システム情報を特定することができる。例えば、最新のＵｎｉｘ（Ｒ）ベースのオペレーティング・システムでは、収集コンポーネント１０６は、ｌｄｄ（list dynamic dependencies）コマンドおよびｓｔｒａｃｅコマンドを実行して依存関係（例えば、新しいアプリケーションが開始されるとき、または開始された後に、開かれるファイルおよび実行されるシステム・コール）を追跡し、エラー（例えば、バージョンの不一致、欠落しているファイルまたはライブラリなど）を検出することができる。より詳細には、収集コンポーネント１０６は、内部でサービスがデプロイされているＤｏｃｋｅｒコンテナから、アプリケーションがデプロイできるコードを保持することができる。例えば、収集コンポーネント１０６は、ターゲット・アプリケーション用のＤｏｃｋｅｒイメージをＤｏｃｋｅｒハブからダウンロードすることができる。
【００１８】
また、最新のＵｎｉｘ（Ｒ）ベースのオペレーティング・システムでは、収集コンポーネント１０６は、ｃｈｒｏｏｔコマンドおよびｓｔｒａｃｅコマンドを使用して、別のパーティション環境内または別のパーティション・フォルダ内でターゲット・アプリケーションを実行し、実行されているすべてのコード（または一部の実施形態では、コードのうちの１つまたは複数）を捕捉し、エラーを検出することもできる。収集コンポーネント１０６は、アプリケーションを実行するために採用されたファイルをフォルダ内に預け、ｃｈｒｏｏｔコマンドを実行することによって、別のパーティション環境内でアプリケーションを実行できる。ｃｈｒｏｏｔコマンドは、ルート・ファイル・システムを別のパーティション・ディレクトリに切り替えることができる。ｃｈｒｏｏｔコマンドおよびｓｔｒａｃｅコマンドの実行後に、ファイルまたはライブラリが欠落していることをエラーが示しているため、動作にリスクが伴う場合、収集コンポーネント１０６は、欠落しているファイルを特定することができれば、欠落しているファイルまたはライブラリをＤｏｃｋｅｒイメージからコピーできる。システム１００は、オペレーティング・システムにすでにインストールされているアプリケーション・インスタンスを実行するために採用されたファイルおよびライブラリを別のパーティション・フォルダにコピーするか、または預けるか、あるいはその両方によって、ターゲット・アプリケーションが別のパーティション・フォルダ内で実行されるまで、このプロセスを反復的に実行できる。
【００１９】
本発明の実施形態のうちの１つまたは複数は、コンプライアンスのガイドラインまたはポリシーあるいはその両方に従うために通常は採用されている、実行されるファイルの数を大幅に減らすことができる。ファイルの数を減らすことによって、脆弱性の問題も減少する可能性がある。イメージのサイズが減少するため、１つまたは複数の実施形態では、ネットワーク・トラフィックが減少する可能性がある。さらに、イメージのフットプリントが減少するため、アプリケーションのデプロイメントまたは起動あるいはその両方が高速になる可能性もある。
【００２０】
アプリケーションは通常、システム・ライブラリのセットを直接読み込むことができる実行可能ファイル、および言語ランタイムを採用するアプリケーションという２つのカテゴリに分類される。システム・ライブラリのセットを直接読み込むことができる実行可能ファイルを含むアプリケーションの場合、前述したコンピュータ実装方法は、コンプライアンスを認識するランタイム・コンテナを生成できる。ランタイムなしで直接実行できるそれらのアプリケーションの例としては、ｎｇｉｎｘ、ＭｙＳＱＬ、Ｒｅｄｉｓなどが挙げられるが、これらに限定されない。言語ランタイムを採用するアプリケーション（例えば、Ｒｕｂｙ、Ｐｙｔｈｏｎ、Ｊａｖａ（Ｒ）、Ｅｒｌａｎｇなど）の場合、前述のコンピュータ実装方法は、ランタイム・イメージを構築することもでき、追加の論理が、ランタイム・イメージにインストールできる言語固有のパッケージ（例えば、ＲｕｂｙのＧｅｍ、ＰｙｔｈｏｎのＷｈｅｅｌ、Ｊａｖａ（Ｒ）のＪＡＲなど）を決定できる。
【００２１】
本発明の一部の実施形態では、システム１００は、オペレーティング・システムにすでにインストールされているアプリケーションを入力として受け取ることによって、コンプライアンスを認識するランタイム・コンテナを生成できる。サービス用に生成されたランタイム環境は、デプロイするためにサービスによって採用されたコードを含むことができ、それ以外に何も含まない。コンプライアンスを認識するランタイム・コンテナに含まれるすべてのファイルおよびライブラリ（または一部の実施形態では、少なくとも１つまたは複数のファイルもしくはライブラリまたはその両方、あるいはその両方）は、脆弱性またはコンプライアンスあるいはその両方に関して評価され得る。コンテナが脆弱である可能性のあるライブラリを組み込まないように、コンテナ・イメージの作成時または作成後に、リスクが適切に評価され得る。例えば、リスク評価コンポーネント１０８は、アプリケーションがそのネイティブ環境内で実行されているときに開かれるか、またはアクセスされるか、あるいはその両方が行われるファイルまたはライブラリあるいはその両方を捕捉し、コンプライアンスに関して構成ファイルを分析することに加えて、脆弱性に関してファイルまたはライブラリあるいはその両方を分析することができる。本発明の一部の実施形態では、リスク評価コンポーネント１０８は、アプリケーションの特性の動的分析または静的分析あるいはその両方を実行し、コンテナがターゲット・アプリケーションをデプロイするために追加情報（例えば、ファイル、ライブラリ、コードなど）が採用されるべきかどうかを判定することができる。リスク評価コンポーネント１０８は、調整の実行可能性を分析し、決定することができる。例えば、リスク評価コンポーネント１０８は、ファイルおよびライブラリのセットが減らされて生成されたコンテナ内でアプリケーションを実行することに関連付けられた１つまたは複数の問題を決定することができる。
【００２２】
リスク評価コンポーネント１０８は、１つまたは複数の定義されたしきい値内で、情報に関して１つまたは複数のリスク違反が存在するかどうかを判定できる。例えば、動作を実行することまたはサービスをデプロイすることのリスクの量を測定するために、リスク関数または影響関数が採用され得る。リスク値が特定の定義されたしきい値以上である場合、それは、システム１００がターゲット・アプリケーションの実行に失敗し得ることを示している可能性がある。リスク評価コンポーネント１０８によって捕捉された情報は、コンテナを生成するときに利用できるリスク分析またはパターン形成あるいはその両方を提供するために、評価され得る。リスク評価コンポーネント１０８が、動作が定義されたしきい値以上のリスクを伴っていることを示した場合、新しいコンテナを構築する前に、アプリケーションを複製することができ、または１つもしくは複数の動作をシミュレートすることができ、あるいはその両方を実行することができる。例えば、（例えば、収集コンポーネント１０６を介した）ｃｈｒｏｏｔコマンドおよびｓｔｒａｃｅコマンドの実行後に、エラーがファイルまたはライブラリが欠落していることを示しているため、動作が定義されたしきい値以上のリスクを伴っている場合、システム１００は、欠落しているファイルまたはライブラリがＤｏｃｋｅｒイメージ内にあれば、欠落しているファイルまたはライブラリをＤｏｃｋｅｒイメージからコピーすることができる。このプロセスは、ターゲット・アプリケーションを別のパーティション・フォルダ内で実行できるまで、反復的プロセスであることができる。
【００２３】
本発明の一部の実施形態では、コンプライアンス・コンポーネント１１０は、コンプライアンス違反またはセキュリティ違反が情報に存在するかどうかを判定できる。コンプライアンス・コンポーネント１１０によるこの判定は、リスク評価コンポーネント１０８による、１つまたは複数の定義されたリスク違反が存在しないということの決定に基づくことができる。例えば、リスク評価コンポーネント１０８が、動作が定義されたしきい値未満のリスクを伴っている（そのため、動作がリスクを伴っていないと考えられる）ということを決定できる場合、コンプライアンス・コンポーネント１１０は、能動的学習アルゴリズムを採用することによって、コンプライアンス違反またはセキュリティ違反が存在するかどうかを判定できる。コンプライアンス違反またはセキュリティ違反が検出された場合、その情報をパターン知識ベースに格納できる。この学習は、１つまたは複数のアプリケーションの２つのパターンおよび発見されたセキュリティ問題の分析の結果として実行され得る。必要に応じて、特定のアプリケーションに関して、３つ以上の異なるコンテナを作成できる。現在の活動を使用して、学習アルゴリズム（例えば、サポート・ベクター・マシン（ＳＶＭ：support vector machine））においてデータをトレーニングすることによって、パターンを学習することができ、またはパターンを使用して、差異を分析することによって、コンプライアンス評価もしくはセキュリティ評価またはその両方を迅速に処理することができ、あるいはその両方を実行することができる。さらに、システム１００の機械学習プロセスを使用して、コンプライアンスを認識するランタイム・コンテナの生成におけるステップを分析し、プロセスを迅速に処理することができる。例えば、機械学習プロセスは、パターンを認識することができ、またはコードの一部が冗長であるか、不要であるか、もしくは無関係であるかどうかを評価することができ、あるいはその両方を実行することができる。収集コンポーネント１０６によってシステム情報を収集するプロセスをより効率的にし、それによってリソースおよび時間を節約するために、パターンまたはパターン認識あるいはその両方を採用することができる。コンプライアンス違反もセキュリティ違反も存在しない場合、コンプライアンスを認識するランタイム・コンテナを生成できる。
【００２４】
構築コンポーネント１１２は、一部の実施形態では、下層のオペレーティング・システムなしでターゲット・アプリケーションを実行できるようにする新しいコンテナを生成できる。コンプライアンスを認識するランタイム・コンテナの生成は、コンプライアンス違反もセキュリティ違反も情報（例えば、ターゲット・アプリケーションを実行するために採用されたファイル、ライブラリ、コードなど）に存在しないということの決定に基づくことができる。オペレーティング・システムがコンテナに存在しないことによって、パスワード管理およびオペレーティング・システムのリソースなどのコンプライアンス評価を実行する必要性をなくすことができる。これによって、ユーザが、他の潜在的なセキュリティ上の脆弱性にコンテナをさらす可能性のある、セキュア・ソケット・シェル（ＳＳＨ：secure socket shell）などの追加サービスをコンテナ上にインストールするのを、自動的に防ぐこともできる。
【００２５】
より詳細には、構築コンポーネント１１２は、コンテナを生成することができ、一部の実施形態では、特定のサービスまたはアプリケーションを実行するためにコンテナによって採用されたファイルおよびライブラリのみを含めることができる。コンプライアンス違反もセキュリティ違反も存在しないということの決定が（例えば、リスク評価コンポーネント１０８およびコンプライアンス・コンポーネント１１０を介して）行われ、ターゲット・アプリケーションが（例えば、収集コンポーネント１０６を介して）別のパーティション・フォルダ内で実行されるようになった後に、構築コンポーネント１１２が、アプリケーションを実行するために採用されたファイルおよびライブラリをＤｏｃｋｅｒファイルにコピーすることができる。したがって、本発明の一部の実施形態では、構築コンポーネント１１２は、Ｄｏｃｋｅｒファイルを利用して、コンプライアンスが保証され、セキュリティ上のリスクが最小限に抑えられたコンテナ・イメージを生成できる。これらのコンプライアンスが保証されたコンテナ・イメージを生成するために使用された同じコンポーネントまたはプロセスあるいはその両方を、実行中のすべてのコンテナに使用して、リスク違反、コンプライアンス違反、またはセキュリティ違反、あるいはその組合せを評価することができる。
【００２６】
本発明の一部の実施形態では、これらのコンプライアンスを認識するランタイムによって生成されたコンテナは、変更不可能でもある。一部の実施形態では、シェルが存在しないため、変更不可能なコンテナに入力することができず、または変更不可能なコンテナを変更することができず、あるいはその両方を実行できない。そのため、最初にデプロイされたイメージが、実行される予定のイメージであることができ、この変更不可能なコンプライアンスを認識するランタイム・コンテナの構造を変更するための簡単な方法は存在しない。これらの生成されたコンテナは、下層のオペレーティング・システムを必要とせずに、アプリケーションを実行可能にすることができる。下層のオペレーティング・システムがなければ、変更対象の（例えば、攻撃対象の）ファイルおよびライブラリが少ないため、下層のオペレーティング・システムを含まないコンテナは、攻撃対象領域の付随するリスクを減らすこともできる。さらに、小さい攻撃対象領域は、コンプライアンスのコストを減らし、セキュリティを強化することができる。アプリケーション自体のコンプライアンスに重点を移し、複雑な基礎的オペレーティング・システムを構成して保護するコストを取り除くことによって、サービス運用のコストを大幅に削減する結果が得られる。
【００２７】
図２は、マッピング・コンポーネント２０２を含んでいる、コンテナのコンプライアンスを認識するランタイム生成を容易にするシステム２００のブロック図を示している。システム２００は、マッピング・コンポーネント２０２を含むこともできる。マッピング・コンポーネント２０２は、１つまたは複数の特徴を１つまたは複数のシステム動作またはライブラリに自動的にマッピングすることができる。１つまたは複数のシステム動作またはライブラリのマッピングは、１つまたは複数のコンプライアンスおよびセキュリティに関連する特徴のマッピングを含むことができる。例えば、マッピング・コンポーネント２０２は、リスク評価コンポーネント１０８およびコンプライアンス・コンポーネント１１０によって評価された学習済みのコンプライアンスを認識するランタイムに関連付けられたシステム情報をマッピングすることができる。
【００２８】
図３は、パターン・コンポーネントを含んでいる、コンテナのコンプライアンスを認識するランタイム生成を容易にするシステム３００のブロック図である。パターン・コンポーネント３０２は、１つまたは複数のコンプライアンスを認識するランタイム・コンテナ・イメージを自動的に構築するために採用された１つまたは複数のパターンを生成できる。１つまたは複数のパターンの生成は、リスク評価コンポーネント１０８による、情報に関して１つまたは複数のリスク違反が存在するということの決定に基づいて、またはコンプライアンス・コンポーネント１１０による、コンプライアンス違反またはセキュリティ違反が情報に存在するということの決定に基づいて、あるいはその両方に基づいて、実行され得る。例えば、リスク評価コンポーネント１０８が、動作が定義されたしきい値以上のリスク値を有するということを決定した場合、パターン・コンポーネント３０２は、１つまたは複数のコンテナ・イメージを構築するために採用され得る１つまたは複数のパターンを生成できる。また、コンプライアンス・コンポーネント１１０が、コンプライアンス違反またはセキュリティ違反が情報に存在するということを決定した場合、パターン・コンポーネント３０２は、１つまたは複数のコンテナ・イメージを構築するために採用された１つまたは複数のパターンを生成できる。
【００２９】
図４は、操作コンポーネント４０２を含んでいる、コンテナのコンプライアンスを認識するランタイム生成を容易にするシステム４００のブロック図である。操作コンポーネント４０２は、オペレーティング・システムのプロセスを停止できる。一部の実施形態では、操作コンポーネント４０２は、パターン・コンポーネント３０２によって生成されたパターンに基づいて、オペレーティング・システムのプロセスをいつ停止するかを決定することができる。操作コンポーネント４０２は、１つまたは複数のリスク違反が存在するということの決定に基づいて（例えば、リスク評価コンポーネント１０８を介して）、またはコンプライアンス違反およびセキュリティ違反が情報に存在するということの決定に基づいて（例えば、コンプライアンス・コンポーネント１１０を介して）生成できる、パターン・コンポーネント３０２によって生成されたパターンを参照して、リスク違反、コンプライアンス違反、またはセキュリティ違反が存在する場合に、オペレーティング・システムを停止できる。より詳細には、操作コンポーネント４０２は、パターン・コンポーネント３０２によって分析されたリスク違反、コンプライアンス違反、またはセキュリティ違反、あるいはその組合せの情報にアクセスし、動作が、定義されたしきい値以上のリスクを伴っているか、コンプライアンス違反を含んでいるか、またはセキュリティ違反を含んでいるということを、ユーザに警告することができる。
【００３０】
システム１００、２００、３００、または４００、あるいはその組合せのコンポーネントは共に、互いに通信して、コンプライアンスを認識するコンテナを生成するか、または将来使用するためにプロセスを介して学習された情報を収集するか、あるいはその両方を実行することができる。収集コンポーネント１０６は、ターゲット・アプリケーションによって使用される情報を特定することができ、この情報は、リスク、コンプライアンス、およびセキュリティに関連する問題を評価するために、リスク評価コンポーネント１０８およびコンプライアンス・コンポーネント１１０によって使用され得る。リスク、コンプライアンス、またはセキュリティ、あるいはその組合せの評価は、アプリケーションの特性の動的分析および静的分析の両方に関して、継続的に実行され得る。リスク評価コンポーネント１０８およびコンプライアンス・コンポーネント１１０によって分析された情報は、マップを生成するためにマッピング・コンポーネント２０２によって利用することができ、パターンを生成するためにパターン・コンポーネント３０２によって利用することができる。操作コンポーネント４０２は、オペレーティング・システムのプロセスを停止するために、生成されたパターンに基づくリスク違反、コンプライアンス違反、およびセキュリティ違反を採用できる。
【００３１】
図５は、コンテナのコンプライアンスを認識するランタイム生成を容易にするコンピュータ実装方法５００を示している。方法５００は、システム・ライブラリのセットを直接読み込むことができる実行可能ファイル、またはランタイムなしで直接実行できる実行可能ファイルの例として、ｎｇｉｎｘを採用している。５１０で、方法５００は（例えば、収集コンポーネント１０６を介して）、コンテナ化するためのターゲット・アプリケーションを特定することを含むことができる。
【００３２】
５２０で、方法５００は（例えば、収集コンポーネント１０６を介して）、ターゲット・アプリケーションに使用されるダイナミック・ライブラリおよびシステム・コールなどのシステム情報を収集することを含むことができる。システム情報は、ｌｄｄコマンドを実行して実行可能ファイルの直接の依存関係を特定することによって、決定され得る。この特定は、ターゲット・アプリケーションのＤｏｃｋｅｒイメージをＤｏｃｋｅｒハブからダウンロードすること、およびｃｈｒｏｏｔコマンドおよびｓｔｒａｃｅコマンドを実行して、実行されているすべてのコードを捕捉し、エラーを検出することを含むこともできる。このプロセスは、ｃｈｒｏｏｔコマンドを実行することによって実行可能ファイルを内部で実行できる別のパーティション環境または別のパーティション・フォルダを作成することによって、完了され得る。別のパーティション・フォルダ内で実行される実行可能ファイルは、ファイル・システムのルート・ディレクトリであるかのように応答する。ｃｈｒｏｏｔコマンドおよびｓｔｒａｃｅコマンドの実行後に、ファイルまたはライブラリが欠落していることをエラーが示している場合、欠落しているファイルまたはライブラリがあれば、欠落しているファイルまたはライブラリをＤｏｃｋｅｒイメージからコピーする。このプロセスは、実行可能ファイルを別のパーティション・フォルダ内で実行できるようになるまで実行できる、反復的プロセスであることができる。その結果は、コードを実行するために採用されているファイルおよびライブラリのセットを含み、他に何も含まない別のパーティション・フォルダである。採用されたファイルおよびライブラリが別のパーティション・フォルダ内で実行されている時点で、方法５００は、ターゲット・アプリケーションを実行するために使用されるファイルおよびライブラリを新しいＤｏｃｋｅｒファイルにコピーすることを含むことができる。新しいＤｏｃｋｅｒファイルを使用して、コンプライアンスを認識するランタイムを含む新しいＤｏｃｋｅｒイメージを生成することができる。５３０で、方法５００は（例えば、リスク評価コンポーネント１０８を介して）、ライブラリおよびシステム・コールに対してリスク評価を実行することを含むことができる。リスク関数または影響関数を使用して、ファイルおよびライブラリのセットを減らしてアプリケーションを実行することのリスクの可能性を評価できる。
【００３３】
見本のリスク関数または影響関数の非限定的な例は、Ｒ（θ，σ）＝ＥθＬ（θ，σ（Ｘ））＝∫ＸＬ（θ，σ（Ｘ））ｄＰθ（Ｘ）であることができ、リスク関数Ｒは、０〜１の範囲で変化する値である。シータは固定値であり、場合によっては、未知の自然の状態である。Ｘは、母集団（以前のアプリケーションまたはサーバのプロファイル、関連するアップグレード動作のリスト、バージョン、使用可能なサービス管理機能など）から確率的に引き出された観測値のベクトルである。Ｅθは、Ｘの母集団のすべての値にわたる期待値である。ｄＰθは、Ｘの事象空間にわたる確率の測定値であり、θによってパラメータ化され、Ｘのサポート全体にわたって積分が評価される。リスク値が定義されたしきい値を超える場合、アプリケーションを複製することができ、または安全性チェックまたはリスク分析のために動作をシミュレートすることができ、あるいはその両方を実行することができる。
【００３４】
５４０で、方法５００は（例えば、リスク評価コンポーネント１０８を介して）、リスク違反が検出されるかどうかを判定することを含むことができる。リスク分析は、リスク値を定義されたしきい値と比較することによって決定され得る。リスク違反が検出された場合、５４２で、方法５００は（例えば、リスク評価コンポーネントを介して）、リスク違反情報をパターン知識ベースに入力することを含むことができる。リスク違反が検出されない場合、５５０で、方法５００は（例えば、コンプライアンス・コンポーネント１１０を介して）、ライブラリおよびシステム・コールに対してコンプライアンスおよびセキュリティの評価を実行することを含むことができる。コンプライアンスおよびセキュリティは、下の図６で詳述されるように、能動的学習アルゴリズムを採用することによって決定され得る。次に５６０で、方法５００は（例えば、コンプライアンス・コンポーネント１１０を介して）、既定のしきい値を使用してコンプライアンス違反およびセキュリティ違反が検出されるかどうかを判定することを含むことができる。コンプライアンス違反およびセキュリティ違反が検出された場合、５４２で、コンピュータ実装方法５００は（例えば、コンプライアンス・コンポーネント１１０を介して）、コンプライアンス違反およびセキュリティ違反の情報をパターン知識ベースに入力することを含むことができる。コンプライアンス違反およびセキュリティ違反が検出されない場合、５７０で、方法５００は（例えば、構築コンポーネント１１２を介して）、コンプライアンスを認識するコンテナを生成することを含むことができる。５８０で、方法５００は、デプロイメント・テストを実行することを含むことができる。
【００３５】
さまざまな態様が（例えば、コンプライアンス違反およびセキュリティ違反を自動的に評価することに関連して）、それらのさまざまな態様を実行するために、さまざまな人工知能に基づく方式を採用することができる。例えば、ターゲット・アプリケーションの１つまたは複数のパラメータを評価するためのプロセスを利用して、ターゲット・アプリケーションとの相互作用なしで、評価に対する１つまたは複数の応答を予測することができ、この予測は、能動的学習アルゴリズムによって有効化され得る。サポート・ベクター・マシン（ＳＶＭ）は、採用され得る分類器の一例である。ＳＶＭは、可能性のある入力の空間内の超曲面を検出することによって動作し、超曲面は、トリガー基準を、非トリガー事象から分離しようとする。直感的には、これによって、トレーニング・データに類似しているが、必ずしも同一ではないことがあるデータをテストするために、分類を正確にする。さまざまなパターンの独立性を提供するその他の有向または無向のモデル分類方法（例えば、単純ベイズ、ベイジアン・ネットワーク、決定木、ニューラル・ネットワーク、ファジー理論モデル、および確率的分類モデル）が採用され得る。分類は、本明細書において使用されるとき、優先度のモデルを開発するために利用される統計的回帰を含むことができる。
【００３６】
図６は、コンプライアンスおよびセキュリティの分類を容易にするコンピュータ実装方法６００を示している。方法６００は、コンプライアンスおよびセキュリティの分類を容易にする、マルチラベルＳＶＭに基づく能動的学習アルゴリズムであることができる。本発明の一部の実施形態では、６００は、ラベル付きのセットＤｌ、ラベルのないセットＤｕ、複数のステップＴ、および反復ごとの複数の例を入力として受け取ることができる。方法６００は、トレーニング・データＤｌに基づいて、マルチラベルＳＶＭ分類器ｆをトレーニングすることができる。例えば、ラベルのないセットＤｕ内のインスタンスｘごとに、方法６００は、最大の信頼性で最大の損失低減を得るための方程式と共に、損失低減（ＬＲ：loss reduction）に基づく予測方法を使用して、ラベル・ベクトルｙを予測することができる。方法６００は、最も信頼性の高いラベル・ベクトルｙでの期待される損失低減を計算し、Ｄｕ内のすべてのｘについて、スコアｘを降順に並べ替え、最大のスコアを有する例のセットを選択することができる。この選択は、内容領域専門家（ＳＭＥ：subject matter expert）の入力に基づくことができる。関数ｆｉ（ｘ）は、クラスｉに関連付けられたＳＶＭ分類器である。データ点ｘ１…ｘｎは、ｘ（ライブラリ、システム・コール、オペレーティング・システム情報、構成情報、アプリケーション情報など）ごとの特徴ベクトル、ならびにコンプライアンスおよびセキュリティの互換性を表す。
【００３７】
図７は、コンピュータ実装方法７００を示している。７０２で、方法７００は、プロセッサに動作可能に結合されたシステムによって（例えば、収集コンポーネントを介して）、コンテナ化するためのターゲット・アプリケーションによって使用される情報を特定することを含むことができる。ｌｄｄコマンドを実行して、直接の依存関係または最初の依存関係を決定することができる。実行されているコードを捕捉して分析し、エラーを検出するために、ｃｈｒｏｏｔコマンドおよびｓｔｒａｃｅコマンドを実行できる。７０４で、方法７００は、システムによって（例えば、リスク評価コンポーネント１０８を介して）、１つまたは複数の定義されたしきい値内で、情報に関して１つまたは複数のリスク違反が存在するかどうかを判定することを含むことができる。このリスク分析は、リスク関数または影響関数を採用することによって実行され得る。リスク値がしきい値より大きい場合、サービス・インスタンスが置き換えられ得る。７０６で、方法７００は、システムによって（例えば、コンプライアンス・コンポーネント１１０を介して）、コンプライアンス違反またはセキュリティ違反が情報に存在するかどうかを判定することを含むことができ、コンプライアンス違反またはセキュリティ違反が存在するかどうかを判定することは、リスク評価コンポーネントによる１つまたは複数のリスク違反が存在しないということの決定に基づいて実行される。マルチラベルＳＶＭに基づく学習アルゴリズムを適用して、コンプライアンスおよびセキュリティに関連する問題を捕捉することができる。７０８で、方法７００は、システムによって（例えば、コンプライアンス・コンポーネント１１２を介して）、下層のオペレーティング・システムなしでターゲット・アプリケーションを実行可能にする、ターゲット・アプリケーションの定義されたコンポーネントに対応するコンポーネントの新しいコンテナを生成することを含むことができ、この生成することは、コンプライアンス違反もセキュリティ違反も情報に存在しないということの決定に基づく。コンプライアンスを認識するランタイムによって生成されたコンテナは、下層のオペレーティング・システムなしでターゲット・アプリケーションを実行可能にする。本発明の一部の実施形態では、コンテナがシェルを含まないことによって、コンテナを変更不可能なコンテナにもする。
【００３８】
図８は、コンピュータ実装方法８００を示している。方法８００は、システム・ライブラリのセットを直接読み込むことができる実行可能ファイルとして分類される例示的なアプリケーション用に提供される。この例は、ｎｇｉｎｘを利用する。８０２で、方法８００は（例えば、収集コンポーネント１０６を介して）、アプリケーションを実行するために採用された別のパーティション・ディレクトリおよびその他のディレクトリを作成することを含むことができる。８０４で、方法８００は（例えば、収集コンポーネント１０６を介して）、ｃｈｒｏｏｔコマンドを実行するために必要なディレクトリを作成することを含むことができる。８０６で、方法８００は（例えば、収集コンポーネント１０６を介して）、最新のイメージをＤｏｃｋｅｒリポジトリからダウンロードすることを含み、そのイメージをローカルに実行することができる。８０８で、方法８００は（例えば、収集コンポーネント１０６を介して）、コンテナを実行するために使用されるコマンドをＤｏｃｋｅｒファイル内で検出することを含むことができる。８１０で、方法８００は（例えば、収集コンポーネント１０６を介して）、ｌｄｄコマンドを使用して実行可能ファイルの最初の依存関係を確立することを含むことができる。８１２で、方法８００は（例えば、収集コンポーネント１０６を介して）、アプリケーションを開始しながら、ファイルが欠落しているエラーが発生したかどうかを判定することを含むことができる。「はい」の場合、方法８００は、ステップ８１２を繰り返して、ステップ８１４、８１６、８１８、および８２０を進むことを含むことができる。「いいえ」の場合、方法８００は、ステップ８２２、８２４、および８２６を進み、プロセスを完了して終了することを含むことができる。ファイルが欠落しているエラーが発生した場合、８１４で、検出された依存関係ごとに（または一部の実施形態では、検出された１つまたは複数の依存関係に関して）、方法８００は（例えば、収集コンポーネント１０６を介して）、そのディレクトリを別のパーティション内に作成し、ライブラリをコンテナから別のパーティションにコピーすることを含むことができる。８１６で、方法８００は（例えば、収集コンポーネント１０６を介して）、ライブラリでないが、アプリケーションが機能するためにやはり利用されるファイル（構成ファイル、証明書ファイル、セキュア・ソケット・シェル（ＳＳＨ）キーなど）に関して、上記と同じ動作を実行することを含むことができる。８１８で、方法８００は（例えば、収集コンポーネント１０６を介して）、ｃｈｒｏｏｔコマンドおよびｓｔｒａｃｅコマンドを使用して、別のパーティション・ディレクトリ内でアプリケーションを開始することを含み、ｓｔｒａｃｅの出力を構文解析して欠落しているファイルまたはライブラリを検出することができる。８２０で、方法８００は（例えば、収集コンポーネント１０６を介して）、欠落しているファイルまたはライブラリをＤｏｃｋｅｒコンテナ内で特定することを含むことができる。ファイルがコンテナ内で検出された場合、方法８００は、それらのファイルを依存関係のリストに追加し、別のパーティション・ディレクトリにコピーすることを含むことができる。次に方法８００は、アプリケーションを開始しながら、ファイルが欠落しているエラーが発生しなくなるまで、ステップ８１２、８１４、８１６、８１８、および８２０を繰り返すことを含むことができる。アプリケーションを開始しながら、ファイルが欠落しているエラーが発生しなくなった場合、８２２で、方法８００は（例えば、収集コンポーネント１０６を介して）、新しいＤｏｃｋｅｒファイルを最初から生成することを含み、別のパーティション・ディレクトリの内容をイメージのルート・ディレクトリにコピーすることができる。８２４で、方法８００は（例えば、収集コンポーネント１０６を介して）、ポートの公開、ボリュームの定義などの他のコマンドに関して、元のＤｏｃｋｅｒファイルを構文解析することを含み、それらのコマンドを新しいＤｏｃｋｅｒファイルに追加することができる。８２６で、方法８００は、安定状態でコンテナを実行する前に、（例えば、アプリケーションのデータベースを初期化するか、移行するか、またはデータベースに初期データを投入するか、あるいはその組合せを実行する）初期化または構成に利用される追加コマンドを実行することを含むことができる。
【００３９】
図９および図１０は、例示的な方法９００および１０００を示している。方法９００および１０００は、言語ランタイムを使用する例示的なアプリケーションを含んでいる。これらの種類のアプリケーションの場合、コンテナ内でインタープリタが実行できることを保証するため、またはインタープリタが実行できるという可能性を改善するために、わずかに異なるプロセスが採用され、アプリケーションは、デプロイするために利用されるすべての（または一部の実施形態では、１つまたは複数の）ファイルまたはライブラリあるいはその両方を含む。言語ランタイムが実行を開始した後に、アプリケーションがデプロイされ得る。Ｐｙｔｈｏｎアプリケーションは、通常、インストールできるＰｙｔｈｏｎ  Ｗｈｅｅｌおよびパッケージを含んでいる要件ファイルを含む。Ｐｙｔｈｏｎは、通常、ｐｉｐなどのそれ自身のインストーラを含む。特定のアプリケーションに固有のそれらのパッケージを、コンプライアンスを認識するランタイム・コンテナにインストールすることができる。言語ランタイムを使用する他のアプリケーションも、同様のプロセスを有することができる。Ｒｕｂｙの場合、パッケージの代わりにｇｅｍを採用することができ、Ｒｕｂｙも、Ｒｕｂｙのランタイムを構築することを採用できる。アプリケーションによって使用されるＧｅｍｆｉｌｅに記載されたすべてのｇｅｍは、アプリケーションのランタイム環境でｇｅｍ  ｌｉｓｔコマンドを実行することによって取得され得る。Ｊａｖａ（Ｒ）の場合、ｇｅｍまたはパッケージの代わりにｊａｒが採用され得る。
【００４０】
図９は、方法９００を示している。コンピュータ実装方法９００は、例示的なＰｙｔｈｏｎランタイム・アプリケーションである。９１０で、方法９００は（例えば、収集コンポーネント１０６を介して）、ＰｙｔｈｏｎがＰｙｔｈｏｎアプリケーションを実行するためのコンプライアンスを認識するランタイムを構築することを含むことができる。９１２で、方法９００は（例えば、収集コンポーネント１０６を介して）、システムで利用できるすべての（または本発明の一部の実施形態では、１つまたは複数の）Ｐｙｔｈｏｎパッケージのリストを決定することを含むことができる。９１４で、方法９００は（例えば、収集コンポーネント１０６を介して）、ターゲット・アプリケーションによってアクセスされるすべての（または本発明の一部の実施形態では、１つまたは複数の）Ｐｙｔｈｏｎパッケージのリストを決定することを含むことができる。９１６で、方法９００は（例えば、収集コンポーネント１０６を介して）、要件．ｔｘｔファイルが指定されているかどうかを判定することを含むことができる。「はい」の場合（要件．ｔｘｔファイルが指定されている場合）、９１８で、方法９００は（例えば、収集コンポーネント１０６を介して）、Ｐｙｔｈｏｎパッケージの依存関係のリストを決定するために、要件ファイルを構文解析することを含むことができる。９２０で、方法９００は（例えば、収集コンポーネント１０６を介して）、アプリケーションのスクリプトを別のパーティション・ディレクトリにコピーすることを含むことができる。さらに、９２２で、方法９００は（例えば、収集コンポーネント１０６を介して）、定義された（または本発明の一部の実施形態では、採用されたか、または必須の）Ｐｙｔｈｏｎパッケージを別のパーティション・ディレクトリにコピーすることを含むことができる。要件．ｔｘｔファイルが指定されていない場合、９２４で、コンピュータ実装方法９００は（例えば、収集コンポーネント１０６を介して）、そのアプリケーションの．ｐｙファイルのリストを取得することを含むことができる。次に９２６で、方法９００は（例えば、収集コンポーネント１０６を介して）、．ｐｙファイルのｉｍｐｏｒｔステートメントを構文解析することを含むことができる。９２８で、方法９００は（例えば、収集コンポーネント１０６を介して）、ｐｙｆｌａｋｅｓツールおよびｐｙｌｉｎｔツールを使用して未使用のライブラリを削除することを含むことができる。９３０で、方法９００は（例えば、収集コンポーネント１０６を介して）、アプリケーションによって使用されるすべての固有のＰｙｔｈｏｎライブラリを収集することを含むことができる。例えば、アプリケーションによって使用されるすべてのＰｙｔｈｏｎパッケージは、アプリケーションのランタイム環境でｐｉｐ  ｆｒｅｅｚｅコマンドを実行することによって取得され得る。
【００４１】
図１０は、方法１０００を示している。図１０は、Ｊａｖａ（Ｒ）ランタイム・アプリケーションの場合の例示的なプロセス１０００を示している。１００２で、方法１０００は（例えば、収集コンポーネント１０６を介して）、Ｊａｖａ（Ｒ）アプリケーションを実行するための、Ｊａｖａ（Ｒ）ランタイム環境（ＪＲＥ：Java Runtime Environment）などの、Ｊａｖａ（Ｒ）仮想マシン（ＪＶＭ：Java（Ｒ） virtual machine）用の最小限のランタイムを構築することを含むことができる。１００４で、方法１０００は（例えば、収集コンポーネント１０６を介して）、システムで利用できるすべてのＪａｖａ（Ｒ）ライブラリのリストを決定することを含むことができる。１００６で、方法１０００は（例えば、収集コンポーネント１０６を介して）、プロジェクト構築ファイル（project build file）を読み取って、アプリケーションに結合するすべてのライブラリを検出することを含むことができる。１００８で、方法１０００は（例えば、収集コンポーネント１０６を介して）、．ｊａｒファイルを別のパーティション・ディレクトリにコピーすることを含むことができる。
【００４２】
開示される主題のさまざまな態様の背景を提供するために、図１１および以下の説明は、開示される主題のさまざまな態様が実装され得る適切な環境の概要を示すよう意図されている。図１１は、本発明の１つまたは複数の実施形態を容易にすることができる例示的な非限定的動作環境のブロック図を示している。
【００４３】
図１１を参照すると、本発明のさまざまな態様を実装するための適切な動作環境１１００は、コンピュータ１１１２を含むこともできる。コンピュータ１１１２は、処理ユニット１１１４、システム・メモリ１１１６、およびシステム・バス１１１８を含むこともできる。システム・バス１１１８は、システム・メモリ１１１６を含むが、これに限定されないシステム・コンポーネントを、処理ユニット１１１４に結合する。処理ユニット１１１４は、さまざまな使用可能なプロセッサのいずれかであることができる。デュアル・マイクロプロセッサおよびその他のマルチプロセッサ・アーキテクチャが、処理ユニット１１１４として採用されてもよい。システム・バス１１１８は、ＩＳＡ（Industry Standard Architecture）、ＭＣＡ（Micro Channel Architecture）、ＥＩＳＡ（Enhanced ISA）、ＩＤＥ（Intelligent Drive Electronics）、ＶＥＳＡローカル・バス（ＶＬＢ：VESA Local Bus）、ＰＣＩ（Peripheral Component Interconnects）、カードバス、ユニバーサル・シリアル・バス（ＵＳＢ：Universal Serial Bus）、ＡＧＰ（Advanced Graphics Port）、ＦｉｒｅＷｉｒｅ（ＩＥＥＥ１３９４）、および小型コンピュータ・システム・インターフェイス（ＳＣＳＩ：Small Computer Systems Interface）を含むが、これらに限定されない、任意のさまざまな使用可能なバス・アーキテクチャを使用する、メモリ・バスもしくはメモリ・コントローラ、ペリフェラル・バスもしくは外部バス、またはローカル・バス、あるいはその組合せを含む、複数の種類のバス構造のいずれかであることができる。
【００４４】
システム・メモリ１１１６は、揮発性メモリ１１２０および不揮発性メモリ１１２２を含むこともできる。起動中などにコンピュータ１１１２内の要素間で情報を転送するための基本ルーチンを含む基本入出力システム（ＢＩＯＳ：basic input/output system）が、不揮発性メモリ１１２２に格納される。不揮発性メモリ１１２２の例としては、読み取り専用メモリ（ＲＯＭ：read only memory）、プログラマブルＲＯＭ（ＰＲＯＭ：programmable ROM）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ：electrically programmable ROM）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ：electrically erasable programmable ROM）、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ（ＲＡＭ：random access memory）（例えば、強誘電体ＲＡＭ（ＦｅＲＡＭ：ferroelectric RAM））が挙げられるが、これらに限定されない。揮発性メモリ１１２０は、外部キャッシュ・メモリとして機能するランダム・アクセス・メモリ（ＲＡＭ）を含むこともできる。例えばＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ：static RAM）、ダイナミックＲＡＭ（ＤＲＡＭ：dynamic RAM）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ：synchronous DRAM）、ダブル・データ・レートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ：double data rate SDRAM）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（ＳＬＤＲＡＭ：Synchlink DRAM）、ダイレクト・ラムバスＲＡＭ（ＤＲＲＡＭ：direct Rambus RAM）、ダイレクト・ラムバス・ダイナミックＲＡＭ（ＤＲＤＲＡＭ：direct Rambus dynamic RAM）、およびラムバス・ダイナミックＲＡＭなどの、ただしこれらに限定されない、多くの形態で利用可能である。
【００４５】
コンピュータ１１１２は、取り外し可能／取り外し不可能な揮発性／不揮発性のコンピュータ記憶媒体を含むこともできる。例えば図１１は、ディスク・ストレージ１１２４を示している。ディスク・ストレージ１１２４は、磁気ディスク・ドライブ、フロッピー・ディスク・ドライブ、テープ・ドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティックなどの、ただしこれらに限定されない、デバイスを含むこともできる。ディスク・ストレージ１１２４は、コンパクト・ディスクＲＯＭデバイス（ＣＤ−ＲＯＭ：compact disk ROM device）、記録可能ＣＤドライブ（ＣＤ−Ｒドライブ：CD recordable drive）、再書き込み可能ＣＤドライブ（ＣＤ−ＲＷドライブ：CD rewritable drive）、またはデジタル多用途ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ：digital versatile disk ROM drive）などの光ディスク・ドライブを含むが、これらに限定されない記憶媒体を、別々に、または他の記憶媒体と組み合わせて、含むこともできる。システム・バス１１１８へのディスク・ストレージ１１２４の接続を容易にするために、通常は、インターフェイス１１２６などの、取り外し可能または取り外し不可能なインターフェイスが使用される。図１１は、ユーザと、適切な動作環境１１００において説明された基本的なコンピュータ・リソースとの間の仲介として機能するソフトウェアも示している。そのようなソフトウェアは、例えば、オペレーティング・システム１１２８を含むこともできる。ディスク・ストレージ１１２４に格納できるオペレーティング・システム１１２８は、コンピュータ１１１２のリソースを制御し、割り当てるように動作する。
【００４６】
システムのアプリケーション１１３０は、プログラム・モジュール１１３２を介して、オペレーティング・システム１１２８によるリソースの管理を利用し、例えばシステム・メモリ１１１６またはディスク・ストレージ１１２４のいずれかに格納されたデータ１１３４をプログラムする。さまざまなオペレーティング・システムまたはオペレーティング・システムの組合せを使用して本開示が実装され得るということが、理解されるべきである。ユーザは、入力デバイス１１３６を介して、コマンドまたは情報をコンピュータ１１１２に入力する。入力デバイス１１３６は、マウス、トラックボール、スタイラス、タッチ・パッド、キーボード、マイクロホン、ジョイスティック、ゲーム・パッド、衛星放送受信アンテナ、スキャナ、ＴＶチューナー・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、Ｗｅｂカメラなどのポインティング・デバイスを含むことができるが、これらに限定されない。これらおよびその他の入力デバイスは、インターフェイス・ポート１１３８を介してシステム・バス１１１８を通り、処理ユニット１１１４に接続する。インターフェイス・ポート１１３８は、例えば、シリアル・ポート、パラレル・ポート、ゲーム・ポート、およびユニバーサル・シリアル・バス（ＵＳＢ）を含む。出力デバイス１１４０は、入力デバイス１１３６と同じ種類のポートの一部を使用する。このようにして、例えば、ＵＳＢポートを使用して、入力をコンピュータ１１１２に提供し、コンピュータ１１１２から出力デバイス１１４０に情報を出力できる。出力アダプタ１１４２は、特殊なアダプタを必要とする出力デバイス１１４０の中でも特に、モニタ、スピーカ、およびプリンタのような何らかの出力デバイス１１４０が存在することを示すために提供される。出力アダプタ１１４２の例としては、出力デバイス１１４０とシステム・バス１１１８の間の接続の手段を提供するビデオ・カードおよびサウンド・カードが挙げられるが、これらに限定されない。リモート・コンピュータ１１４４などの、その他のデバイスまたはデバイスのシステムあるいはその両方が、入力機能および出力機能の両方を提供するということに、留意されたい。
【００４７】
コンピュータ１１１２は、リモート・コンピュータ１１４４などの１つまたは複数のリモート・コンピュータへの論理接続を使用して、ネットワーク環境内で動作できる。リモート・コンピュータ１１４４は、コンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースの機器、ピア・デバイス、またはその他の一般的なネットワーク・ノードなどであることができ、通常は、コンピュータ１１１２に関連して説明された要素の多くまたはすべてを含むこともできる。簡潔にするために、メモリ・ストレージ・デバイス１１４６のみが、リモート・コンピュータ１１４４と共に示されている。リモート・コンピュータ１１４４は、ネットワーク・インターフェイス１１４８を介してコンピュータ１１１２に論理的に接続されてから、通信接続１１５０を介して物理的に接続される。ネットワーク・インターフェイス１１４８は、ローカル・エリア・ネットワーク（ＬＡＮ：local-area networks）、広域ネットワーク（ＷＡＮ：wide-area networks）、セルラー・ネットワークなどの、有線通信ネットワークまたは無線通信ネットワークあるいはその両方を包含する。ＬＡＮ技術は、光ファイバ分散データ・インターフェイス（ＦＤＤＩ：Fiber Distributed Data Interface）、銅線分散データ・インターフェイス（ＣＤＤＩ：Copper Distributed Data Interface）、イーサネット（Ｒ）、トークン・リングなどを含む。ＷＡＮ技術は、ポイントツーポイント・リンク、総合デジタル通信網（ＩＳＤＮ：Integrated Services Digital Networks）およびその変形などの回路交換網、パケット交換網、およびデジタル加入者回線（ＤＳＬ：Digital Subscriber Lines）を含むが、これらに限定されない。通信接続１１５０は、ネットワーク・インターフェイス１１４８をシステム・バス１１１８に接続するために採用されたハードウェア／ソフトウェアのことを指す。通信接続１１５０は、説明を明確にするために、コンピュータ１１１２内に示されているが、コンピュータ１１１２の外部に存在することもできる。ネットワーク・インターフェイス１１４８に接続するためのハードウェア／ソフトウェアは、単に例示の目的で、通常の電話の等級のモデム、ケーブル・モデム、およびＤＳＬモデムを含むモデム、ＩＳＤＮアダプタ、およびイーサネット（Ｒ）・カードなどの、内部および外部の技術を含むこともできる。
【００４８】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【００４９】
クラウド・コンピューティングは、構成可能な計算リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス）の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、および少なくとも４つのデプロイメント・モデルを含むことができる。
【００５０】
特徴は、次のとおりである。
【００５１】
オンデマンドのセルフ・サービス：クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【００５２】
幅広いネットワーク・アクセス：クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、およびＰＤＡ）による利用を促進する。
【００５３】
リソース・プール：プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所（例えば、国、州、またはデータセンター）を指定できる場合がある。
【００５４】
迅速な順応性：クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
【００５５】
測定されるサービス：クラウド・システムは、計測機能を活用することによって、サービスの種類（例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント）に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
【００５６】
サービス・モデルは、次のとおりである。
【００５７】
ＳａａＳ（Software as a Service）：利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Ｗｅｂブラウザ（例えば、Ｗｅｂベースの電子メール）などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【００５８】
ＰａａＳ（Platform as a Service）：利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【００５９】
ＩａａＳ（Infrastructure as a Service）：利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント（例えば、ホスト・ファイアウォール）を限定的に制御できる。
【００６０】
デプロイメント・モデルは、次のとおりである。
【００６１】
プライベート・クラウド：このクラウド・インフラストラクチャは、組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【００６２】
コミュニティ・クラウド：このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事（例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項）を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【００６３】
パブリック・クラウド：このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【００６４】
ハイブリッド・クラウド：このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術（例えば、クラウド間の負荷バランスを調整するためのクラウド・バースティング）によって固有の実体を残したまま互いに結合された２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の複合である。
【００６５】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【００６６】
ここで図１２を参照すると、例示的なクラウド・コンピューティング環境１２５０が示されている。図示されているように、クラウド・コンピューティング環境１２５０は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス（例えば、パーソナル・デジタル・アシスタント（ＰＤＡ：personal digital assistant）または携帯電話１２５４Ａ、デスクトップ・コンピュータ１２５４Ｂ、ラップトップ・コンピュータ１２５４Ｃ、または自動車コンピュータ・システム１２５４Ｎ、あるいはその組合せなど）が通信できる１つまたは複数のクラウド・コンピューティング・ノード１２１０を含んでいる。ノード１２１０は、互いに通信することができる。ノード１２１０は、１つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組合せなどに、物理的または仮想的にグループ化されてよい（図示せず）。これによって、クラウド・コンピューティング環境１２５０は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはＳａａＳ、あるいはその組合せを提供できる。図１２に示されたコンピューティング・デバイス１２５４Ａ〜Ｎの種類は、例示のみが意図されており、コンピューティング・ノード１２１０およびクラウド・コンピューティング環境１２５０は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続（例えば、Ｗｅｂブラウザを使用した接続）あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信できるということが理解される。
【００６７】
ここで図１３を参照すると、クラウド・コンピューティング環境１２５０（図１２）によって提供される機能的抽象レイヤのセットが示されている。図１３に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【００６８】
ハードウェアおよびソフトウェア・レイヤ１３６０は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム１３６１、ＲＩＳＣ（Reduced Instruction Set Computer）アーキテクチャベースのサーバ１３６２、サーバ１３６３、ブレード・サーバ１３６４、ストレージ・デバイス１３６５、ならびにネットワークおよびネットワーク・コンポーネント１３６６が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア１３６７およびデータベース・ソフトウェア１３６８を含む。
【００６９】
仮想化レイヤ１３７０は、仮想サーバ１３７１、仮想ストレージ１３７２、仮想プライベート・ネットワークを含む仮想ネットワーク１３７３、仮想アプリケーションおよびオペレーティング・システム１３７４、ならびに仮想クライアント１３７５などの仮想的実体を提供できる抽象レイヤを備える。
【００７０】
一例を挙げると、管理レイヤ１３８０は、以下で説明される機能を提供することができる。リソース・プロビジョニング１３８１は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定１３８２は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのＩＤ検証を行うとともに、データおよびその他のリソースの保護を行う。ユーザ・ポータル１３８３は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理１３８４は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意（ＳＬＡ：Service Level Agreement）計画および実行１３８５は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、ＳＬＡに従って行う。
【００７１】
ワークロード・レイヤ１３９０は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の非限定的な例としては、マッピングおよびナビゲーション１３９１、ソフトウェア開発およびライフサイクル管理１３９２、仮想クラスルーム教育の配信１３９３、データ分析処理１３９４、トランザクション処理１３９５、およびトランザクションモデルソフトウェア１３９６が挙げられる。
【００７２】
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、装置、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含むことができる。コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read-only memoryまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せも含むことができる。本明細書において使用されるとき、コンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【００７３】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組合せ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えることができる。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：instruction-set-architecture）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）または広域ネットワーク（ＷＡＮ：wide area network）を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate arrays）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic arrays）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【００７４】
本発明の態様は、本明細書において、本発明の実施形態による、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。コンピュータ可読プログラム命令は、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータ実装プロセスを生成するべく、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに読み込まれ、一連の動作可能な行為を、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上で実行させるものであってもよい。
【００７５】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装され得るということにも留意されたい。
【００７６】
本発明は、１つのコンピュータまたは複数のコンピュータあるいはその両方で実行されるコンピュータ・プログラム製品のコンピュータ実行可能命令との一般的な関連において前述されたが、当業者は、本開示がその他のプログラム・モジュールと組み合わせられるか、またはその他のプログラム・モジュールと組み合わせて実装されてもよいということを認識するであろう。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するか、あるいはその両方を行うルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、当業者は、本発明のコンピュータ実装方法が、シングルプロセッサ・コンピュータ・システムまたはマルチプロセッサ・コンピュータ・システム、ミニコンピューティング・デバイス、メインフレーム・コンピュータ、コンピュータ、ハンドヘルド・コンピューティング・デバイス（例えば、ＰＤＡ、電話）、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品または産業用電子機器などを含む、その他のコンピュータ・システム構成を使用して実践され得るということを理解するであろう。示された態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境内で実践されてもよい。ただし、本開示の態様の全部ではないとしても一部は、スタンドアロン・コンピュータ上で実践され得る。分散コンピューティング環境において、プログラム・モジュールは、ローカルおよびリモートの両方のメモリ・ストレージ・デバイスに配置され得る。
【００７７】
本出願において使用されるとき、「コンポーネント」、「システム」、「プラットフォーム」、「インターフェイス」などの用語は、１つまたは複数の特定の機能を含むコンピュータ関連の実体または操作可能なマシンに関連する実体を指すことができるか、またはそれらの実体を含むことができるか、あるいはその両方が可能である。本明細書で開示された実体は、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであることができる。例えば、コンポーネントは、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、またはコンピュータ、あるいはその組合せであることができるが、これらに限定されない。例として、サーバ上で実行されるアプリケーションおよびサーバの両方が、コンポーネントであることができる。１つまたは複数のコンポーネントが、プロセス内または実行のスレッド内あるいはその両方に存在することができ、コンポーネントは、１つのコンピュータ上に局在するか、または２つ以上のコンピュータ間で分散されるか、あるいはその両方が可能である。別の例では、各コンポーネントは、さまざまなデータ構造が格納されているさまざまなコンピュータ可読媒体から実行できる。コンポーネントは、１つまたは複数のデータ・パケット（例えば、ローカル・システム内または分散システム内の別のコンポーネントと情報をやりとりするか、またはインターネットなどのネットワークを経由して、信号を介して他のシステムと情報をやりとりするか、あるいはその両方によって情報をやりとりする、１つのコンポーネントからのデータ）を含んでいる信号などに従って、ローカルまたはリモートあるいはその両方のプロセスを介して通信できる。別の例として、コンポーネントは、電気または電子回路によって操作される機械的部品によって提供される特定の機能を有する装置であることができ、プロセッサによって実行されるソフトウェア・アプリケーションまたはファームウェア・アプリケーションによって操作される。そのような場合、プロセッサは、装置の内部または外部に存在することができ、ソフトウェア・アプリケーションまたはファームウェア・アプリケーションの少なくとも一部を実行できる。さらに別の例として、コンポーネントは、機械的部品を含まない電子コンポーネントを介して特定の機能を提供する装置であることができ、それらの電子コンポーネントは、電子コンポーネントの機能の少なくとも一部を与えるソフトウェアまたはファームウェアを実行するためのプロセッサまたはその他の手段を含むことができる。１つの態様では、コンポーネントは、例えばクラウド・コンピューティング・システム内で、仮想マシンを介して電子コンポーネントをエミュレートすることができる。
【００７８】
加えて、「または」という用語は、排他的論理和ではなく、包含的論理和を意味するよう意図されている。すなわち、特に指定されない限り、または文脈から明らかでない限り、「ＸがＡまたはＢを採用する」は、自然な包含的順列のいずれかを意味するよう意図されている。すなわち、ＸがＡを採用するか、ＸがＢを採用するか、またはＸがＡおよびＢの両方を採用する場合、「ＸがＡまたはＢを採用する」が、前述の事例のいずれかにおいて満たされる。さらに、本明細書および添付の図面において使用される冠詞「ａ」および「ａｎ」は、単数形を対象にすることが特に指定されない限り、または文脈から明らかでない限り、「１つまたは複数」を意味すると一般に解釈されるべきである。本明細書において使用されるとき、「例」または「例示的」あるいはその両方の用語は、例、事例、または実例となることを意味するために使用される。誤解を避けるために、本明細書で開示された主題は、そのような例によって制限されない。加えて、「例」または「例示的」あるいはその両方として本明細書に記載された任意の態様または設計は、他の態様または設計よりも好ましいか、または有利であると必ずしも解釈されず、当業者に知られている同等の例示的な構造および技術を除外するよう意図されていない。
【００７９】
本明細書において使用されるとき、「プロセッサ」という用語は、シングルコア・プロセッサと、ソフトウェアのマルチスレッド実行機能を備えるシングルプロセッサと、マルチコア・プロセッサと、ソフトウェアのマルチスレッド実行機能を備えるマルチコア・プロセッサと、ハードウェアのマルチスレッド技術を備えるマルチコア・プロセッサと、並列プラットフォームと、分散共有メモリを備える並列プラットフォームとを備えるが、これらに限定されない、実質的に任意の計算処理ユニットまたはデバイスを指すことができる。さらに、プロセッサは、集積回路、特定用途向け集積回路（ＡＳＩＣ：application specific integrated circuit）、デジタル信号プロセッサ（ＤＳＰ：digital signal processor）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：field programmable gate array）、プログラマブル・ロジック・コントローラ（ＰＬＣ：programmable logic controller）、複合プログラム可能論理デバイス（ＣＰＬＤ：complex programmable logic device）、個別のゲートまたはトランジスタ論理、個別のハードウェア・コンポーネント、あるいは本明細書に記載された機能を実行するように設計されたこれらの任意の組合せを指すことができる。さらに、プロセッサは、空間利用を最適化し、ユーザ機器の性能を向上するために、分子および量子ドットベースのトランジスタ、スイッチ、およびゲートなどの、ただしこれらに限定されない、ナノスケール・アーキテクチャを利用することができる。プロセッサは、計算処理ユニットの組合せとして実装されてもよい。本開示では、コンポーネントの動作および機能に関連する「ストア」、「ストレージ」、「データ・ストア」、「データ・ストレージ」、「データベース」、および実質的に任意のその他の情報格納コンポーネントなどの用語は、「メモリ・コンポーネント」、「メモリ」内に具現化された実体、またはメモリを備えるコンポーネントを指すために使用される。本明細書に記載されたメモリまたはメモリ・コンポーネントあるいはその両方が、揮発性メモリまたは不揮発性メモリのいずれかであることができ、あるいは揮発性メモリおよび不揮発性メモリの両方を含むことができるということが、理解されるべきである。不揮発性メモリの例としては、読み取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ（ＲＡＭ）（例えば、強誘電体ＲＡＭ（ＦｅＲＡＭ））が挙げられるが、これらに限定されない。揮発性メモリは、例えば外部キャッシュ・メモリとして機能できる、ＲＡＭを含むことができる。例えばＲＡＭは、シンクロナスＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブル・データ・レートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（ＳＬＤＲＡＭ）、ダイレクト・ラムバスＲＡＭ（ＤＲＲＡＭ）、ダイレクト・ラムバス・ダイナミックＲＡＭ（ＤＲＤＲＡＭ）、およびラムバス・ダイナミックＲＡＭ（ＲＤＲＡＭ：Rambus dynamic RAM）などの、ただしこれらに限定されない、多くの形態で利用可能である。さらに、本明細書において開示されたシステムまたはコンピュータ実装方法のメモリ・コンポーネントは、これらおよび任意のその他の適切な種類のメモリを含むが、これらに限定されない、メモリを含むよう意図されている。
【００８０】
前述した内容は、システムおよびコンピュータ実装方法の単なる例を含んでいる。当然ながら、本発明を説明する目的で、コンポーネントまたはコンピュータ実装方法の考えられるすべての組合せについて説明することは不可能であるが、当業者は、本開示の多くのその他の組合せおよび並べ替えが可能であるということを認識できる。さらに、「含む」、「有する」、「所有する」などの用語が、発明を実施するための形態、特許請求の範囲、付録、および図面において使用される範囲では、それらの用語は、「備えている」が特許請求における暫定的な用語として使用されるときに解釈されるような、用語「備えている」と同様の方法で、包含的であるよう意図されている。
【００８１】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、本発明に制限されない。本発明の範囲を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本明細書で使用された用語は、本発明の実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本発明を理解できるようにするために選択されている。
【図１】
0006963671.tif 000002
【図２】
0006963671.tif 000003
【図３】
0006963671.tif 000004
【図４】
0006963671.tif 000005
【図５】
0006963671.tif 000006
【図６】
0006963671.tif 000007
【図７】
0006963671.tif 000008
【図８】
0006963671.tif 000009
【図９】
0006963671.tif 000010
【図１０】
0006963671.tif 000011
【図１１】
0006963671.tif 000012
【図１２】
0006963671.tif 000013
【図１３】
0006963671.tif 000014