(57)【要約】【課題】異なるアプリケーション・コンテナ内の複数のアプリケーションによってソフトウェア関数が共有されることを可能にする、コンテナ・クラウド・プラットフォームを提供する。【解決手段】サービス関数は、コンテナ化され、アプリケーション・コンテナから分散される。コンテナ化されたサービスは、アプリケーション実行時間においてサービス関数を呼び出すアプリケーションのためのカプセルとして配信される。サービス・コンテナのイメージは、対応するアプリケーション・コンテナを動作させるホスト・コンピューティング・デバイスにおいて配備される。コンテナ・クラウド・プラットフォームは、配備されたサービス・コンテナをそれらの実行および終結についてモニタリングする。【選択図】図４
2021509498.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング・デバイスであって、
ネットワーク・インターフェースと、
プロセッサと、
命令のセットを記憶する記憶デバイスであって、前記プロセッサによる前記命令のセットの実行が、
サービス関数を呼び出すコア関数を実行するアプリケーション・コンテナを動作させることと、
前記ネットワーク・インターフェース上で前記サービス関数のイメージを含むカプセル・イメージを受信することであって、前記カプセル・イメージが、前記アプリケーション・コンテナに一致するメタデータを有する、前記受信することと、
前記アプリケーション・コンテナの前記コア関数によって呼び出される前記サービス関数を実行するために前記カプセル・イメージに基づいてカプセル・コンテナを起動することと、
前記サービス関数が実行を完了した後、前記カプセル・コンテナを終了することと、
を含む動作を実行するように前記コンピューティング・デバイスを構成する、前記記憶デバイスと、
を備える、コンピューティング・デバイス。
【請求項２】
前記サービス関数を実行するために前記カプセル・コンテナを起動することが、前記アプリケーション・コンテナの名前空間において前記サービス関数を実行するサービス・スレッドを開始することを含む、請求項１に記載のコンピューティング・デバイス。
【請求項３】
前記サービス関数を実行するためにカプセル・コンテナを起動することが、コントローラ・コンピューティング・デバイスと通信するように構成される前記カプセル・イメージの管理スクリプトを実行することと、前記サービス関数のデフォルト・エントリ・ポイントを呼び出すことと、を含む、請求項１に記載のコンピューティング・デバイス。
【請求項４】
前記アプリケーション・コンテナが、前記サービス関数を呼び出す複数のアプリケーション・コンテナのうちの１つであり、前記複数のアプリケーション・コンテナの各アプリケーション・コンテナが、前記カプセル・イメージの前記メタデータに一致する、請求項１に記載のコンピューティング・デバイス。
【請求項５】
前記サービス関数のための複数のサービス・スレッドが、前記複数のアプリケーション・コンテナについて並列で実行する、請求項４に記載のコンピューティング・デバイス。
【請求項６】
前記カプセル・イメージの前記メタデータが、前記サービス関数の複数スレッドを前記複数のアプリケーション・コンテナについて並列で実行可能にするかどうかの標識を含む、請求項４に記載のコンピューティング・デバイス。
【請求項７】
前記カプセル・イメージの前記メタデータが、前記カプセル・イメージが安全性評価に合格するかどうかの標識を含む、請求項１に記載のコンピューティング・デバイス。
【請求項８】
前記アプリケーション・コンテナのイメージが、前記サービス関数を含まない、請求項１に記載のコンピューティング・デバイス。
【請求項９】
前記カプセル・イメージが、コントローラ・コンピューティング・デバイスから受信され、
前記カプセル・コンテナを終了することが、前記コントローラ・コンピューティング・デバイスに終了コードを報告することを含む、請求項１に記載のコンピューティング・デバイス。
【請求項１０】
前記アプリケーション・コンテナが、第１のアプリケーション・コンテナであり、前記サービス関数が、第１のサービス関数であり、前記カプセル・イメージが、第１のカプセル・イメージであり、前記プロセッサによる前記命令のセットの前記実行が、
前記第１のカプセル・イメージおよび前記第１のサービス関数とは異なる、第２のサービス関数を含む第２のカプセル・イメージを受信することであって、前記第２のカプセル・イメージが、第２のアプリケーション・コンテナを前記第２のサービス関数と一致させるメタデータを含む、前記受信することと、
前記第２のアプリケーション・コンテナのコア関数のための前記第２のサービス関数を実行するために前記第２のカプセル・イメージを起動することと、
を含む動作を実行するように前記コンピューティング・デバイスをさらに構成する、請求項１に記載のコンピューティング・デバイス。
【請求項１１】
コンピューティング・デバイスであって、
１つまたは複数の処理ユニットのセットと、
命令のセットを記憶する記憶デバイスであって、前記処理ユニットのセットによる前記命令のセットの実行が、
ネットワーク・インターフェース上でホスト・コンピューティング・デバイスのセットをモニタリングすることであって、各ホスト・コンピューティング・デバイスが、１つまたは複数のアプリケーション・コンテナを動作させる、前記モニタリングすることと、
ホスト・コンピューティング・デバイスにおいて動作するアプリケーション・コンテナに一致するメタデータを有するカプセル・イメージを識別することと、
識別された前記カプセル・イメージをカプセル・コンテナとして前記ホスト・コンピューティング・デバイスに配備することであって、配備された前記カプセル・コンテナが、前記一致するアプリケーション・コンテナのコア関数によって呼び出されるサービス関数を含む、前記配備することと、
前記サービス関数の実行に基づいて、前記ホスト・コンピューティング・デバイスから終了コードを受信することと、
を含む動作を実行するように前記コンピューティング・デバイスを構成する、前記記憶デバイスと、
を備える、コンピューティング・デバイス。
【請求項１２】
複数のカプセル・イメージを記憶するレジストリから識別された前記カプセル・コンテナのイメージを取り出すことをさらに含む、請求項１１に記載のコンピューティング・デバイス。
【請求項１３】
前記アプリケーション・コンテナのイメージが、前記サービス関数を含まない、請求項１１に記載のコンピューティング・デバイス。
【請求項１４】
前記カプセル・イメージの前記メタデータが、前記サービス関数の複数スレッドを前記複数のアプリケーション・コンテナについて並列で実行可能にするかどうかの標識を含む、請求項１１に記載のコンピューティング・デバイス。
【請求項１５】
前記カプセル・コンテナの前記メタデータが、前記カプセル・コンテナが安全性評価に合格するかどうかの標識を含む、請求項１１に記載のコンピューティング・デバイス。
【請求項１６】
前記カプセル・コンテナが、前記サービス関数のデフォルト・エントリ・ポイントをオーバライドする管理スクリプトを含む、請求項１１に記載のコンピューティング・デバイス。
【請求項１７】
前記処理ユニットのセットによる前記命令のセットの前記実行が、
前記カプセル・コンテナの前記メタデータに一致する第２のアプリケーション・コンテナを動作させる第２のホスト・コンピューティング・デバイスを識別することと、
前記識別されたカプセル・コンテナのイメージを前記第２のホスト・コンピューティング・デバイスに配備することであって、前記サービス関数が、前記第２のホスト・コンピューティング・デバイスにおいて動作する、一致する前記第２のアプリケーション・コンテナのコア関数によって呼び出される、前記配備することと、
を含む動作を実行するように前記コンピューティング・デバイスをさらに構成する、請求項１１に記載のコンピューティング・デバイス。
【請求項１８】
前記アプリケーション・コンテナが、第１のアプリケーション・コンテナであり、前記サービス関数が、第１のサービス関数であり、前記カプセル・イメージが、第１のカプセル・イメージであり、前記処理ユニットのセットによる前記命令のセットの前記実行が、
前記ホスト・コンピューティング・デバイスに、前記第１のカプセル・イメージとは異なる第２のサービス関数を含む第２のカプセル・イメージを配備することであって、
前記第２のアプリケーション・コンテナのコア関数が、前記第２のサービス関数を呼び出し、
前記第２のカプセル・イメージが、前記第２のアプリケーション・コンテナに一致するメタデータを含む、前記配備すること
を含む動作を実行するように前記コンピューティング・デバイスをさらに構成する、請求項１１に記載のコンピューティング・デバイス。
【請求項１９】
コンピューティング・デバイスであって、
プロセッサと、
命令のセットを記憶する記憶デバイスであって、前記プロセッサによる前記命令のセットの実行が、
デフォルト・エントリ・ポイントを有するサービス関数のイメージを受信することと、
前記サービス関数のためのカプセル・イメージを構築することと、
前記サービス関数に一致するアプリケーション・コンテナを識別するために前記カプセル・イメージにメタデータ・ラベルを関連付けることと、
（ｉ）前記カプセル・イメージを配備するコントローラ・コンピューティング・デバイス、および配備された前記カプセル・イメージを受信するホスト・マシンの間の通信を管理するため、ならびに（ｉｉ）前記サービス関数の前記デフォルト・エントリ・ポイントを呼び出すために、カプセル管理スクリプトを前記カプセル・イメージに埋め込むことと、
前記カプセル・イメージをカプセル・イメージのレジストリに記憶することと、
を含む動作を実行するように前記コンピューティング・デバイスを構成する、前記記憶デバイスと、
を備える、コンピューティング・デバイス。
【請求項２０】
前記カプセル・イメージが、前記サービス関数についての依存関係を含む、請求項１９に記載のコンピューティング・デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、ソフトウェアの開発および配備のためのツールに関する。
【背景技術】
【０００２】
アジャイルＤｅｖＯｐｓ（開発および運用）環境において、アプリケーションは、ますますコンテナ化されている。アプリケーションは、所望のソフトウェアを実行する実行時環境全体、アプリケーション、さらに全てのその依存関係、ライブラリおよび他のバイナリ、ならびにソフトウェアを実行するための構成ファイルを含み、１つのパッケージにバンドルされている。アプリケーション・プラットフォームおよびその依存関係をコンテナ化することによって、ＯＳ配布および基礎となるインフラの差異が、取り除いて考えられる。アプリケーション・コンテナの情報の完全なセットは、イメージである。イメージは、コンテナのスナップショットである自動力のない不変のファイルである。コンテナ・イメージは、ビルド・コマンドで生成される。コンテナ・イメージは、ホスト・マシンまたはホスト・コンピューティング・デバイス上で配備または実行されるときに、アプリケーション・コンテナを作り出す。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ソフトウェア関数の動的配信のためのデバイス、プログラムを提供する。
【課題を解決するための手段】
【０００４】
開示のいくつかの実施形態は、異なるアプリケーション・コンテナ内の複数のアプリケーションによってソフトウェア関数が共有されることを可能にする、コンテナ・クラウド・プラットフォームを提供する。サービス関数は、コンテナ化され、アプリケーション・コンテナから分散される。コンテナ化されたサービスは、アプリケーション実行時間においてサービス関数を呼び出すアプリケーションのためのカプセルとして配信される。サービス・コンテナのイメージは、対応するアプリケーション・コンテナを動作させるホスト・コンピューティング・デバイスにおいて配備される。コンテナ・クラウド・プラットフォームは、配備されたサービス・コンテナをそれらの実行および終結についてモニタリングする。
【０００５】
コンテナ・クラウド・プラットフォームは、ホスト・コンピューティング・デバイスのセットをモニタリングする実行エスケープ・コントローラを含む。各ホスト・コンピューティング・デバイスは、１つまたは複数のアプリケーション・コンテナを動作させる。実行エスケープ・コントローラは、ホスト・コンピューティング・デバイスにおいて動作するアプリケーション・コンテナに一致するメタデータを有するカプセル・イメージを識別する。実行エスケープ・コントローラは、識別されたカプセル・イメージをカプセル・コンテナとしてホスト・コンピューティング・デバイスに配備する。配備されたカプセル・コンテナは、一致するアプリケーション・コンテナのコア関数によって呼び出されるサービス関数を含む。実行エスケープ・コントローラは、サービス関数の実行に基づいて、ホスト・コンピューティング・デバイスから終了コードを受信する。
【０００６】
ホスト・マシンは、サービス関数を呼び出すコア関数を実行するアプリケーション・コンテナを動作させる。ホスト・マシンは、サービス関数のイメージを含むカプセル・イメージを受信する。カプセル・イメージは、アプリケーション・コンテナに一致するメタデータを有する。ホスト・マシンは、アプリケーション・コンテナのコア関数によって呼び出されるサービス関数を実行するために、カプセル・イメージに基づいてカプセル・コンテナを起動する。ホスト・マシンは、サービス関数が実行を完了した後、カプセル・コンテナを終了する。
【０００７】
前述の発明の概要は、開示のいくつかの実施形態への簡単な導入として供給されるように意図される。それは、本文書において開示される全ての発明的主題の導入または概要であることを意味しない。以下に続く発明を実施するための形態、および発明を実施するための形態において参照される図面は、発明の概要で説明される実施形態だけでなくその他の実施形態もさらに説明する。したがって、本文書によって説明される全ての実施形態を理解するために、発明の概要、発明を実施するための形態、および図面が提供される。さらに、特許請求された主題は、主題の思想から逸脱することなく他の特定の形態で具現化され得るため、特許請求された主題は、発明の概要、発明を実施するための形態、および図面における例示的詳細によって限定されず、添付の特許請求の範囲によって定義されるべきである。
【０００８】
図面は、例示的実施形態である。それらは、全ての実施形態を示しているわけではない。他の実施形態が、追加で、または代わりに使用され得る。明白または不必要であり得る詳細は、スペースを節約するため、またはより有効な例示のために省略されてもよい。いくつかの実施形態は、追加のコンポーネントもしくはステップを用いて、または示されるコンポーネントもしくはステップの全てがなくても、あるいはその両方において、実施され得る。同一の数字が異なる図面中に現れるとき、それは同一または類似のコンポーネントまたはステップを指す。
【図面の簡単な説明】
【０００９】
【図１】例示的実施形態と一貫して、アプリケーション・コンテナを動作させるホスト・コンピューティング・デバイスにサービス・コンテナを配備する、コンテナ・クラウド・プラットフォームを概念的に示す。
【図２】例示的実施形態と一貫して、カプセル・イメージのメタデータを用いて、一致するアプリケーション・コンテナを識別することを概念的に示す。
【図３】例示的実施形態と一貫して、カプセル・イメージの生成を示す。
【図４】例示的実施形態と一貫して、アプリケーション・コンテナ内のコア関数のためのサービス・コンテナとしてカプセル・イメージを実行するためのプロセスを概念的に示す。
【図５】サービス関数のカプセル・イメージを、サービス関数を使用するアプリケーション・コンテナを実行するホスト・マシンに配備するためのプロセスを概念的に示す。
【図６】本開示の例示的実施形態による、データ処理システムのコンポーネントのブロック図を示す。
【図７】例としてのクラウド・コンピューティング環境を示す。
【図８】例示的実施形態にと一貫して、クラウド・コンピューティング環境によって提供される機能的抽象レイヤのセットを示す。
【発明を実施するための形態】
【００１０】
以下の詳述された説明では、関係する教示の完全な理解をもたらすために、多数の具体的詳細が例として述べられている。しかしながら、本教示は、そのような詳細なしでも実施され得ることは明らかであるべきである。他の場合において、周知の方法、手続き、コンポーネント、または回路、あるいはそれらの組合せは、本教示の態様を不必要に曖昧にすることを避けるために、詳細なしで比較的高いレベルで説明されている。
【００１１】
アプリケーションは、多くのコンポーネント・ソフトウェア関数を有する。これらの関数のいくつかは、コア関数として分類されてもよく、それ以外は、サービスまたはセカンダリ・ソフトウェア関数として分類されてもよい。コア関数は、典型的には、アプリケーションを定義するために、アプリケーション開発者によってアプリケーションに対して具体的に書かれている。それらは、異なるアプリケーションによる使用のために事前定義されない。サービスまたはセカンダリ関数は、コア関数の実施を支援する。それらは、典型的には、（例えば、ライブラリとして）異なるアプリケーションによる使用のために書かれた事前定義済み関数である。いくつかのサービス関数は、特定のハードウェア・プラットフォームを対象とする下位レベルのルーチンである。そのようなセカンダリまたはサービス関数の例は、ＮＴＰアップデート、データ・バックアップ、データ整合性チェック関数などの周期的に呼び出される関数を含む。セカンダリまたはサービス関数の例は、増加するデータベース・テーブルのサイズ、および選択的データ圧縮またはプルーニング関数などの散発的関数も含む。
【００１２】
アプリケーションによって使用されるセカンダリ・ソフトウェア関数は、通常、同一コンテナ・イメージ内のアプリケーションのコア関数とともにビルドされる。これは拡大したコンテナ・イメージをもたらし、共通のセカンダリ・ソフトウェア関数に対応するイメージの部分が、何度もビルドされる。
【００１３】
セカンダリ関数をアプリケーション・コンテナのイメージから分散させるために、開示のいくつかの実施形態は、異なるアプリケーション・コンテナ内の複数のアプリケーションによってソフトウェア関数、例えばセカンダリ・サービス関数が共有されることを可能にする、コンテナ・クラウド・プラットフォームを提供する。サービス関数は、コンテナ化され、アプリケーション・コンテナから分散される。コンテナ化されたサービスは、アプリケーション実行時間においてサービス関数を呼び出すアプリケーションのためのカプセルとして配信される。これらのコンテナ化されたサービスは、サービス・コンテナと呼ばれる。サービス・コンテナのイメージは、対応するアプリケーション・コンテナを動作させるホスト・コンピューティング・デバイスにおいて配備される。コンテナ・クラウド・プラットフォームは、配備されたサービス・コンテナをそれらの実行および終結についてモニタリングする。いくつかの実施形態では、サービス・コンテナは、ホスト・コンピューティング・デバイスにおいてカプセル・イメージとして配備され、したがって、サービス・コンテナは、カプセル・コンテナとも呼ばれ得る。
【００１４】
コンテナ・クラウド・プラットフォーム１００は、実行エスケープ・コントローラ１１０によって管理され、制御される。実行エスケープ・コントローラ１１０は、コンテナ・クラウド・プラットフォーム１００に参加するホスト・コンピューティング・デバイス１０１〜１０３と通信する。コンピューティング・デバイス１０１〜１０３および実行エスケープ・コントローラ１１０は、それらのそれぞれのネットワーク・インターフェースを使用して、インターネット、コンピューティング・クラウド、ローカル・エリア・ネットワーク、または別の種類の通信媒体を通して、互いに通信し得る。
【００１５】
実行エスケープ・コントローラ１１０は、イメージ・レジストリ１２０にアクセス可能なコンピューティング・デバイスであり、イメージ・レジストリ１２０は、異なるサービス関数のためのカプセル・イメージを含む、多様なソフトウェア・イメージを記憶する。アプリケーション・コンテナを実行中のホスト・マシンにおいて配備されるとき、カプセル・イメージは、サービス・コンテナとして実行される。実行エスケープ・コントローラ１１０は、それらのコンピューティング・デバイスにおいて動作しているアプリケーション・コンテナについてホスト・マシン１０１〜１０３をモニタリングする。実行エスケープ・コントローラ１１０は、それらのアプリケーション・コンテナによって必要とされるサービス関数を識別し、サービス・コンテナの対応するカプセル・イメージをそれらのホスト・マシンに配備する。例では、コンテナ・クラウド・プラットフォームが、カプセル・イメージＡおよびＢをホスト・マシン１０１に、カプセル・イメージＢをホスト・マシン１０２に、カプセル・イメージＡおよびＣをホスト・マシン１０３にディスパッチまたは配備する。
【００１６】
図示されるように、ホスト・コンピューティング・デバイス１０１は、アプリケーション・コンテナＳ、Ｖ、Ｔ、およびＺを動作させている。それらのアプリケーション・コンテナのそれぞれのイメージは、１つまたは複数のコア関数のイメージを含む。しかしながら、アプリケーション・コンテナＳ、Ｖ、およびＴのイメージは、コア関数を実行するために使用されるサービス関数のイメージまたは依存関係を含まない。例では、アプリケーション・コンテナＳおよびＶのコア関数は、サービス関数Ａを伴うが、アプリケーション・コンテナＳおよびＶのイメージは、サービス関数Ａを含まない。アプリケーション・コンテナＴのコア関数は、サービス関数Ｂを伴うが、アプリケーション・コンテナＴのイメージは、サービス関数Ｂを含まない。それに対応して、コンテナ・クラウド・プラットフォーム１００の実行エスケープ・コントローラ１１０は、サービス関数Ａおよびサービス関数Ｂのためのカプセル・イメージをホスト・コンピューティング・デバイス１０１に配備する。
【００１７】
カプセル・イメージがホスト・マシンに一旦配備されると、ホスト・マシンは、サービス関数のためのサービス・コンテナとしてカプセル・イメージを実行し得る。ホスト・マシンは、サービス関数を呼び出すコア関数のためのサービス関数を実行する。図１の例において、ホスト・コンピューティング・デバイス１０１は、サービス関数Ａのためのサービス・コンテナＡとしてカプセル・イメージＡを実行する。これによって、ホスト・コンピューティング・デバイス１０１が、アプリケーション・コンテナＳおよびＶのコア関数をサービス関数Ａとともに正しく実行することが可能となる。同様に、ホスト・コンピューティング・デバイス１０１は、サービス関数Ｂのためのサービス・コンテナＢとしてカプセル・イメージＢを実行する。これによって、ホスト・コンピューティング・デバイス１０１が、アプリケーション・コンテナＴのコア関数をサービス関数Ｂとともに正しく実行することが可能となる。
【００１８】
いくつかの実施形態において、サービス関数を使用する各アプリケーション・コンテナについて、対応するサービス・コンテナが、アプリケーション・コンテナのためのサービス関数のインスタンスを実行するサービス・スレッドを開始する。ホスト・マシンは、サービス・スレッドがその動作を完了するときに、その対応するサービス・スレッドを終結させることによって、サービス関数の各インスタンスを終了する。サービス・コンテナ内のサービス関数のスレッドは、それがサービス関数の実行を終了するとすぐに終了するため、サービス・コンテナのカプセル・イメージは、実行エスケープ・カプセル（ＲＥＣ）と呼ばれる。コンテナ・クラウド・プラットフォーム１００のコントローラ１１０は、それが各実行エスケープ・カプセルの実行および終結をモニタリングし制御するため、実行エスケープ・コントローラと呼ばれる。
【００１９】
いくつかの実施形態では、サービス関数のインスタンスの各サービス・スレッドは、サービス関数のインスタンスを呼び出すアプリケーション・コンテナの名前空間において動作する。図示されるように、サービス・コンテナＡは、アプリケーション・コンテナＳの名前空間においてサービス関数Ａの第１のインスタンス１３１について第１のサービス・スレッドを動作させる。サービス・コンテナＡは、また、アプリケーション・コンテナＶの名前空間においてサービス関数Ａの第２のインスタンス１３２について第２のサービス・スレッドを動作させる。サービス関数Ａの２つのインスタンス１３１および１３２は、異なる名前空間において動作するため、アプリケーション・コンテナＳについてのサービス関数Ａの動作は、アプリケーション・コンテナＶについてのサービス関数Ａの動作と干渉することなく、逆も同様である。同様に、サービス・コンテナＢは、アプリケーション・コンテナＴの名前空間においてサービス関数Ｂのインスタンス１４１についてサービス・スレッドを動作させる。
【００２０】
いくつかの実施形態において、ホスト・マシンは、異なるアプリケーション・コンテナについてのサービス関数の異なるインスタンスを並列で動作させ得る。サービス関数を呼び出す各アプリケーション・コンテナが、サービス関数を（例えば、順番に、または反復して）実行する順番まで待たなければならないように、ホスト・マシンは、また、任意の所与の時間にサービス関数のインスタンスを１つだけ動作させてもよい。
【００２１】
カプセル・イメージの配備は、アプリケーション・コンテナのイメージが、サービス関数およびその依存関係ではなく、コア関数だけを、運ぶことを可能にする。カプセル・イメージの配備は、また、同一ホスト・マシン内の異なるアプリケーション・コンテナが同一のサービス関数イメージを共有することを可能にする。さらに、異なるホスト・マシン内のアプリケーション・コンテナが、それらのコンテナ・イメージにおいてサービス関数を運ばなくても同一のサービス関数を呼び出し得るように、コンテナ・クラウド・プラットフォームは、同一のカプセル・イメージを異なるホスト・マシンに配備し得る。図１の例において、実行エスケープ・コントローラ１１０は、カプセル・イメージＡをホスト・マシン１０１および１０３の両方に、カプセル・イメージＢをホスト・マシン１０１および１０２の両方に配備する。
【００２２】
いくつかの実施形態において、各カプセル・イメージは、メタデータのセットに関連付けられる。カプセル・イメージのメタデータは、カプセル・イメージのサービス関数に一致するアプリケーション・コンテナを、カプセル・イメージを受信するホスト・マシンが識別するために使用され得る、ラベルまたはタグを提供する。カプセル・イメージのメタデータは、実行エスケープ・コントローラ１１０が、一致するアプリケーション・コンテナを実行するホスト・マシンを識別することも可能にする。
【００２３】
図２は、例示的実施形態と一貫して、カプセル・イメージのメタデータを用いて、一致するアプリケーション・コンテナを識別することを概念的に示す。図示されるように、カプセル・イメージＡ、Ｂ、およびＣは、イメージ・レジストリ１２０において登録され、イメージ・レジストリ１２０は、コンテナ・クラウド・プラットフォーム１００の実行エスケープ・コントローラ１１０によってアクセス可能である。実行エスケープ・コントローラ１１０は、複数のアプリケーション・コンテナＳ、Ｔ、Ｕ、Ｖ、Ｗ、Ｘ、およびＹをモニタリングしている。これらのアプリケーション・コンテナは、ホスト・マシン１０１〜１０３（図示せず）などのホスト・マシンにおいて動作している。各カプセル・イメージは、サービス関数のイメージ、カプセル管理スクリプト、およびメタデータを含み得る。
【００２４】
カプセル・イメージＡは、サービス・イメージ２１１、カプセル管理スクリプト２１２、およびメタデータ２１３を含む。
【００２５】
サービス・イメージ２１１は、カプセル・イメージＡのサービス関数を実行するために実行され得るサービス関数のイメージである。
【００２６】
カプセル管理スクリプト２１２は、カプセル・イメージを配備する実行エスケープ・コントローラ１１０と、配備されるカプセル・イメージを受信するホスト・マシンとの間の通信を管理する。カプセル管理スクリプト２１２は、また、デフォルト・エントリ・ポイントをコールするように構成される。カプセル管理スクリプト２１２は、実行エスケープ・コントローラ１１０が管理アクティビティのためにカプセル・コンテナと通信することを可能にする。例えば、実行エスケープ・コントローラ１１０は、サービス・コンテナ内で実行中のサービス関数の状態を問い合わせるために、カプセル管理スクリプトを呼び出し得る。
【００２７】
メタデータ２１３は、カプセル・ラベル２２１のセットを含む。カプセル・ラベル２１１のセットは、カプセル・イメージＡのサービス関数について一致するアプリケーション・コンテナを識別する基準を指定する。カプセル・ラベル２２１のセットは、「ＯＳ＝ｕｂｕｎｔｕ」、即ち、Ｕｂｕｎｔｕオペレーティング・システムを使用することを指定する。これは、アプリケーション・コンテナＳ、Ｖ、およびＹに一致し、それらは、Ｕｂｕｎｔｕオペレーティング・システムを使用している（「ＯＳ＝ｕｂｕｎｔｕ」）。実行エスケープ・コントローラ１１０は、一方、アプリケーション・コンテナＳ、Ｖ、またはＹを動作しているホスト・マシン（例えば、ホスト・マシン１０１および１０３）にカプセル・イメージＡを配備する。
【００２８】
カプセル・ラベル２２１のセットに追加して、カプセル・イメージのメタデータ２１３は、サービス関数２２０の識別子、制約パラメータ２２２、および安全性評価フラグ２２３などの情報も含む。制約パラメータ２２２は、ホスト・マシンが異なるアプリケーション・コンテナのためのサービス関数の異なるインスタンスを並列で、または任意の所与の時間においてサービス関数のインスタンスを１つだけ、動作させ得るかどうかを示す。安全性評価フラグ２２３は、カプセル・イメージが、セキュリティ・テストに合格したか、あるいは不合格であったかを示す標識である。実行エスケープ・コントローラ１１０は、このフラグを使用して、あるアプリケーション・コンテナのためのそのサービス関数の実行を制限するかどうかを判断し得る。これは、実行されているサービス関数のセキュリティを保証する。
【００２９】
図２は、カプセル・イメージＢおよびＣのコンテンツも示す。カプセル・イメージＢのカプセル・ラベルのセットは、「ＯＳ＝ｒｈｅｌ、ａｐｐ＝ｄｂ２」を指定する。これは、アプリケーション・コンテナＴおよびＷに一致し、したがって、実行エスケープ・コントローラ１１０は、カプセル・イメージＢをアプリケーション・コンテナＴまたはＷを動作させるホスト・マシンに配備する。カプセル・イメージＣのカプセル・ラベルは、「ａｐｐ＝ｋａｆｋａ」を指定する。これは、アプリケーション・コンテナＵ、Ｘ、およびＹに一致し、したがって、実行エスケープ・コントローラ１１０は、カプセル・イメージＣをアプリケーション・コンテナＵ、Ｘ、またはＹを動作させるホスト・マシンに配備する。
【００３０】
１つのアプリケーション・コンテナが、複数の異なるカプセル・イメージからサービス関数を使用し得ることは注意に値する。例では、アプリケーション・コンテナＹは、カプセルＡおよびＣの両方のカプセル・ラベル（ＯＳ＝ｕｂｕｎｔｕおよびａｐｐ＝ｋａｆｋａ）に一致し、したがって、実行エスケープ・コントローラ１１０は、アプリケーション・コンテナＹを動作させるホスト・マシンにおいてカプセル・イメージＡおよびＣの両方を配備する。
【００３１】
図３は、例示的実施形態と一貫して、カプセル・イメージの生成を示す。サービス・コンテナのカプセル・イメージは、開発者によって提供されるサービス関数のコードまたは定義に基づいて生成される。生成されたカプセル・イメージは、実行エスケープ・コントローラ１１０による取り出しのために、イメージ・レジストリ１２０で登録され、実行エスケープ・コントローラ１１０は、ホスト・マシンにおいて動作しているアプリケーション・コンテナにカプセル・イメージを配備する。図は、「１」から「６」までラベル付けされた６段階における、カプセル・イメージの生成および登録を示す。
【００３２】
第１段階（「１」とラベル付けされた）において、開発者コンピューティング・デバイス３０１は、サービス関数の仕様またはコンテンツ（例えば、コード）を受信する。
【００３３】
第２段階（「２」とラベル付けられた）において、開発者コンピューティング・デバイス３０１は、受信したサービス関数のためのサービス・イメージ３０５を生成する。サービス・イメージ３０５は、サービス関数によって要求される全ての依存関係およびライブラリを含むように、ビルド・コマンドで生成される。開発者コンピューティング・デバイスは、また、サービス関数を呼び出すための開始スクリプトまたはデフォルト・エントリ・ポイント３０６を指定する。開発者コンピューティング・デバイスは、コンテナ・クラウド・プラットフォームによってモニタリングされる、どのアプリケーション・コンテナがサービス・イメージを受信すべきであるかを識別するラベル３０７も指定する。サービス・イメージ３０５、エントリ・ポイント３０６、およびラベル３０７は、ドッカー・イメージ３２０としてイメージ・レジストリ１２０に記憶される。ドッカー・イメージは、ドッカー・コンテナのイメージであり、ドッカー・コンテナは、オープン・ソース・ソフトウェア開発プラットフォームである。ドッカー・コンテナは、Ｌｉｎｕｘオペレーティング・システム（ＯＳ）を実行する任意のシステム間で、サービス関数がポータブルであることを可能にする。
【００３４】
第３段階（「３」とラベル付けされた）において、実行エスケープ・コントローラ１１０は、イメージ・レジストリ１２０からドッカー・イメージ３２０を取り出す。
【００３５】
第４段階（「４」とラベル付けされた）において、実行エスケープ・コントローラ１１０は、サービス・イメージをラップするカプセル・イメージ３１０を生成する。実行エスケープ・コントローラ１１０は、サービス・イメージのデフォルト・エントリ・ポイントを、サービス・イメージのデフォルト・エントリ・ポイントをコールするように構成されたカプセル管理スクリプト（例えば、２１２）で上書きする。実行エスケープ・コントローラ１１０は、新たに生成されたカプセル・イメージのセキュリティまたは脆弱性評価も実行する。セキュリティ評価の結果は、カプセル・イメージ（サービス・イメージを含む）のメタデータに、セキュリティ評価フラグ（例えば、２２３）として含まれる。
【００３６】
第５段階において、実行エスケープ・コントローラ１１０は、新たに生成されたカプセル・イメージ３１０をイメージ・レジストリ１２０内に記憶または登録する。カプセル・イメージ３１０は、サービス関数のイメージ、カプセル管理スクリプト、およびサービス関数のメタデータを含む。サービス関数のメタデータは、カプセル・ラベル、制約、およびセキュリティ評価結果フラグを含む。いくつかの実施形態では、実行エスケープ・コントローラ１１０は、セキュリティ評価に合格したカプセル・イメージのみを登録または記憶する。
【００３７】
第６段階において、カプセル・イメージ３１０は、実行エスケープ・コントローラ１１０による後続の取り出しおよび配備のために、イメージ・レジストリ１２０に登録される。他の開発者コンピューティング・デバイス（例えば、３０２）からの他のサービス関数の他のサービス・イメージもまた、他のカプセル・イメージを生成するために実行エスケープ・コントローラ１１０によって処理され得る。
【００３８】
図４は、例示的実施形態と一貫して、アプリケーション・コンテナ内のコア関数のためのサービス・コンテナとしてカプセル・イメージを実行するためのプロセス４００を概念的に示す。いくつかの実施形態において、ホスト・マシン（例えば、１０１）は、アプリケーション・コンテナを動作させ、かつコンテナ・クラウド・プラットフォームの実行エスケープ・コントローラ１１０と通信しているときに、プロセス４００を実行する。いくつかの実施形態において、ホスト・マシンの１つまたは複数の処理ユニット（例えば、プロセッサ）は、コンピュータ可読媒体に記憶された命令を実行することによって、プロセス４００を実行する。
【００３９】
ホスト・マシンは、（４１０において）アプリケーション・コンテナを動作させ、サービス関数に依存する（またはサービス関数を呼び出す）アプリケーションのコア関数を実行する。ホスト・マシンは、また、他のコア関数を用いて他のアプリケーション・コンテナを動作させ得る。どのアプリケーション・コンテナがホスト・マシンにおいて動作しているか、およびどのサービス関数がそれらのコア関数によって必要とされるかを、実行エスケープ・コントローラ１１０が学習し得るように、ホスト・マシンは、実行エスケープ・コントローラ１１０と通信している。
【００４０】
ホスト・マシンは、（４２０において）実行エスケープ・コントローラ１１０からカプセル・イメージを受信する。カプセル・イメージは、サービス関数のイメージ（即ちサービス・イメージ）およびその依存関係を含む。カプセル・イメージは、サービス関数を使用するアプリケーション・コンテナとサービス関数を一致させるラベルを含むメタデータを有する。
【００４１】
ホスト・マシンは、（４２５において）カプセル・イメージのカプセル管理スクリプトを実行する。カプセル管理スクリプトは、ホスト・マシンと、カプセル・イメージを配備する実行エスケープ・コントローラとの間の通信を管理する。管理スクリプトは、また、サービス関数のデフォルト・エントリ・ポイントを呼び出すように構成される。
【００４２】
ホスト・マシンは、（４３０において）アプリケーション・コンテナのコア関数によって呼び出されるサービス関数を実行するために、カプセル・イメージに基づいてサービス・スレッドを起動する。いくつかの実施形態において、サービス・スレッドの動作が、ホスト・マシンにおける他のコンテナの動作と干渉しないように、サービス・スレッドは、１つのアプリケーション・コンテナの名前空間において動作するサービス関数の１つのインスタンスのためのものである。カプセル・イメージのメタデータ内の制約パラメータ（例えば、２２２）は、ホスト・マシンが、異なるアプリケーション・コンテナのためのサービス関数の異なるインスタンスを（例えば、サービス・スレッド１３１および１３２として）並列で動作させることを可能にしてもよく、または、サービス関数のインスタンスを一度に１つだけ動作させるようにホスト・マシンを制限してもよい。
【００４３】
スレッドがアプリケーション・コンテナのためのその動作を完了させた後、ホスト・マシンは、（４４０において）サービス・スレッドを終了する。いくつかの実施形態において、ホスト・マシンは、また、実行エスケープ・コントローラ１１０に終了コードを報告する。ホスト・マシンにおけるカプセル・コンテナは、アプリケーション・コンテナによって要求される場合に、サービス・スレッドを再トリガしてもよい。
【００４４】
ホスト・マシンは、（４５０において）サービス・コンテナがサービス関数を全ての適用可能なアプリケーション・コンテナに適用した後で（または、実行エスケープ・コントローラ１１０が、アプリケーション・コンテナを強制的に終了するようにホスト・マシンに指示するときに）、サービス・コンテナ（カプセル・コンテナ）を終了する。プロセス４００は、次いで終了する。
【００４５】
図５は、サービス関数のカプセル・イメージを、サービス関数を使用するアプリケーション・コンテナを実行するホスト・マシンに配備するためのプロセス５００を概念的に示す。いくつかの実施形態において、実行エスケープ・コントローラ１１０は、サービス関数に依存するアプリケーション・コンテナについてリモート・ホスト・マシンをモニタリングするときに、プロセス５００を実行する。いくつかの実施形態において、実行エスケープ・コントローラ１１０の１つまたは複数の処理ユニット（例えば、プロセッサ）は、コンピュータ可読媒体に記憶された命令を実行することによって、プロセス５００を実行する。
【００４６】
実行エスケープ・コントローラ１１０は、（５１０において）リモート・ホスト・コンピューティング・デバイスのセットをモニタリングし、各ホスト・コンピューティング・デバイスは、サービス関数に依存するコア関数を有する１つまたは複数のアプリケーション・コンテナを動作させる。
【００４７】
実行エスケープ・コントローラ１１０は、（５２０において）ホスト・マシンのうちの１つにおいて動作するアプリケーション・コンテナに一致するメタデータを有するカプセル・イメージを識別する。いくつかの実施形態において、この一致は、カプセル・イメージのメタデータ内のカプセル・ラベル（例えば、２２１）に基づく。ラベルは、開発者コンピューティング・デバイス（例えば３０１）におけるサービス関数の開発者によって、または実行エスケープ・コントローラ１１０によって、挿入され得る。いくつかの実施形態において、セキュリティ評価が不合格のクラウド・イメージが配備されないように、実行エスケープ・コントローラ１１０は、セキュリティ評価フラグ（例えば２２３）に基づいてカプセル・イメージを配備するかどうかを判断する。
【００４８】
実行エスケープ・コントローラ１１０は、（５３０において）識別されたカプセル・イメージを、一致するアプリケーション・コンテナを動作させるホスト・マシンにおいてサービス・コンテナとして配備する。このサービス・コンテナ（またはカプセル・コンテナ）は、一致するアプリケーション・コンテナのコア関数によって呼び出されるサービス関数を含む。
【００４９】
実行エスケープ・コントローラ１１０は、（５４０において）ホスト・マシンから終了コードを受信する。終了コードは、１つのアプリケーション・コンテナについて、またはサービス関数を使用する全てのアプリケーション・コンテナについての、サービス関数の完全な実行を示す。いくつかの実施形態では、実行エスケープ・コントローラ１１０は、それが閾値期間内にホスト・マシンから終了コードを受信できなかった場合、またはサービス関数の実行がエラーを有すると終了コードが示す場合に、管理者に報告する。プロセス５００は、次いで終了する。
【００５０】
プロセス５００の一部であると示されないが、実行エスケープ・コントローラ１１０は、また、イメージ・レジストリ１２０からサービス・イメージを取り出し、プロセス５００の動作中にカプセル・イメージになるようにそれらを修正する。上記図３に対する参照によって言及されたように、実行エスケープ・コントローラ１１０は、サービス・イメージをラップするカプセル・イメージを生成するために、サービス・イメージを取り出す。サービス・イメージのデフォルト・エントリ・ポイントは、カプセル管理スクリプトで上書きされる。実行エスケープ・コントローラ１１０は、また、新たに生成されたカプセル・イメージのセキュリティまたは脆弱性評価を実行する。新たに生成されたカプセル・イメージは、イメージ・レジストリ１２０において登録される。
【００５１】
電子システムの例
本出願は、任意の可能な統合の技術的詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体を含み得る。
【００５２】
コンピュータ可読記憶媒体は、命令実行デバイスにより使用するための命令を保持し、記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、静的ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードまたはその上に記録された命令を有する溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組合せを含む。本明細書で用いられるコンピュータ可読記憶媒体は、本来、電波もしくは他の自由伝播する電磁波、導波管もしくは他の送信媒体を通って伝播する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、または電線を通って送信される電気信号などの、一過性信号であると解釈されるべきではない。
【００５３】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組合せを介して外部コンピュータまたは外部記憶デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含み得る。各コンピューティング／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体の記憶用にコンピュータ可読プログラム命令を転送する。本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、またはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む、１つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを通して、ユーザのコンピュータに接続されてもよい。あるいは、接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを通して）外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路は、本開示の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
【００５４】
本開示の態様は、開示の実施形態による、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書に説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ると理解されたい。コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定される機能／動作を実施する手段を生成するように、これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または機械を製造するための他のプログラマブル・データ処理装置のプロセッサに提供されてもよい。コンピュータ可読記憶媒体に記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定される機能／動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはそれらの組合せに特定のやり方で機能するように指示し得る、コンピュータ可読記憶媒体に記憶されてもよい。
【００５５】
コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定される機能／動作を実施するように、コンピュータ可読プログラム命令は、また、コンピュータ実施されるプロセスを作り出すために、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるコンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされてもよい。図面（例えば、図４、図５）中のフローチャートおよびブロック図は、本開示の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実施のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実施するための１つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替的実施において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される２つのブロックが、実際には、実質的に同時に実行されてもよく、または、ブロックが、関係する機能性次第で逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェアベース・システムによって実施され得ることにも留意されたい。
【００５６】
図６は、本開示の例示的実施形態による、実行エスケープ・コントローラ１１０またはホスト・マシン（例えば１０１）を実施するために使用され得るデータ処理システム６００および６５０のコンポーネントのブロック図を示す。図６は、１つの実施の例示のみを提供し、異なる実施形態が実施され得る環境に関していかなる限定も示唆しないと理解されるべきである。示される環境に対する多くの修正は、設計および実施の要件に基づいて行われ得る。
【００５７】
データ処理システム６００および６５０は、機械可読プログラム命令を実行可能な任意の電子デバイスを表す。データ処理システム６００および６５０は、スマート・フォン、コンピュータ・システム、ＰＤＡ、または他の電子デバイスを表し得る。データ処理システム６００および６５０によって表され得るコンピューティング・システム、環境、または構成、あるいはそれらの組合せの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ちまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、ネットワークＰＣ、ミニコンピュータ・システム、および上記システムまたはデバイスのうちのいずれかを含む分散型クラウド・コンピューティング環境を含むが、これらに限定されない。
【００５８】
データ処理システム６００および６５０は、図６に示される内部コンポーネントのセット６００、および外部コンポーネントのセット６５０を含み得る。内部コンポーネントのセット６００は、１つまたは複数のバス６２６上の１つまたは複数のプロセッサ６２０、１つまたは複数のコンピュータ可読ＲＡＭ６２２、および１つまたは複数のコンピュータ可読ＲＯＭ６２４、ならびに１つまたは複数のオペレーティング・システム６２８および１つまたは複数のコンピュータ可読有形記憶デバイス６３０を含む。１つまたは複数のオペレーティング・システム６２８、ならびにプロセス４００および５００を実行するためのプログラムなどのプログラムは、１つまたは複数のＲＡＭ６２２（典型的には、キャッシュメモリを含む）を介した１つまたは複数のプロセッサ６２０による実行のために、１つまたは複数のコンピュータ可読有形記憶デバイス６３０上に記憶される。図６に示される実施形態において、コンピュータ可読有形記憶デバイス６３０のそれぞれが、内部ハード・ドライブの磁気ディスク記憶デバイスである。代替的には、コンピュータ可読有形記憶デバイス６３０のそれぞれが、ＲＯＭ６２４などの半導体記憶デバイス、ＥＰＲＯＭ、フラッシュ・メモリ、またはコンピュータ・プログラムおよびデジタル情報を記憶し得る任意の他のコンピュータ可読有形記憶デバイスである。
【００５９】
内部コンポーネント６００のセットは、ＣＤ−ＲＯＭ、ＤＶＤ、メモリ・スティック、磁気テープ、磁気ディスク、光ディスク、または半導体記憶デバイスなどの１つまたは複数のポータブル・コンピュータ可読有形記憶デバイス６８６から読み出し、かつ書き込むためのＲ／Ｗドライブまたはインターフェース６３２も含む。プロセス４００および５００を実行するための命令は、それぞれのポータブル・コンピュータ可読有形記憶デバイス６８６のうちの１つまたは複数の上に記憶され、それぞれのＲ／Ｗドライブまたはインターフェース６３２を介して読み出され、それぞれのハード・ドライブ６３０内にロードされ得る。
【００６０】
内部コンポーネント６００のセットは、ＴＣＰ／ＩＰアダプタ・カード、ワイヤレスＷｉ−Ｆｉインターフェース・カード、または３Ｇもしくは４Ｇワイヤレス・インターフェース・カードなどのネットワーク・アダプタ（もしくはスイッチ・ポート・カード）またはインターフェース６３６、あるいは他の有線または無線通信リンクも含み得る。上述のプロセスまたはプログラムの命令は、ネットワーク（例えば、インターネット、ローカル・エリア・ネットワークなど、ワイド・エリア・ネットワーク）およびそれぞれのネットワーク・アダプタまたはインターフェース６３６を介して、外部コンピュータ（例えば、サーバ）からダウンロードされ得る。ネットワーク・アダプタ（もしくはスイッチ・ポート・アダプタ）またはインターフェース６３６から、説明したプログラムまたはプロセスの命令およびデータが、それぞれのハード・ドライブ６３０内にロードされる。ネットワークは、銅電線、光ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含み得る。
【００６１】
外部コンポーネントのセット６５０は、コンピュータ・ディスプレイ・モニタ６７０、キーボード６８０、およびコンピュータ・マウス６８４を含み得る。外部コンポーネントのセット６５０は、タッチ・スクリーン、仮想キーボード、タッチ・パッド、ポインティング・デバイス、および他のヒューマン・インターフェース・デバイスも含み得る。内部コンポーネントのセット６００は、コンピュータ・ディスプレイ・モニタ６７０、キーボード６８０、およびコンピュータ・マウス６８４へインターフェースするためのデバイス・ドライバ６４０も含む。デバイス・ドライバ６４０、Ｒ／Ｗドライブまたはインターフェース６３２、およびネットワーク・アダプタまたはインターフェース６３６は、ハードウェアおよびソフトウェア（記憶デバイス６３０またはＲＯＭ６２４あるいはその両方に記憶される）を含む。
【００６２】
クラウド・コンピューティング環境
本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書に挙げる教示の実施は、クラウド・コンピューティング環境に限定されないと理解されるべきである。むしろ、本開示の実施形態は、現在既知の、または後に開発される任意の他の種類のコンピューティング環境と併せて実施されることが可能である。クラウド・コンピューティングは、最小の管理労力またはサービス・プロバイダとの対話で迅速に供給され、リリースされ得る、構成可能なコンピューティング・リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想機械、およびサービス）の共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも５つの特性、少なくとも３つのサービス・モデル、および少なくとも４つの配備モデルを含み得る。
【００６３】
特性の例
オンデマンド・セルフサービス：クラウド消費者は、サービス・プロバイダと人との対話を必要とすることなく、必要に応じて、自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング・ケイパビリティを一方的に供給し得る。
幅広いネットワーク・アクセス：ケイパビリティは、ネットワーク上で利用可能であり、異種シン・クライアントまたはシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、およびＰＤＡ）による使用を促進する標準的なメカニズムを通してアクセスされる。
リソースの共用：プロバイダのコンピューティング・リソースが、マルチテナント型モデルを使用して複数の消費者にサービスするためにプールされ、異なる物理リソースおよび仮想リソースが要求に従って動的に割り当ておよび再割り当てされる。消費者が、概して、提供されるリソースの正確な場所に対する制御または知識を有しないが、より抽象度の高いレベル（例えば、国、州、またはデータセンタ）において場所を指定することが可能であり得るという点において、位置独立の意味がある。
スピーディな拡張性：ケイパビリティは、場合によっては自動的に、即座にスケール・アウトするようにスピーディかつ弾力的に供給され、即座にスケール・インするようにスピーディに解放され得る。消費者に対しては、供給に利用可能なケイパビリティが、多くの場合無制限であるように見え、いつでも任意の量で購入可能である。
サービスが計測可能であること：クラウド・システムは、サービスの種類（例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント）に適したある抽象度レベルにおいて計測ケイパビリティを活用することによって、リソース使用を自動的に制御し、最適化する。リソース使用量は、モニタリングされ、制御され、報告されてもよく、利用サービスのプロバイダおよび消費者の両方に透明性をもたらす。
【００６４】
サービス・モードの例
サービスとしてのソフトウェア（ＳａａＳ）：消費者に提供されるケイパビリティは、クラウド・インフラ上で実行中のプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インターフェース（例えば、ウェブ・ベースの電子メール）を通して、様々なクライアント・デバイスからアクセス可能である。消費者は、限定されたユーザ固有アプリケーションの構成設定は例外である可能性があるが、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション・ケイパビリティですら含む、基礎となるクラウド・インフラを管理または制御しない。
サービスとしてのプラットフォーム（ＰａａＳ）：消費者に提供されるケイパビリティは、プロバイダによってサポートされるプログラミング言語およびツールを使用して生成された、消費者が生成したアプリケーションまたは消費者が取得したアプリケーションを、クラウド・インフラ上に配備することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎となるクラウド・インフラを管理または制御しないが、配備されたアプリケーション、および、可能な限りアプリケーション・ホスティング環境構成に対して制御を行う。サービスとしてのインフラ（ＩａａＳ）：消費者に提供されるケイパビリティは、処理、ストレージ、ネットワーク、ならびに消費者がオペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを配備および実行することが可能な、他の基本コンピューティング・リソースを供給することである。消費者は、基礎となるクラウド・インフラを管理または制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対して制御を行い、かつ可能な限り選択ネットワーキング・コンポーネント（例えば、ホスト・ファイアウォール）の限定的な制御を行う。
配備モード
プライベート・クラウド：クラウド・インフラは、組織のためだけに動作される。クラウド・インフラは、組織または第三者によって管理されてもよく、構内または構外に存在し得る。
コミュニティ・クラウド：クラウド・インフラは、複数の組織によって共有され、共有の関心事（例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項）を有する特定のコミュニティをサポートする。クラウド・インフラは、組織または第三者によって管理されてもよく、構内または構外に存在し得る。
パブリック・クラウド：クラウド・インフラは、一般公衆または大きな業界団体に利用可能とされ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド：クラウド・インフラは、一意なエンティティのままであるが、データおよびアプリケーション・ポータビリティを可能にする標準化技術または独自技術（例えば、クラウド間のロード・バランシングのためのクラウド・バースティング）によって共に結合された、２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の合成物である。
【００６５】
クラウド・コンピューティング環境は、無国籍、低結合、モジュール性、および意味相互運用性を中心としたサービス指向型である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラである。
【００６６】
ここで図７を参照すると、例示的なクラウド・コンピューティング環境７５０が示されている。図示するように、クラウド・コンピューティング環境７５０は、クラウド消費者によって使用されるローカル・コンピューティング・デバイス、例えば、携帯情報端末（ＰＤＡ）もしくは携帯電話７５４Ａ、デスクトップ・コンピュータ７５４Ｂ、ラップトップ・コンピュータ７５４Ｃ、または自動車コンピュータ・システム７５４Ｎ、あるいはそれらの組合せなどが通信し得る、１つまたは複数のクラウド・コンピューティング・ノード７１０を含む。ノード７１０は、互いに通信し得る。それらは、上述のようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはそれらの組合せなどの、１つまたは複数のネットワーク内で物理的または仮想的にグループ化されてもよい（図示せず）。これによって、クラウド・コンピューティング環境７５０が、インフラ、プラットフォーム、またはソフトウェア、あるいはそれらの組合せを、クラウド消費者がローカル・コンピューティング・デバイス上でリソースを維持する必要がないサービスとして提案することが可能となる。図７に示されるコンピューティング・デバイス７５４Ａ〜Ｎの種類は、単なる例示であるように意図され、コンピューティング・ノード７１０およびクラウド・コンピューティング環境７５０は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続あるいはその両方を経て（例えば、ウェブ・ブラウザを用いて）、任意の種類のコンピュータ化デバイスと通信し得ると理解される。
【００６７】
ここで図８を参照すると、（図７の）クラウド・コンピューティング環境７５０によって提供される機能抽象レイヤのセットが示されている。図８に示されるコンポーネント、レイヤ、および機能は、単なる例示であるように意図され、開示の実施形態は、それらに限定されないと理解されるべきである。図示するように、以下のレイヤおよび対応する機能が、提供される。
【００６８】
ハードウェアおよびソフトウェア・レイヤ８６０は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム８６１、ＲＩＳＣ（Reduced Instruction Set Computer）アーキテクチャ・ベース・サーバ８６２、サーバ８６３、ブレード・サーバ８６４、ストレージ・デバイス８６５、ならびにネットワークおよびネットワーキング・コンポーネント８６６を含む。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア８６７、およびデータベース・ソフトウェア８６８を含む。
【００６９】
仮想レイヤ８７０は、仮想エンティティの以下の例、仮想サーバ８７１、仮想ストレージ８７２、仮想プライベート・ネットワークを含む仮想ネットワーク８７３、仮想アプリケーションおよびオペレーティング・システム８７４、ならびに仮想クライアント８７５が提供され得る、抽象レイヤを提供する。
【００７０】
１つの例では、管理レイヤ８８０は、後述する機能を提供し得る。リソース供給８８１は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的調達を提供する。測定および価格設定８８２は、リソースがクラウド・コンピューティング環境内で利用されるときにコスト追跡を提供し、これらのリソースの消費に対する課金または請求を提供する。１つの例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、データおよび他のリソースについての保護だけでなく、クラウド消費者およびタスクについての本人確認を提供する。ユーザ・ポータル８８３は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理８８４は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソース割り当ておよび管理を提供する。サービス水準合意（ＳＬＡ）計画および遂行８８５は、ＳＬＡに従って将来の要件が予期されるクラウド・コンピューティング・リソースの事前配置および調達を提供する。
【００７１】
ワークロード・レイヤ８９０は、クラウド・コンピューティング環境が利用され得る機能性の例を提供する。このレイヤから提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション８９１、ソフトウェア開発およびライフサイクル管理８９２、仮想クラスルーム教育配信８９３、データ解析処理８９４、トランザクション処理８９５、ならびに実行エスケープ制御８９６を含む。いくつかの実施形態において、ワークロード８９６は、コンテナ・クラウド・プラットフォーム１００において実行エスケープ・コントローラ１１０の動作のうちのいくつかを実行する。
【００７２】
アプリケーション・コンテナを実行する複数のホスト・コンピューティング・デバイスをモニタリングする実行エスケープ・コントローラ・コンピューティング・デバイスを有するコンテナ・クラウド・プラットフォームを、コンピューティング・インフラが実施する前述の１つまたは複数の実施形態。実行エスケープ・コントローラは、カプセル・イメージをホスト・コンピューティング・デバイスに配備し、ホスト・コンピューティング・デバイスは、アプリケーション・コンテナにおけるコア関数のためのサービス関数を提供するために、配備されるカプセル・イメージからサービス・コンテナを実行する。
【００７３】
本開示の多様な実施形態の説明は、例示の目的で提示されているが、網羅的であること、または開示される実施形態に限定することを意図したものではない。多くの修正および変形が、説明された実施形態の範囲および思想から逸脱することなく当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、実用的な適用、もしくは市場で見出される技術に対する技術的改善を最もよく説明するため、または他の当業者が本明細書に開示された実施形態を理解することを可能にするために、選択された。
【図１】
2021509498.tif 000003
【図２】
2021509498.tif 000004
【図３】
2021509498.tif 000005
【図４】
2021509498.tif 000006
【図５】
2021509498.tif 000007
【図６】
2021509498.tif 000008
【図７】
2021509498.tif 000009
【図８】
2021509498.tif 000010
【国際調査報告】
2021509498.tif 000011
2021509498.tif 000012