IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キンドリル・インクの特許一覧

<>
  • 特許-ソフトウェア・プログラムの管理 図1
  • 特許-ソフトウェア・プログラムの管理 図2
  • 特許-ソフトウェア・プログラムの管理 図3
  • 特許-ソフトウェア・プログラムの管理 図4
  • 特許-ソフトウェア・プログラムの管理 図5
  • 特許-ソフトウェア・プログラムの管理 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-29
(45)【発行日】2024-03-08
(54)【発明の名称】ソフトウェア・プログラムの管理
(51)【国際特許分類】
   G06F 8/65 20180101AFI20240301BHJP
   G06F 21/57 20130101ALI20240301BHJP
【FI】
G06F8/65
G06F21/57
【請求項の数】 20
(21)【出願番号】P 2021561878
(86)(22)【出願日】2020-05-07
(65)【公表番号】
(43)【公表日】2022-07-15
(86)【国際出願番号】 IB2020054316
(87)【国際公開番号】W WO2020229956
(87)【国際公開日】2020-11-19
【審査請求日】2023-04-24
(31)【優先権主張番号】16/411,250
(32)【優先日】2019-05-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521555742
【氏名又は名称】キンドリル・インク
【氏名又は名称原語表記】Kyndryl Inc.
【住所又は居所原語表記】One Vanderbilt Avenue,15th Floor,New York,New York 10017,USA
(74)【代理人】
【識別番号】110000420
【氏名又は名称】弁理士法人MIP
(72)【発明者】
【氏名】ギブス、ナサニエル
(72)【発明者】
【氏名】ロッブ、マシュー、ミッチェル
(72)【発明者】
【氏名】スニッツァー、ブライアン、ジェームス
(72)【発明者】
【氏名】トレッドウェイ、マイケル
【審査官】牛丸 太希
(56)【参考文献】
【文献】特表2018-509717(JP,A)
【文献】特開2019-028635(JP,A)
【文献】米国特許出願公開第2018/0088926(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00-21/88
(57)【特許請求の範囲】
【請求項1】
コンテナ・アプリケーションを管理するためのコンピュータ実施方法であって、前記方法が、
1つまたは複数のコンピュータ・プロセッサによって、注入点を含むようにそれぞれがラップされた管理コンテナ・ベース・イメージのレジストリを提供すること、
前記1つまたは複数のコンピュータ・プロセッサによって、管理コンテナ・ベース・イメージが第1の脆弱性を含むと判定すること、
前記1つまたは複数のコンピュータ・プロセッサによって、前記第1の脆弱性に対処するためのパッチ・スクリプトを生成すること、
前記1つまたは複数のコンピュータ・プロセッサによって、前記管理コンテナ・ベース・イメージの前記注入点に前記パッチ・スクリプトを挿入すること、および
前記1つまたは複数のコンピュータ・プロセッサによって、前記管理コンテナ・ベース・イメージを使用するアプリケーションに対するプル・コマンドを、コンテナ・オーケストレーション・ツールに発行すること
を含む、コンピュータ実施方法。
【請求項2】
前記1つまたは複数のコンピュータ・プロセッサによって、第1のコンテナ・ベース・イメージを求めるリクエストを受け取ること、
前記1つまたは複数のコンピュータ・プロセッサによって、前記第1のコンテナ・ベース・イメージが管理されていないと判定すること、および
前記1つまたは複数のコンピュータ・プロセッサによって、前記第1のコンテナ・ベース・イメージの管理バージョンを生成すること
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記第1のコンテナ・ベース・イメージの前記管理バージョンが、注入点を含むようにラップされた前記第1のコンテナ・ベース・イメージを含む、請求項2に記載のコンピュータ実施方法。
【請求項4】
前記1つまたは複数のコンピュータ・プロセッサによって、前記第1のコンテナ・ベース・イメージの前記管理バージョンが第2の脆弱性を含むと判定すること、
前記1つまたは複数のコンピュータ・プロセッサによって、前記第2の脆弱性に対処するためのパッチ・スクリプトを生成すること、
前記1つまたは複数のコンピュータ・プロセッサによって、前記第1のコンテナ・ベース・イメージの前記管理バージョンの前記注入点に前記パッチ・スクリプトを挿入し、その結果として、パッチされた第1のコンテナ・ベース・イメージを生成すること、および
前記1つまたは複数のコンピュータ・プロセッサによって、前記パッチされた第1のコンテナ・ベース・イメージを公開すること
をさらに含む、請求項3に記載のコンピュータ実施方法。
【請求項5】
前記1つまたは複数のコンピュータ・プロセッサによって、前記第1の脆弱性に関係する管理イメージの集合を決定すること、
前記1つまたは複数のコンピュータ・プロセッサによって、前記集合のそれぞれの管理イメージをパッチすること、および
前記1つまたは複数のコンピュータ・プロセッサによって、パッチされたそれぞれの管理イメージを公開すること
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項6】
前記プル・コマンドをユーザが拒否することを可能にすることをさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項7】
前記1つまたは複数のコンピュータ・プロセッサによって、前記コンテナ・ベース・イメージが管理されていないと判定すること、および
前記1つまたは複数のコンピュータ・プロセッサによって、前記コンテナ・ベース・イメージの管理バージョンを生成すること
をさらに含み、前記コンテナ・ベース・イメージの前記管理バージョンが注入点を含み、前記方法が、
前記1つまたは複数のコンピュータ・プロセッサによって、前記プル・コマンドをユーザが拒否することを可能にすること
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項8】
アプリケーション実行を管理するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、1つまたは複数のコンピュータ可読ストレージ・デバイスと、前記1つまたは複数のコンピュータ可読ストレージ・デバイス上の記憶されたプログラム命令とを含み、前記記憶されたプログラム命令が、
注入点を含むようにそれぞれがラップされた管理コンテナ・ベース・イメージのレジストリを提供するためのプログラム命令と、
管理コンテナ・ベース・イメージが第1の脆弱性を含むと判定するためのプログラム命令と、
前記第1の脆弱性に対処するためのパッチ・スクリプトを生成するためのプログラム命令と、
前記管理コンテナ・ベース・イメージの前記注入点に前記パッチ・スクリプトを挿入するためのプログラム命令と、
前記管理コンテナ・ベース・イメージを使用するアプリケーションに対するプル・コマンドを、コンテナ・オーケストレーション・ツールに発行するためのプログラム命令と
を含む、コンピュータ・プログラム製品。
【請求項9】
前記記憶されたプログラム命令が、
第1のコンテナ・ベース・イメージを求めるリクエストを受け取るためのプログラム命令と、
前記第1のコンテナ・ベース・イメージが管理されていないと判定するためのプログラム命令と、
前記第1のコンテナ・ベース・イメージの管理バージョンを生成するためのプログラム命令と
をさらに含む、請求項8に記載のコンピュータ・プログラム製品。
【請求項10】
前記第1のコンテナ・ベース・イメージの前記管理バージョンが、注入点を含むようにラップされた前記第1のコンテナ・ベース・イメージを含む、請求項9に記載のコンピュータ・プログラム製品。
【請求項11】
前記記憶されたプログラム命令が、
1つまたは複数のコンピュータ・プロセッサによって、前記第1のコンテナ・ベース・イメージの前記管理バージョンが第2の脆弱性を含むと判定するためのプログラム命令と、
前記1つまたは複数のコンピュータ・プロセッサによって、前記第2の脆弱性に対処するためのパッチ・スクリプトを生成するためのプログラム命令と、
前記1つまたは複数のコンピュータ・プロセッサによって、前記第1のコンテナ・ベース・イメージの前記管理バージョンの前記注入点に前記パッチ・スクリプトを挿入し、その結果として、パッチされた第1のコンテナ・ベース・イメージを生成するためのプログラム命令と、
前記1つまたは複数のコンピュータ・プロセッサによって、前記パッチされた第1のコンテナ・ベース・イメージを公開するためのプログラム命令と
をさらに含む、請求項10に記載のコンピュータ・プログラム製品。
【請求項12】
前記記憶されたプログラム命令が、
前記第1の脆弱性に関係する管理イメージの集合を決定するためのプログラム命令と、
前記集合のそれぞれの管理イメージをパッチするためのプログラム命令と、
パッチされたそれぞれの管理イメージを公開するためのプログラム命令と
をさらに含む、請求項8に記載のコンピュータ・プログラム製品。
【請求項13】
前記記憶されたプログラム命令が、前記プル・コマンドをユーザが拒否することを可能にすることをさらに含む、請求項8に記載のコンピュータ・プログラム製品。
【請求項14】
前記記憶されたプログラム命令が、
前記コンテナ・ベース・イメージが管理されていないと判定するためのプログラム命令と、
前記コンテナ・ベース・イメージの管理バージョンを生成するためのプログラム命令と
をさらに含み、前記コンテナ・ベース・イメージの前記管理バージョンが注入点を含み、前記記憶されたプログラム命令が、
前記プル・コマンドをユーザが拒否することを可能にするプログラム命令
をさらに含む、請求項8に記載のコンピュータ・プログラム製品。
【請求項15】
アプリケーション実行を管理するためのコンピュータ・システムであって、前記コンピュータ・システムが、
1つまたは複数のコンピュータ・プロセッサと、
1つまたは複数のコンピュータ可読ストレージ・デバイスと、
前記1つまたは複数のコンピュータ可読ストレージ・デバイス上の記憶されたプログラム命令であり、前記1つまたは複数のコンピュータ・プロセッサによって実行するための前記記憶されたプログラム命令と
を含み、前記記憶されたプログラム命令が、
注入点を含むようにそれぞれがラップされた管理コンテナ・ベース・イメージのレジストリを提供するためのプログラム命令と、
管理コンテナ・ベース・イメージが第1の脆弱性を含むと判定するためのプログラム命令と、
前記第1の脆弱性に対処するためのパッチ・スクリプトを生成するためのプログラム命令と、
前記管理コンテナ・ベース・イメージの前記注入点に前記パッチ・スクリプトを挿入するためのプログラム命令と、
前記管理コンテナ・ベース・イメージを使用するアプリケーションに対するプル・コマンドを、コンテナ・オーケストレーション・ツールに発行するためのプログラム命令と
を含む、コンピュータ・システム。
【請求項16】
前記記憶されたプログラム命令が、
第1のコンテナ・ベース・イメージを求めるリクエストを受け取るためのプログラム命令と、
前記第1のコンテナ・ベース・イメージが管理されていないと判定するためのプログラム命令と、
前記第1のコンテナ・ベース・イメージの管理バージョンを生成するためのプログラム命令と
をさらに含む、請求項15に記載のコンピュータ・システム。
【請求項17】
前記第1のコンテナ・ベース・イメージの前記管理バージョンが、注入点を含むようにラップされた前記第1のコンテナ・ベース・イメージを含む、請求項16に記載のコンピュータ・システム。
【請求項18】
前記記憶されたプログラム命令が、
1つまたは複数のコンピュータ・プロセッサによって、前記第1のコンテナ・ベース・イメージの前記管理バージョンが第2の脆弱性を含むと判定するためのプログラム命令と、
前記1つまたは複数のコンピュータ・プロセッサによって、前記第2の脆弱性に対処するためのパッチ・スクリプトを生成するためのプログラム命令と、
前記1つまたは複数のコンピュータ・プロセッサによって、前記第1のコンテナ・ベース・イメージの前記管理バージョンの前記注入点に前記パッチ・スクリプトを挿入し、その結果として、パッチされた第1のコンテナ・ベース・イメージを生成するためのプログラム命令と、
前記1つまたは複数のコンピュータ・プロセッサによって、前記パッチされた第1のコンテナ・ベース・イメージを公開するためのプログラム命令と
をさらに含む、請求項17に記載のコンピュータ・システム。
【請求項19】
前記記憶されたプログラム命令が、
前記第1の脆弱性に関係する管理イメージの集合を決定するためのプログラム命令と、
前記集合のそれぞれの管理イメージをパッチするためのプログラム命令と、
パッチされたそれぞれの管理イメージを公開するためのプログラム命令と
をさらに含む、請求項15に記載のコンピュータ・システム。
【請求項20】
前記記憶されたプログラム命令が、
第1のコンテナ・ベース・イメージを求めるリクエストを受け取るためのプログラム命令と、
前記第1のコンテナ・ベース・イメージが管理されていないと判定するためのプログラム命令と、
前記第1のコンテナ・ベース・イメージの管理バージョンを生成するためのプログラム命令と
をさらに含み、前記第1のコンテナ・ベース・イメージの前記管理バージョンが注入点を含み、前記記憶されたプログラム命令が、
前記プル・コマンドをユーザが拒否することを可能にするプログラム命令
をさらに含む、請求項15に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は一般に、ソフトウェア更新を管理することに関する。詳細には、本開示は、クラウド・ベースのコンテナ(container)内で動作しているソフトウェアに対する更新を提供することに関する。
【背景技術】
【0002】
クラウド・ベースのアプリケーション・コンテナは、仮想マシンよりもリソースが少なくて済むコンピューティング・オプションをユーザに提供する。コンテナは、ホスト・マシンのリソースのサブセットへのアクセスを使用してユーザがソフトウェアを走らせることを可能にする。ユーザ/クライアントは、サービス・プロバイダから取得したオペレーティング・システムのベース・イメージ(base image)とともに使用するコンテナを準備することができる。
【発明の概要】
【0003】
本発明の態様は、注入点(injection point)を含むようにそれぞれがラップされた(wrapped)管理されたコンテナ・ベース・イメージ(managed container base image)(以後、管理コンテナ・ベース・イメージ)のレジストリ(registry)を提供すること、管理コンテナ・ベース・イメージが脆弱性(vulnerability)を含むと判定すること、およびその脆弱性に対処するためのパッチ・スクリプト(patch script)を生成することによって、コンテナ・アプリケーションを管理することに関連した方法、システムおよびコンピュータ可読媒体を開示する。コンテナ・アプリケーションを管理することはさらに、注入点にパッチ・スクリプトを挿入すること、および管理コンテナ・ベース・イメージを使用するアプリケーションに対するプル・コマンド(pull command)を、コンテナ・オーケストレーション・ツール(container orchestration tool)に発することを含む。
【0004】
次に、以下の図面を参照して、本発明の実施形態を、単なる例として説明する。
【図面の簡単な説明】
【0005】
図1】本発明の一実施形態による、システムの概略図である。
図2】本発明の一実施形態による、操作シーケンスを示す流れ図である。
図3】本発明の一実施形態による、イメージ進行の概略図である。
図4】本発明の一実施形態による、操作アクティビティの図である。
図5】本発明の一実施形態による、クラウド・コンピューティング環境を示す図である。
図6】本発明の一実施形態による、抽象化モデル層を示す図である。
【発明を実施するための形態】
【0006】
サービス・プロバイダからのベース・イメージをアプリケーション・コンテナに供給することは、予めインストールされ、予め構造化された一組のコンテンツをユーザに提供する。コンテナ・システムをパッチすることおよび更新することはユーザの責任であり、サービス・プロバイダの責任ではない。コンテナ・ストレージは短命であるため、イメージおよびアプリケーションになされた変更は、コンテナが動作を停止したとき、すなわち再開時に失われる。有効であるためには、基礎をなすプロビジョニング・イメージに対して変更がなされなければならない。
【0007】
一実施形態では、クラウド・リソース・プロバイダ(cloud resource provider)(CSP)が、コンテナ・ベース・イメージを求めるリクエストをユーザから受け取る。このリクエストは、管理されたイメージ(以後、管理イメージ)を求めるリクエスト、または単純に、特定のコンテナ・イメージを求めるリクエストであり得る。このリクエストは、特定のコンテナ・イメージ(すなわちDOCKERイメージ)が、プライベートのイメージ・レジストリ(private image registry)を通して管理され、使用可能にされることを求めるリクエストとすることができる。CSPは、ベース・イメージを、パブリックのイメージ・レジストリ(public image registry)から、または知られているプライベートのイメージ・レジストリから取得する。CSPは次いで、リクエストされたイメージ・ファイルの管理されたバージョン(managed version)(以後、管理バーション)を生成し、プライベートのレジストリ内のそのファイルの管理バージョンをユーザに指し示す。管理バージョンを有するベース・イメージを求める後続のリクエストに対する応答は、プライベートのレジストリ内のイメージの管理バージョンをユーザに直接に指し示すことによってなされる。
【0008】
ベース・イメージは、構築プロセス中に生成された一連の層を含む。このプロセスは、コンテナの環境を定義するファイル内のコマンドの実行に関連した、システムのファイル・システムに対する変更を捕捉する。そのファイルから実行されたそれぞれのコマンドに関連した全ての変更は、最終的なベース・イメージの層として捕捉される。
【0009】
システムは、そのベース・イメージを、イメージ層を識別しかつカタログ化するイメージ解析器に渡す。イメージ解析器は、その一連のコンテナ・ベース・イメージ層を精査し、ルート層(root layer)オペレーティング・システム(OS)を識別する。システムは、ルート層OSコーディングに従って注入点が追加された、ベース・イメージの正確なコピーを生成する。次いで、ベース・イメージの新たな管理バージョンが、ベース・イメージの管理バージョンであることを示す名称とともに、プライベートのレジストリに記憶される。管理イメージをユーザに指し示すため、管理バージョンの位置またはタグがユーザに提供される。追加された注入点は、ベース・イメージの新たな管理バージョン内の基礎をなすベース・イメージをシステムが更新もしくはパッチし、または他のやり方で変更することを可能にする。
【0010】
ユーザは次いで、管理イメージおよびコンテナ・オーケストレーション・ソフトウェア・ツール、例えばKUBERNETESを使用する1つまたは複数のコンテナを準備する。ユーザは、ユーザのニーズおよびアプリケーション要件に従ってユーザのカスタム構成を管理イメージに追加して、管理イメージを変更/強化することができる。
【0011】
一実施形態では、システムが、OSまたはアプリケーションに関係したコーディング脆弱性が、プライベートのレジストリ/カタログに記憶された管理イメージの少なくとも一部分に影響を及ぼすと判定する。この脆弱性は、OSおよびアプリケーションの発行者によって公開された(published)更新によって認識することができる。システムは、その脆弱性に対処するための、OS特有の、もしくはアプリケーション特有の、またはその両方のパッチ・スクリプトを生成する。この方法のシステムは、影響を受けたそれぞれのイメージを、私用レジストリ/カタログからシステムのパッチ挿入構成要素に渡す。パッチ挿入構成要素は、生成されたパッチ・スクリプトの行(line)をイメージの注入点に注入する。
【0012】
次いで、管理イメージの直前のバージョンの代わりに、パッチされた管理イメージが、プライベートのレジストリに公開される。パッチされたイメージは、元の管理イメージと同じ位置(タグ)を有する。発行後、影響を受けた全てのアプリケーション・コンテナに対する手動または自動アプリケーション再開(restart)コマンドが発せられる。アプリケーション再開は、更新された管理イメージをプライベートのレジストリからプルし、アプリケーションは、更新されたイメージを使用して実行を開始する。再開後に、パッチを用いてコンテナ・イメージが再構築される。
【0013】
一実施形態では、クラウド・サービス・プロバイダ(CSP)がコンテナ・イメージを識別する。CSPは、特定のコンテナ・イメージを求めるリクエストをユーザから受け取ることができ、またはそのイメージをユーザが提供することができる。このリクエストは、管理イメージを求めるリクエスト、または単純に、特定のコンテナ・イメージを求めるリクエストとすることができる。CSPは、ベース・イメージを、パブリックのイメージ・レジストリから、ユーザから、または知られているプライベートのイメージ・レジストリから取得する。CSPは次いで、リクエストされたイメージ・ファイルの管理バージョンを生成し、その管理バージョンをレジストリに記憶し、プライベートのレジストリ内のそのファイルの管理バージョンをユーザに指し示す。ベース・イメージを求める後続のリクエストに対する応答は、プライベートのレジストリ内のイメージの管理バージョンをユーザに直接に指し示すことによってなされる。この実施形態では、注入点および集中型構成要素(centralized component)への呼出しを追加することによりベース・イメージをラップすることによって、CSPが、ベース・イメージを変更する。その構成要素は、コンテナのインスタンス化中に呼び出されたときに、ポーリングして、再開されるイメージと整合した管理イメージが存在するかどうかを判定する。存在する場合には、更新された管理イメージが返され、そのイメージは、その更新によって再構築される。
【0014】
一実施形態では、ユーザが、1つのサービスが管理イメージを提供することを知った上で、そのサービスからの特定のイメージ・リクエストを発する。この実施形態では、ユーザのこのイメージ・リクエストが、提供されたイメージが管理イメージであるとの指示なしに履行される。
【0015】
一実施形態では、ベース・イメージを構築するために使用される個々の構成ソフトウェア・バージョンに対する制御を維持するために、ユーザが、更新プリファランス(update preference)を指定することができる。この実施形態では、意味論的バージョニング・プリファランス(semantic versioning preference)を使用して、ユーザが、受け入れ可能な更新バージョンおよび受け入れられない更新バージョンに関する限界を設定することができる。(例えば、ユーザは、更新バージョン7.*は受け入れ可能だが、更新バージョン8.*は受け入れられないと定めることができる。)
【0016】
一実施形態では、ユーザが、ベース・イメージの、更新が受け入れ可能なセグメントおよび更新が受け入れられないセグメントを指定することができる。脆弱性および更新に対する対処がなされると、適切にセグメント化されたパッチがパッチ挿入構成要素に渡され、それぞれのユーザのイメージが、更新に関するユーザのプリファランスに従って再構築される。一実施形態では、ユーザが、自動更新または手動更新に対するプリファランスを設定する。自動更新を含むイメージは再構築され、ユーザのシステムに再開コマンドが自動的にプッシュされる。手動更新を含むイメージは、パッチされ、更新の通知およびパッチされたイメージをユーザが受け入れることまたは拒否することを可能にする命令とともにユーザに送られる。
【0017】
一実施形態では、ユーザが、ユーザのリクエストされたイメージに対するアプリケーション・レベル情報を提供することができる。一実施形態では、サービスが、イメージの基礎をなすオペレーティング・システムと同様に、イメージのアプリケーションもしくはその従属物またはその両方に対して更新およびパッチを提供することができる。この実施形態では、システムが、更新およびパッチを挿入するための注入点を含む管理イメージを提供することができ、または、サービス・プロバイダが、更新およびパッチを定期的にチェックするためのシステム・ポーリング命令を有する管理イメージを提供することができる。
【0018】
図1は、開示された発明の実施に関連した例示的なネットワーク・リソースの概略図を示している。それらの発明は、命令ストリームを処理する、開示された要素のうちの任意の要素のプロセッサで実施することができる。この図に示されているように、ネットワーク化されたクライアント・デバイス110は、サーバ・サブシステム102に無線で接続する。クライアント・デバイス104は、ネットワーク114を介してサーバ・サブシステム102に無線で接続する。クライアント・デバイス104および110は、コンテナ・オーケストレーション・プログラム106、112、およびそれらのプログラムを実行するのに十分なコンピューティング・リソース(プロセッサ、メモリ、ネットワーク通信ハードウェア)を含む。図1に示されているように、サーバ・サブシステム102は、サーバ・コンピュータ150を含む。サーバ・コンピュータ150は、管理コンテナ・イメージのカタログ/レジストリを記憶する。図1は、本発明の一実施形態による、ネットワーク化されたコンピュータ・システム1000内のサーバ・コンピュータ150の構成要素のブロック図を示している。図1は、1つの実施態様の図解だけを提供するものであり、異なる実施形態を実施することができる環境に関する限定を暗示するものではないことを理解すべきである。図示された環境に対して多くの変更を実施することができる。
【0019】
サーバ・コンピュータ150は、プロセッサ154、キャッシュ162、メモリ158、永続性ストレージ(persistent storage)170、通信ユニット152、入力/出力(I/O)インタフェース156および通信ファブリック(communications fabric)140を含むことができる。通信ファブリック140は、キャッシュ162、メモリ158、永続性ストレージ170、通信ユニット152および入力/出力(I/O)インタフェース156間の通信を提供する。通信ファブリック140は、プロセッサ(例えばマイクロプロセッサ、通信プロセッサおよびネットワーク・プロセッサなど)、システム・メモリ、周辺デバイスおよびシステム内の他のハードウェア構成要素間でデータもしくは制御情報またはその両方を渡すように設計された任意のアーキテクチャを用いて実装することができる。例えば、通信ファブリック140は、1つまたは複数のバスによって実装することができる。
【0020】
メモリ158および永続性ストレージ170はコンピュータ可読ストレージ媒体である。この実施形態では、メモリ158が、ランダム・アクセス・メモリ(RAM)160を含む。一般に、メモリ158は、適当な任意の揮発性または不揮発性コンピュータ可読ストレージ媒体を含むことができる。キャッシュ162は、メモリ158からの最近にアクセスされたデータおよび最近にアクセスされたデータの近くのデータを保持することによって、プロセッサ154の性能を増強する高速メモリである。
【0021】
サーバ・コンピュータ150の対応するそれぞれのプロセッサ154のうちの1つまたは複数のプロセッサ154がキャッシュ162を介して実行もしくはアクセスするため、または実行およびアクセスするために、永続性ストレージ170には、本発明の実施形態を実施するために使用されるプログラム命令およびデータ、例えばコンテナ・イメージ管理プログラム175が記憶されている。デバイス104および110向けに、永続性ストレージ170はさらに、開示された発明によって使用される管理イメージ178のカタログ、ならびにアプリケーション・コンテナ107および113を含む。この実施形態では、永続性ストレージ170が磁気ハード・ディスク・ドライブを含む。磁気ハード・ディスク・ドライブの代わりに、または磁気ハード・ディスク・ドライブに加えて、永続性ストレージ170は、固体状態ハード・ドライブ、半導体ストレージ・デバイス、リードオンリー・メモリ(ROM)、消去可能なプログラマブル・リードオンリー・メモリ(EPROM)、フラッシュ・メモリ、またはプログラム命令もしくはデジタル情報を記憶することができる他の任意のコンピュータ可読ストレージ媒体を含むことができる。
【0022】
さらに、永続性ストレージ170によって使用される媒体は取外し可能であってもよい。例えば、永続性ストレージ170に対して取外し可能なハード・ドライブを使用することができる。他の例は、やはり永続性ストレージ170の部分である別のコンピュータ可読ストレージ媒体上に転送するためのドライブに挿入された、光および磁気ディスク、サム・ドライブ(thumb drive)ならびにスマート・カードを含む。
【0023】
これらの例では、通信ユニット152が、クライアント・コンピューティング・デバイス104および110のリソースを含む他のデータ処理システムまたはデバイスとの通信を提供する。これらの例では、通信ユニット152が、1つまたは複数のネットワーク・インタフェース・カードを含む。通信ユニット152は、物理通信リンクと無線通信リンクのうちのいずれか一方または両方の使用を通して通信を提供することができる。通信ユニット152を通してサーバ・コンピュータ150の永続性ストレージ170に、ソフトウェア配布プログラム、ならびに本発明の実施に使用されるその他のプログラムおよびデータをダウンロードすることができる。
【0024】
I/Oインタフェース156は、サーバ・コンピュータ150に接続されたものであってもよい他のデバイスとのデータの入力および出力を可能にする。例えば、I/Oインタフェース156は、キーボード、キーパッド、タッチ・スクリーン、マイクロホン、デジタル・カメラもしくは他の適当なある入力デバイス、またはこれらの組合せなどの外部デバイス190への接続を提供することができる。外部デバイス190はさらに、例えばサム・ドライブ、携帯可能な光または磁気ディスク、およびメモリ・カードなどの携帯可能なコンピュータ可読ストレージ媒体を含むことができる。このような携帯可能なコンピュータ可読ストレージ媒体上に、本発明の実施形態を実施するために使用されるソフトウェアおよびデータ、例えばサーバ・コンピュータ150上のコンテナ・イメージ管理プログラム175を記憶しておくことができ、それらのソフトウェアおよびデータを、I/Oインタフェース156を介して永続性ストレージ170上にロードすることができる。I/Oインタフェース156はさらにディスプレイ180に接続している。
【0025】
ディスプレイ180は、ユーザにデータを表示する機構を提供し、例えばコンピュータ・モニタとすることができる。ディスプレイ180は、タブレット・コンピュータのディスプレイなどのように、タッチ・スクリーンとして機能することもできる。
【0026】
図2は、本開示の実施に関連した例示的なアクティビティを示す流れ図200を示している。プログラム開始後、210で、システムが、コンテナ・ベース・イメージを求めるリクエストをユーザから受け取る。一実施形態では、このリクエストを、クラウド・ベースのサーバ上に存在するシステム・イメージ管理ソフトウェアによって受け取ることができる。既存の管理バージョンを有するリクエストされたイメージについては、システムが、プライベートのイメージ・レジストリ(図示せず)内のベース・イメージの関連管理バージョンの位置をユーザに指し示す。ユーザは、新たなイメージをリクエストするのではなしに、現在使用しているベース・イメージを供給することができる。220で、システムは、ベース・イメージ層を解析し、ベース・イメージに注入点を追加することにより、ベース・イメージの管理バージョンを生成する。230で、システムは、ベース・イメージの生成された管理バージョンをプライベートのイメージ・レジストリに公開し、ベース・イメージの管理バージョンの位置をユーザに提供する。240で、システムは、必要に応じて、注入点に適切なコードを挿入することにより、管理イメージ・バージョンを更新またはパッチして、管理イメージの新たなバージョンを生成する。250で、システムは、この新たな管理イメージ・バージョンを、直前のバージョンのプライベートのレジストリ位置に公開する。260で、システムは、影響を受けた全てのコンテナ・アプリケーションに対する再開コマンドを発行する。再開コマンドが実行されると、管理イメージのパッチされたバージョンが、プライベートのイメージ・レジストリからプルダウンされる。アプリケーションの再開は、パッチのコードを実行し、脆弱性のないイメージを再構築し、更新/パッチの利益をユーザに提供する。
【0027】
一実施形態では、システムが、管理コンテナ・ベース・イメージのカタログを維持する。それぞれの管理イメージは、コード挿入点を含むようにラップされている。このカタログ/レジストリに、単一のベース・イメージの多数のバージョンを記憶することができる。それらの多数のバージョンはそれぞれ、基礎をなすベース・イメージの1つまたは複数の脆弱性に対処するための固有の一組のパッチを含むことができる。それらの多数のバージョンはそれぞれ、基礎をなすベース・イメージの層に対する異なる更新レベルを含むことができる。この実施形態では、ユーザが、ユーザが受け入れ可能な層更新設定を含むベース・イメージをリクエストすることができる。受け入れ可能な更新だけを含む管理イメージをユーザに提供することができる。ユーザは、将来のイメージ更新を、それらが使用可能になったときに手動で受け入れることを選択することができる。この実施形態では、将来の更新/パッチをユーザが受け入れることまたは拒否することを可能にするコードとともに、管理イメージがユーザに提供される。一実施形態では、管理イメージが、更新通知のためにカタログを定期的にポーリングするコードを含む。この実施形態では、管理イメージに対する新たなパッチ/更新のためのプル命令または再開命令が、ユーザに発せられない。
【0028】
図3は、本発明の一実施形態を示している。この図に示されているように、層、すなわちCENTOS 1.0層、APACHE 1.0層およびClient Enhance 1.0層を含むクライアント・イメージXYZ310が提供される。この実施形態によれば、注入点、すなわちSP層を含むXYZの管理バージョン、すなわち管理XYZ320が生成され、クライアントが使用できるようにされる。システムが更新の必要性を認識した後、SP層にパッチング・コードが挿入され、イメージが再構築されて、管理XYZの新たなバージョン330が生成される。(注記:用語「CENTOS」、「APACHE」、「KUBERNETES」および「DOCKER」は、世界中のさまざまな法域において商標権の対象であることがあり、本明細書では、これらの用語が、それらの商標によってそのような商標権が存在しうる程度に適正に命名された製品またはサービスだけに関して使用される。)
【0029】
図4は、本発明の一実施形態による、システム・アーキテクチャ400およびデータ・フローの図を示している。この図に示されているように、システム410は、脆弱性が存在すると判定し、脆弱性に対処するためのパッチ415を生成する。パッチ解析器420が、そのパッチを受け取り、管理イメージのカタログ430を精査し、そのパッチを必要とする管理イメージを取り出す。パッチ挿入要素440が、パッチ解析器430から、そのパッチおよび関連イメージを受け取り、管理イメージの挿入点にパッチを挿入して、更新されたイメージ445を生成する。システムは、パッチされた管理イメージ445を、ユーザによるアクセスに備えてプライベートのレジストリ460に送る。ユーザ・コンテナ・オーケストレーション要素470が、システム410からイメージ再開命令を受け取り、プライベートのレジストリ460からパッチされたイメージをプルし、イメージを再構築して、パッチ・コードを実行する。
【0030】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実施態様はクラウド・コンピューティング環境だけに限定されないことを理解すべきである。むしろ、本発明の実施形態は、現在知られているまたは後に開発される他の任意のタイプのコンピューティング環境に関連して実施することができる。
【0031】
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの最小限のインタラクションで迅速に供給およびリリースすることができる構成可能なコンピューティング・リソース(例えばネットワーク、ネットワーク帯域、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想機械およびサービス)の共用プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするサービス配信モデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント(deployment)モデルを含むことができる。
【0032】
特徴は以下のとおりである。
オンデマンド・セルフサービス:クラウド・コンシューマは、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を、このサービスのプロバイダとのヒューマン・インタラクションを必要とすることなく必要に応じて自動的に一方向的に設定することができる。
ブロード・ネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、機能には、異種のシンまたはシック・クライアント・プラットホーム(例えば移動電話、ラップトップおよびPDA)による使用を促進する標準的機構を通してアクセスされる。
リソース・プーリング(resource pooling):マルチテナント・モデルを使用して多数のコンシューマにサービスを提供するために、プロバイダのコンピューティング・リソースがプールされており、要求に応じて、異なる物理的および仮想リソースが動的に割当ておよび再割当てされる。コンシューマは一般に、提供されたリソースの正確な位置を制御できずまたは正確な位置を知らないが、より高次の抽象化レベル(例えば国、州またはデータセンター)で位置を指定することができ得るという意味で、位置独立の感覚がある。
ラピッド・エラスティシティ(rapid elasticity):機能は、素早くスケールアウトするために迅速かつ弾力的に、場合によっては自動的に割り当てることができ、素早くスケールインするために迅速にリリースすることができる。コンシューマにとって、割当てに利用可能な機能はしばしば無限であるように見え、いつでも好きな量だけ購入することができる。
メジャード・サービス(measured service):クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域および使用中ユーザ・アカウント)に対して適切なある抽象化レベルで計測機能に介入することによって、リソースの使用を自動的に制御および最適化する。リソースの使用状況を監視、制御および報告して、利用されているサービスのプロバイダとコンシューマの両方に透明性を提供することができる。
【0033】
サービス・モデルは以下のとおりである。
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供されるこの機能は、クラウド・インフラストラクチャ上でランしているプロバイダのアプリケーションを使用する機能である。ウェブ・ブラウザなどのシン・クライアント・インタフェース(例えばウェブ・ベースの電子メール)を通してさまざまなクライアント・デバイスからアプリケーションにアクセス可能である。可能な限られたユーザ固有のアプリケーション構成の設定を除けば、コンシューマは、ネットワーク、サーバ、オペレーティング・システム、ストレージまたは個々のアプリケーション機能を含む基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしない。
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供されるこの機能は、クラウド・インフラストラクチャ上で、プロバイダがサポートするプログラム言語およびツールを使用して作成されたコンシューマ作成または取得のアプリケーションをデプロイする機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システムまたはストレージを含む基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしないが、デプロイされたアプリケーションおよび場合によっては、アプリケーション・ホスティング環境構成を制御する。
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供されるこの機能は、処理、ストレージ、ネットワークおよび他の基本的なコンピューティング・リソースを割り当てる機能であり、コンシューマは任意のソフトウェアをデプロイおよびランすることができ、これらのソフトウェアは、オペレーティング・システムおよびアプリケーションを含むことができる。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしないが、オペレーティング・システム、ストレージおよびデプロイされたアプリケーションを制御し、場合によっては、選択されたネットワーク構成要素(例えばホスト・ファイアウォール)を限定的に制御する。
【0034】
デプロイメント・モデルは以下のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、組織体のためだけに運営される。インフラストラクチャは、その組織体または第三者が管理することができ、オンプレミス(on-premises)またはオフプレミス(off-premises)で存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、いくつかの組織体によって共有され、利害(例えばミッション、セキュリティ要件、ポリシーおよびコンプライアンス上の問題)を共有する特定のコミュニティをサポートする。インフラストラクチャは、その組織体または第三者が管理することができ、オンプレミスまたはオフプレミスで存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般大衆または大きな産業グループが利用可能であり、クラウド・サービスを販売している組織体によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、固有のエンティティ(entity)を維持しているが、データおよびアプリケーション・ポータビリティを可能にする標準化された技術または独占技術(例えばクラウド間のロード・バランシングのためのクラウド・バースティング(cloud bursting))によって1つに結合された2つ以上のクラウド(プライベート、コミュニティまたはパブリック)の合成体である。
【0035】
クラウド・コンピューティング環境は、無国籍、低結合、モジュール性および意味論的相互運用性(semantic interoperability)に重きを置くサービス指向の環境である。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【0036】
次に図5を参照すると、例示的なクラウド・コンピューティング環境50が示されている。示されているとおり、クラウド・コンピューティング環境50は1つまたは複数のクラウド・コンピューティング・ノード10を含み、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイス、例えばパーソナル・デジタル・アシスタント(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54Cまたは自動車コンピュータ・システム54Nあるいはこれらの組合せは、これらのノードと通信することができる。ノード10は互いに通信することができる。それらのノードは、上で説明したプライベート、コミュニティ、パブリックまたはハイブリッド・クラウドまたはこれらの組合せなどの1つまたは複数のネットワークに、物理的にまたは仮想的にグループ分けされていることがある(図示せず)。これによって、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットホームもしくはソフトウェアまたはこれらの組合せをサービスとして提供することができ、そのため、クラウド・コンシューマは、ローカル・コンピューティング・デバイス上にリソースを維持する必要がない。図5に示されたタイプのコンピューティング・デバイス54A~Nは単なる例であることが意図されていること、ならびにコンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワーク上もしくはアドレス指定可能なネットワーク接続上またはその両方で(例えばウェブ・ブラウザを使用して)、コンピュータ化された任意のタイプのデバイスと通信することができることが理解される。
【0037】
次に図6を参照すると、クラウド・コンピューティング環境50(図5)によって提供される一組の機能抽象化層が示されている。図6に示されている構成要素、層および機能は単なる例であることが意図されており、本発明の実施形態はそれらに限定されないことを予め理解しておくべきである。図示のとおり、以下の層および対応する機能が提供される。
【0038】
ハードウェアおよびソフトウェア層60は、ハードウェア構成要素およびソフトウェア構成要素を含む。ハードウェア構成要素の例は、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ(blade server)64、ストレージ・デバイス65ならびにネットワークおよびネットワーキング構成要素66を含む。いくつかの実施形態では、ソフトウェア構成要素が、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0039】
仮想化層70は抽象化層を提供し、この層から、仮想エンティティの以下の例を提供することができる:仮想サーバ71、仮想ストレージ72、仮想専用ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75。
【0040】
一例では、管理層80が以下の機能を提供することができる。リソース供給81は、クラウド・コンピューティング環境内でタスクを実行する目的に利用されるコンピューティング・リソースおよびその他のリソースの動的調達を提供する。計量および価格決定82は、クラウド・コンピューティング環境内でリソースが利用されたときの費用追跡、およびこれらのリソースの消費に対する課金または請求を提供する。一例では、これらのリソースがアプリケーション・ソフトウェア・ライセンスを含むことがある。セキュリティは、クラウド・コンシューマおよびタスクの識別確認ならびにデータおよび他のリソースの保護を提供する。ユーザ・ポータル83は、コンシューマおよびシステム管理者に、クラウド・コンピューティング環境へのアクセスを提供する。サービス水準管理84は、必要なサービス水準が達成されるようなクラウド・コンピューティング・リソースの割振りおよび管理を提供する。サービス水準合意(Service Level Agreement)(SLA)計画および履行85は、SLAに従って将来必要になると予想されるクラウド・コンピューティング・リソースの事前調整および調達を提供する。
【0041】
ワークロード層90は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ解析処理94、トランザクション処理95、ならびにコンテナ・イメージ管理プログラム175を含む。
【0042】
本発明は、インテグレーションの可能な任意の技術的詳細レベルにおいて、システム、方法もしくはコンピュータ・プログラム製品、またはこれらの組合せであることができる。本発明は、命令ストリームを処理する単一のまたは並列のシステムで有益に実施することができる。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含むことができる。
【0043】
このコンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形のデバイスとすることができる。このコンピュータ可読ストレージ媒体は例えば、限定はされないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたはこれらの適当な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リードオンリー・メモリ(ROM)、消去可能なプログラマブル・リードオンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リードオンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、機械的にコード化されたデバイス、例えばパンチカードまたはその上に命令が記録された溝の中の一段高くなった構造体、およびこれらの適当な組合せを含む。本明細書で使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が一過性の信号、例えば電波もしくは他の自由に伝搬する電磁波、ウェーブガイドもしくは他の伝送体内を伝搬する電磁波(例えば光ファイバ・ケーブル内を通る光パルス)、または電線を通して伝送される電気信号であると解釈されるべきではない。
【0044】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から対応するそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、またはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはそれらの組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードすることができる。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバ、またはこれらの組合せを含むことができる。それぞれのコンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、それらのコンピュータ可読プログラム命令を、対応するそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するために転送する。
【0045】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、もしくは集積回路用の構成データであってもよく、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語など、および「C」プログラミング言語または同種のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードであってもよい。このコンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されてもよく、一部がユーザのコンピュータ上で実行されてもよく、独立型ソフトウェア・パッケージとして実行されてもよく、一部がユーザのコンピュータ上で、一部が遠隔コンピュータ上で実行されてもよく、または全体が遠隔コンピュータもしくは遠隔サーバ上で実行されてもよい。最後のシナリオでは、遠隔コンピュータが、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、またはこの接続が、外部コンピュータに対して(例えばインターネット・サービス・プロバイダを使用してインターネットを介して)実施されてもよい。いくつかの実施形態では、本発明の態様を実施するために、例えばプログラム可能論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)またはプログラム可能論理アレイ(PLA)を含む電子回路が、このコンピュータ可読プログラム命令の状態情報を利用してその電子回路をパーソナライズすることにより、このコンピュータ可読プログラム命令を実行してもよい。
【0046】
本明細書では、本発明の態様が、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品の流れ図もしくはブロック図またはその両方の図を参照して説明される。それらの流れ図もしくはブロック図またはその両方の図のそれぞれのブロック、およびそれらの流れ図もしくはブロック図またはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実施することができることが理解される。
【0047】
これらのコンピュータ可読プログラム命令は、機械を形成する汎用コンピュータ、専用コンピュータまたは他のプログラム可能データ処理装置のプロセッサに、それらのコンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行されるこれらの命令が、流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施する手段を生成するような態様で、提供することができる。これらのコンピュータ可読プログラム命令はさらに、特定の方式で機能するようにコンピュータ、プログラム可能データ処理装置もしくは他のデバイスまたはこれらの組合せに指図することができるコンピュータ可読ストレージ媒体に、その中に命令が記憶されたコンピュータ可読ストレージ媒体が、流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作の態様を実施する命令を含む製品を含むような態様で、記憶することができる。
【0048】
これらのコンピュータ可読プログラム命令はさらに、コンピュータ、他のプログラム可能装置または他のデバイス上で一連の動作ステップを実行させて、コンピュータによって実施されるプロセスを生み出すために、このコンピュータ、他のプログラム可能データ処理装置または他のデバイス上に、このコンピュータ、他のプログラム可能装置または他のデバイス上で実施されるこれらの命令が、流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施するような態様で、ロードすることができる。
【0049】
図中の流れ図およびブロック図は、本発明のさまざまな実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能および動作を示す。この点に関して、それらの流れ図またはブロック図のそれぞれのブロックは、指定された論理機能を実施する1つまたは複数の実行可能命令を含む、命令のモジュール、セグメントまたは部分を表すことがある。いくつかの代替実施態様では、ブロックに示された機能を、図に示された順序とは異なる順序で実行することができる。例えば、連続して示された2つのブロックが、実際は、実質的に同時に実行されることがあり、または、含まれる機能によってはそれらのブロックが逆の順序で実行されることもある。それらのブロック図もしくは流れ図またはその両方の図のそれぞれのブロック、ならびにそれらのブロック図もしくは流れ図またはその両方の図のブロックの組合せを、指定された機能もしくは動作を実行しまたは専用ハードウェアとコンピュータ命令の組合せを実施するハードウェアベースの専用システムによって実施することができることにも留意すべきである。
【0050】
本発明のさまざまな実施形態の説明は例示のために示したものであり、それらの説明が網羅的であること、または開示された実施形態に限定されることは意図されていない。当業者には、本発明の範囲および思想を逸脱しない多くの変更および変形が明らかとなろう。本明細書で使用されている用語は、実施形態の原理、実際的用途、もしくは市場に出ている技術には見られない技術的改良を最もうまく説明するように、または本明細書に開示された実施形態を他の当業者が理解することができるように選択した。
図1
図2
図3
図4
図5
図6