(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-09
(45)【発行日】2024-05-17
(54)【発明の名称】コンテナに対する外部操作とミューテーション・イベントとの対応関係
(51)【国際特許分類】
G06F 11/34 20060101AFI20240510BHJP
G06F 11/30 20060101ALI20240510BHJP
【FI】
G06F11/34 104
G06F11/30 140C
G06F11/30 140E
(21)【出願番号】P 2022516086
(86)(22)【出願日】2020-08-14
(86)【国際出願番号】 IB2020057672
(87)【国際公開番号】W WO2021053422
(87)【国際公開日】2021-03-25
【審査請求日】2023-01-20
(32)【優先日】2019-09-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】北原 啓州
(72)【発明者】
【氏名】渡邊 裕治
(72)【発明者】
【氏名】秋山 史子
【審査官】坂庭 剛史
(56)【参考文献】
【文献】米国特許第09471353(US,B1)
【文献】特開2016-218984(JP,A)
【文献】特開2016-162188(JP,A)
【文献】特開平03-257633(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/34
G06F 11/30
(57)【特許請求の範囲】
【請求項1】
コマンドとプロセスとの対応関係を判定するコンピュータ実装方法であって、
ハードウェア・プロセッサによって、クラスタ内の複数のコンテナのそれぞれについて、コンテナ不変性変更イベントのそれぞれの実行時刻とプロセス識別子とプロセス・グループ識別子とに基づいて、前記コンテナ不変性変更イベントの実行の結果としての初期プロセスを特定するステップと、
前記ハードウェア・プロセッサによって、前記特定された初期プロセスのうちの初期プロセスが、外部コンテナ・コマンドと前記外部コンテナ・コマンドのそれぞれの実行の結果としての少なくとも1つのそれぞれのプロセスとを記憶するデータベース内のエントリと一致するか否かを調べるステップと、
前記ハードウェア・プロセッサによって、前記初期プロセスが特定の外部コマンドの実行の結果としての前記少なくとも1つのそれぞれのプロセスと一致することに応答して、前記データベースに記憶されている前記外部コンテナ・コマンドの中から前記特定の外部コマンドを前記初期プロセスとの対応関係を有するものとして指定するステップとを含む、コンピュータ実装方法。
【請求項2】
前記ハードウェア・プロセッサによって、前記対応関係に基づいて、初期可変コンテナを前記外部コンテナ・コマンドに関して不変コンテナに変換するステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記変換するステップは、前記
初期可変コンテナから前記不変コンテナを形成するように、前記可変コンテナの既存コードを不変に変更することを含む、請求項2に記載のコンピュータ実装方法。
【請求項4】
前記外部コンテナ・コマンドを実行することと、前記外部コンテナ・コマンドのそれぞれの実行の結果としての前記少なくとも1つのそれぞれのプロセスを検出することと、前記外部コンテナ・コマンドのそれぞれを前記外部コンテナ・コマンドの結果としての前記少なくとも1つのそれぞれのプロセスにマッピングすることとによって、前記データベースを作成するステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記特定するステップは、前記コンテナ不変性変更イベントのそれぞれについて、前記コンテナ不変性変更イベントの実行時刻の順に、(i)前記コンテナ不変性変更イベントのうちの対応する1つのコンテナ不変性変更イベントの前記プロセス
識別子が前記コンテナ不変性変更イベントの前記プロセス・グループ
識別子と同じであることと、(ii)前記コンテナ不変性変更イベントがプロセス実行イベントであることとに応答して、プロセスのうちのいずれかを前記特定された初期プロセスのうちの1つであると判定することを含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記コンテナ不変性変更イベントはミューテーション・イベントである、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記コンピュータ実装方法はクラウド環境において実装される、請求項1に記載のコンピュータ実装方法。
【請求項8】
不変コンテナを分散クラウド環境にデプロイするステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
前記外部コンテナ・コマンドは実行コマンドを含む、請求項1に記載のコンピュータ実装方法。
【請求項10】
コマンドとプロセスとの対応関係を判定するためのコンピュータ・プログラ
ムであって
、コンピュータに、
請求項1乃至9のいずか1項に記載の方法を行わせる、コンピュータ・プログラ
ム。
【請求項11】
コマンドとプロセスとの対応関係を判定するためのコンピュータ処理システムであって、
プログラム・コードが記憶されたメモリ・デバイスと、
前記メモリ・デバイスに動作可能に結合されたハードウェア・プロセッサとを含み、前記ハードウェア・プロセッサは、
クラスタ内の複数のコンテナのそれぞれについて、コンテナ不変性変更イベントのそれぞれの実行時刻とプロセス識別子とプロセス・グループ識別子とに基づいて、前記コンテナ不変性変更イベントの実行の結果としての初期プロセスを特定し、
前記特定された初期プロセスのうちの初期プロセスが、外部コンテナ・コマンドと前記外部コンテナ・コマンドのそれぞれの実行の結果としての少なくとも1つのそれぞれのプロセスとを記憶するデータベース内のエントリと一致するか否かを調べ、
前記初期プロセスが特定の外部コマンドの実行の結果としての前記少なくとも1つのそれぞれのプロセスと一致することに応答して、前記データベースに記憶されている前記外部コンテナ・コマンドの中から前記特定の外部コマンドを前記初期プロセスとの対応関係を有するものとして指定するように、
前記メモリ・デバイスに記憶された前記プログラム・コードを実行するように構成される、コンピュータ処理システム。
【請求項12】
前記ハードウェア・プロセッサは、前記対応関係に基づいて、初期可変コンテナを前記外部コンテナ・コマンドに関して不変コンテナに変換するように、前記プログラム・コードを実行するようにさらに構成される、請求項
11に記載のコンピュータ処理システム。
【請求項13】
前記ハードウェア・プロセッサは、前記
初期可変コンテナから前記不変コンテナを形成するように、前記可変コンテナの既存コードを不変に変更する、請求項12に記載のコンピュータ処理システム。
【請求項14】
前記ハードウェア・プロセッサは、前記外部コンテナ・コマンドを実行することと、前記外部コンテナ・コマンドのそれぞれの実行の結果としての前記少なくとも1つのそれぞれのプロセスを検出することと、前記外部コンテナ・コマンドのそれぞれを前記外部コンテナ・コマンドの結果としての前記少なくとも1つのそれぞれのプロセスにマッピングすることとによって、前記データベースを作成する、請求項
11に記載のコンピュータ処理システム。
【請求項15】
前記
ハードウェア・プロセッサは、前記コンテナ不変性変更イベントのそれぞれについて、前記コンテナ不変性変更イベントの実行時刻の順に、(i)前記コンテナ不変性変更イベントのうちの対応する1つのコンテナ不変性変更イベントの前記プロセス
識別子が前記コンテナ不変性変更イベントの前記プロセス・グループ
識別子と同じであることと、(ii)前記コンテナ不変性変更イベントがプロセス実行イベントであることとに応答して、プロセスのうちのいずれかを前記特定された初期プロセスのうちの1つであると判定することによって前記初期プロセスを特定する、請求項11に記載のコンピュータ処理システム。
【請求項16】
前記コンテナ不変性変更イベントはミューテーション・イベントである、請求項
11に記載のコンピュータ処理システム。
【請求項17】
前記コンピュータ処理システムは、マルチノード・クラウド環境におけるノードとして実装される、請求項
11に記載のコンピュータ処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般には情報処理に関し、より詳細には、コンテナに対する外部操作とミューテーション・イベントとの対応関係に関する。
【背景技術】
【0002】
コンテナは、事前構築イメージを使用して稼働するクラウド・アプリケーションの最小パッケージである場合がある。現在、コンテナの構築時からコンテナを変化させないことを指すコンテナ不変性が、クラウド・アプリケーションおよびその他のアプリケーションにおける重要なポリシーである。しかし、ユーザは、外部操作を使用してコンテナの外部からファイルを変更し、稼働コンテナにおいて処理を実行することができる。この種の(外部)操作によって生じるファイル変更イベントまたはプロセス実行イベントあるいはその両方は、「ミューテーション・イベント」と呼ばれる。単一の外部操作が、多数のミューテーション・イベントを生じさせることがあり、したがってそれらを手作業で調べることによって対応関係を見つけるのは困難である。したがって、外部操作とミューテーション・イベントとの対応関係を判定する自動化されたコンピュータ・ベースの手法が必要である。
【発明の概要】
【0003】
本発明の一態様によると、コマンドとプロセスとの対応関係を判定するコンピュータ実装方法が提供される。方法は、ハードウェア・プロセッサによって、クラスタ内の複数のコンテナのそれぞれについて、コンテナ不変性変更イベントのそれぞれの実行時刻とプロセス識別子とプロセス・グループ識別子とに基づいて、前記コンテナ不変性変更イベントの実行の結果としての初期プロセスを特定することを含む。方法は、ハードウェア・プロセッサによって、特定された初期プロセスのうちの初期プロセスが、外部コンテナ・コマンドと外部コンテナ・コマンドのそれぞれの実行の結果としての少なくとも1つのそれぞれのプロセスとを記憶するデータベース内のエントリと一致するか否かを調べることをさらに含む。方法は、ハードウェア・プロセッサによって、初期プロセスが特定の外部コマンドの実行の結果としての少なくとも1つのそれぞれのプロセスと一致することに応答して、データベースに記憶されている外部コンテナ・コマンドの中からその特定の外部コマンドを初期プロセスとの対応関係を有するものとして指定することも含む。
【0004】
本発明の別の態様によると、コマンドとプロセスとの対応関係を判定するためのコンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、プログラム命令が実現された非一過性のコンピュータ可読記憶媒体を含む。プログラム命令は、コンピュータに方法を行わせるようにコンピュータによって実行可能である。方法は、ハードウェア・プロセッサによって、クラスタ内の複数のコンテナのそれぞれについて、コンテナ不変性変更イベントのそれぞれの実行時刻とプロセス識別子とプロセス・グループ識別子とに基づいて、前記コンテナ不変性変更イベントの実行の結果としての初期プロセスを特定することを含む。方法は、ハードウェア・プロセッサによって、特定された初期プロセスのうちの初期プロセスが、外部コンテナ・コマンドと外部コンテナ・コマンドのそれぞれの実行の結果としての少なくとも1つのそれぞれのプロセスとを記憶するデータベース内のエントリと一致するか否かを調べることをさらに含む。方法は、ハードウェア・プロセッサによって、初期プロセスが特定の外部コマンドの実行の結果としての少なくとも1つのそれぞれのプロセスと一致することに応答して、データベースに記憶されている外部コンテナ・コマンドの中からその特定の外部コマンドを初期プロセスとの対応関係を有するものとして指定することも含む。
【0005】
本発明のさらに別の態様によると、コマンドとプロセスとの対応関係を判定するためのコンピュータ処理システムが提供される。コンピュータ処理システムは、プログラム・コードが記憶されたメモリ・デバイスを含む。コンピュータ処理システムは、メモリ・デバイスに動作可能に結合され、コンテナ不変性変更イベントのそれぞれの実行時刻とプロセス識別子とプロセス・グループ識別子とに基づいてクラスタ内の複数のコンテナのそれぞれについてコンテナ不変性変更イベントの実行の結果としての初期プロセスを特定するために、メモリ・デバイスに記憶されたプログラム・コードを実行するように構成されたハードウェア・プロセッサをさらに含む。ハードウェア・プロセッサは、特定された初期プロセスのうちの初期プロセスが、外部コンテナ・コマンドと外部コンテナ・コマンドのそれぞれの実行の結果としての少なくとも1つのそれぞれのプロセスとを記憶するデータベース内のエントリと一致するか否かを調べるためのプログラム・コードをさらに実行する。ハードウェア・プロセッサは、初期プロセスが特定の外部コマンドの実行の結果としての少なくとも1つのそれぞれのプロセスと一致することに応答して、データベースに記憶されている外部コンテナ・コマンドの中からその特定の外部コマンドを、初期プロセスとの対応関係を有するものとして指定するためのプログラム・コードも実行する。
【0006】
上記およびその他の特徴および利点は、添付図面とともに読むべき本発明の例示の実施形態の以下の詳細な説明から明らかになるであろう。
【0007】
以下の説明では、以下の図面を参照しながら好ましい実施形態の詳細を示す。
【図面の簡単な説明】
【0008】
【
図1】本発明の一実施形態による例示の処理システムを示すブロック図である。
【
図2】本発明の一実施形態による、コンテナに対する外部操作とミューテーションとの対応関係を判定する例示の方法を示す流れ図である。
【
図3】本発明の一実施形態による、コンテナに対する外部操作とミューテーションとの対応関係を判定する例示の方法を示す流れ図である。
【
図4】本発明の一実施形態による、外部操作と最初のミューテーション・イベントとの例示のマッピングを示すブロック図である。
【
図5】本発明の一実施形態による例示のテーブルを示すブロック図である。
【
図6】本発明の一実施形態による別の例示のテーブルを示すブロック図である。
【
図7】本発明の一実施形態によるさらに別の例示のテーブルを示すブロック図である。
【
図8】本発明の一実施形態による、クラウド消費者によって使用されるローカル・コンピューティング・デバイスが通信する1つまたは複数のクラウド・コンピューティング・ノードを有する例示のクラウド・コンピューティング環境を示すブロック図である。
【
図9】本発明の一実施形態による、クラウド・コンピューティング環境によって提供される1組の機能抽象化層を示すブロック図である。
【発明を実施するための形態】
【0009】
本発明の実施形態は、コンテナに対する外部操作とミューテーション・イベントとの対応関係を対象とする。
【0010】
本発明の1つまたは複数の実施形態は、ユーザが、コンテナに対する外部操作とミューテーション・イベントとの対応関係を特定することができるようにする。このようにして、特定された対応関係に基づいて可変コンテナを不変コンテナに変換し、コンピューティング環境にデプロイすることができる。一実施形態では、コンピューティング環境は、クラウド・コンピューティング環境とすることができる。
【0011】
本発明の1つまたは複数の実施形態は、コンテナに対する外部操作とミューテーション・イベントとの対応関係を特定するためにプロセス構造分析(例えば
図2および
図3を参照)を使用する。一実施形態では、プロセス構造分析は、本発明によって考慮される各変更イベントの、例えば実行時刻とプロセスIDとプロセス・グループIDとに基づいて、与えられた外部操作によって変化が生じる初期プロセスを特定することを含む。
【0012】
本発明の1つまたは複数の実施形態について、例示のためにKubernetes(R)コマンドに関連して説明するが、本発明の思想を維持しながら他の外部コマンドも使用可能である。
【0013】
したがって、本発明は、可変コンテナに関して外部操作とその結果のミューテーション・イベントとの対応関係の特定を可能にし、さらに、その対応関係を「断絶させる」かまたはその他により解消することによって、またはその他の技術を使用することによって、あるいはその両方によって、その特定された可変コンテナの不変コンテナへの変換を可能にすることができる。不変オブジェクトは可変オブジェクトよりも本質的に安全であるとともに、可変オブジェクトよりも優れたその他の利点を有する。
【0014】
図1は、本発明の一実施形態による例示の処理システム100を示すブロック図である。処理システム100は、1組の処理ユニット(例えばCPU)101と、1組のGPU102と、1組のメモリ・デバイス103と、1組の通信デバイス104と、1組の周辺装置105とを含む。CPU101は、シングルコアまたはマルチコアCPUとすることができる。GPU102は、シングルコアまたはマルチコアGPUとすることができる。1つまたは複数のメモリ・デバイス103は、キャッシュ、RAM、ROM、およびその他のメモリ(フラッシュ、光、磁気など)を含むことができる。通信デバイス104は、無線または有線あるいはその両方の通信デバイス(例えばネットワーク(例えばWIFIなど)アダプタなど)を含むことができる。周辺装置105は、ディスプレイ・デバイス、ユーザ入力デバイス、プリンタ、撮像デバイスなどを含むことができる。処理システム100の要素は、1つまたは複数のバスまたはネットワーク(図の参照番号110でまとめて示す)によって接続されている。
【0015】
一実施形態では、メモリ・デバイス103は、コンピュータ処理システムを、本発明の様々な態様を実装するように構成された専用コンピュータに変えるための特別にプログラムされたソフトウェア・モジュールを記憶することができる。一実施形態では、本発明の様々な態様を実装するために、専用ハードウェア(例えば、特定用途向け集積回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)など)を使用することができる。
【0016】
一実施形態では、メモリ・デバイス103は、外部コンテナ・コマンドと、外部コンテナ・コマンドのそれぞれの実行の結果としての少なくとも1つのそれぞれのプロセスとを記憶するデータベースを実装することができる。一実施形態では、少なくとも1つのそれぞれのプロセスは、対応する外部コンテナ・コマンドのインデックスとすることができる。そのような場合、メモリ・デバイスは、コンテント・アドレッサブル・メモリまたは連想記憶メモリを含むことができる。一実施形態では、メモリ・デバイス103は、可変コンテナを記憶するデータベースを実装することができる。一実施形態では、メモリ・デバイス103は、可変コンテナから変換された不変コンテナを記憶するデータベースを実装することができる。
【0017】
当然ながら、処理システム100は、当業者には容易に企図されるように、他の要素(図示せず)も含んでもよく、特定の要素を省いてもよい。例えば、当業者には容易にわかるように、処理システム100の特定の実装に応じて、様々な他の入力デバイスまたは出力デバイスあるいはその両方を処理システム100に含めることができる。例えば、様々な種類の無線または有線あるいはその両方の入力デバイスまたは出力デバイスあるいはその両方を使用することができる。また、様々な構成において、追加のプロセッサ、コントローラ、メモリなども使用可能である。さらに、別の実施形態では、クラウド構成を使用することができる(例えば
図8および
図9を参照)。本明細書に記載の本発明の教示が与えられれば、処理システム100の上記およびその他の変形が当業者によって容易に企図される。
【0018】
また、以下では、様々な図面について、システム100の要素のうちの1つまたは複数の要素によって全体または一部が実装可能な、本発明に関する様々な要素およびステップに関連して説明することを理解されたい。
【0019】
本明細書で使用する「ハードウェア・プロセッサ・サブシステム」または略して「ハードウェア・プロセッサ」という用語は、1つまたは複数の特定のタスクを行うように協調動作するプロセッサ、メモリ、およびソフトウェアの組合せを指す。一実施形態では、ハードウェア・プロセッサ・サブシステムは1つまたは複数のデータ処理要素(例えばロジック回路など)を含み得る。一実施形態では、1つまたは複数のデータ処理要素は、中央演算処理装置、グラフィックス処理装置、または別個のプロセッサまたはコンピューティング要素ベースの(例えばロジック・ゲートなど)コントローラあるいはこれらの組合せに含めることができる。一実施形態では、ハードウェア・プロセッサ・サブシステムは、1つまたは複数のオンボード・メモリ(例えばキャッシュ)を含み得る。一実施形態では、ハードウェア・プロセッサ・サブシステムは、1つまたは複数の他のメモリ(例えばROM、RAM、BIOS)を含み得る。一実施形態では、ハードウェア・プロセッサ・サブシステムは、1つまたは複数のソフトウェア・アプリケーションを含み、実行することができる。一実施形態では、1つまたは複数のソフトウェア・アプリケーションは、オペレーティング・システムおよび/もしくは1つもしくは複数の他のアプリケーションならびに/または指定された結果を達成するための特定のコードを含むことができる。ハードウェア・プロセッサ・サブシステムの上記およびその他の変形は、本明細書に記載の本発明の教示が与えられれば、容易に判断される。
【0020】
図2および
図3は、本発明の一実施形態による、コンテナに対する外部操作とミューテーションとの対応関係を判定する例示の方法200を示す流れ図である。
【0021】
ブロック210で、それぞれの外部操作と、その実行の結果としてのミューテーション・イベントとのマッピングを取得するために、「サンプル・ミューテーション・イベント」を収集する。外部操作は1組の外部操作から取得することができる。与えられた外部操作について、その与えられた外部操作の実行の結果としての1組のミューテーション・イベントから、その外部操作にマッピングされる1つまたは複数のミューテーション・イベントを取得することができる。これらのイベントの組をトレーニング・データとして使用することができ、したがってこのデータが先に準備される。本明細書で使用する「サンプル・ミューテーション・イベント」および略して「ミューテーション・イベント」という用語は、対応する外部操作の実行の結果としてのサンプル観察ミューテーション・イベントを指す。それぞれの外部操作の実行の結果としてのサンプル・ミューテーション・イベントは、「システム・コール・トレース」などの特定の既存の方法によって観察される。
【0022】
例えば、一実施形態では、ブロック210は外部コマンド(例えば、ポッド内のコンテナに対してコマンドを実行するkubectl execコマンド)を実行することと、外部コマンドの実行の結果としての対応するミューテーション・イベントを取得することと、(kubectl exec)外部コマンドと(対応するミューテーション・イベントのうちの)最初のミューテーション・イベントとのマッピングを作成することとを含み得る。例示のためにkubectlコマンドを使用しているが、ミューテーション・イベントを生じさせるために他の(コンテナ)外部コマンドも使用可能である。
【0023】
ブロック220で、1つまたは複数の実行中コンテナから実際のミューテーション・イベントをさらに取得する。実行中コンテナとは、1つまたは複数のプロセス/コマンドを実行しているコンテナである。ブロック210のミューテーション・イベントは、前の実際の実行による実際のミューテーション・イベントでもあることに留意されたい。
【0024】
一実施形態では、ミューテーション・イベントは、システム・コール・トレースおよびシステム・スキャンなどの1つまたは複数の技術によって、ブロック210および220のいずれでも取得することができる。システム・コール・トレースでは、オペレーティング・システム(OS)がその動作中に多くのシステム・コールを生じさせ、すべてのコンテナがOSをそのタスクのために使用する。コンテナによって何らかの外部操作が実行されると、コンテナ内のOSソフトウェアが1組のシステム・コールを生じさせる。それらのシステム・コールの一部がミューテーション・イベントである。
【0025】
別の例として、システム・スキャンでは、コンテナが定期的にスキャンされ、システムはスキャンされたファイルとプロセスのサマリを保存する。スキャン間で何らかの相違がある場合、コンテナは変化させられたファイル/プロセスを有する。
【0026】
一実施形態では、ブロック220はブロック220Aを含み得る。
【0027】
ブロック220Aでは、実際のミューテーション・イベントのそれぞれの、プロセス識別子(ID)とプロセス・グループ識別子(ID)とを取得する。
【0028】
ブロック230で、実際のミューテーション・イベントを実行時刻順にソートする。
【0029】
ブロック240で、ソートされたミューテーション・イベントのそれぞれを処理する。
【0030】
一実施形態では、ブロック240はブロック240Aから240Gのうちの1つまたは複数を含み得る。
【0031】
ブロック240Aで、(i)現在処理されているミューテーション・イベントのプロセスIDとプロセス・グループIDとが等しいか否か、および、(ii)現在処理されているミューテーション・イベントがプロセス実行であるか否かを判定する。((i)と(ii)の両方について)そうである場合、ブロック240Bに進む。それ以外の場合(一方または両方が真でない場合)、ブロック240Cに進む。
【0032】
ブロック240Bで、現在処理されているミューテーション・イベントを外部操作によるエントリ・プロセス(または略して「エントリ・プロセス」)として指定する。
【0033】
ブロック240Cで、現在処理されているミューテーション・イベントを、(i)現在処理されているミューテーション・イベントより前に発生し、(ii)現在処理されているミューテーション・イベントと同じプロセス・グループIDを有するエントリ・プロセスによって生成されているものとして指定する。
【0034】
ブロック240Dで、ブロック240Bおよび240Cから、エントリ・プロセスのリストと、ミューテーション・イベントとエントリ・プロセスとのマッピングとを収集する。
【0035】
ブロック240Eで、(ブロック240Dで収集された)エントリ・プロセスのリスト内のエントリ・プロセスのいずれかと、(ブロック210で準備された)外部操作と最初のミューテーション・イベントとのマッピングとの一致があるか否かを判定する。一致がある場合はブロック240Gに進む。それ以外の場合は、ブロック240Fに進む。
【0036】
ブロック240Gで、少なくとも1つの外部操作を1つまたは複数のプロセスに対応するものとして出力する。kubectl操作に関する実施形態では、出力は、kubectl [command][TYPE] [NAME] -o <output_format>の形式とすることができる。
【0037】
ブロック240Fで、少なくとも1つの外部操作を未知の操作として報告する。また、一実施形態では、ブロック240Fは、ブロック210で取得したマッピングを改良するために何らかの追加の学習(準備)をトリガすることをさらに含むことができる。
【0038】
ブロック250で、ブロック240Gの出力(すなわち、少なくとも1つの外部操作と1つまたは複数の対応するプロセスとの対応関係)に基づいて、(可変コンテナから)不変コンテナを形成し、その不変コンテナをクラウド環境にデプロイする。したがって、ブロック250は、1つまたは複数の可変コンテナを、少なくとも前にミューテーションを生じさせたミューテーション・イベントに関して、不変コンテナに変換することができる。一実施形態では、コンテナは少なくとも1つの外部操作を受けたときに不変であるように再編成される(書き直される)。例えば、残りのコンテナ・コードがそれらの外部操作に反応しなくなり(影響されなくなり)、したがってそれらの外部コマンドに関して不変であるように、コンテナ・コードを書き直すかまたは一部のコードを削除することができる。また、何らかの外部操作の操作者を見つけるのは通常、容易であるため、ミューテーションの根本的原因を特定/除去するためにもこのシステムを使用することができる。外部操作は、対応するAPIサーバにログ記録されることになり、例えば「kubectl exec」コマンドがKubernetes(R)APIサーバのログにログ記録される。したがって、ミューテーションが検出され、外部操作が特定された後は、システムはそのミューテーションを生じさせる人物を発見/報告することもできる。
【0039】
図4は、本発明の一実施形態による、外部操作と最初のミューテーション・イベントとの例示のマッピング400を示すブロック図である。マッピング400は、
図2のブロック210の一実施形態に対応する。
【0040】
図4において、マッピング400の列401から列410の列表示は以下の通りである。
401:ミューテーション・タイプ
402:ファイル名
403:プロセス・コマンド
404:(未使用列)
405:プロセスID
406:プロセス・グループID
407:プロセス・セッションID
408:ユーザ名
409:ユーザID
410:システム・コール・タイプ
【0041】
図5は、本発明の一実施形態による例示のテーブル500を示すブロック図である。テーブル500は、
図2のブロック240Cの一実施形態に対応する。
【0042】
図5において、テーブル500の列501から列510の列表示は以下の通りである。
501:ミューテーション・タイプ
502:ファイル名
503:プロセス・コマンド
504:(未使用列)
505:プロセスID
506:プロセス・グループID
507:プロセス・セッションID
508:ユーザ名
509:ユーザID
510:システム・コール・タイプ
【0043】
図6は、本発明の一実施形態による例示のテーブル600を示すブロック図である。テーブル600は、
図2のブロック240Bの一実施形態に対応する。
【0044】
図6において、テーブル600の列601から列607の列表示は以下の通りである。
601:実行時刻
602:エントリ・プロセス(未使用列)
603:Kubernetes(R)ネームスペース名
604:Kubernetes(R)ポッド名
605:プロセス・コマンド
606:ミューテーション・タイプ
607:ミューテーション操作タイプ
【0045】
このテーブルは、4つのエントリ・プロセス、すなわち、(1)test -d、(2)tar -xf --C、(3)sh sample_data_collection.sh、および(4)ls -1を含む。この4つのエントリ・プロセスは、
図7の3つの外部操作の結果によるものである。
【0046】
図7は、本発明の一実施形態による例示のテーブル700を示すブロック図である。テーブル700は、
図2のブロック240Gの一実施形態に対応する。
【0047】
テーブル700は、3つのkubectlコマンド、すなわち、(1)kubectl cp -n mutation-advisor sample_data_collection.shpython-test-1:./、(2)kubectl exec -it -nmutation-advisor python-test-1 sh sample_data_collection.sh、および(3)kubectl exec -it -n mutation-advisor python-test-1 - ls -lを含む。
【0048】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載の教示の実装はクラウド・コンピューティング環境には限定されないことを理解されたい。逆に、本発明の実施形態は、現在知られているかまたは今後開発される任意の他の種類のコンピューティング環境とともに実装可能である。
【0049】
クラウド・コンピューティングは、最小限の管理労力またはサービス・プロバイダとの相互連絡で迅速にプロビジョニングすることができ、解放することができる、構成可能コンピューティング資源(例えば、ネットワーク、ネットワーク回線容量、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配布のモデルである。このクラウド・モデルは、少なくとも5つの特徴と、少なくとも3つのサービス・モデルと、少なくとも4つのデプロイメント・モデルとを含み得る。
【0050】
特徴は以下の通りである。
【0051】
オンデマンド・セルフサービス:クラウド消費者は、サービス・プロバイダとの間で人間の介在を必要とせずに一方的に、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能をプロビジョニングすることができる。
【0052】
広いネットワーク・アクセス:機能は、ネットワークを介して利用可能であり、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば携帯電話、ラップトップ、およびPDA)による使用を促進する標準機構を介してアクセスすることができる。
【0053】
資源プール:マルチテナント・モデルを使用して複数の消費者に対応するために、プロバイダのコンピューティング資源がプールされ、需要に応じて、異なる物理資源および仮想資源が動的に割り当てられ、再割り当てされる。消費者は一般に、提供される資源の厳密な場所について管理することができないかまたは知らないが、より高い抽象化レベルの場所(例えば、国、州、またはデータセンター)を指定することが可能な場合があるという点で、位置独立感がある。
【0054】
迅速な伸縮性:迅速にかつ伸縮性をもって、場合によっては自動的に機能をプロビジョニングして、迅速にスケールアウトすることができ、また、迅速に機能を解放して迅速にスケールインすることができる。消費者にとっては、プロビジョニングのために利用可能な機能はしばしば無限であるように見え、いつでも好きなだけ購入することができる。
【0055】
従量制サービス:クラウド・システムが、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に応じて適切な何らかの抽象化レベルの計量機能を利用することによって、資源利用を自動的に制御し、最適化する。資源使用量を監視、制御および報告することができ、利用されたサービスの透明性をプロバイダと消費者の両方に与えることができる。
【0056】
サービス・モデルは以下の通りである。
【0057】
ソフトウェア・アズ・ア・サービス(Software as a Service(SaaS)):消費者に提供される機能は、クラウド・インフラストラクチャ上で稼働するプロバイダのアプリケーションを使用することである。アプリケーションには、ウェブ・ブラウザなどのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である(例えばウェブ・ベースのEメール)。消費者は、限られたユーザ固有アプリケーション構成設定の考えられる例外を除き、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個別のアプリケーション機能まで含めて、基礎にあるクラウド・インフラストラクチャを管理も制御もしない。
【0058】
プラットフォーム・アズ・ア・サービス(Platform as a Service(PaaS)):消費者に提供される機能は、クラウド・インフラストラクチャ上に、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者作成または取得アプリケーションをデプロイすることである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基礎にあるクラウド・インフラストラクチャを管理も制御もしないが、デプロイされたアプリケーションと、場合によってはアプリケーション・ホスティング環境構成とを制御することができる。
【0059】
インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service(IaaS)):消費者に提供される機能は、処理、ストレージ、ネットワークおよびその他の基本的コンピューティング資源をプロビジョニングすることであり、その際、消費者は、オペレーティング・システムとアプリケーションとを含み得る任意のソフトウェアをデプロイし、実行することができる。消費者は、基礎にあるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システムと、ストレージと、デプロイされたアプリケーションとを制御することができ、場合によっては選択されたネットワーキング・コンポーネント(例えばホスト・ファイアウォール)の限定的な制御を行うことができる。
【0060】
デプロイメント・モデルは以下の通りである。
【0061】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。組織または第三者によって管理可能であり、オンプレミスまたはオフプレミスに存在可能である。
【0062】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、いくつかの組織によって共用され、共通の関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンス事項)を有する特定のコミュニティをサポートする。組織または第三者によって管理可能であり、オンプレミスまたはオフプレミスに存在可能である。
【0063】
パブリック・クラウド:このクラウド・インフラストラクチャは、公衆または大規模業界団体が利用することができ、クラウド・サービスを販売する組織によって所有される。
【0064】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、独自の実体のままであるが、データおよびアプリケーション可搬性を可能にする標準化技術または専有技術(例えば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって結合された、2つ以上のクラウド(プライベート、コミュニティまたはパブリック)の複合体である。
【0065】
クラウド・コンピューティング環境は、ステートレス性、疎結合性、モジュール性、および意味的相互運用性に焦点を合わせたサービス指向型である。クラウド・コンピューティングの核心にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0066】
次に
図8を参照すると、例示のクラウド・コンピューティング環境850が図示されている。図のように、クラウド・コンピューティング環境850は、例えばパーソナル・デジタル・アシスタント(PDA)または携帯電話854A、デスクトップ・コンピュータ854B、ラップトップ・コンピュータ854C、または自動車コンピュータ・システム854Nあるいはこれらの組合せなど、クラウド消費者によって使用されるローカル・コンピューティング・デバイスが通信することができる、1つまたは複数のクラウド・コンピューティング・ノード810を含む。ノード810は互いに通信することができる。ノードは、上述のプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウドまたはハイブリッド・クラウドあるいはこれらの組合せなどの1つまたは複数のネットワークにおいて物理的または仮想的にグループ化(図示せず)されてもよい。これによって、クラウド・コンピューティング環境850は、インフラストラクチャ、プラットフォーム、またはソフトウェアあるいはこれらの組合せを、クラウド消費者がそのためにローカル・コンピューティング・デバイス上で資源を維持する必要がないサービスとして提供することができる。なお、
図8に示すコンピューティング・デバイス854Aないし854Nの種類は、例示を意図したものに過ぎず、コンピューティング・ノード810およびクラウド・コンピューティング環境850は、(例えばウェブ・ブラウザを使用して)任意の種類のネットワーク接続またはネットワーク・アドレス指定可能接続あるいはその組合せを介して、任意の種類のコンピュータ化デバイスと通信することができるものと理解される。
【0067】
次に、
図9を参照すると、クラウド・コンピューティング環境850(
図8)によって提供される1組の機能抽象化層が示されている。
図9に示すコンポーネント、層および機能は、例示のみを意図したものであり、本発明の実施形態はこれらには限定されないことを前もって理解されたい。図のように、以下の層および対応する機能が提供される。
【0068】
ハードウェアおよびソフトウェア層960は、ハードウェア・コンポーネントとソフトウェア・コンポーネントとを含む。ハードウェア・コンポーネントの例には、メインフレーム961、RISC(縮小命令セット・コンピュータ(Reduced Instruction Set Computer))アーキテクチャ・ベースのサーバ962、サーバ963、ブレード・サーバ964、ストレージ・デバイス965、およびネットワークおよびネットワーキング・コンポーネント966が含まれる。実施形態によっては、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア967およびデータベース・ソフトウェア968を含む。
【0069】
仮想化層970は、以下のような仮想実体の例を与えることができる抽象化層を提供する。すなわち、仮想サーバ971と、仮想ストレージ972と、仮想プライベート・ネットワークを含む仮想ネットワーク973と、仮想アプリケーションおよびオペレーティング・システム974と、仮想クライアント975である。
【0070】
一例では、管理層980は、以下に記載の機能を提供することができる。資源プロビジョニング981は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング資源およびその他の資源の動的調達を行う。メータリングおよびプライシング982は、クラウド・コンピューティング環境内で資源が利用されるときのコスト追跡と、これらの資源の消費に対する対価の請求またはインボイス処理とを行う。一例では、これらの資源にはアプリケーション・ソフトウェア・ライセンスが含まれてもよい。セキュリティは、クラウド消費者およびタスクのための本人検証と、データおよびその他の資源の保護とを行う。ユーザ・ポータル983は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理984は、必要なサービス・レベルが満たされるようにクラウド・コンピューティング資源割り当ておよび管理を行う。サービス・レベル・アグリーメント(Service Level Agreement(SLA))計画および履行985は、SLAに従って将来の要求が予想されるクラウド・コンピューティング資源のための事前取り決めおよび調達を行う。
【0071】
ワークロード層990は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロードおよび機能の例には、マッピングおよびナビゲーション991、ソフトウェア開発およびライフサイクル管理992、仮想教室教育配信993、データ分析処理994、トランザクション処理995、およびコンテナとミューテーションとに対する外部操作対応関係996が含まれる。
【0072】
本発明は、任意の可能な統合の技術詳細度のシステム、方法、またはコンピュータ・プログラム製品あるいはこれらの組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0073】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持し、記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学式ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のものが含まれる。すなわち、可搬コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、可搬コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピィ・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体とは、電波またはその他の自由に伝播する電磁波、導波路またはその他の伝送媒体を伝播する電磁波(例えば光ファイバ・ケーブルを通る光パルス)、またはワイヤを介して伝送される電気信号などの、一過性の信号自体であると解釈すべきではない。
【0074】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワークあるいはこれらの組合せを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、交換機、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを含み得る。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体への記憶のために転送する。
【0075】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、または、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上でまたは一部がユーザのコンピュータ上で、または一部がユーザのコンピュータ上で一部がリモート・コンピュータ上で、または全体がリモート・コンピュータまたはリモート・サーバ上で実行されてもよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続は(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行ってもよい。実施形態によっては、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を使用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0076】
本発明の態様について、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら本明細書で説明している。フローチャート図またはブロック図あるいはその両方の図の各ブロックおよび、フローチャート図またはブロック図あるいはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることがわかるであろう。
【0077】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている機能/動作を実装する手段を形成するようなマシンを実現するように、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサに供給することができる。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ、プログラマブル・データ処理装置、またはその他のデバイスあるいはこれらの組合せに対して特定の方式で機能するように指示することができるコンピュータ可読記憶媒体に記憶することもできる。
【0078】
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で実行される命令がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている機能/動作を実装するように、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップが実行されてコンピュータ実装プロセスを実現するようにするために、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードすることもできる。
【0079】
本明細書において本発明の「一実施形態」または「実施形態」と言う場合、およびこれらのその他の変形に言及する場合、その実施形態に関連して記載されている特定の機構、構造体、特徴などが、本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体の様々な箇所に現れる「一実施形態で」または「実施形態で」という語句およびその他の変形の記載は、必ずしもすべてが同じ実施形態を指しているとは限らない。
【0080】
また、例えば、「A/B」、「AまたはBあるいはその両方」、および「AとBのうちの少なくとも1つ」という場合の「/」、「または...あるいはその両方」、および「...のうちの少なくとも1つ」のいずれかの使用は、最初に記載されている選択肢(A)のみの選択、または2番目に記載されている選択肢(B)のみの選択、または両方の選択肢(AとB)の選択を包含することが意図されていることを理解されたい。他の例として、「A、BまたはCあるいはこれらの組合せ」および「AとBとCのうちの少なくとも1つ」という場合、このような語句は、最初に記載されている選択肢(A)のみの選択、または2番目に記載されている選択肢(B)のみの選択、または3番目に記載されている選択肢(C)のみの選択、または最初に記載されている選択肢と2番目に記載されている選択肢(AとB)のみの選択、または最初に記載されている選択肢と3番目に記載されている選択肢(AとC)のみの選択、または2番目に記載されている選択肢と3番目に記載されている選択肢(BとC)のみの選択、または3つの選択肢(AとBとC)すべての選択を包含することが意図されている。このことは、記載されている数の項目に拡大適用可能である。
【0081】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能および動作を示す。これに関連して、フローチャートまたはブロック図の各ブロックは、規定されている論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表すことがある。一部の別の実装形態では、ブロックに記載されている機能は、図に記載されている順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、関与する機能に応じて、実際には、1つのステップとして行われてもよく、並行して、実質的に並行して、部分的または完全に時間的に重なり合って実行されてもよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の図の各ブロック、およびブロック図またはフローチャート図あるいはその両方の図のブロックの組合せは、規定されている機能または動作を実行する専用ハードウェア・ベースのシステムによって実装可能であるか、または専用ハードウェアとコンピュータ命令との組合せを実施することができることもわかるであろう。
【0082】
システムおよび方法の好ましい実施形態(例示を意図しており、限定的であることを意図していない)について説明したが、上述の教示に照らして当業者によって修正および変形が加えられることが可能であることに留意されたい。したがって、本開示の特定の実施形態に、添付の特許請求の範囲によって概説されている本発明の範囲内に含まれる変更が加えられてもよいことを理解されたい。以上のように本発明の態様について、特許法によって特に要求されている詳細とともに説明したが、特許請求され、特許証により保護されることが求められる対象は、添付の特許請求の範囲に記載されている。