(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-07-31
(45)【発行日】2025-08-08
(54)【発明の名称】ソフトウェア・コンテナのための実行時間環境決定
(51)【国際特許分類】
G06F 9/50 20060101AFI20250801BHJP
【FI】
G06F9/50 150A
(21)【出願番号】P 2023503107
(86)(22)【出願日】2021-07-21
(86)【国際出願番号】 IB2021056569
(87)【国際公開番号】W WO2022018646
(87)【国際公開日】2022-01-27
【審査請求日】2023-12-12
(32)【優先日】2020-07-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】コチュラ、ナディヤ
(72)【発明者】
【氏名】スト、チベリュー
(72)【発明者】
【氏名】ルーガー、エリック
(72)【発明者】
【氏名】スゴッバ、ニコロ
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開平09-311782(JP,A)
【文献】特開2020-035472(JP,A)
【文献】特表2015-531091(JP,A)
【文献】米国特許出願公開第2020/0117576(US,A1)
【文献】米国特許出願公開第2015/0341428(US,A1)
【文献】米国特許出願公開第2019/0310935(US,A1)
【文献】MAJEED, Ayesha Abdul et al,Performance Estimation of Container-Based Cloud-to-Fog Offloading,[online],v1,米国,arXiv,2019年09月11日,pages:1-6,[令和7年1月29日検索],インターネット:<URL:https://arxiv.org/abs/1909.04945>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
(57)【特許請求の範囲】
【請求項1】
ソフトウェア・コンテナの静的パラメータを識別することであって、前記静的パラメータが前記ソフトウェア・コンテナ自体のメタデータに関連する、前記静的パラメータを識別することと、
第1の機械学習モデルを使用して
前記ソフトウェア・コンテナの静的パラメータを分析して実行時間環境を最初に選択し、該選択された実行時間環境に前記ソフトウェア・コンテナを割り当てることと、
実行時間に前記ソフトウェア・コンテナを分析することによって前記ソフトウェア・コンテナの実行時間パラメータを識別することであって、前記実行時間パラメータが、前記ソフトウェア・コンテナによって実行時間中に必要とされる動作に関連する、前記実行時間パラメータを識別することと、
第2の機械学習モデルを使用して、前記選択された実行時間環境は前記実行時間パラメータにマッチすると決定することに応答して、前記選択された実行時間環境において前記ソフトウェア・コンテナを実行し続けることと、
前記第2の機械学習モデルを使用して、前記選択された実行時間環境は前記実行時間パラメータにマッチしないと決定することに応答して、前記静的パラメータと前記実行時間パラメータとの両方にマッチする異なる実行時間環境において前記ソフトウェア・コンテナを実行することと
を含む、コンピュータ実施方法。
【請求項2】
実行時間中に前記ソフトウェア・コンテナの性能をモニタすることと、
前記性能に基づいて前記第1の機械学習モデルを更新することと、
前記性能に基づいて前記第2の機械学習モデルを更新することと
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記性能が、少なくとも中央処理装置(CPU)使用量、メモリ使用量、および入力/出力(I/O)メトリックについてモニタされる、請求項2に記載のコンピュータ実施方法。
【請求項4】
前記静的パラメータが、予備の静的パラメータであり、前記コンピュータ実施方法がさらに、
実行時間に前記ソフトウェア・コンテナを分析することによって前記ソフトウェア・コンテナの実時間静的パラメータを識別することと、
前記第2の機械学習モデルを使用して、前記選択された実行時間環境は前記実時間静的パラメータと前記実行時間パラメータとの両方にマッチすると決定することに応答して、
前記選択された実行時間環境において前記ソフトウェア・コンテナを実行し続けることと、
前記第2の機械学習モデルを使用して、前記選択された実行時間環境は前記実時間静的パラメータおよび前記実行時間パラメータにマッチしないと決定することに応答して、前記実時間静的パラメータと前記実行時間パラメータとの両方にマッチする前記異なる実行時間環境において前記ソフトウェア・コンテナを実行することと
を含む、請求項1ないし3のいずれか一項に記載のコンピュータ実施方法。
【請求項5】
前記実行時間中に前記ソフトウェア・コンテナを分析することによって前記実時間静的パラメータまたは前記実行時間パラメータのいずれかの1つまたは複数の更新情報を、所定のスケジュールに従って前記実行時間パラメータを前記識別することの後に、識別することと、
前記第2の機械学習モデルを使用して、前記更新情報により、前記選択された実行時間環境は前記実時間静的パラメータと前記実行時間パラメータとの両方にマッチすると決定することに応答して、前記選択された実行時間環境において前記ソフトウェア・コンテナを実行することと、
前記第2の機械学習モデルを使用して、前記更新情報により、前記選択された実行時間環境は前記実時間静的パラメータおよび前記実行時間パラメータにマッチしないと決定することに応答して、前記異なる実行時間環境において前記ソフトウェア・コンテナを実行することと
をさらに含む、請求項4に記載のコンピュータ実施方法。
【請求項6】
前記1つまたは複数の更新情報の数量または重大度は閾値未満であると決定することに応答して、前記所定のスケジュールに従って前記実行時間中に前記ソフトウェア・コンテナのその後の分析を終了することをさらに含む、請求項5に記載のコンピュータ実施方法。
【請求項7】
前記実行時間パラメータは、前記ソフトウェア・コンテナが必要とする動作に関連する、請求項1ないし6のいずれか一項に記載のコンピュータ実施方法。
【請求項8】
前記静的パラメータが、
ソフトウェア・コンテナのタイプと、
前記ソフトウェア・コンテナのテンプレートと、
前記ソフトウェア・コンテナのカテゴリと
を含む、請求項1ないし7のいずれか一項に記載のコンピュータ実施方法。
【請求項9】
前記実行時間パラメータが、
1時間当たりの負荷バランシング動作の数と、
自動ロールバックの数と、
1時間当たりの自動的ビン・パッキング動作の数と、
1時間当たりの自己回復アクションの数と
を含む、請求項1ないし8のいずれか一項に記載のコンピュータ実施方法。
【請求項10】
プロセッサと、
前記プロセッサと通信するメモリであって、
ソフトウェア・コンテナの静的パラメータを識別することであって、前記静的パラメータが前記ソフトウェア・コンテナ自体のメタデータに関連する、前記静的パラメータを識別すること、
第1の機械学習モデルを使用して
前記ソフトウェア・コンテナの静的パラメータを分析して実行時間環境を最初に選択し、該選択された実行時間環境に前記ソフトウェア・コンテナを割り当てることと、
実行時間に前記ソフトウェア・コンテナを分析することによって前記ソフトウェア・コンテナの実行時間パラメータを識別することであって、前記実行時間パラメータが、前記ソフトウェア・コンテナによって実行時間中に必要とされる動作に関連する、前記実行時間パラメータを識別すること、
第2の機械学習モデルを使用して、前記選択された実行時間環境は前記実行時間パラメータにマッチすると決定することに応答して、前記選択された実行時間環境において前記ソフトウェア・コンテナを実行し続けること、および、
前記第2の機械学習モデルを使用して、前記選択された実行時間環境は前記実行時間パラメータにマッチしないと決定することに応答して、前記静的パラメータと前記実行時間パラメータとの両方にマッチする異なる実行時間環境において前記ソフトウェア・コンテナを実行すること
を、前記プロセッサによって実行されるとき、前記プロセッサに行わせる命令を含む前記メモリと
を備える、システム。
【請求項11】
前記メモリが、前記プロセッサによって実行されるときに、
実行時間中に前記ソフトウェア・コンテナの性能をモニタすることと、
前記性能に基づいて前記第1の機械学習モデルを更新することと、
前記性能に基づいて前記第2の機械学習モデルを更新することと
を前記プロセッサに行わせる追加命令を含む、請求項10に記載のシステム。
【請求項12】
前記性能が、少なくとも中央処理装置(CPU)使用量、メモリ使用量、および入力/出力(I/O)メトリックについてモニタされる、請求項11に記載のシステム。
【請求項13】
前記静的パラメータが、予備の静的パラメータであり、前記メモリが、
実行時間に前記ソフトウェア・コンテナを分析することによって前記ソフトウェア・コンテナの実時間静的パラメータを識別することと、
前記第2の機械学習モデルを使用して、前記選択された実行時間環境は前記実時間静的パラメータと前記実行時間パラメータとの両方にマッチすると決定することに応答して、
前記選択された実行時間環境において前記ソフトウェア・コンテナを実行し続けることと、
前記第2の機械学習モデルを使用して、前記選択された実行時間環境は前記実時間静的パラメータおよび前記実行時間パラメータにマッチしないと決定することに応答して、前記実時間静的パラメータと前記実行時間パラメータとの両方にマッチする前記異なる実行時間環境において前記ソフトウェア・コンテナを実行することとを、前記プロセッサによって実行されるとき、前記プロセッサに行わせる追加命令を含む、請求項10ないし12のいずれ一項に記載のシステム。
【請求項14】
前記メモリが、
前記実行時間中に前記ソフトウェア・コンテナを分析することによって前記実時間静的パラメータまたは前記実行時間パラメータのいずれかの1つまたは複数の更新情報を、所定のスケジュールに従って前記実行時間パラメータを前記識別することの後に、識別することと、
第2の機械学習モデルを使用して、前記更新情報により、前記選択された実行時間環境は前記実時間静的パラメータと前記実行時間パラメータとの両方にマッチすると決定することに応答して、前記選択された実行時間環境において前記ソフトウェア・コンテナを実行することと、
第2の機械学習モデルを使用して、前記更新情報により、前記選択された実行時間環境は前記実時間静的パラメータおよび前記実行時間パラメータにマッチしないと決定することに応答して、前記異なる実行時間環境において前記ソフトウェア・コンテナを実行することと
を、前記プロセッサによって実行されるとき、前記プロセッサに行わせる、追加命令を含む、請求項13に記載のシステム。
【請求項15】
前記メモリが、前記プロセッサによって実行されるとき、前記1つまたは複数の更新情報の数量または重大度は閾値未満であると決定することに応答して前記所定のスケジュールに従って前記実行時間中に前記ソフトウェア・コンテナのその後の分析を前記プロセッサに終了させる、追加命令を含む、請求項14に記載のシステム。
【請求項16】
コンピュータ・プログラムであって、コンピュータ可読記憶媒体を備えるコンピュータに、
ソフトウェア・コンテナの実行時間環境の静的パラメータを識別することであって、
前記静的パラメータが前記ソフトウェア・コンテナ自体のメタデータに関連する、前記静的パラメータを識別することと、
第1の機械学習モデルを使用して
前記ソフトウェア・コンテナの静的パラメータを分析して実行時間環境を最初に選択し、該選択された実行時間環境に前記ソフトウェア・コンテナを割り当てることと、
実行時間に前記ソフトウェア・コンテナを分析することによって前記ソフトウェア・コンテナの実行時間パラメータを識別することであって、前記実行時間パラメータが、前記ソフトウェア・コンテナによって実行時間中に必要とされる動作に関連する、前記実行時間パラメータを識別することと、
第2の機械学習モデルを使用して、前記選択された実行時間環境は前記実行時間パラメータにマッチすると決定することに応答して、前記選択された実行時間環境において前記ソフトウェア・コンテナを実行し続けることと、
第2の機械学習モデルを使用して、前記選択された実行時間環境は前記実行時間パラメータにマッチしないと決定することに応答して、前記静的パラメータと前記実行時間パラメータとの両方にマッチする異なる実行時間環境において前記ソフトウェア・コンテナを実行することと
を行わせる、コンピュータ・プログラム。
【請求項17】
前記コンピュータ可読記憶媒体が、
前記コンピュータによって実行されるとき、前記コンピュータに
実行時間中に前記ソフトウェア・コンテナの性能をモニタすることと、
前記性能に基づいて前記第1の機械学習モデルを更新することと、
前記性能に基づいて前記第2の機械学習モデルを更新することと
を行わせる追加プログラム命令を含む、請求項16に記載のコンピュータ・プログラム。
【請求項18】
前記性能が、少なくとも中央処理装置(CPU)使用量、メモリ使用量、および入力/出力(I/O)メトリックについてモニタされる、請求項17に記載のコンピュータ・プログラム。
【請求項19】
前記静的パラメータが、予備の静的パラメータであり、前記コンピュータ可読記憶媒体が、
前記実行時間より前に前記ソフトウェア・コンテナを分析することによって前記ソフトウェア・コンテナの実時間静的パラメータを識別することと、
第2の機械学習モデルを使用して、前記選択された実行時間環境は前記実時間静的パラメータと前記実行時間パラメータとの両方にマッチすると決定することに応答して、前記選択された実行時間環境において前記ソフトウェア・コンテナを実行し続けることと、
第2の機械学習モデルを使用して、前記選択された実行時間環境は前記実時間静的パラメータおよび前記実行時間パラメータにマッチしないと決定することに応答して、前記異なる実行時間環境において前記ソフトウェア・コンテナを実行することと
を、前記コンピュータによって実行されるとき、前記コンピュータに行わせる追加プログラム命令を含む、請求項16ないし18のいずれか一項に記載のコンピュータ・プログラム。
【請求項20】
前記コンピュータ可読記憶媒体が、
前記実行時間中に前記ソフトウェア・コンテナを分析することによって前記実時間静的パラメータまたは前記実行時間パラメータのいずれかの1つまたは複数の更新情報を、前記実行時間パラメータを前記識別することの後におよび所定のスケジュールに従って、識別することと、
第2の機械学習モデルを使用して、前記更新情報により、前記選択された実行時間環境は前記実時間静的パラメータと前記実行時間パラメータとの両方にマッチすると決定することに応答して、前記選択された実行時間環境において前記ソフトウェア・コンテナを実行し続けることと、
第2の機械学習モデルを使用して、前記更新情報により、前記選択された実行時間環境は前記実時間静的パラメータおよび前記実行時間パラメータにマッチしないと決定することに応答して、前記異なる実行時間環境において前記ソフトウェア・コンテナを実行することと
を、前記コンピュータによって実行されるとき、前記コンピュータに行わせる追加プログラム命令を含む、請求項19に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【背景技術】
【0001】
ソフトウェアを実行することができるシステムを開発することの一部には、ソフトウェアが最終的にそこで実行することになる実行時間環境を提供するようにシステムを構成することが含まれる。実行時間環境は、アプリケーションを実行するために必要とされることになる資源のすべてを有するように定義されるべきであり、実行時間環境はまた、アプリケーションのために必要な何らかの基本機能性を提供し得る。たとえば、ソフトウェア言語およびアプリケーションに応じて、実行時間環境は、たとえば、ガーベッジ収集、スタックおよびヒープの管理などの機能性を提供し得る。さらに、実行時間環境は、たとえば、負荷バランシング、ビン・パッキング、自己回復アクションなどの機能性を実行し得る。
【発明の概要】
【0002】
本開示の態様は、ソフトウェア・コンテナの実行時間環境の要件を決定することに関する方法、システム、およびコンピュータ・プログラム製品に関する。たとえば、方法は、ソフトウェア・コンテナの静的パラメータを識別することを含む。静的パラメータは、ソフトウェア・コンテナ自体のメタデータに関する。方法はさらに、第1の機械学習モデルを使用して静的パラメータに基づいてソフトウェア・コンテナを選択された実行時間環境に割り当てることを含む。方法はさらに、ソフトウェア・コンテナの実行時間パラメータを識別することを含む。実行時間パラメータは、第2の機械学習モデルに基づいてソフトウェア・コンテナの実行時間より前にソフトウェア・コンテナを分析することによって識別される。実行時間パラメータは、ソフトウェア・コンテナが実行時間中に必要とすることになる動作に関する。方法はさらに、選択された実行時間環境が実行時間パラメータにマッチするかどうかを決定することと、選択された実行時間環境が実行時間パラメータにマッチするときに選択された実行時間環境においてソフトウェア・コンテナを実行すること、または選択された実行時間環境が実行時間パラメータにマッチしないときに静的パラメータと実行時間パラメータとの両方にマッチする異なる実行時間環境においてソフトウェア・コンテナを実行することのいずれかとを含む。前述の方法を実行するように構成されたシステムおよびコンピュータ製品もまた、開示される。
【0003】
前述の概要は、本開示のそれぞれの示された実施形態またはあらゆる実装形態を説明することは意図されていない。
【0004】
本願に含まれる図面は、本明細書に組み込まれ、その一部を形成する。それらは、本開示の実施形態を解説し、記述と共に、本開示の原理を説明する働きをする。図面は、ある種の実施形態の単なる例示であり、本開示を制限しない。
【図面の簡単な説明】
【0005】
【
図1】コントローラが複数の機械学習モデルに基づいて様々な実行時間環境に標識ソフトウェア・コンテナを割り当て得る例示的システムの概念図を示す。
【
図2】
図1のコントローラの例示的構成要素の概念的箱図表を示す。
【
図3】それによって
図1のコントローラがソフトウェア・コンテナを複数の実行時間環境のうちの1つに割り当て得る、例示的流れ図を示す。
【
図4】再生速度が識別され得るクラウド・コンピューティング環境の概略図である。
【
図5】そこにおいて再生速度が識別され得るクラウド・コンピューティング環境の抽象化モデル層の図である。
【発明を実施するための形態】
【0006】
本発明は、様々な修正形態および代替形態を受け入れるが、その詳細は、図面に例として示されており、詳述されることになる。しかしながら、その意図は、記載された特定の実施形態に発明を制限することではない、ということが理解されるべきである。むしろ、その意図するものは、本発明の思想および範囲内にあるすべての修正形態、同等物、および代替を包含することである。
【0007】
本開示の態様は、ソフトウェア・コンテナを実行時間環境に割り当てることに関するが、本開示のより特定の態様は、ソフトウェア・コンテナの静的パラメータを分析するように第1の機械学習モデルを設定することと、ソフトウェア・コンテナを実行時間環境に割り当てることを目的としてソフトウェア・コンテナの実行時間パラメータを分析してソフトウェア・コンテナの実行時間特性を決定するように第2の機械学習モデルを設定することとに関する。本開示は、そのような適用分野に必ずしも限定されないが、本開示の様々な態様は、この文脈を使用する様々な例の論考を通して理解され得る。
【0008】
現代コンピュータ解法において、たとえば、様々な仮想構成要素または現実構成要素あるいはその両方、モジュール、ワークロードなどが、異なる位置に移動され得るように、演算要素は、ますますモジュール式になっている。たとえば、現代クラウド環境において、非常に多数の顧客の非常に多数のソフトウェア・コンテナを実行するために利用可能である非常に多数の実行時間環境が存在し得る。いくつかのまたはすべての実行時間環境は、それらに利用可能な異なる種類の資源(たとえば、異なる量の処理能力、異なる量のメモリ、異なる入力/出力(IO)能力など)を有し得、各ソフトウェア・コンテナは、実行時間環境内で異なる機能(たとえば、異なる比率の負荷バランシング、異なる数のロールバック、異なる比率の自動ビン・パッキング、異なる比率の自己回復など)を実行するために、これらの資源の異なる組合せを必要とし得る。
【0009】
ソフトウェア・コンテナが、必要以上に堅牢である実行時間環境内にある(たとえば、ソフトウェア・コンテナが、毎時X個の負荷バランシング・アクションのみを必要とし、実行時間環境は、毎時2X個の負荷バランシング・アクションを提供することができる)場合、完全計算システム(単一コンピュータ内でもネットワーク、たとえば、クラウド・コンピューティング・ネットワーク、を横断しても)のいくつかの資源が、浪費されるまたは十分に活用されないあるいはその両方の可能性がある。同様に、ソフトウェア・コンテナが、全能力でソフトウェア・コンテナを実行するために必要とされる資源を提供しない実行時間環境内にある場合、そのとき、ソフトウェア・コンテナの性能は、損なわれ得る。現代システムは、異なる実行時間環境の間でソフトウェア・コンテナを定期的に移動して、資源を有効活用しないことまたは実行時間環境の不十分な資源により実行時間中にソフトウェア・コンテナを減速することあるいはその両方の回避を試み得る。
【0010】
たとえば、従来のシステムは、トレーニングされたオペレータがどの実行時間環境がソフトウェア・コンテナに最良適合するかどうかを推測するプロセスを用い得る。たとえば、トレーニングされたオペレータが、複数のソフトウェア・コンテナを複数の実行時間環境に割り当てていることがあり、ソフトウェア・コンテナをそのような実行時間環境にその中で割り当てて、類似のソフトウェア・コンテナのために前に機能したものを呼び出そうと試みることがある。オペレータまたはシステムあるいはその両方は、次いで、ソフトウェア・コンテナのニーズが実行時間環境の能力によくマッチしたように見えるまで、異なる環境に経時的に増分的にコンテナを移動して、コンテナが環境内においてどのように実行するかどうかをモニタし得る。しかしながら、このプロセスは、煩雑で、ユーザ・エラーを起こしやすく、それは、ソフトウェア・コンテナによくマッチした実行時間環境でソフトウェア・コンテナが実行するまで、比較的長い時間を要し得る。
【0011】
この目的で、従来のシステムは、ソフトウェア・コンテナおよび実行時間環境にマッチするように機械学習モデルを使用しようと試み得る。そのような機械学習モデルは、ソフトウェア・コンテナの特性、実行時間環境内のソフトウェア・コンテナのニーズ、および潜在的実行時間環境の間の相関関係を見つけようと試み得る。しかしながら、ソフトウェア・コンテナを区別する多数のファクタが存在し、さらに、実行時間環境を区別する多数の能力が存在する。そのようなものとして、単一の機械学習モデルを使用する従来のシステムは、真の相関関係を見つけるのが難しいことがある。
【0012】
本開示の態様は、従来のシステムのこれらの問題の低減または解消を目的としている。たとえば、本開示の態様は、実行時間環境を最初に選択するためにソフトウェア・コンテナの静的パラメータを分析する第1の機械学習モデルの使用と、実行時間環境において実行した後はソフトウェア・コンテナは移動されるべきかをチェックするために実行時間におけるソフトウェア・コンテナの実行時間パラメータを分析する第2の機械学習モデルの使用とに関する。これらの2つのモデルは、初期(および任意の後続の)実行時間環境におけるソフトウェア・コンテナの性能に基づいて、独立して更新され得る。個別のセットの変数を処理する2つの異なるセット内の2つの別個のモデルを使用することによって、本開示の態様は、比較的速い時間枠内のおよび比較的少ない反復を有する(たとえば、数時間の実行時間内の、および第4の、第5の、第6のなどの割り当てではなくて所与の実行時間環境への第1のまたは第2の割り当て内の)ソフトウェア・コンテナによく合わせた実行時間環境にソフトウェア・コンテナを割り当てる能力を向上させ得る。
【0013】
たとえば、
図1は、コントローラ110がソフトウェア・コンテナ120を複数の実行時間環境130A、130B(集合的に、「実行時間環境130」)のうちの1つに割り当てる、環境100を示す。コントローラ110は、計算デバイス、たとえば、プロセッサによって実行されるときにコントローラ110に後述の1つまたは複数の動作を実行させる命令を含むメモリに通信可能に連結されたプロセッサを含む
図2の計算システム200、を含み得る。
【0014】
ソフトウェア・コンテナ120は、コードおよび1セットの依存関係を含む自己完結型パッケージを含み得る。このコードおよびセットの依存関係は、本明細書に記載のようにソフトウェア・コンテナにマッチする複数の実行時間環境130でソフトウェア・コンテナ120が実行することを可能にし得る。いくつかの例において、ソフトウェア・コンテナ120は、遠隔コンピュータ・デバイスから受信され得るが、他の例では、ソフトウェア・コンテナ120は、コントローラ110に対してローカルでもよい。実行時間環境130のうちの1つで実行した後は、ソフトウェア・コンテナ120は、1人または複数のユーザによって、このようにアクセスされ得る。これらのユーザは、コントローラ110、ソフトウェア・コンテナ120、またはそれぞれの割り当てられた実行時間環境130、あるいはその組合せのうちの1つまたはそれぞれに対してローカルまたは遠隔でもよい。
【0015】
実行時間環境130は、1つまたは複数のソフトウェア・コンテナ120が実行され得るコンピュータ・システム内の構築された環境でもよい(たとえば、ソフトウェア・コンテナ120の実行モデルが、それぞれの実行時間環境130によって実装されるような)。たとえば、実行時間環境130は、分散されたシステムを横断する異なるノードに関連し得る。2つのみの実行時間環境130が、説明を目的として
図1に描かれているが、他の例では、コントローラ110は、異なる能力をそれぞれ定義するかなり多数の実行時間環境130を有し得る。
【0016】
実行時間環境130は、1つまたは複数の計算デバイス(たとえば、
図2の計算システム200に類似の計算デバイス)によって提供(たとえば、ホスト)され得る。そのような計算デバイスは、コントローラ110をホストするもしくはソフトウェア・コンテナ120を提供するまたはその両方を行う計算デバイスに統合され得る、あるいはそのような計算デバイスとは別々でもよい。環境100のそのような様々な計算デバイスは、ネットワーク140を介して通信し得る。ネットワーク140は、それを介してコンピューティング・メッセージが送信または受信あるいはその両方が行われ得るコンピューティング・ネットワークを含み得る。たとえば、ネットワーク140は、インターネット、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、ワイヤレスLAN(WLAN)等のワイヤレス・ネットワークなどを含み得る。ネットワーク140は、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含み得る。各計算/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワーク140からまたはネットワーク140を介してあるいはその両方でメッセージまたは命令あるいはその両方を受信し、メッセージまたは命令あるいはその両方をそれぞれの計算/処理デバイスのそれぞれのメモリまたはプロセッサに対して、記憶または実行等を行うために転送し得る。ネットワーク140は、説明を目的として
図1では単一エンティティとして描かれているが、他の例ではネットワーク140は、それを介してコントローラ110が本明細書に記載のように接続性を管理することができる、複数のプライベートまたはパブリックあるいはその両方のネットワークを含み得る。
【0017】
コントローラ110は、ソフトウェア・コンテナ120の静的パラメータを分析してソフトウェア・コンテナ120を実行時間環境130のうちの1つに割り当てることができる。これらの静的パラメータは、ソフトウェア・コンテナ自体のメタデータに関連し得る。いくつかの例において、これらの初期静的パラメータのうちのどれも、実行時間中にソフトウェア・コンテナ120によって必要とされる要件を直接定義しない可能性がある。静的パラメータのうちのいくつかは、ソフトウェア・コンテナ120の静的パラメータが経時的に変化することになることが起こりそうにないまたは不可能であるように、本質的にほぼ恒久的でもよい。
【0018】
たとえば、ソフトウェア・コンテナ120の静的パラメータは、ソフトウェア・コンテナ120が作成された日付および時刻のような変数、ソフトウェア・コンテナ120が最後にアクセスされた(たとえば、ユーザによってアクセスされた、または開発者によってアクセスされた)日付または時刻あるいはその両方、ソフトウェア・コンテナ120が最後に修正された(たとえば、ソフトウェア・コンテナ120のコードまたは依存関係あるいはその両方が変化したような)日付または時刻あるいはその両方、ソフトウェア・コンテナ120のサイズ(バイト単位)、ソフトウェア・コンテナ120のカテゴリまたはタイプ(たとえば、ソフトウェア・コンテナ120の機能性、ソフトウェア・コンテナ120の対象視聴者、ソフトウェア・コンテナ120がクラウド・ベースのアプリケーションであるかどうか、などに基づく)、ソフトウェア・コンテナ120のテンプレート、あるいは他のそのような変数を含み得る。
【0019】
コントローラ110が、これらの静的パラメータを識別した後は、コントローラ110は、ソフトウェア・コンテナ120を実行時間環境130のうちの1つに割り当てる。コントローラ110は、これらの静的パラメータと実行時間環境130との相関関係を決定してソフトウェア・コンテナ120を実行時間環境130のうちの1つに割り当てる第1の機械学習モデルを使用し得る。たとえば、コントローラ110は、ソフトウェア・コンテナ120が作成されたが静的パラメータによって反映された時間フレーム内に更新されなかった年に作成されたソフトウェア・コンテナ120のサイズは実行時間環境130Aにマッチすると決定することができる。そのようなものとして、コントローラ110は、ソフトウェア・コンテナ120を実行時間環境130Aに割り当て、実行時間環境130Aにおいてソフトウェア・コンテナ120が実行することを可能にするために必要とされるようなステップ(たとえば、ソフトウェア・コンテナ120が実行時間環境130Aにおいて実行し得る位置に遠隔位置からソフトウェア・コンテナ120を移動すること)を実行することができる。
【0020】
コントローラ110は、割り当てられた実行時間環境130Aにおいて実行時間中にソフトウェア・コンテナ120をモニタすることができる。コントローラ110は、ソフトウェア・コンテナの実行時間パラメータ120をモニタすることができる。これらの実行時間パラメータは、実行時間中にソフトウェア・コンテナ120が必要とする動作に関連し得る。たとえば、前述のように、実行時間パラメータは、ソフトウェア・コンテナ120の再起動ポリシ、1時間当たりの負荷バランシング・アクションの数(たとえば、ソフトウェア・コンテナ120の処理需要がソフトウェア・コンテナ120のホストによって割り当てられた処理より高く、保守、ハードウェア障害などのインスタンスをさらに考慮するまたはフィルタで除去する、あるいはその両方を行う回数を含む)、自動ロールバックの数、自動的ビン・パッキングアクションの数、自己回復アクションの数などに関連し得る。
【0021】
さらに、コントローラ110は、作成以後のソフトウェア・コンテナ120のアクセス(読み取り)の量またはソフトウェア・コンテナ120の修正(書き込み)アクションの数あるいはその両方、ソフトウェア・コンテナ120がリセットされて以来のアクセスまたは修正動作あるいはその両方の数などのパラメータについてモニタすることができる。
【0022】
コントローラ110は、いかに良くソフトウェア・コンテナ120が実行時間環境130Aとマッチするかどうかを決定し得る。コントローラ110は、実行時間環境130Aにおけるソフトウェア・コンテナ120の性能に基づいて、ソフトウェア・コンテナ120は実行時間環境130Aとマッチすると決定することができる。たとえば、コントローラ110は、中央処理装置の使用量、メモリ使用量、入力/出力使用量、ソフトウェア・コンテナ120が実行時間中にユーザによってアクセス/修正された回数、などをモニタすることができる。
【0023】
コントローラ110は、次いで、第2の機械学習モデルを使用して、このモニタされる性能は実行時間パラメータによって数値化されたソフトウェア・コンテナ120が実行時間環境130Aにマッチすることを示すか否かを決定する。この第2の機械学習モデルは、静的パラメータを含んでも含まなくてもあるいは反映してもしなくてもよい。いくつかの例において、第2の機械学習モデルは、いくつかの静的パラメータ、たとえば、ソフトウェア・コンテナ120のサイズ、を含み得る。他の例では、第2の機械学習モデルは、すべての静的パラメータならびに実行時間パラメータを含むことができ、既に割り当てられた(第1の機械学習モデルによって)実行時間環境130Aにおいてソフトウェア・コンテナ120の性能を使用して相関関係を見つけることによって、コントローラ110は、実行時間環境130Aはソフトウェア・コンテナ120にマッチするか否か、または実行時間環境130のうちのもう1つはソフトウェア・コンテナ120によりよくマッチし得るかどうか、あるいはその両方を迅速に識別する能力を向上させ得る。
【0024】
コントローラ110は、ソフトウェア・コンテナ120の性能が閾値を満たすとき、または割り当てられた実行時間環境130内で実行されるソフトウェア・コンテナ120の費用(たとえば、支払い請求可能な資源使用量、たとえば、メモリの使用量または処理能力)が閾値を満たすとき、あるいはその両方のときに、実行時間環境130のうちの1つはソフトウェア・コンテナ120にマッチすると決定することができる。
【0025】
コントローラ110は、性能に関するまたは変化するパラメータに関するあるいはその両方に関する増加したデータを集めて、経時的にソフトウェア・コンテナ120をモニタし続けることができる。たとえば、コントローラ110は、性能(または費用あるいはその両方)が閾値に満たないように、実行時間環境130A内のソフトウェア・コンテナ120の処理使用量またはメモリ使用量あるいはその両方が急増すると決定することができる。これに応答して、この異なる実行時間環境130において実行されるときに実行時間の性能(または費用あるいはその両方)が閾値を満たし得るように、コントローラ110は、実行時間環境130のうちのもう1つがソフトウェア・コンテナ120によりよくマッチするかどうかを分析することができる。コントローラ110が、このようにして異なる実行時間環境実行時間環境130Bは静的パラメータまたは実行時間パラメータあるいはその両方にマッチすることになると決定した場合、コントローラ110は、ソフトウェア・コンテナ120をこの異なる実行時間環境130Bにおいて代わりに実行させることができる。
【0026】
コントローラ110は、進行中の更新情報が閾値未満になるまで、ソフトウェア・コンテナ120をモニタし続けることができる。割り当てられた実行時間環境130内のソフトウェア・コンテナ120の使用量、費用、または性能あるいはその組合せが安定したものとして識別されるように、これは、閾値を下回る静的パラメータまたは実行時間パラメータあるいはその両方への変更を含み得る。これはまた、ソフトウェア・コンテナ120と実行時間環境130との間の任意の識別されたミスマッチが閾値未満であることを含み得る(たとえば、98%マッチでソフトウェア・コンテナ120が実行時間環境130にマッチしていると識別することは、モニタリングを継続する必要の閾値に満たないようになり得る)。コントローラ110が、進行中の更新情報は最小限であると決定したとき(ソフトウェア・コンテナ120および実行時間環境130が、前述のようによくマッチするように)、コントローラ110は、実行時間環境130内のソフトウェア・コンテナ120のモニタリングを終了し得る。
【0027】
コントローラ110は、第1の機械学習モデルと第2の機械学習モデルとの両方を独立して更新することができる。たとえば、コントローラ110は、その両方を、最終決定された静的パラメータまたは実行時間パラメータあるいはその両方、それぞれの割り当てられた実行時間環境130におけるソフトウェア・コンテナ120の完全な過去の性能、それぞれの割り当てられた実行時間環境130におけるソフトウェア・コンテナ120の完全な過去の費用、などに関する情報で更新することができる。コントローラ110はさらに、各モデルを区別してソフトウェア・コンテナ(たとえば、ソフトウェア・コンテナ120)の異なるクラス、タイプ、カテゴリ等の間で区別することができる。経時的に、コントローラ110はさらに、様々な実行時間環境130への割り当てを決定づけるべき真の相関関係をソフトウェア・コンテナ120のどんな特性が保持するかを決定し、機械学習モデルのルールを強化して将来はそれに応じてソフトウェア・コンテナ120を割り当てることができる。このようにして、経時的な実行時間環境130におけるソフトウェア・コンテナ120の性能および費用のモニタされたデータは、将来のソフトウェア・コンテナ120の割り当てにおいて改善する方法を決定するためのトレーニング・データになり得る。
【0028】
いくつかの例において、コントローラ110によって決定およびモニタされる実行時間パラメータは、割り当てられた実行時間環境130内の実行中のソフトウェア・コンテナ120の、下流プロセスに対する他への影響を含み得る。たとえば、コントローラ110は、ソフトウェア・コンテナ120は印刷ジョブをスプールするために使用される、および別のコンテナは会議通話のためのライブ・オーディオ処理のために使用されること(たとえば、これらはこれらのコンテナのカテゴリである)を決定し得る。コントローラ110はさらに、動作中に、高いCPU使用量がいくつかの減速を引き起こす場合に、ソフトウェア・コンテナ120を含むプロセスは、実質的に影響を及ぼされない可能性があると決定することができ、その一方で、第2のコンテナの処理されたオーディオを受信するプロセスは、コンピュータ処理競合によってもたらされる任意のレイテンシまたはジッタによってより実質的に影響を及ぼされ得る。これを決定したとき、コントローラ110は、ソフトウェア・コンテナ120の性能閾値は第2のソフトウェア・コンテナの性能閾値とは異なると決定することができる。このようにして、コントローラ110は、所与の実行時間環境において実行するためのソフトウェア・コンテナ120の能力を向上させるのみならず、割り当てられた実行時間環境におけるソフトウェア・コンテナ120の実行時間を一部含む完全計算プロセスの実行もまた改善することができる。
【0029】
前述のように、コントローラ110は、本明細書に記載の技法を実行するためにメモリに記憶された命令を実行するように構成されたプロセッサを含む計算デバイスを含み得る、またはそのような計算デバイスの一部であり得る。たとえば、
図2は、コントローラ110のそのような計算システム200の概念的箱図表である。コントローラ110は、説明を目的として単一エンティティ(たとえば、単一の筐体内)として描かれているが、他の例では、コントローラ110は、複数の個別の物理システム(たとえば、複数の個別の筐体内)を含み得る。コントローラ110は、インターフェース210、プロセッサ220、およびメモリ230を含み得る。コントローラ110は、任意の数または量のインターフェース210、プロセッサ220、またはメモリ230あるいはその組合せを含み得る。
【0030】
コントローラ110は、コントローラ110の外部であるデバイスとコントローラ110が通信する(たとえば、データをそこに送信する、およびそれによって送信されたデータを受信および使用する)ことを可能にする構成要素を含み得る。たとえば、コントローラ110は、コントローラ110の外部のエンティティとコントローラ110およびコントローラ110内の他の構成要素(たとえば、プロセッサ220など)が通信することを可能にするように構成されたインターフェース210を含み得る。具体的には、インターフェース210は、ソフトウェア・コンテナ120を提供する計算デバイス、実行時間環境130をホストする1つまたは複数の計算デバイスなどとコントローラ110の構成要素が通信することを可能にするように構成され得る。インターフェース210は、1つまたは複数のネットワーク・インターフェース・カード、たとえば、イーサネット(R)・カード、または情報を送信および受信することができる任意の他のタイプのインターフェース・デバイス、あるいはその両方、を含み得る。任意の適切な数のインターフェースが、特定のニーズに応じて記載された機能を実行するために使用され得る。
【0031】
本明細書に記載のように、コントローラ110は、異なる機械学習モデルを使用してソフトウェア・コンテナを実行時間環境に割り当てるように構成され得る。コントローラ110は、プロセッサ220を使用して、このようにソフトウェア・コンテナを割り当てることができる。プロセッサ220は、たとえば、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、または同等のディスクリートもしくは集積論理回路あるいはその組合せを含み得る。プロセッサ220のうちの2つ以上が、それぞれ、異なる機械学習モデルを使用して異なる相関関係を学習して協働して最初におよび次いで反復して実行時間の前または実行時間中にソフトウェア・コンテナを実行時間環境に割り当てるように構成され得る。
【0032】
プロセッサ220は、コントローラ110のメモリ230に記憶された命令232に従ってソフトウェア・コンテナを実行時間環境に割り当てることができる。メモリ230は、コンピュータ可読記憶媒体またはコンピュータ可読記憶デバイスを含み得る。いくつかの例において、メモリ230は、短期メモリまたは長期メモリのうちの1つまたは複数を含み得る。メモリ230は、たとえば、ランダム・アクセス・メモリ(RAM)、ダイナミック・ランダム・アクセス・メモリ(DRAM)、スタティック・ランダム・アクセス・メモリ(SRAM)、磁気ハード・ディスク、光ディスク、フロッピ・ディスク、フラッシュ・メモリ、電気的プログラマブル・メモリ(EPROM)の形態、電気的消去可能プログラム可能メモリ(EEPROM)などを含み得る。いくつかの例において、プロセッサ220は、コントローラ110のメモリ230に記憶された1つまたは複数のアプリケーション(たとえば、ソフトウェア・アプリケーション)の命令232に従って、本明細書に記載のように実行時間環境にソフトウェア・コンテナを割り当てることができる。
【0033】
命令232に加えて、いくつかの例において、本明細書に記載のようにソフトウェア・コンテナを実行時間環境に割り当てるためにプロセッサ220によって使用される収集された/所定のデータもしくは技法などは、メモリ230に記憶され得る。たとえば、メモリ230は、第1のモデル234(静的パラメータ・データ236をそれ自体が含み得る)と第2のモデル238(静的パラメータ・データ240または実行時間パラメータ・データ242あるいはその両方を含み得る)とを含み得る。2つのみのモデル234、238が、説明を目的として
図2には描かれているが、他の例では、各モデル234、238は、ソフトウェア・コンテナが実行時間環境にどのように割り当てられるべきかをソフトウェア・コンテナのどのように異なるパラメータが示すかを学習する複数のサブ機械学習モデルをそれら自体で生み出すために使用され得る。たとえば、実際には、ソフトウェア・コンテナ120が、割り当てられた実行時間環境内で実行している間に、コントローラ110は、パラメータ・データをモニタおよびキャプチャすることができ、コントローラ110は、後述のものなどの機械学習技法246を使用してこのメタデータの間の関連付けを決定して後続の機械学習モデルの入力ベクトルを定義することができる。入力層のサイズは、入力ベクトルの次元によって定義することができ、関連付けは、実行時間環境内のモニタされた性能によって分類され得る。この情報は、適宜に重み付けして(たとえば、より古い注釈を取り除く、より新しいものを補強する、などを行って)、経時的に各モデルを作成およびトレーニング(および再トレーニング)するために使用され得る。
【0034】
さらに、メモリ230は、閾値データ244を含み得る。閾値データ244は、実行時間環境内のソフトウェア・コンテナの性能または費用あるいはその両方が、ソフトウェア・コンテナは異なる実行時間環境に移動されるべきであることを示す、ポイントを示し得る。閾値データ244はまた、ソフトウェア・コンテナのモニタリングが停止すべきである、ソフトウェア・コンテナと実行時間環境とのマッチが非常に優れた、または性能もしくは費用またはその両方が非常に安定したあるいはその両方のポイントに関するデータを含み得る。
【0035】
メモリ230はさらに、コントローラ110が、経時的に本明細書で論じるように実行時間環境にこれらのソフトウェア・コンテナを割り当てるためのソフトウェア・コンテナのパラメータの決定のプロセスを改善するために使用することができる、機械学習技法246を含み得る。機械学習技法244は、データセットの監視された、監視されていない、または半分監視されたトレーニングを実行することと、その後に、生成されたアルゴリズムまたはモデルを適用してソフトウェア・コンテナを割り当てることとによって生成される、アルゴリズムまたはモデルを含み得る。これらの機械学習技法246を使用して、コントローラ110は、経時的にソフトウェア・コンテナを割り当てる能力を向上させることができる。
【0036】
機械学習技法246は、決定木学習、関連付けルール学習、人工神経ネットワーク、深層学習、帰納的論理プログラミング、サポート・ベクトル・マシン、クラスタリング、ベイジアン・ネットワーク、強化学習、表現学習、類似性/メトリック・トレーニング、スパース辞書学習、遺伝的アルゴリズム、ルール・ベースの学習、または他の機械学習技法あるいはその組合せを含み得るが、これらに限定されない。具体的には、機械学習技法246は、以下の例示的技法のうちの1つまたは複数を使用し得る:k近傍法(KNN)、学習ベクトル量子化(LVQ)、自己組織化マップ(SOM)、ロジスティック回帰、最小二乗回帰(OLSR)、線形回帰、段階的回帰、多変量適応回帰スプライン(MARS)、リッジ回帰、ラッソ(LASSO:least absolute shrinkage and selection operator)、エラスティック・ネット、LARS(least-angle regression)、確率的分類法、ナイーブ・ベイズ分類器、バイナリ分類器、線形分類器、階層的分類器、正準相関分析(CCA)、ファクタ分析、独立成分分析(ICA)、線形判別分析(LDA)、多次元尺度構成法(MDS)、非負値メトリック因数分解(NMF:non-negative metric factorization)、部分最小二乗回帰(PLSR)、主成分分析(PCA)、主成分回帰(PCR)、サモン・マッピング、t分布型確率的近傍埋め込み法(t-SNE:t-distributed stochastic neighbor embedding)、ブーストラップ・アグリゲーティング、調和平均の算出、勾配ブースト決定木(GBRT)、勾配ブースティング・マシン(GBM)、帰納バイアス・アルゴリズム、Q学習、SARSA(state-action-reward-state-action)、時間差(TD:temporal difference)学習、アプリオリ・アルゴリズム、ECLAT(equivalence class transformation)アルゴリズム、ガウス・プロセス回帰、遺伝子発現プログラミング、GMDH(group method of data handling)、帰納的論理プログラミング、インスタンス・ベース学習、ロジスティック・モデル木、情報ファジー・ネットワーク(IFN)、隠れマルコフ・モデル、ガウス・ナイーブ・ベイズ、多項ナイーブ・ベイズ(multinomial naive Bayes)、AODE(averaged one-dependence estimators)、分類および回帰木(CART)、CHAID(chi-squared automatic interaction detection)、期待値最大化アルゴリズム、フィードフォワード・ニューラル・ネットワーク、論理学習マシン、自己組織化マップ、単リンク・クラスタリング、ファジー・クラスタリング、階層的クラスタリング、ボルツマン・マシン、畳み込みニューラル・ネットワーク、リカレント・ニューラル・ネットワーク、階層一過性メモリ(HTM:hierarchical temporal memory)、または他の機械学習アルゴリズムあるいはその組合せ。
【0037】
これらの構成要素を使用して、コントローラ110は、本明細書に記載のようにソフトウェア・コンテナを実行時間環境に割り当てることができる。たとえば、コントローラ110は、
図3に描かれた流れ
図300に従ってソフトウェア・コンテナを割り当てることができる。
図3の流れ
図300は、説明を目的として
図1に関して論じられているが、他の例では、他のシステムが、
図3の流れ
図300を実行するために、使用され得る、ということが理解されるべきである。さらに、いくつかの例において、コントローラ110は、
図3の流れ
図300とは異なる方法を実行し得る、またはコントローラ110は、異なる順序でより多数または少数のステップを有する類似の方法などを実行し得る。
【0038】
流れ
図300は、コントローラ110がソフトウェア・コンテナ120の静的パラメータを識別すること(302)で開始し得る。コントローラ110は、第1の機械学習モデルを使用してソフトウェア・コンテナ120を実行時間環境130A(または、流れ
図300において提供されるRTE)に割り当て得る(304)。コントローラは、識別された静的パラメータに基づいてソフトウェア・コンテナ120を実行時間環境130Aに割り当て得る。
【0039】
コントローラ110は、ソフトウェア・コンテナ120の実行時間パラメータを識別し得る(306)。コントローラ110は、実行時間環境130Aにおけるソフトウェア・コンテナ120の実行時間中にこれらの実行時間環境を識別し得る。いくつかの例では、これらの実時間静的パラメータが、コントローラ110によって識別された予備の静的パラメータの更新されたバージョンである場合(予備の静的パラメータが、ステップ302において識別されたそれらの静的パラメータだった場合)、コントローラ110は、ソフトウェア・コンテナ120の1セットの実時間静的パラメータを収集し得る。言い換えるなら、静的パラメータが、初期実行時間環境130を識別するための実行時間の前およびその後の実行時間中の両方にコントローラ110によって収集される場合、実行時間より前に収集された静的パラメータのバージョンは、予備の静的パラメータとして分類され得、実行時間中に収集されたそれらの静的パラメータの(潜在的に、しかし、必然的ではなく)異なるバージョンは、実時間静的パラメータとして分類され得る。
【0040】
コントローラ110は、割り当てられた実行時間環境130Aが識別された実行時間パラメータにマッチするか否かを決定し得る(308)。コントローラ110は、第2の機械学習モデルを使用して、割り当てられた実行時間環境130Aが識別された実行時間パラメータにマッチするかどうかを決定し得る。いくつかの例において、コントローラ110は、モデルを使用して、実行時間パラメータと実時間静的パラメータとの両方が割り当てられた実行時間環境130Aにマッチするかどうかを決定し得る。割り当てられた実行時間環境130A内のソフトウェア・コンテナ120の性能または費用あるいはその両方が、1つまたは複数の閾値を満たす(たとえば、閾値を超える性能を有する、および閾値未満の費用を有する)とき、コントローラ110は、ソフトウェア・コンテナ120の実行時間パラメータまたは実時間静的パラメータあるいはその両方は割り当てられた実行時間環境130Aにマッチすると決定し得る。
【0041】
コントローラ110が、パラメータのうちの一方(または両方)が割り当てられた実行時間環境130Aにマッチすることをモデルは示すと決定した場合、コントローラ110は、選択された実行時間環境130Aにおいてソフトウェア・コンテナ120を実行し続け得る(310)。別法として、コントローラ110が、本明細書で論じられるようなマッチは存在しないと決定した場合、コントローラ110は、第2のモデルを使用して、パラメータとの改善されたマッチを有すると決定された異なる実行時間環境130Bにソフトウェア・コンテナ120を移動し得る(312)。同様に、コントローラ110が、本明細書で論じられるようなマッチは存在しないが、マッチ・スコアは他の実行時間環境130間よりもソフトウェア・コンテナ120と割り当てられた実行時間環境130Aとの間でより良いと決定した場合、コントローラ110は、1つまたは複数の改善された実行時間環境130が発見される、オンラインにされる、作成される、等が生じるまで、割り当てられた実行時間環境130Aにおいてソフトウェア・コンテナ120を維持することを決定し得る。
【0042】
いずれにしても、コントローラ110は、経時的に更新情報を集めることができる(314)。コントローラ110は、所定のスケジュールで(たとえば、20分ごとに1度、またはいくつかのアクションごとに1度など)これらの更新情報を収集することができる。これらの更新情報は、パラメータの更新情報/変更、性能更新情報、費用更新情報などでもよい。コントローラ110は、次いで、これらの更新情報が閾値未満であるか否かを決定することができる(316)。たとえば、閾値は、パラメータの完全および最終セットまたはソフトウェア・コンテナ120の完全および最終性能のいずれかが未知であるような、変更の閾値量、または変更の閾値重大度を含み得る。更新情報が、閾値よりも厳格でないまたは数が少ない(ソフトウェア・コンテナ120が、ソフトウェア・コンテナ120が現在割り当てられた実行時間環境130のどれにでもマッチするような)場合、コントローラ110は、ソフトウェア・コンテナ120はソフトウェア・コンテナ120が安定した方式で現在実行している実行時間環境130のどれにでもマッチすると決定し、実行時間中にソフトウェア・コンテナ120のその後の分析(たとえば、所定のスケジュールによる)を終了すると決定する(318)。モニタリングを停止することの一部として、コントローラ110はまた、両方の(または、3つ以上が存在する場合には、すべての)機械学習モデルを最終パラメータ示度、性能データ、費用データなどで更新し得る。
【0043】
別法として、コントローラ110が、更新情報は閾値を超える重大度または数あるいはその両方である(マッチはまだ満足のいくものではないこと、またはパラメータもしくは性能またはその両方はまだ流動的と思われること、あるいはその両方を示す)と決定した場合、コントローラ110は、現在の実行時間環境130はソフトウェア・コンテナ120にマッチするかどうか、または他の実行時間環境130は第2のモデルによるソフトウェア・コンテナ120によりよくマッチするかどうか、あるいはその両方を分析し得る(320)。現在の実行時間環境130が、他の実行時間環境130と同様にソフトウェア・コンテナ120にマッチする場合、コントローラ110は、現在のソフトウェア環境130においてソフトウェア・コンテナ120を実行し続ける(322)。
【0044】
いくつかの例において、コントローラ110は、別の実行時間環境130がソフトウェア・コンテナ120により適していると決定し得る。この例では、コントローラ110は、ソフトウェア・コンテナ120をこの他の実行時間環境130に移動し、この異なる実行時間環境130でソフトウェア・コンテナ120を実行させる(324)。コントローラ110が、現在の実行時間環境130においてソフトウェア・コンテナ120を実行し続けるか否かに関わりなく、コントローラ110は、継続してパラメータ更新情報を収集し(たとえば、所定のスケジュールに従って314において)、収集された更新情報の重大度または数あるいはその両方が閾値未満であるとコントローラが決定する(316において)まで、別の実行時間環境130がソフトウェア・コンテナ120によりマッチするかどうかを決定する(320において)。
【0045】
クラウド・コンピューティング
【0046】
本開示は、クラウド・コンピューティングに関する詳細な記述を含むが、本明細書で列挙された教示の実装形態は、クラウド・コンピューティング環境に限定されない、ということが理解されるべきである。むしろ、本発明の実施形態は、現在知られているまたは後に開発される任意の他のタイプのコンピューティング環境と併せて実装することができる。
【0047】
クラウド・コンピューティングは、サービスのプロバイダとの最小限の管理努力または対話で迅速にプロビジョニングおよび解放され得る構成可能なコンピューティング資源(たとえば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの配備モデルを含み得る。
【0048】
特性は、以下のとおり:
【0049】
オンデマンド・セルフサービス:クラウド消費者は、サービスのプロバイダとの人の対話を必要とせずに自動的に必要に応じて、計算能力、たとえば、サーバ時間およびネットワーク・ストレージ、を一方的にプロビジョニングし得る。
【0050】
広範なネットワーク・アクセス:能力は、ネットワークを介して利用可能であり、異種のシンまたはシック・クライアント・プラットフォーム(たとえば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準機構を介してアクセスされる。
【0051】
資源プーリング:プロバイダのコンピューティング資源は、異なる物理および仮想資源が需要に応じて動的に割り当ておよび再割り当てされて、マルチテナント・モデルを使用する多数の消費者の役に立つようにプールされる。消費者は、提供された資源の正確な位置の制御または知識を一般に有さないが、より高いレベルの抽象化での位置(たとえば、国、州、またはデータセンタ)を指定することができ得るという点において、位置独立の感覚がある。
【0052】
迅速な弾力性:能力は、速くスケール・アウトするために、場合によっては自動的に、迅速に弾力的にプロビジョニングされ得、速くスケール・インするために迅速に解除され得る。消費者には、プロビジョニングするために利用可能な能力は、しばしば、無制限であるように見え、任意の時間に任意の数量で購入され得る。
【0053】
測定されたサービス:クラウド・システムは、サービスのタイプ(たとえば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適した何らかのレベルの抽象化で計測機能を活用することによって資源利用を自動的に制御および最適化する。資源使用量が、利用されるサービスのプロバイダと消費者との両方の透過性を提供して、モニタ、制御、および報告され得る。
【0054】
サービス・モデルは、以下のとおり:
【0055】
サービス型ソフトウェア(SaaS):消費者に提供される能力は、クラウド・インフラストラクチャで実行するプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ(たとえば、ウェブベースの電子メール)などのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である。消費者は、制限されたユーザ固有のアプリケーション構成設定は例外の可能性があるが、ネットワーク、サーバ、オペレーティング・システム、ストレージ、あるいは個々のアプリケーション能力を含む基礎的クラウド・インフラストラクチャを管理または制御しない。
【0056】
サービス型プラットフォーム(PaaS):消費者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成されたクラウド・インフラストラクチャ消費者作成または取得アプリケーションへと配備することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎的クラウド・インフラストラクチャを管理または制御しないが、配備されたアプリケーションおよび場合によりアプリケーション・ホスティング環境構成を制御する。
【0057】
サービス型インフラストラクチャ(IaaS):消費者に提供される能力は、オペレーティング・システムおよびアプリケーションを含み得る、処理、ストレージ、ネットワーク、および任意のソフトウェアを消費者が配備および実行することができる他の基本的コンピューティング資源をプロビジョニングすることである。消費者は、基礎的クラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションを制御し、場合により、選択ネットワーク構成要素(たとえば、ホスト・ファイアウォール)の制限された制御を行う。
【0058】
配備モデルは、以下のとおり:
【0059】
プライベート・クラウド:クラウド・インフラストラクチャは、組織のためにのみ操作される。クラウド・インフラストラクチャは、組織または第三者によって管理され得、オンプレミスまたはオフプレミスに存在し得る。
【0060】
コミュニティ・クラウド:クラウド・インフラストラクチャが、いくつかの組織によって共有され、共通の関心事(たとえば、任務、セキュリティ要件、ポリシ、およびコンプライアンス留意事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、組織または第三者によって管理され得、オンプレミスまたはオフプレミスに存在し得る。
【0061】
パブリック・クラウド:クラウド・インフラストラクチャが、一般大衆または大きな業界団体に利用可能にされ、クラウド・サービスを販売する組織によって所有される。
【0062】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、一意のエンティティのままであるが、データおよびアプリケーション移植性(たとえば、クラウドの間の負荷バランシングのためのクラウド・バースティング)を可能にする標準化されたまたは専有の技術によって結び付けられた、複数のクラウド(プライベート、コミュニティ、または公衆)の合成である。
【0063】
クラウド・コンピューティング環境は、ステートレス、低結合、モジュール性、および意味論的相互運用性に重点を置いて方向付けられたサービスである。クラウド・コンピューティングの中心にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0064】
ここで
図4を参照すると、例示的クラウド・コンピューティング環境50が、描かれている。図示するように、クラウド・コンピューティング環境50は、クラウド消費者によって使用されるローカル計算デバイス、たとえば、携帯情報端末(PDA)またはセルラ電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54Nあるいはその組合せなど、がそれを用いて通信することができる、1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信し得る。それらは、1つまたは複数のネットワーク、たとえば、前述のようなプライベート、コミュニティ、公衆、またはハイブリッド・クラウド、あるいはその組合せ、において物理的にまたは仮想的にグループ化され得る(図示せず)。これは、クラウド消費者がローカル計算デバイスで資源を維持する必要がないサービスとしてインフラストラクチャ、プラットフォームまたはソフトウェアあるいはその組合せをクラウド・コンピューティング環境50が提供することを可能にする。
図4に示された計算デバイス54A~Nのタイプは単に例示を意図されていることと、コンピューティング・ノード10およびクラウド・コンピューティング環境50は任意のタイプのネットワークまたはネットワーク・アドレス可能接続(たとえば、ウェブ・ブラウザを使用)あるいはその両方を介して任意のタイプのコンピュータ化されたデバイスと通信し得ることとが、理解される。
【0065】
ここで
図5を参照すると、クラウド・コンピューティング環境50(
図4)によって提供される1セットの機能的抽象化層が、示されている。
図5に示された構成要素、層、および機能は単に例示を意図されており、本発明の実施形態はそれに限定されない、ということをあらかじめ理解されたい。描かれているように、以下の層および対応する機能が、提供される:
【0066】
ハードウェアおよびソフトウェア層60は、ハードウェアおよびソフトウェア構成要素を含む。ハードウェア構成要素の例には、以下が含まれる:メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、記憶デバイス65、ならびにネットワークおよびネットワーク構成要素66。いくつかの実施形態では、ソフトウェア構成要素は、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0067】
仮想化層70は、仮想エンティティの以下の例がそこから提供され得る、抽象化層を提供する:仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75。
【0068】
1つの例において、管理層80は、後述される機能を提供し得る。資源プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために使用されるコンピューティング資源および他の資源の動的調達を提供する。計測および価格決定82は、資源がクラウド・コンピューティング環境内で使用されるときの費用追跡、およびこれらの資源の消費に関する課金もしくは請求を提供する。1つの例において、これらの資源は、アプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、クラウド消費者およびタスクの同一性検証、ならびにデータおよび他の資源の保護を提供する。ユーザ・ポータル83は、消費者およびシステム管理者のクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、必要なサービス・レベルが満たされるように、クラウド・コンピューティング資源割り当ておよび管理を提供する。サービス水準合意(SLA)の企画および履行85は、SLAに従って将来の要求が予期されるクラウド・コンピューティング資源の事前手配、および調達を提供する。
【0069】
ワークロード層90は、そのためにクラウド・コンピューティング環境が使用され得る、機能性の例を提供する。この層から提供され得るワークロードおよび機能の例には、以下が含まれる:マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、およびソフトウェア・コンテナの実行時間環境決定96。
【0070】
本開示の様々な実施形態の記述は、説明を目的として提示されてあるが、包括的であることまたは開示された実施形態に限定されることは意図されていない。多数の修正形態および変更形態が、記載された実施形態の範囲および思想を逸脱せずに当業者には明らかとなろう。本明細書で使用される専門用語は、実施形態の原理、実際の適用または市場で見つかる技術への技術的改良を説明するために、あるいは本明細書で開示される実施形態を他の当業者が理解することを可能にするために、選ばれた。
【0071】
本発明は、任意の可能な技術的詳細レベルの統合における、システム、方法、またはコンピュータ・プログラム製品あるいはその組合せでもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実施させるためのコンピュータ可読プログラム命令を有する1つまたは複数のコンピュータ可読記憶媒体を含み得る。
【0072】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および記憶することができる有形デバイスであり得る。コンピュータ可読記憶媒体は、たとえば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の適切な組合せでもよいが、これらに限定されない。コンピュータ可読記憶媒体のより多くの特定の例の非包括的リストには、以下が含まれる:携帯用コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯用CD-ROM、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピ・ディスク、パンチカードもしくは命令が記録された溝内の隆起した構造体などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せ。本明細書では、コンピュータ可読記憶媒体は、一過性の信号自体、たとえば、無線波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を伝播する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号、であるとして解釈されるべきではない。
【0073】
本明細書に記載のコンピュータ可読プログラム命令は、それぞれの計算/処理デバイスにコンピュータ可読記憶媒体から、あるいは、ネットワーク、たとえば、インターネット、ローカル・エリア・ネットワーク、広域ネットワークもしくはワイヤレス・ネットワークまたはその組合せ、を介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを含み得る。各計算/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれの計算/処理デバイス内のコンピュータ可読記憶媒体において記憶するためにコンピュータ可読プログラム命令を転送する。
【0074】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存の命令、マイクロコード、ファームウェア命令、状態・状況データ、集積回路のための構成データ、あるいは、Smalltalk、C++などのオブジェクト指向プログラミング言語、および手続き型プログラミング言語、たとえば、「C」プログラミング言語または類似のプログラミング言語、を含む、1つまたは複数のプログラミング言語の任意の組合せで書き込まれたソース・コードまたはオブジェクト・コードでもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータで完全に、ユーザのコンピュータで部分的に、スタンドアロンのソフトウェア・パッケージとして、ユーザのコンピュータで部分的におよびリモート・コンピュータで部分的に、あるいはリモート・コンピュータまたはサーバで完全に実行し得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む、任意のタイプのネットワークを介してユーザのコンピュータに接続され得る、あるいは、接続は、外部コンピュータに(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)行われ得る。いくつかの実施形態では、たとえば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む、電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を使用して電子回路をカスタマイズすることによって、コンピュータ可読プログラム命令を実行し得る。
【0075】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図の解説またはブロック図あるいはその両方を参照して、本明細書で説明されている。流れ図の解説またはブロック図あるいはその両方の各ブロック、および流れ図の解説またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実装され得る、ということが理解されよう。
【0076】
コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/活動を実装するための手段を生み出すように、これらのコンピュータ可読プログラム命令は、汎用コンピュータ、特定目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを生み出し得る。命令が記憶されたコンピュータ可読記憶媒体が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/活動の態様を実装する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに特定の方式で機能するように指示することができるコンピュータ可読記憶媒体に記憶され得る。
【0077】
コンピュータ、他のプログラマブル装置、または他のデバイスで実行する命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/活動を実装するように、コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置または他のデバイスで一連の動作ステップを実行させて、コンピュータ実施プロセスを生み出し得る。
【0078】
図中の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を説明する。この関連で、流れ図またはブロック図中の各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表し得る。いくつかの代替実装形態において、ブロックで言及された機能は、図において言及された順番以外で生じ得る。たとえば、連続して示された2つのブロックは、実際には、1つのステップとして完遂する、同時に、実質的に同時に、部分的にまたは完全に時間的に重複する方式で実行することができ、あるいは、それらのブロックは、関連する機能性に応じて、時には逆順で実行され得る。ブロック図または流れ図解説あるいはその両方の各ブロック、ならびにブロック図または流れ図解説あるいはその両方のブロックの組合せは、指定された機能もしくは活動を実行するまたは特定目的ハードウェアおよびコンピュータ命令の組合せを実施する特定目的のハードウェアベースのシステムによって、実装され得る、ということにも留意されたい。