(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-16
(45)【発行日】2022-09-28
(54)【発明の名称】コンピューティング・デバイス
(51)【国際特許分類】
G06F 9/445 20180101AFI20220920BHJP
G06F 11/30 20060101ALI20220920BHJP
G06F 8/60 20180101ALI20220920BHJP
【FI】
G06F9/445
G06F11/30 155
G06F11/30 140A
G06F8/60
(21)【出願番号】P 2020533221
(86)(22)【出願日】2018-12-17
(86)【国際出願番号】 IB2018060193
(87)【国際公開番号】W WO2019135133
(87)【国際公開日】2019-07-11
【審査請求日】2021-05-25
(32)【優先日】2018-01-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ナドゴブダ、シュリパド
(72)【発明者】
【氏名】イシ、カンターク
【審査官】山本 俊介
(56)【参考文献】
【文献】特表2018-538597(JP,A)
【文献】米国特許出願公開第2017/0206071(US,A1)
【文献】米国特許出願公開第2017/0208137(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/445
G06F 11/30
G06F 8/60
(57)【特許請求の範囲】
【請求項1】
コンピューティング・デバイスであって、
ネットワーク・インターフェースと、
プロセッサと、
命令のセットを記憶する記憶デバイスであって、前記プロセッサによる前記命令のセットの実行が、
サービス関数を呼び出すコア関数を実行するアプリケーション・コンテナを動作させることと、
前記ネットワーク・インターフェース上で前記サービス関数のイメージを含むカプセル・イメージを受信することであって、前記カプセル・イメージが、前記アプリケーション・コンテナに一致するメタデータを有する、前記受信することと、
前記アプリケーション・コンテナの前記コア関数によって呼び出される前記サービス関数を実行するために前記カプセル・イメージに基づいてカプセル・コンテナを起動することと、
前記サービス関数が実行を完了した後、前記カプセル・コンテナを終了することと、
を含む動作を実行するように前記コンピューティング・デバイスを構成する、前記記憶デバイスと、
を備える、コンピューティング・デバイス。
【請求項2】
前記サービス関数を実行するために前記カプセル・コンテナを起動することが、前記アプリケーション・コンテナの名前空間において前記サービス関数を実行するサービス・スレッドを開始することを含む、請求項1に記載のコンピューティング・デバイス。
【請求項3】
前記サービス関数を実行するためにカプセル・コンテナを起動することが、コントローラ・コンピューティング・デバイスと通信するように構成される前記カプセル・イメージの管理スクリプトを実行することと、前記サービス関数のデフォルト・エントリ・ポイントを呼び出すことと、を含む、請求項1に記載のコンピューティング・デバイス。
【請求項4】
前記アプリケーション・コンテナが、前記サービス関数を呼び出す複数のアプリケーション・コンテナのうちの1つであり、前記複数のアプリケーション・コンテナの各アプリケーション・コンテナが、前記カプセル・イメージの前記メタデータに一致する、請求項1に記載のコンピューティング・デバイス。
【請求項5】
前記サービス関数のための複数のサービス・スレッドが、前記複数のアプリケーション・コンテナについて並列で実行する、請求項4に記載のコンピューティング・デバイス。
【請求項6】
前記カプセル・イメージの前記メタデータが、前記サービス関数の複数スレッドを前記複数のアプリケーション・コンテナについて並列で実行可能にするかどうかの標識を含む、請求項4に記載のコンピューティング・デバイス。
【請求項7】
前記カプセル・イメージの前記メタデータが、前記カプセル・イメージが安全性評価に合格するかどうかの標識を含む、請求項1に記載のコンピューティング・デバイス。
【請求項8】
前記アプリケーション・コンテナのイメージが、前記サービス関数を含まない、請求項1に記載のコンピューティング・デバイス。
【請求項9】
前記カプセル・イメージが、コントローラ・コンピューティング・デバイスから受信され、
前記カプセル・コンテナを終了することが、前記コントローラ・コンピューティング・デバイスに終了コードを報告することを含む、請求項1に記載のコンピューティング・デバイス。
【請求項10】
前記アプリケーション・コンテナが、第1のアプリケーション・コンテナであり、前記サービス関数が、第1のサービス関数であり、前記カプセル・イメージが、第1のカプセル・イメージであり、前記プロセッサによる前記命令のセットの前記実行が、
前記第1のカプセル・イメージおよび前記第1のサービス関数とは異なる、第2のサービス関数を含む第2のカプセル・イメージを受信することであって、前記第2のカプセル・イメージが、第2のアプリケーション・コンテナを前記第2のサービス関数と一致させるメタデータを含む、前記受信することと、
前記第2のアプリケーション・コンテナのコア関数のための前記第2のサービス関数を実行するために前記第2のカプセル・イメージを起動することと、
を含む動作を実行するように前記コンピューティング・デバイスをさらに構成する、請求項1に記載のコンピューティング・デバイス。
【請求項11】
コンピューティング・デバイスであって、
1つまたは複数の処理ユニットのセットと、
命令のセットを記憶する記憶デバイスであって、前記処理ユニットのセットによる前記命令のセットの実行が、
ネットワーク・インターフェース上でホスト・コンピューティング・デバイスのセットをモニタリングすることであって、各ホスト・コンピューティング・デバイスが、1つまたは複数のアプリケーション・コンテナを動作させる、前記モニタリングすることと、
ホスト・コンピューティング・デバイスにおいて動作するアプリケーション・コンテナに一致するメタデータを有するカプセル・イメージを識別することと、
識別された前記カプセル・イメージをカプセル・コンテナとして前記ホスト・コンピューティング・デバイスに配備することであって、配備された前記カプセル・コンテナが、前記一致するアプリケーション・コンテナのコア関数によって呼び出されるサービス関数を含む、前記配備することと、
前記サービス関数の実行に基づいて、前記ホスト・コンピューティング・デバイスから終了コードを受信することと、
を含む動作を実行するように前記コンピューティング・デバイスを構成する、前記記憶デバイスと、
を備える、コンピューティング・デバイス。
【請求項12】
複数のカプセル・イメージを記憶するレジストリから識別された前記カプセル・コンテナのイメージを取り出すことをさらに含む、請求項11に記載のコンピューティング・デバイス。
【請求項13】
前記アプリケーション・コンテナのイメージが、前記サービス関数を含まない、請求項11に記載のコンピューティング・デバイス。
【請求項14】
前記カプセル・イメージの前記メタデータが、前記サービス関数の複数スレッドを前記複数のアプリケーション・コンテナについて並列で実行可能にするかどうかの標識を含む、請求項11に記載のコンピューティング・デバイス。
【請求項15】
前記カプセル・コンテナの前記メタデータが、前記カプセル・コンテナが安全性評価に合格するかどうかの標識を含む、請求項11に記載のコンピューティング・デバイス。
【請求項16】
前記カプセル・コンテナが、前記サービス関数のデフォルト・エントリ・ポイントをオーバライドする管理スクリプトを含む、請求項11に記載のコンピューティング・デバイス。
【請求項17】
前記処理ユニットのセットによる前記命令のセットの前記実行が、
前記カプセル・コンテナの前記メタデータに一致する第2のアプリケーション・コンテナを動作させる第2のホスト・コンピューティング・デバイスを識別することと、
前記識別されたカプセル・コンテナのイメージを前記第2のホスト・コンピューティング・デバイスに配備することであって、前記サービス関数が、前記第2のホスト・コンピューティング・デバイスにおいて動作する、一致する前記第2のアプリケーション・コンテナのコア関数によって呼び出される、前記配備することと、
を含む動作を実行するように前記コンピューティング・デバイスをさらに構成する、請求項11に記載のコンピューティング・デバイス。
【請求項18】
前記アプリケーション・コンテナが、第1のアプリケーション・コンテナであり、前記サービス関数が、第1のサービス関数であり、前記カプセル・イメージが、第1のカプセル・イメージであり、前記処理ユニットのセットによる前記命令のセットの前記実行が、
前記ホスト・コンピューティング・デバイスに、前記第1のカプセル・イメージとは異なる第2のサービス関数を含む第2のカプセル・イメージを配備することであって、
前記第2のアプリケーション・コンテナのコア関数が、前記第2のサービス関数を呼び出し、
前記第2のカプセル・イメージが、前記第2のアプリケーション・コンテナに一致するメタデータを含む、前記配備すること
を含む動作を実行するように前記コンピューティング・デバイスをさらに構成する、請求項
17に記載のコンピューティング・デバイス。
【請求項19】
コンピューティング・デバイスであって、
プロセッサと、
命令のセットを記憶する記憶デバイスであって、前記プロセッサによる前記命令のセットの実行が、
デフォルト・エントリ・ポイントを有するサービス関数のイメージを受信することと、
前記サービス関数のためのカプセル・イメージを構築することと、
前記サービス関数に一致するアプリケーション・コンテナを識別するために前記カプセル・イメージにメタデータ・ラベルを関連付けることと、
(i)前記カプセル・イメージを配備するコントローラ・コンピューティング・デバイス、および配備された前記カプセル・イメージを受信するホスト・マシンの間の通信を管理するため、ならびに(ii)前記サービス関数の前記デフォルト・エントリ・ポイントを呼び出すために、カプセル管理スクリプトを前記カプセル・イメージに埋め込むことと、
前記カプセル・イメージをカプセル・イメージのレジストリに記憶することと、
を含む動作を実行するように前記コンピューティング・デバイスを構成する、前記記憶デバイスと、
を備える、コンピューティング・デバイス。
【請求項20】
前記カプセル・イメージが、前記サービス関数についての依存関係を含む、請求項19に記載のコンピューティング・デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、ソフトウェアの開発および配備のためのツールに関する。
【背景技術】
【0002】
アジャイルDevOps(開発および運用)環境において、アプリケーションは、ますますコンテナ化されている。アプリケーションは、所望のソフトウェアを実行する実行時環境全体、アプリケーション、さらに全てのその依存関係、ライブラリおよび他のバイナリ、ならびにソフトウェアを実行するための構成ファイルを含み、1つのパッケージにバンドルされている。アプリケーション・プラットフォームおよびその依存関係をコンテナ化することによって、OS配布および基礎となるインフラの差異が、取り除いて考えられる。アプリケーション・コンテナの情報の完全なセットは、イメージである。イメージは、コンテナのスナップショットである自動力のない不変のファイルである。コンテナ・イメージは、ビルド・コマンドで生成される。コンテナ・イメージは、ホスト・マシンまたはホスト・コンピューティング・デバイス上で配備または実行されるときに、アプリケーション・コンテナを作り出す。
【発明の概要】
【発明が解決しようとする課題】
【0003】
ソフトウェア関数の動的配信のためのデバイス、プログラムを提供する。
【課題を解決するための手段】
【0004】
開示のいくつかの実施形態は、異なるアプリケーション・コンテナ内の複数のアプリケーションによってソフトウェア関数が共有されることを可能にする、コンテナ・クラウド・プラットフォームを提供する。サービス関数は、コンテナ化され、アプリケーション・コンテナから分散される。コンテナ化されたサービスは、アプリケーション実行時間においてサービス関数を呼び出すアプリケーションのためのカプセルとして配信される。サービス・コンテナのイメージは、対応するアプリケーション・コンテナを動作させるホスト・コンピューティング・デバイスにおいて配備される。コンテナ・クラウド・プラットフォームは、配備されたサービス・コンテナをそれらの実行および終結についてモニタリングする。
【0005】
コンテナ・クラウド・プラットフォームは、ホスト・コンピューティング・デバイスのセットをモニタリングする実行エスケープ・コントローラを含む。各ホスト・コンピューティング・デバイスは、1つまたは複数のアプリケーション・コンテナを動作させる。実行エスケープ・コントローラは、ホスト・コンピューティング・デバイスにおいて動作するアプリケーション・コンテナに一致するメタデータを有するカプセル・イメージを識別する。実行エスケープ・コントローラは、識別されたカプセル・イメージをカプセル・コンテナとしてホスト・コンピューティング・デバイスに配備する。配備されたカプセル・コンテナは、一致するアプリケーション・コンテナのコア関数によって呼び出されるサービス関数を含む。実行エスケープ・コントローラは、サービス関数の実行に基づいて、ホスト・コンピューティング・デバイスから終了コードを受信する。
【0006】
ホスト・マシンは、サービス関数を呼び出すコア関数を実行するアプリケーション・コンテナを動作させる。ホスト・マシンは、サービス関数のイメージを含むカプセル・イメージを受信する。カプセル・イメージは、アプリケーション・コンテナに一致するメタデータを有する。ホスト・マシンは、アプリケーション・コンテナのコア関数によって呼び出されるサービス関数を実行するために、カプセル・イメージに基づいてカプセル・コンテナを起動する。ホスト・マシンは、サービス関数が実行を完了した後、カプセル・コンテナを終了する。
【0007】
前述の発明の概要は、開示のいくつかの実施形態への簡単な導入として供給されるように意図される。それは、本文書において開示される全ての発明的主題の導入または概要であることを意味しない。以下に続く発明を実施するための形態、および発明を実施するための形態において参照される図面は、発明の概要で説明される実施形態だけでなくその他の実施形態もさらに説明する。したがって、本文書によって説明される全ての実施形態を理解するために、発明の概要、発明を実施するための形態、および図面が提供される。さらに、特許請求された主題は、主題の思想から逸脱することなく他の特定の形態で具現化され得るため、特許請求された主題は、発明の概要、発明を実施するための形態、および図面における例示的詳細によって限定されず、添付の特許請求の範囲によって定義されるべきである。
【0008】
図面は、例示的実施形態である。それらは、全ての実施形態を示しているわけではない。他の実施形態が、追加で、または代わりに使用され得る。明白または不必要であり得る詳細は、スペースを節約するため、またはより有効な例示のために省略されてもよい。いくつかの実施形態は、追加のコンポーネントもしくはステップを用いて、または示されるコンポーネントもしくはステップの全てがなくても、あるいはその両方において、実施され得る。同一の数字が異なる図面中に現れるとき、それは同一または類似のコンポーネントまたはステップを指す。
【図面の簡単な説明】
【0009】
【
図1】例示的実施形態と一貫して、アプリケーション・コンテナを動作させるホスト・コンピューティング・デバイスにサービス・コンテナを配備する、コンテナ・クラウド・プラットフォームを概念的に示す。
【
図2】例示的実施形態と一貫して、カプセル・イメージのメタデータを用いて、一致するアプリケーション・コンテナを識別することを概念的に示す。
【
図3】例示的実施形態と一貫して、カプセル・イメージの生成を示す。
【
図4】例示的実施形態と一貫して、アプリケーション・コンテナ内のコア関数のためのサービス・コンテナとしてカプセル・イメージを実行するためのプロセスを概念的に示す。
【
図5】サービス関数のカプセル・イメージを、サービス関数を使用するアプリケーション・コンテナを実行するホスト・マシンに配備するためのプロセスを概念的に示す。
【
図6】本開示の例示的実施形態による、データ処理システムのコンポーネントのブロック図を示す。
【
図7】例としてのクラウド・コンピューティング環境を示す。
【
図8】例示的実施形態にと一貫して、クラウド・コンピューティング環境によって提供される機能的抽象レイヤのセットを示す。
【発明を実施するための形態】
【0010】
以下の詳述された説明では、関係する教示の完全な理解をもたらすために、多数の具体的詳細が例として述べられている。しかしながら、本教示は、そのような詳細なしでも実施され得ることは明らかであるべきである。他の場合において、周知の方法、手続き、コンポーネント、または回路、あるいはそれらの組合せは、本教示の態様を不必要に曖昧にすることを避けるために、詳細なしで比較的高いレベルで説明されている。
【0011】
アプリケーションは、多くのコンポーネント・ソフトウェア関数を有する。これらの関数のいくつかは、コア関数として分類されてもよく、それ以外は、サービスまたはセカンダリ・ソフトウェア関数として分類されてもよい。コア関数は、典型的には、アプリケーションを定義するために、アプリケーション開発者によってアプリケーションに対して具体的に書かれている。それらは、異なるアプリケーションによる使用のために事前定義されない。サービスまたはセカンダリ関数は、コア関数の実施を支援する。それらは、典型的には、(例えば、ライブラリとして)異なるアプリケーションによる使用のために書かれた事前定義済み関数である。いくつかのサービス関数は、特定のハードウェア・プラットフォームを対象とする下位レベルのルーチンである。そのようなセカンダリまたはサービス関数の例は、NTPアップデート、データ・バックアップ、データ整合性チェック関数などの周期的に呼び出される関数を含む。セカンダリまたはサービス関数の例は、増加するデータベース・テーブルのサイズ、および選択的データ圧縮またはプルーニング関数などの散発的関数も含む。
【0012】
アプリケーションによって使用されるセカンダリ・ソフトウェア関数は、通常、同一コンテナ・イメージ内のアプリケーションのコア関数とともにビルドされる。これは拡大したコンテナ・イメージをもたらし、共通のセカンダリ・ソフトウェア関数に対応するイメージの部分が、何度もビルドされる。
【0013】
セカンダリ関数をアプリケーション・コンテナのイメージから分散させるために、開示のいくつかの実施形態は、異なるアプリケーション・コンテナ内の複数のアプリケーションによってソフトウェア関数、例えばセカンダリ・サービス関数が共有されることを可能にする、コンテナ・クラウド・プラットフォームを提供する。サービス関数は、コンテナ化され、アプリケーション・コンテナから分散される。コンテナ化されたサービスは、アプリケーション実行時間においてサービス関数を呼び出すアプリケーションのためのカプセルとして配信される。これらのコンテナ化されたサービスは、サービス・コンテナと呼ばれる。サービス・コンテナのイメージは、対応するアプリケーション・コンテナを動作させるホスト・コンピューティング・デバイスにおいて配備される。コンテナ・クラウド・プラットフォームは、配備されたサービス・コンテナをそれらの実行および終結についてモニタリングする。いくつかの実施形態では、サービス・コンテナは、ホスト・コンピューティング・デバイスにおいてカプセル・イメージとして配備され、したがって、サービス・コンテナは、カプセル・コンテナとも呼ばれ得る。
【0014】
コンテナ・クラウド・プラットフォーム100は、実行エスケープ・コントローラ110によって管理され、制御される。実行エスケープ・コントローラ110は、コンテナ・クラウド・プラットフォーム100に参加するホスト・コンピューティング・デバイス101~103と通信する。コンピューティング・デバイス101~103および実行エスケープ・コントローラ110は、それらのそれぞれのネットワーク・インターフェースを使用して、インターネット、コンピューティング・クラウド、ローカル・エリア・ネットワーク、または別の種類の通信媒体を通して、互いに通信し得る。
【0015】
実行エスケープ・コントローラ110は、イメージ・レジストリ120にアクセス可能なコンピューティング・デバイスであり、イメージ・レジストリ120は、異なるサービス関数のためのカプセル・イメージを含む、多様なソフトウェア・イメージを記憶する。アプリケーション・コンテナを実行中のホスト・マシンにおいて配備されるとき、カプセル・イメージは、サービス・コンテナとして実行される。実行エスケープ・コントローラ110は、それらのコンピューティング・デバイスにおいて動作しているアプリケーション・コンテナについてホスト・マシン101~103をモニタリングする。実行エスケープ・コントローラ110は、それらのアプリケーション・コンテナによって必要とされるサービス関数を識別し、サービス・コンテナの対応するカプセル・イメージをそれらのホスト・マシンに配備する。例では、コンテナ・クラウド・プラットフォームが、カプセル・イメージAおよびBをホスト・マシン101に、カプセル・イメージBをホスト・マシン102に、カプセル・イメージAおよびCをホスト・マシン103にディスパッチまたは配備する。
【0016】
図示されるように、ホスト・コンピューティング・デバイス101は、アプリケーション・コンテナS、V、T、およびZを動作させている。それらのアプリケーション・コンテナのそれぞれのイメージは、1つまたは複数のコア関数のイメージを含む。しかしながら、アプリケーション・コンテナS、V、およびTのイメージは、コア関数を実行するために使用されるサービス関数のイメージまたは依存関係を含まない。例では、アプリケーション・コンテナSおよびVのコア関数は、サービス関数Aを伴うが、アプリケーション・コンテナSおよびVのイメージは、サービス関数Aを含まない。アプリケーション・コンテナTのコア関数は、サービス関数Bを伴うが、アプリケーション・コンテナTのイメージは、サービス関数Bを含まない。それに対応して、コンテナ・クラウド・プラットフォーム100の実行エスケープ・コントローラ110は、サービス関数Aおよびサービス関数Bのためのカプセル・イメージをホスト・コンピューティング・デバイス101に配備する。
【0017】
カプセル・イメージがホスト・マシンに一旦配備されると、ホスト・マシンは、サービス関数のためのサービス・コンテナとしてカプセル・イメージを実行し得る。ホスト・マシンは、サービス関数を呼び出すコア関数のためのサービス関数を実行する。
図1の例において、ホスト・コンピューティング・デバイス101は、サービス関数Aのためのサービス・コンテナAとしてカプセル・イメージAを実行する。これによって、ホスト・コンピューティング・デバイス101が、アプリケーション・コンテナSおよびVのコア関数をサービス関数Aとともに正しく実行することが可能となる。同様に、ホスト・コンピューティング・デバイス101は、サービス関数Bのためのサービス・コンテナBとしてカプセル・イメージBを実行する。これによって、ホスト・コンピューティング・デバイス101が、アプリケーション・コンテナTのコア関数をサービス関数Bとともに正しく実行することが可能となる。
【0018】
いくつかの実施形態において、サービス関数を使用する各アプリケーション・コンテナについて、対応するサービス・コンテナが、アプリケーション・コンテナのためのサービス関数のインスタンスを実行するサービス・スレッドを開始する。ホスト・マシンは、サービス・スレッドがその動作を完了するときに、その対応するサービス・スレッドを終結させることによって、サービス関数の各インスタンスを終了する。サービス・コンテナ内のサービス関数のスレッドは、それがサービス関数の実行を終了するとすぐに終了するため、サービス・コンテナのカプセル・イメージは、実行エスケープ・カプセル(REC)と呼ばれる。コンテナ・クラウド・プラットフォーム100のコントローラ110は、それが各実行エスケープ・カプセルの実行および終結をモニタリングし制御するため、実行エスケープ・コントローラと呼ばれる。
【0019】
いくつかの実施形態では、サービス関数のインスタンスの各サービス・スレッドは、サービス関数のインスタンスを呼び出すアプリケーション・コンテナの名前空間において動作する。図示されるように、サービス・コンテナAは、アプリケーション・コンテナSの名前空間においてサービス関数Aの第1のインスタンス131について第1のサービス・スレッドを動作させる。サービス・コンテナAは、また、アプリケーション・コンテナVの名前空間においてサービス関数Aの第2のインスタンス132について第2のサービス・スレッドを動作させる。サービス関数Aの2つのインスタンス131および132は、異なる名前空間において動作するため、アプリケーション・コンテナSについてのサービス関数Aの動作は、アプリケーション・コンテナVについてのサービス関数Aの動作と干渉することなく、逆も同様である。同様に、サービス・コンテナBは、アプリケーション・コンテナTの名前空間においてサービス関数Bのインスタンス141についてサービス・スレッドを動作させる。
【0020】
いくつかの実施形態において、ホスト・マシンは、異なるアプリケーション・コンテナについてのサービス関数の異なるインスタンスを並列で動作させ得る。サービス関数を呼び出す各アプリケーション・コンテナが、サービス関数を(例えば、順番に、または反復して)実行する順番まで待たなければならないように、ホスト・マシンは、また、任意の所与の時間にサービス関数のインスタンスを1つだけ動作させてもよい。
【0021】
カプセル・イメージの配備は、アプリケーション・コンテナのイメージが、サービス関数およびその依存関係ではなく、コア関数だけを、運ぶことを可能にする。カプセル・イメージの配備は、また、同一ホスト・マシン内の異なるアプリケーション・コンテナが同一のサービス関数イメージを共有することを可能にする。さらに、異なるホスト・マシン内のアプリケーション・コンテナが、それらのコンテナ・イメージにおいてサービス関数を運ばなくても同一のサービス関数を呼び出し得るように、コンテナ・クラウド・プラットフォームは、同一のカプセル・イメージを異なるホスト・マシンに配備し得る。
図1の例において、実行エスケープ・コントローラ110は、カプセル・イメージAをホスト・マシン101および103の両方に、カプセル・イメージBをホスト・マシン101および102の両方に配備する。
【0022】
いくつかの実施形態において、各カプセル・イメージは、メタデータのセットに関連付けられる。カプセル・イメージのメタデータは、カプセル・イメージのサービス関数に一致するアプリケーション・コンテナを、カプセル・イメージを受信するホスト・マシンが識別するために使用され得る、ラベルまたはタグを提供する。カプセル・イメージのメタデータは、実行エスケープ・コントローラ110が、一致するアプリケーション・コンテナを実行するホスト・マシンを識別することも可能にする。
【0023】
図2は、例示的実施形態と一貫して、カプセル・イメージのメタデータを用いて、一致するアプリケーション・コンテナを識別することを概念的に示す。図示されるように、カプセル・イメージA、B、およびCは、イメージ・レジストリ120において登録され、イメージ・レジストリ120は、コンテナ・クラウド・プラットフォーム100の実行エスケープ・コントローラ110によってアクセス可能である。実行エスケープ・コントローラ110は、複数のアプリケーション・コンテナS、T、U、V、W、X、およびYをモニタリングしている。これらのアプリケーション・コンテナは、ホスト・マシン101~103(図示せず)などのホスト・マシンにおいて動作している。各カプセル・イメージは、サービス関数のイメージ、カプセル管理スクリプト、およびメタデータを含み得る。
【0024】
カプセル・イメージAは、サービス・イメージ211、カプセル管理スクリプト212、およびメタデータ213を含む。
【0025】
サービス・イメージ211は、カプセル・イメージAのサービス関数を実行するために実行され得るサービス関数のイメージである。
【0026】
カプセル管理スクリプト212は、カプセル・イメージを配備する実行エスケープ・コントローラ110と、配備されるカプセル・イメージを受信するホスト・マシンとの間の通信を管理する。カプセル管理スクリプト212は、また、デフォルト・エントリ・ポイントをコールするように構成される。カプセル管理スクリプト212は、実行エスケープ・コントローラ110が管理アクティビティのためにカプセル・コンテナと通信することを可能にする。例えば、実行エスケープ・コントローラ110は、サービス・コンテナ内で実行中のサービス関数の状態を問い合わせるために、カプセル管理スクリプトを呼び出し得る。
【0027】
メタデータ213は、カプセル・ラベル221のセットを含む。カプセル・ラベル211のセットは、カプセル・イメージAのサービス関数について一致するアプリケーション・コンテナを識別する基準を指定する。カプセル・ラベル221のセットは、「OS=ubuntu」、即ち、Ubuntuオペレーティング・システムを使用することを指定する。これは、アプリケーション・コンテナS、V、およびYに一致し、それらは、Ubuntuオペレーティング・システムを使用している(「OS=ubuntu」)。実行エスケープ・コントローラ110は、一方、アプリケーション・コンテナS、V、またはYを動作しているホスト・マシン(例えば、ホスト・マシン101および103)にカプセル・イメージAを配備する。
【0028】
カプセル・ラベル221のセットに追加して、カプセル・イメージのメタデータ213は、サービス関数220の識別子、制約パラメータ222、および安全性評価フラグ223などの情報も含む。制約パラメータ222は、ホスト・マシンが異なるアプリケーション・コンテナのためのサービス関数の異なるインスタンスを並列で、または任意の所与の時間においてサービス関数のインスタンスを1つだけ、動作させ得るかどうかを示す。安全性評価フラグ223は、カプセル・イメージが、セキュリティ・テストに合格したか、あるいは不合格であったかを示す標識である。実行エスケープ・コントローラ110は、このフラグを使用して、あるアプリケーション・コンテナのためのそのサービス関数の実行を制限するかどうかを判断し得る。これは、実行されているサービス関数のセキュリティを保証する。
【0029】
図2は、カプセル・イメージBおよびCのコンテンツも示す。カプセル・イメージBのカプセル・ラベルのセットは、「OS=rhel、app=db2」を指定する。これは、アプリケーション・コンテナTおよびWに一致し、したがって、実行エスケープ・コントローラ110は、カプセル・イメージBをアプリケーション・コンテナTまたはWを動作させるホスト・マシンに配備する。カプセル・イメージCのカプセル・ラベルは、「app=kafka」を指定する。これは、アプリケーション・コンテナU、X、およびYに一致し、したがって、実行エスケープ・コントローラ110は、カプセル・イメージCをアプリケーション・コンテナU、X、またはYを動作させるホスト・マシンに配備する。
【0030】
1つのアプリケーション・コンテナが、複数の異なるカプセル・イメージからサービス関数を使用し得ることは注意に値する。例では、アプリケーション・コンテナYは、カプセルAおよびCの両方のカプセル・ラベル(OS=ubuntuおよびapp=kafka)に一致し、したがって、実行エスケープ・コントローラ110は、アプリケーション・コンテナYを動作させるホスト・マシンにおいてカプセル・イメージAおよびCの両方を配備する。
【0031】
図3は、例示的実施形態と一貫して、カプセル・イメージの生成を示す。サービス・コンテナのカプセル・イメージは、開発者によって提供されるサービス関数のコードまたは定義に基づいて生成される。生成されたカプセル・イメージは、実行エスケープ・コントローラ110による取り出しのために、イメージ・レジストリ120で登録され、実行エスケープ・コントローラ110は、ホスト・マシンにおいて動作しているアプリケーション・コンテナにカプセル・イメージを配備する。図は、「1」から「6」までラベル付けされた6段階における、カプセル・イメージの生成および登録を示す。
【0032】
第1段階(「1」とラベル付けされた)において、開発者コンピューティング・デバイス301は、サービス関数の仕様またはコンテンツ(例えば、コード)を受信する。
【0033】
第2段階(「2」とラベル付けられた)において、開発者コンピューティング・デバイス301は、受信したサービス関数のためのサービス・イメージ305を生成する。サービス・イメージ305は、サービス関数によって要求される全ての依存関係およびライブラリを含むように、ビルド・コマンドで生成される。開発者コンピューティング・デバイスは、また、サービス関数を呼び出すための開始スクリプトまたはデフォルト・エントリ・ポイント306を指定する。開発者コンピューティング・デバイスは、コンテナ・クラウド・プラットフォームによってモニタリングされる、どのアプリケーション・コンテナがサービス・イメージを受信すべきであるかを識別するラベル307も指定する。サービス・イメージ305、エントリ・ポイント306、およびラベル307は、ドッカー・イメージ320としてイメージ・レジストリ120に記憶される。ドッカー・イメージは、ドッカー・コンテナのイメージであり、ドッカー・コンテナは、オープン・ソース・ソフトウェア開発プラットフォームである。ドッカー・コンテナは、Linuxオペレーティング・システム(OS)を実行する任意のシステム間で、サービス関数がポータブルであることを可能にする。
【0034】
第3段階(「3」とラベル付けされた)において、実行エスケープ・コントローラ110は、イメージ・レジストリ120からドッカー・イメージ320を取り出す。
【0035】
第4段階(「4」とラベル付けされた)において、実行エスケープ・コントローラ110は、サービス・イメージをラップするカプセル・イメージ310を生成する。実行エスケープ・コントローラ110は、サービス・イメージのデフォルト・エントリ・ポイントを、サービス・イメージのデフォルト・エントリ・ポイントをコールするように構成されたカプセル管理スクリプト(例えば、212)で上書きする。実行エスケープ・コントローラ110は、新たに生成されたカプセル・イメージのセキュリティまたは脆弱性評価も実行する。セキュリティ評価の結果は、カプセル・イメージ(サービス・イメージを含む)のメタデータに、セキュリティ評価フラグ(例えば、223)として含まれる。
【0036】
第5段階において、実行エスケープ・コントローラ110は、新たに生成されたカプセル・イメージ310をイメージ・レジストリ120内に記憶または登録する。カプセル・イメージ310は、サービス関数のイメージ、カプセル管理スクリプト、およびサービス関数のメタデータを含む。サービス関数のメタデータは、カプセル・ラベル、制約、およびセキュリティ評価結果フラグを含む。いくつかの実施形態では、実行エスケープ・コントローラ110は、セキュリティ評価に合格したカプセル・イメージのみを登録または記憶する。
【0037】
第6段階において、カプセル・イメージ310は、実行エスケープ・コントローラ110による後続の取り出しおよび配備のために、イメージ・レジストリ120に登録される。他の開発者コンピューティング・デバイス(例えば、302)からの他のサービス関数の他のサービス・イメージもまた、他のカプセル・イメージを生成するために実行エスケープ・コントローラ110によって処理され得る。
【0038】
図4は、例示的実施形態と一貫して、アプリケーション・コンテナ内のコア関数のためのサービス・コンテナとしてカプセル・イメージを実行するためのプロセス400を概念的に示す。いくつかの実施形態において、ホスト・マシン(例えば、101)は、アプリケーション・コンテナを動作させ、かつコンテナ・クラウド・プラットフォームの実行エスケープ・コントローラ110と通信しているときに、プロセス400を実行する。いくつかの実施形態において、ホスト・マシンの1つまたは複数の処理ユニット(例えば、プロセッサ)は、コンピュータ可読媒体に記憶された命令を実行することによって、プロセス400を実行する。
【0039】
ホスト・マシンは、(410において)アプリケーション・コンテナを動作させ、サービス関数に依存する(またはサービス関数を呼び出す)アプリケーションのコア関数を実行する。ホスト・マシンは、また、他のコア関数を用いて他のアプリケーション・コンテナを動作させ得る。どのアプリケーション・コンテナがホスト・マシンにおいて動作しているか、およびどのサービス関数がそれらのコア関数によって必要とされるかを、実行エスケープ・コントローラ110が学習し得るように、ホスト・マシンは、実行エスケープ・コントローラ110と通信している。
【0040】
ホスト・マシンは、(420において)実行エスケープ・コントローラ110からカプセル・イメージを受信する。カプセル・イメージは、サービス関数のイメージ(即ちサービス・イメージ)およびその依存関係を含む。カプセル・イメージは、サービス関数を使用するアプリケーション・コンテナとサービス関数を一致させるラベルを含むメタデータを有する。
【0041】
ホスト・マシンは、(425において)カプセル・イメージのカプセル管理スクリプトを実行する。カプセル管理スクリプトは、ホスト・マシンと、カプセル・イメージを配備する実行エスケープ・コントローラとの間の通信を管理する。管理スクリプトは、また、サービス関数のデフォルト・エントリ・ポイントを呼び出すように構成される。
【0042】
ホスト・マシンは、(430において)アプリケーション・コンテナのコア関数によって呼び出されるサービス関数を実行するために、カプセル・イメージに基づいてサービス・スレッドを起動する。いくつかの実施形態において、サービス・スレッドの動作が、ホスト・マシンにおける他のコンテナの動作と干渉しないように、サービス・スレッドは、1つのアプリケーション・コンテナの名前空間において動作するサービス関数の1つのインスタンスのためのものである。カプセル・イメージのメタデータ内の制約パラメータ(例えば、222)は、ホスト・マシンが、異なるアプリケーション・コンテナのためのサービス関数の異なるインスタンスを(例えば、サービス・スレッド131および132として)並列で動作させることを可能にしてもよく、または、サービス関数のインスタンスを一度に1つだけ動作させるようにホスト・マシンを制限してもよい。
【0043】
スレッドがアプリケーション・コンテナのためのその動作を完了させた後、ホスト・マシンは、(440において)サービス・スレッドを終了する。いくつかの実施形態において、ホスト・マシンは、また、実行エスケープ・コントローラ110に終了コードを報告する。ホスト・マシンにおけるカプセル・コンテナは、アプリケーション・コンテナによって要求される場合に、サービス・スレッドを再トリガしてもよい。
【0044】
ホスト・マシンは、(450において)サービス・コンテナがサービス関数を全ての適用可能なアプリケーション・コンテナに適用した後で(または、実行エスケープ・コントローラ110が、アプリケーション・コンテナを強制的に終了するようにホスト・マシンに指示するときに)、サービス・コンテナ(カプセル・コンテナ)を終了する。プロセス400は、次いで終了する。
【0045】
図5は、サービス関数のカプセル・イメージを、サービス関数を使用するアプリケーション・コンテナを実行するホスト・マシンに配備するためのプロセス500を概念的に示す。いくつかの実施形態において、実行エスケープ・コントローラ110は、サービス関数に依存するアプリケーション・コンテナについてリモート・ホスト・マシンをモニタリングするときに、プロセス500を実行する。いくつかの実施形態において、実行エスケープ・コントローラ110の1つまたは複数の処理ユニット(例えば、プロセッサ)は、コンピュータ可読媒体に記憶された命令を実行することによって、プロセス500を実行する。
【0046】
実行エスケープ・コントローラ110は、(510において)リモート・ホスト・コンピューティング・デバイスのセットをモニタリングし、各ホスト・コンピューティング・デバイスは、サービス関数に依存するコア関数を有する1つまたは複数のアプリケーション・コンテナを動作させる。
【0047】
実行エスケープ・コントローラ110は、(520において)ホスト・マシンのうちの1つにおいて動作するアプリケーション・コンテナに一致するメタデータを有するカプセル・イメージを識別する。いくつかの実施形態において、この一致は、カプセル・イメージのメタデータ内のカプセル・ラベル(例えば、221)に基づく。ラベルは、開発者コンピューティング・デバイス(例えば301)におけるサービス関数の開発者によって、または実行エスケープ・コントローラ110によって、挿入され得る。いくつかの実施形態において、セキュリティ評価が不合格のクラウド・イメージが配備されないように、実行エスケープ・コントローラ110は、セキュリティ評価フラグ(例えば223)に基づいてカプセル・イメージを配備するかどうかを判断する。
【0048】
実行エスケープ・コントローラ110は、(530において)識別されたカプセル・イメージを、一致するアプリケーション・コンテナを動作させるホスト・マシンにおいてサービス・コンテナとして配備する。このサービス・コンテナ(またはカプセル・コンテナ)は、一致するアプリケーション・コンテナのコア関数によって呼び出されるサービス関数を含む。
【0049】
実行エスケープ・コントローラ110は、(540において)ホスト・マシンから終了コードを受信する。終了コードは、1つのアプリケーション・コンテナについて、またはサービス関数を使用する全てのアプリケーション・コンテナについての、サービス関数の完全な実行を示す。いくつかの実施形態では、実行エスケープ・コントローラ110は、それが閾値期間内にホスト・マシンから終了コードを受信できなかった場合、またはサービス関数の実行がエラーを有すると終了コードが示す場合に、管理者に報告する。プロセス500は、次いで終了する。
【0050】
プロセス500の一部であると示されないが、実行エスケープ・コントローラ110は、また、イメージ・レジストリ120からサービス・イメージを取り出し、プロセス500の動作中にカプセル・イメージになるようにそれらを修正する。上記
図3に対する参照によって言及されたように、実行エスケープ・コントローラ110は、サービス・イメージをラップするカプセル・イメージを生成するために、サービス・イメージを取り出す。サービス・イメージのデフォルト・エントリ・ポイントは、カプセル管理スクリプトで上書きされる。実行エスケープ・コントローラ110は、また、新たに生成されたカプセル・イメージのセキュリティまたは脆弱性評価を実行する。新たに生成されたカプセル・イメージは、イメージ・レジストリ120において登録される。
【0051】
電子システムの例
本出願は、任意の可能な統合の技術的詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体を含み得る。
【0052】
コンピュータ可読記憶媒体は、命令実行デバイスにより使用するための命令を保持し、記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたはその上に記録された命令を有する溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組合せを含む。本明細書で用いられるコンピュータ可読記憶媒体は、本来、電波もしくは他の自由伝播する電磁波、導波管もしくは他の送信媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通って送信される電気信号などの、一過性信号であると解釈されるべきではない。
【0053】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組合せを介して外部コンピュータまたは外部記憶デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体の記憶用にコンピュータ可読プログラム命令を転送する。本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通して、ユーザのコンピュータに接続されてもよい。あるいは、接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通して)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本開示の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
【0054】
本開示の態様は、開示の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書に説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ると理解されたい。コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段を生成するように、これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または機械を製造するための他のプログラマブル・データ処理装置のプロセッサに提供されてもよい。コンピュータ可読記憶媒体に記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはそれらの組合せに特定のやり方で機能するように指示し得る、コンピュータ可読記憶媒体に記憶されてもよい。
【0055】
コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ可読プログラム命令は、また、コンピュータ実施されるプロセスを作り出すために、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるコンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされてもよい。図面(例えば、
図4、
図5)中のフローチャートおよびブロック図は、本開示の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実施のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替的実施において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、または、ブロックが、関係する機能性次第で逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェアベース・システムによって実施され得ることにも留意されたい。
【0056】
図6は、本開示の例示的実施形態による、実行エスケープ・コントローラ110またはホスト・マシン(例えば101)を実施するために使用され得るデータ処理システム600および650のコンポーネントのブロック図を示す。
図6は、1つの実施の例示のみを提供し、異なる実施形態が実施され得る環境に関していかなる限定も示唆しないと理解されるべきである。示される環境に対する多くの修正は、設計および実施の要件に基づいて行われ得る。
【0057】
データ処理システム600および650は、機械可読プログラム命令を実行可能な任意の電子デバイスを表す。データ処理システム600および650は、スマート・フォン、コンピュータ・システム、PDA、または他の電子デバイスを表し得る。データ処理システム600および650によって表され得るコンピューティング・システム、環境、または構成、あるいはそれらの組合せの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ちまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、ネットワークPC、ミニコンピュータ・システム、および上記システムまたはデバイスのうちのいずれかを含む分散型クラウド・コンピューティング環境を含むが、これらに限定されない。
【0058】
データ処理システム600および650は、
図6に示される内部コンポーネントのセット600、および外部コンポーネントのセット650を含み得る。内部コンポーネントのセット600は、1つまたは複数のバス626上の1つまたは複数のプロセッサ620、1つまたは複数のコンピュータ可読RAM622、および1つまたは複数のコンピュータ可読ROM624、ならびに1つまたは複数のオペレーティング・システム628および1つまたは複数のコンピュータ可読有形記憶デバイス630を含む。1つまたは複数のオペレーティング・システム628、ならびにプロセス400および500を実行するためのプログラムなどのプログラムは、1つまたは複数のRAM622(典型的には、キャッシュメモリを含む)を介した1つまたは複数のプロセッサ620による実行のために、1つまたは複数のコンピュータ可読有形記憶デバイス630上に記憶される。
図6に示される実施形態において、コンピュータ可読有形記憶デバイス630のそれぞれが、内部ハード・ドライブの磁気ディスク記憶デバイスである。代替的には、コンピュータ可読有形記憶デバイス630のそれぞれが、ROM624などの半導体記憶デバイス、EPROM、フラッシュ・メモリ、またはコンピュータ・プログラムおよびデジタル情報を記憶し得る任意の他のコンピュータ可読有形記憶デバイスである。
【0059】
内部コンポーネント600のセットは、CD-ROM、DVD、メモリ・スティック、磁気テープ、磁気ディスク、光ディスク、または半導体記憶デバイスなどの1つまたは複数のポータブル・コンピュータ可読有形記憶デバイス686から読み出し、かつ書き込むためのR/Wドライブまたはインターフェース632も含む。プロセス400および500を実行するための命令は、それぞれのポータブル・コンピュータ可読有形記憶デバイス686のうちの1つまたは複数の上に記憶され、それぞれのR/Wドライブまたはインターフェース632を介して読み出され、それぞれのハード・ドライブ630内にロードされ得る。
【0060】
内部コンポーネント600のセットは、TCP/IPアダプタ・カード、ワイヤレスWi-Fiインターフェース・カード、または3Gもしくは4Gワイヤレス・インターフェース・カードなどのネットワーク・アダプタ(もしくはスイッチ・ポート・カード)またはインターフェース636、あるいは他の有線または無線通信リンクも含み得る。上述のプロセスまたはプログラムの命令は、ネットワーク(例えば、インターネット、ローカル・エリア・ネットワークなど、ワイド・エリア・ネットワーク)およびそれぞれのネットワーク・アダプタまたはインターフェース636を介して、外部コンピュータ(例えば、サーバ)からダウンロードされ得る。ネットワーク・アダプタ(もしくはスイッチ・ポート・アダプタ)またはインターフェース636から、説明したプログラムまたはプロセスの命令およびデータが、それぞれのハード・ドライブ630内にロードされる。ネットワークは、銅電線、光ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含み得る。
【0061】
外部コンポーネントのセット650は、コンピュータ・ディスプレイ・モニタ670、キーボード680、およびコンピュータ・マウス684を含み得る。外部コンポーネントのセット650は、タッチ・スクリーン、仮想キーボード、タッチ・パッド、ポインティング・デバイス、および他のヒューマン・インターフェース・デバイスも含み得る。内部コンポーネントのセット600は、コンピュータ・ディスプレイ・モニタ670、キーボード680、およびコンピュータ・マウス684へインターフェースするためのデバイス・ドライバ640も含む。デバイス・ドライバ640、R/Wドライブまたはインターフェース632、およびネットワーク・アダプタまたはインターフェース636は、ハードウェアおよびソフトウェア(記憶デバイス630またはROM624あるいはその両方に記憶される)を含む。
【0062】
クラウド・コンピューティング環境
本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書に挙げる教示の実施は、クラウド・コンピューティング環境に限定されないと理解されるべきである。むしろ、本開示の実施形態は、現在既知の、または後に開発される任意の他の種類のコンピューティング環境と併せて実施されることが可能である。クラウド・コンピューティングは、最小の管理労力またはサービス・プロバイダとの対話で迅速に供給され、リリースされ得る、構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想機械、およびサービス)の共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの配備モデルを含み得る。
【0063】
特性の例
オンデマンド・セルフサービス:クラウド消費者は、サービス・プロバイダと人との対話を必要とすることなく、必要に応じて、自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング・ケイパビリティを一方的に供給し得る。
幅広いネットワーク・アクセス:ケイパビリティは、ネットワーク上で利用可能であり、異種シン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを通してアクセスされる。
リソースの共用:プロバイダのコンピューティング・リソースが、マルチテナント型モデルを使用して複数の消費者にサービスするためにプールされ、異なる物理リソースおよび仮想リソースが要求に従って動的に割り当ておよび再割り当てされる。消費者が、概して、提供されるリソースの正確な場所に対する制御または知識を有しないが、より抽象度の高いレベル(例えば、国、州、またはデータセンタ)において場所を指定することが可能であり得るという点において、位置独立の意味がある。
スピーディな拡張性:ケイパビリティは、場合によっては自動的に、即座にスケール・アウトするようにスピーディかつ弾力的に供給され、即座にスケール・インするようにスピーディに解放され得る。消費者に対しては、供給に利用可能なケイパビリティが、多くの場合無制限であるように見え、いつでも任意の量で購入可能である。
サービスが計測可能であること:クラウド・システムは、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適したある抽象度レベルにおいて計測ケイパビリティを活用することによって、リソース使用を自動的に制御し、最適化する。リソース使用量は、モニタリングされ、制御され、報告されてもよく、利用サービスのプロバイダおよび消費者の両方に透明性をもたらす。
【0064】
サービス・モードの例
サービスとしてのソフトウェア(SaaS):消費者に提供されるケイパビリティは、クラウド・インフラ上で実行中のプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インターフェース(例えば、ウェブ・ベースの電子メール)を通して、様々なクライアント・デバイスからアクセス可能である。消費者は、限定されたユーザ固有アプリケーションの構成設定は例外である可能性があるが、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション・ケイパビリティですら含む、基礎となるクラウド・インフラを管理または制御しない。
サービスとしてのプラットフォーム(PaaS):消費者に提供されるケイパビリティは、プロバイダによってサポートされるプログラミング言語およびツールを使用して生成された、消費者が生成したアプリケーションまたは消費者が取得したアプリケーションを、クラウド・インフラ上に配備することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎となるクラウド・インフラを管理または制御しないが、配備されたアプリケーション、および、可能な限りアプリケーション・ホスティング環境構成に対して制御を行う。サービスとしてのインフラ(IaaS):消費者に提供されるケイパビリティは、処理、ストレージ、ネットワーク、ならびに消費者がオペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを配備および実行することが可能な、他の基本コンピューティング・リソースを供給することである。消費者は、基礎となるクラウド・インフラを管理または制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対して制御を行い、かつ可能な限り選択ネットワーキング・コンポーネント(例えば、ホスト・ファイアウォール)の限定的な制御を行う。
配備モード
プライベート・クラウド:クラウド・インフラは、組織のためだけに動作される。クラウド・インフラは、組織または第三者によって管理されてもよく、構内または構外に存在し得る。
コミュニティ・クラウド:クラウド・インフラは、複数の組織によって共有され、共有の関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラは、組織または第三者によって管理されてもよく、構内または構外に存在し得る。
パブリック・クラウド:クラウド・インフラは、一般公衆または大きな業界団体に利用可能とされ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラは、一意なエンティティのままであるが、データおよびアプリケーション・ポータビリティを可能にする標準化技術または独自技術(例えば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって共に結合された、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成物である。
【0065】
クラウド・コンピューティング環境は、無国籍、低結合、モジュール性、および意味相互運用性を中心としたサービス指向型である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラである。
【0066】
ここで
図7を参照すると、例示的なクラウド・コンピューティング環境750が示されている。図示するように、クラウド・コンピューティング環境750は、クラウド消費者によって使用されるローカル・コンピューティング・デバイス、例えば、携帯情報端末(PDA)もしくは携帯電話754A、デスクトップ・コンピュータ754B、ラップトップ・コンピュータ754C、または自動車コンピュータ・システム754N、あるいはそれらの組合せなどが通信し得る、1つまたは複数のクラウド・コンピューティング・ノード710を含む。ノード710は、互いに通信し得る。それらは、上述のようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはそれらの組合せなどの、1つまたは複数のネットワーク内で物理的または仮想的にグループ化されてもよい(図示せず)。これによって、クラウド・コンピューティング環境750が、インフラ、プラットフォーム、またはソフトウェア、あるいはそれらの組合せを、クラウド消費者がローカル・コンピューティング・デバイス上でリソースを維持する必要がないサービスとして提案することが可能となる。
図7に示されるコンピューティング・デバイス754A~Nの種類は、単なる例示であるように意図され、コンピューティング・ノード710およびクラウド・コンピューティング環境750は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続あるいはその両方を経て(例えば、ウェブ・ブラウザを用いて)、任意の種類のコンピュータ化デバイスと通信し得ると理解される。
【0067】
ここで
図8を参照すると、(
図7の)クラウド・コンピューティング環境750によって提供される機能抽象レイヤのセットが示されている。
図8に示されるコンポーネント、レイヤ、および機能は、単なる例示であるように意図され、開示の実施形態は、それらに限定されないと理解されるべきである。図示するように、以下のレイヤおよび対応する機能が、提供される。
【0068】
ハードウェアおよびソフトウェア・レイヤ860は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム861、RISC(Reduced Instruction Set Computer)アーキテクチャ・ベース・サーバ862、サーバ863、ブレード・サーバ864、ストレージ・デバイス865、ならびにネットワークおよびネットワーキング・コンポーネント866を含む。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア867、およびデータベース・ソフトウェア868を含む。
【0069】
仮想レイヤ870は、仮想エンティティの以下の例、仮想サーバ871、仮想ストレージ872、仮想プライベート・ネットワークを含む仮想ネットワーク873、仮想アプリケーションおよびオペレーティング・システム874、ならびに仮想クライアント875が提供され得る、抽象レイヤを提供する。
【0070】
1つの例では、管理レイヤ880は、後述する機能を提供し得る。リソース供給881は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的調達を提供する。測定および価格設定882は、リソースがクラウド・コンピューティング環境内で利用されるときにコスト追跡を提供し、これらのリソースの消費に対する課金または請求を提供する。1つの例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、データおよび他のリソースについての保護だけでなく、クラウド消費者およびタスクについての本人確認を提供する。ユーザ・ポータル883は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理884は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソース割り当ておよび管理を提供する。サービス水準合意(SLA)計画および遂行885は、SLAに従って将来の要件が予期されるクラウド・コンピューティング・リソースの事前配置および調達を提供する。
【0071】
ワークロード・レイヤ890は、クラウド・コンピューティング環境が利用され得る機能性の例を提供する。このレイヤから提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション891、ソフトウェア開発およびライフサイクル管理892、仮想クラスルーム教育配信893、データ解析処理894、トランザクション処理895、ならびに実行エスケープ制御896を含む。いくつかの実施形態において、ワークロード896は、コンテナ・クラウド・プラットフォーム100において実行エスケープ・コントローラ110の動作のうちのいくつかを実行する。
【0072】
アプリケーション・コンテナを実行する複数のホスト・コンピューティング・デバイスをモニタリングする実行エスケープ・コントローラ・コンピューティング・デバイスを有するコンテナ・クラウド・プラットフォームを、コンピューティング・インフラが実施する前述の1つまたは複数の実施形態。実行エスケープ・コントローラは、カプセル・イメージをホスト・コンピューティング・デバイスに配備し、ホスト・コンピューティング・デバイスは、アプリケーション・コンテナにおけるコア関数のためのサービス関数を提供するために、配備されるカプセル・イメージからサービス・コンテナを実行する。
【0073】
本開示の多様な実施形態の説明は、例示の目的で提示されているが、網羅的であること、または開示される実施形態に限定することを意図したものではない。多くの修正および変形が、説明された実施形態の範囲および思想から逸脱することなく当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、実用的な適用、もしくは市場で見出される技術に対する技術的改善を最もよく説明するため、または他の当業者が本明細書に開示された実施形態を理解することを可能にするために、選択された。