(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-21
(54)【発明の名称】サーバレス・ランタイム・コンテナ・アロケーション
(51)【国際特許分類】
G06F 8/60 20180101AFI20240214BHJP
G06F 9/50 20060101ALI20240214BHJP
【FI】
G06F8/60
G06F9/50 150A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023547234
(86)(22)【出願日】2022-02-22
(85)【翻訳文提出日】2023-08-03
(86)【国際出願番号】 EP2022054347
(87)【国際公開番号】W WO2022184495
(87)【国際公開日】2022-09-09
(32)【優先日】2021-03-04
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】レッジェ、エンリコ
(72)【発明者】
【氏名】ベック、ミカエル
(72)【発明者】
【氏名】シュッツ、ワーナー
(72)【発明者】
【氏名】ガーステル、ピーター
(72)【発明者】
【氏名】モーザー、サイモン
(72)【発明者】
【氏名】エルデンガー、イェルク
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA07
5B376AA35
5B376AB04
5B376AB12
5B376AB43
(57)【要約】
自動化されたサーバレス・ランタイム・コンテナ・アロケーションを実施するための方法、システム、およびコンピュータ・プログラム製品が提供される。方法は、指定されたワークロードの実行用の複数のワーカ・ノードのうちの各ワーカ・ノードに必要なランタイム・コンテナの数および関連特徴を定義することを含む。指定されたワークロードが、複数のワーカ・ノードにディスパッチされ、指定されたワークロードの指定部分が、各ワーカ・ノードに割り当てられる。層状修正可能フォーマット内に潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを実行するアプリケーションが生成され、未使用層が、ユニバーサル・ランタイム・コンテナから除去される。指定されたワークロードは、ユニバーサル・ランタイム・コンテナを介して実行され、利用可能なユニバーサル・ランタイム・コンテナのセットが、関連するワーク・ノード上で補充される。
【特許請求の範囲】
【請求項1】
サーバレス・ランタイム・コンテナ・アロケーション方法であって、
集中メンテナンス・デバイスのプロセッサによって、指定されたワークロードの実行用の複数のワーカ・ノードのうちの各ワーカ・ノードに必要なランタイム・コンテナの数および関連特徴を定義することと、
複数の協調型コントローラを介して前記プロセッサによって、前記指定されたワークロードを前記複数のワーカ・ノードにディスパッチすることと、
前記複数の協調型コントローラを介して前記プロセッサによって、前記指定されたワークロードの指定部分をそれぞれの前記ワーカ・ノードに割り当てることと、
前記割り当てることの結果に基づいて前記プロセッサによって、複数の層を含む層状修正可能フォーマット内に複数の潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを実行するアプリケーションを生成することと、
補充エージェント・コンポーネントを実行する前記プロセッサによって、前記ユニバーサル・ランタイム・コンテナの前記複数の層のうちの未使用層を除去することと、
前記ユニバーサル・ランタイム・コンテナを前記生成することに応答して前記プロセッサによって、前記ユニバーサル・ランタイム・コンテナを介して前記指定されたワークロードを実行することと、
前記実行することに応答して前記複数の協調型コントローラを介して前記プロセッサによって、前記複数のワーク・ノードのうちの関連するワーカ・ノード上で利用可能なユニバーサル・ランタイム・コンテナのセットを補充することと、
を含む、サーバレス・ランタイム・コンテナ・アロケーション方法。
【請求項2】
前記除去することが、前記指定されたワークロードのそれぞれの指定部分の実行に必要ではない前記潜在アプリケーション・ランタイムのアプリケーション・ランタイムを除去することをさらに含む、請求項1に記載の方法。
【請求項3】
前記補充エージェント・コンポーネントが、前記指定されたワークロードを実行し、前記ユニバーサル・ランタイム・コンテナの将来のインスタンスを生成する、前のインスタンスに関連付けられた履歴データを分析するように構成される、統計プロセスまたは機械学習ケイパビリティを含む、請求項1または2に記載の方法。
【請求項4】
前記プロセッサによって、それぞれの前記ワーカ・ノードが、前記ユニバーサル・ランタイム・コンテナを有効にするための指定された数のハードウェアおよびソフトウェア・リソースを含むと判断することをさらに含む、請求項1ないし3のいずれか一項に記載の方法。
【請求項5】
前記プロセッサによって、前記複数の協調型コントローラ間でワークロード・キャパシティをネゴシエートすることであって、前記指定されたワークロードを前記複数のワーカ・ノードに前記ディスパッチすることが、前記ネゴシエートすることの結果に基づいて実行される、前記ネゴシエートすることをさらに含む、請求項1ないし4のいずれか一項に記載の方法。
【請求項6】
前記プロセッサによって、前記利用可能なユニバーサル・ランタイム・コンテナの前記セットの各コンテナが、初期化コンテナまたは初期化のために構成された無効化コンテナを含むかどうかを判断することをさらに含む、請求項1ないし5のいずれか一項に記載の方法。
【請求項7】
前記ディスパッチすることが、前記複数の協調型コントローラのハードウェアおよびソフトウェア・キャパシティに基づいて実行される、請求項1ないし6のいずれか一項に記載の方法。
【請求項8】
サーバ・ハードウェア・デバイスにおいてコンピュータ可読コードを作成すること、統合すること、ホストすること、メンテナンスすること、および展開することのうちの少なくとも1つのために少なくとも1つのサポート・サービスを提供することであって、前記コードが、前記定義すること、前記ディスパッチすること、前記割り当てること、前記生成すること、前記除去すること、前記実行すること、および前記補充することを実施するために前記コンピュータ・プロセッサによって実行される、前記提供することをさらに含む、請求項1ないし7のいずれか一項に記載の方法。
【請求項9】
コンピュータ可読プログラム・コードを記憶するコンピュータ可読ハードウェア記憶デバイスを含む、コンピュータ・プログラム製品であって、前記コンピュータ可読プログラム・コードが、集中メンテナンス・デバイスのプロセッサによる実行時に、サーバレス・ランタイム・コンテナ・アロケーション方法を実施するアルゴリズムを含み、前記方法が、
前記プロセッサによって、指定されたワークロードの実行用の複数のワーカ・ノードのうちの各ワーカ・ノードに必要なランタイム・コンテナの数および関連特徴を定義することと、
複数の協調型コントローラを介して前記プロセッサによって、前記指定されたワークロードを前記複数のワーカ・ノードにディスパッチすることと、
前記複数の協調型コントローラを介して前記プロセッサによって、前記指定されたワークロードの指定部分をそれぞれの前記ワーカ・ノードに割り当てることと、
前記割り当てることの結果に基づいて前記プロセッサによって、複数の層を含む層状修正可能フォーマット内に複数の潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを実行するアプリケーションを生成することと、
補充エージェント・コンポーネントを実行する前記プロセッサによって、前記ユニバーサル・ランタイム・コンテナの前記複数の層のうちの未使用層を除去することと、
前記ユニバーサル・ランタイム・コンテナを前記生成することに応答して前記プロセッサによって、前記ユニバーサル・ランタイム・コンテナを介して前記指定されたワークロードを実行することと、
前記実行することに応答して前記複数の協調型コントローラを介して前記プロセッサによって、前記複数のワーク・ノードのうちの関連するワーカ・ノード上で利用可能なユニバーサル・ランタイム・コンテナのセットを補充することと、
を含む、コンピュータ・プログラム製品。
【請求項10】
前記除去することが、前記指定されたワークロードのそれぞれの指定部分の実行に必要ではない前記潜在アプリケーション・ランタイムのアプリケーション・ランタイムを除去することをさらに含む、請求項9に記載のコンピュータ・プログラム製品。
【請求項11】
前記補充エージェント・コンポーネントが、前記指定されたワークロードを実行し、前記ユニバーサル・ランタイム・コンテナの将来のインスタンスを生成する、前のインスタンスに関連付けられた履歴データを分析するように構成される、統計プロセスまたは機械学習ケイパビリティを含む、請求項9または10に記載のコンピュータ・プログラム製品。
【請求項12】
前記方法が、
前記プロセッサによって、それぞれの前記ワーカ・ノードが、前記ユニバーサル・ランタイム・コンテナを有効にするための指定された数のハードウェアおよびソフトウェア・リソースを含むと判断することをさらに含む、請求項9ないし11のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項13】
前記方法が、
前記プロセッサによって、前記複数の協調型コントローラ間でワークロード・キャパシティをネゴシエートすることであって、前記指定されたワークロードを前記複数のワーカ・ノードに前記ディスパッチすることが、前記ネゴシエートすることの結果に基づいて実行される、前記ネゴシエートすることをさらに含む、請求項9ないし12のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項14】
前記方法が、
前記プロセッサによって、前記利用可能なユニバーサル・ランタイム・コンテナの前記セットの各コンテナが、初期化コンテナまたは初期化のために構成された無効化コンテナを含むかどうかを判断することをさらに含む、請求項9ないし13のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項15】
前記ディスパッチすることが、前記複数の協調型コントローラのハードウェアおよびソフトウェア・キャパシティに基づいて実行される、請求項9ないし14のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項16】
コンピュータ可読メモリ・ユニットに連結されたプロセッサを含む集中メンテナンス・デバイスであって、前記メモリ・ユニットが、前記プロセッサによる実行時にサーバレス・ランタイム・コンテナ・アロケーション方法を実施する命令を含み、前記方法が、
前記プロセッサによって、指定されたワークロードの実行用の複数のワーカ・ノードのうちの各ワーカ・ノードに必要なランタイム・コンテナの数および関連特徴を定義することと、
複数の協調型コントローラを介して前記プロセッサによって、前記指定されたワークロードを前記複数のワーカ・ノードにディスパッチすることと、
前記複数の協調型コントローラを介して前記プロセッサによって、前記指定されたワークロードの指定部分をそれぞれの前記ワーカ・ノードに割り当てることと、
前記割り当てることの結果に基づいて前記プロセッサによって、複数の層を含む層状修正可能フォーマット内に複数の潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを実行するアプリケーションを生成することと、
補充エージェント・コンポーネントを実行する前記プロセッサによって、前記ユニバーサル・ランタイム・コンテナの前記複数の層のうちの未使用層を除去することと、
前記ユニバーサル・ランタイム・コンテナを前記生成することに応答して前記プロセッサによって、前記ユニバーサル・ランタイム・コンテナを介して前記指定されたワークロードを実行することと、
前記実行することに応答して前記複数の協調型コントローラを介して前記プロセッサによって、前記複数のワーク・ノードのうちの関連するワーカ・ノード上で利用可能なユニバーサル・ランタイム・コンテナのセットを補充することと、
を含む、集中メンテナンス・デバイス。
【請求項17】
前記除去することが、前記指定されたワークロードのそれぞれの指定部分の実行に必要ではない前記潜在アプリケーション・ランタイムのアプリケーション・ランタイムを除去することをさらに含む、請求項16に記載のサーバ・ハードウェア・デバイス。
【請求項18】
前記補充エージェント・コンポーネントが、前記指定されたワークロードを実行し、前記ユニバーサル・ランタイム・コンテナの将来のインスタンスを生成する、前のインスタンスに関連付けられた履歴データを分析するように構成される、統計プロセスまたは機械学習ケイパビリティを含む、請求項16または17に記載の集中メンテナンス・デバイス。
【請求項19】
前記方法が、
前記プロセッサによって、それぞれの前記ワーカ・ノードが、前記ユニバーサル・ランタイム・コンテナを有効にするための指定された数のハードウェアおよびソフトウェア・リソースを含むと判断することをさらに含む、請求項16ないし18のいずれか一項に記載の集中メンテナンス・デバイス。
【請求項20】
前記方法が、
前記プロセッサによって、前記複数の協調型コントローラ間でワークロード・キャパシティをネゴシエートすることであって、前記指定されたワークロードを前記複数のワーカ・ノードに前記ディスパッチすることが、前記ネゴシエートすることの結果に基づいて実行される、前記ネゴシエートすることをさらに含む、請求項16ないし19のいずれか一項に記載の集中メンテナンス・デバイス。
【発明の詳細な説明】
【背景技術】
【0001】
本発明は、概して、サーバレス・ランタイム・コンテナ(serverless runtime container)を自動的に生成する方法に関し、特に、層状修正可能フォーマット(layered modifiable format)内に潜在アプリケーション・ランタイム(potential application runtime)および関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナ(universal runtime container)を実行するアプリケーションを生成すること、ならびにユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することに関連するランタイム・コンテナ・ソフトウェア技術を改善するための方法および関連システムに関する。典型的なサーバレス環境は、提供されるハードウェア/ソフトウェア・キャパシティが、システムの顧客に対する通知なしにスケジューリングされる融通性の高いワークロードを処理するのに十分であることを検証する必要がある。同様に、プロバイダは、運用コストが所定の閾値範囲内に入ることを保証する必要があり得る。オーバープロビジョニングされたシステムでは、運用コストが上限閾値を超えるようになる。本発明の方法および関連システムは、運用コストとシステム性能との均衡を保つようにサーバレス・システムを改善するためのいくつかの修正に対処するように構成される。
【発明の概要】
【0002】
本発明の第1の態様は、集中メンテナンス・デバイス(centralized maintenance device)のプロセッサによって、指定されたワークロードの実行用の複数のワーカ・ノード(worker node)のうちの各ワーカ・ノードに必要なランタイム・コンテナの数および関連特徴を定義することと、複数の協調型コントローラを介してプロセッサによって、指定されたワークロードを複数のワーカ・ノードにディスパッチすることと、複数の協調型コントローラを介してプロセッサによって、指定されたワークロードの指定部分をそれぞれのワーカ・ノードに割り当てることと、割り当てることの結果に基づいてプロセッサによって、複数の層を含む層状修正可能フォーマット内に複数の潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを実行するアプリケーションを生成することと、補充エージェント・コンポーネント(refill agent component)を実行するプロセッサによって、ユニバーサル・ランタイム・コンテナの複数の層のうちの未使用層を除去することと、ユニバーサル・ランタイム・コンテナを生成することに応答してプロセッサによって、ユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することと、実行することに応答して複数の協調型コントローラを介してプロセッサによって、複数のワーク・ノードのうちの関連するワーカ・ノード上で利用可能なユニバーサル・ランタイム・コンテナのセットを補充することと、を含む、サーバレス・ランタイム・コンテナ生成方法を提供する。
【0003】
本発明のいくつかの実施形態は、それぞれのワーカ・ノードがユニバーサル・ランタイム・コンテナを有効にするための指定された数のハードウェアおよびソフトウェア・リソースを含むと判断するためのプロセスと、複数の協調型コントローラ間でワークロード・キャパシティをネゴシエートするためのプロセスと、上記利用可能なユニバーサル・ランタイム・コンテナのセットの各コンテナが、初期化コンテナまたは初期化のために構成された無効化コンテナを含むかどうかを判断するためのプロセスと、をさらに提供する。これらの実施形態は、ユニバーサル・ランタイム・コンテナを含む特定の事前構築されたランタイム・コンテナを生成およびアロケートし、補充コンポーネント(refiller component)を含む集中メンテナンス機構を生成し、キャパシティ利用を改善することを可能にするためのディスパッチ機構を生成するための効果的な手段を有利に提供する。
【0004】
本発明の第2の態様は、コンピュータ可読プログラム・コードを記憶するコンピュータ可読ハードウェア記憶デバイスを含む、コンピュータ・プログラム製品であって、コンピュータ可読プログラム・コードが、集中メンテナンス・デバイスのプロセッサによる実行時にサーバレス・ランタイム・コンテナ生成方法を実施するアルゴリズムを含み、方法が、プロセッサによって、指定されたワークロードの実行用の複数のワーカ・ノードのうちの各ワーカ・ノードに必要なランタイム・コンテナの数および関連特徴を定義することと、複数の協調型コントローラを介してプロセッサによって、指定されたワークロードを複数のワーカ・ノードにディスパッチすることと、複数の協調型コントローラを介してプロセッサによって、指定されたワークロードの指定部分をそれぞれのワーカ・ノードに割り当てることと、プロセッサによって、割り当てることの結果に基づいて、複数の層を含む層状修正可能フォーマット内に複数の潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを実行するアプリケーションを生成することと、補充エージェント・コンポーネントを実行するプロセッサによって、ユニバーサル・ランタイム・コンテナの複数の層のうちの未使用層を除去することと、ユニバーサル・ランタイム・コンテナを生成することに応答してプロセッサによって、ユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することと、実行することに応答して複数の協調型コントローラを介してプロセッサによって、複数のワーク・ノードのうちの関連するワーカ・ノード上で利用可能なユニバーサル・ランタイム・コンテナのセットを補充することと、を含む、コンピュータ・プログラム製品を提供する。
【0005】
本発明のいくつかの実施形態は、各ワーカ・ノードがユニバーサル・ランタイム・コンテナを有効にするための指定された数のハードウェアおよびソフトウェア・リソースを含むと判断するためのプロセスと、複数の協調型コントローラ間でワークロード・キャパシティをネゴシエートするためのプロセスと、上記利用可能なユニバーサル・ランタイム・コンテナのセットの各コンテナが、初期化コンテナまたは初期化のために構成された無効化コンテナを含むかどうかを判断するためのプロセスと、をさらに提供する。これらの実施形態は、ユニバーサル・ランタイム・コンテナを含む特定の事前構築されたランタイム・コンテナを生成およびアロケートし、補充コンポーネントを含む集中メンテナンス機構を生成し、キャパシティ利用を改善することを可能にするためのディスパッチ機構を生成するための効果的な手段を有利に提供する。
【0006】
本発明の第3の態様は、コンピュータ可読メモリ・ユニットに連結されたプロセッサを含む集中メンテナンス・デバイスであって、メモリ・ユニットが、プロセッサによる実行時にサーバレス・ランタイム・コンテナ生成方法を実施する命令を含み、方法が、プロセッサによって、指定されたワークロードの実行用の複数のワーカ・ノードのうちの各ワーカ・ノードに必要なランタイム・コンテナの数および関連特徴を定義することと、複数の協調型コントローラを介してプロセッサによって、指定されたワークロードを複数のワーカ・ノードにディスパッチすることと、複数の協調型コントローラを介してプロセッサによって、指定されたワークロードの指定部分をそれぞれのワーカ・ノードに割り当てることと、割り当てることの結果に基づいてプロセッサによって、複数の層を含む層状修正可能フォーマット内に複数の潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを実行するアプリケーションを生成することと、補充エージェント・コンポーネントを実行するプロセッサによって、ユニバーサル・ランタイム・コンテナの複数の層のうちの未使用層を除去することと、ユニバーサル・ランタイム・コンテナを生成することに応答してプロセッサによって、ユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することと、実行することに応答して複数の協調型コントローラを介してプロセッサによって、複数のワーク・ノードのうちの関連するワーカ・ノード上で利用可能なユニバーサル・ランタイム・コンテナのセットを補充することと、を含む、集中メンテナンス・デバイスを提供する。
【0007】
本発明のいくつかの実施形態は、各ワーカ・ノードがユニバーサル・ランタイム・コンテナを有効にするための指定された数のハードウェアおよびソフトウェア・リソースを含むと判断するためのプロセスと、複数の協調型コントローラ間でワークロード・キャパシティをネゴシエートするためのプロセスと、上記利用可能なユニバーサル・ランタイム・コンテナのセットの各コンテナが、初期化コンテナまたは初期化のために構成された無効化コンテナを含むかどうかを判断するためのプロセスと、をさらに提供する。これらの実施形態は、ユニバーサル・ランタイム・コンテナを含む特定の事前構築されたランタイム・コンテナを生成およびアロケートし、補充コンポーネントを含む集中メンテナンス機構を生成し、キャパシティ利用を改善することを可能にするためのディスパッチ機構を生成するための効果的な手段を有利に提供する。
【0008】
本発明は、サーバレス・ランタイム・コンテナを実行するアプリケーションを自動的に生成することが可能な、簡易な方法および関連システムを有利に提供する。
【図面の簡単な説明】
【0009】
【
図1】本発明の実施形態による、層状修正可能フォーマット内に潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを実行するアプリケーションを生成すること、ならびにユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することに関連するランタイム・コンテナ・ソフトウェア技術を改善するためのシステムを示す図である。
【
図2】本発明の実施形態による、層状修正可能フォーマット内に潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを実行するアプリケーションを生成すること、ならびにユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することに関連するランタイム・コンテナ・ソフトウェア技術を改善するための、
図1のシステムによって可能にされるプロセス・フローを詳細化したアルゴリズムを示す図である。
【
図3】本発明の実施形態による、機械学習ソフトウェア/ハードウェア構造または
図1の回路/ソフトウェアあるいはその両方の内部構造図である。
【
図4A】本発明の実施形態による、ディスパッチャ・コンポーネントの改善されたキャパシティ・ハンドリングを可能にするためのプロセスを示す図である。
【
図4B】本発明の実施形態による、ディスパッチャ・コンポーネントの改善されたキャパシティ・ハンドリングを可能にするためのプロセスを示す図である。
【
図4C】本発明の実施形態による、ディスパッチャ・コンポーネントの改善されたキャパシティ・ハンドリングを可能にするためのプロセスを示す図である。
【
図4D】本発明の実施形態による、ディスパッチャ・コンポーネントの改善されたキャパシティ・ハンドリングを可能にするためのプロセスを示す図である。
【
図5】本発明の実施形態による、層状修正可能フォーマット内に潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを実行するアプリケーションを生成すること、ならびにユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することに関連するランタイム・コンテナ・ソフトウェア技術を改善するための
図1のシステムによって使用されるコンピュータ・システムを示す図である。
【
図6】本発明の実施形態による、クラウド・コンピューティング環境を示す図である。
【
図7】本発明の実施形態による、クラウド・コンピューティング環境によって提供される機能抽象層のセットを示す図である。
【発明を実施するための形態】
【0010】
図1は、本発明の実施形態による、層状修正可能フォーマット内に潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを実行する(ソフトウェア)アプリケーションを生成すること、ならびにユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することに関連するランタイム・コンテナ・ソフトウェア技術を改善するためのシステム100を示す。典型的なサーバレス環境では、システム・プロバイダは、提供される(例えば、メモリ、CPUなどの)ハードウェア/ソフトウェア・キャパシティが、システムの顧客に対する通知なしにスケジューリングされる融通性の高いワークロードを処理するのに十分であることを検証する必要がある場合がある。同様に、プロバイダは、運用コストが所定の閾値範囲内に入ることを保証する必要がある場合がある。オーバープロビジョニングされたシステムでは、運用コストが上限閾値を超えるようになる。同様に、最小限のハードウェアを用いて運用するように構成されたシステムは、必要なワークロードを処理することが全くできない場合があり、これによりクラウド・プロバイダは、運用コストとシステム性能との均衡を保つことを余儀なくされる。システム100は、運用コストとシステム性能との均衡を保つようにサーバレス・システムを改善するためのいくつかの修正に対処するように構成される。サーバレス・システムの改善点は、
1.ユニバーサル・ランタイム・コンテナを含む特定の事前構築されたランタイム・コンテナを生成およびアロケートすることと、
2.補充コンポーネントを含む集中メンテナンス機構を生成することと、
3.キャパシティ利用を改善することを可能にするためのディスパッチ機構を生成することと、
を含み得る。
【0011】
図1のシステム100は、ネットワーク117を通して相互接続された、エッジ・サーバ107、コントローラ106aおよび106b、データ・ストア112、メッセージング・コンポーネント109、補充コンポーネント102、ならびにワーカ・ノード104a...104nを含む。補充コンポーネント102は、各ワークロードに必要なランタイム・コンテナの数を定義するワークロード・プロビジョニング計画(workload provisioning plan)をメンテナンスするように構成されたハードウェア/ソフトウェア・コンポーネントを含む。補充コンポーネント102のハードウェア/ソフトウェア・コンポーネントは、ワークロード・モニタ・コンポーネント102a、ワークロード・プロテクタ・コンポーネント102b、およびキャパシティ・マネージャ・コンポーネント102cを含む。補充コンポーネント102は、全てのワーカ・ノード104a...104nにロールアウトされるプロビジョニング計画を作成し、適用するように構成される。プロビジョニング計画は、それぞれの指定ワーカ・ノードがその事前ウォーム・プールの範囲内で維持すべきであるコンテナの種類および数から構成される。メッセージ・エンジンのトピックを消費することによって、補充コンポーネント102が、ワーカ・ノードによる実行を現在待機しているのがどのリクエストかを判断することが可能となる。第2のデータ・ソースが、データ・ストア112からプルされる。データ・ストア112は、以前実行されたワークロードに関する情報を含む。キャパシティ・マネージャ・コンポーネント102cは、全てのデータ・ソースを使用して、個別のワーカ・ノード毎にプロビジョニング計画を作成する。
【0012】
ワーカ・ノード104a...104nは、サブミットされたワークロードを実行するように構成される。
【0013】
ワーカ・ノード104a...104nは(例えば、ワーカ・ノード104aの拡大
図122に示されるように)それぞれ、(即ち、ランタイム・コンテナ108を発生させる&管理するための)コンテナ・ブリッジ119、実際の実行中コンテナ114、呼び出し元コンポーネント(invoker component)121、補充エージェント123(即ち、補充コンポーネント102をリスンし、中央補充によって発行された補充リクエストを実行するエージェント)、およびユニバーサル・ランタイム・コンテナ127を含む。補充コンポーネント102、コントローラ106aおよび106b、ならびにワーカ・ノード104a...104nはそれぞれ、専用回路(専用ソフトウェアを含み得る)、センサ、および機械学習ソフトウェア・コード/ハードウェア構造(即ち、機械学習ソフトウェア・コードを含む)を含む。センサは、特に、超音波3次元センサ・モジュール、温度センサ、超音波センサ、光学センサ、ビデオ検索デバイス、オーディオ検索デバイス、湿度センサ、電圧センサ、圧力センサなどを含む、任意の種類の内部または外部センサを含み得る。補充コンポーネント102、コントローラ106aおよび106b、ならびにワーカ・ノード104a...104nはそれぞれ、組み込みデバイスを含み得る。組み込みデバイスは、本明細書において、専用機能を実行するために特別に設計されたコンピュータ・ハードウェアおよびソフトウェア(ケイパビリティ固定、またはプログラマブル)の組合せを含む、専用デバイスまたはコンピュータとして定義される。プログラマブル組み込みコンピュータまたはデバイスは、専用プログラミング・インターフェースを含んでもよい。一実施形態では、補充コンポーネント102、コントローラ106aおよび106b、ならびにワーカ・ノード104a...104nはそれぞれ、
図1~10に関して説明されるプロセスを(独立して、または組み合わせて)実行するための、専用(汎用ではない)ハードウェアおよび回路(即ち、専用の個別非汎用アナログ、デジタル、およびロジック・ベース回路)を含む専用ハードウェア・デバイスを含み得る。専用の個別非汎用アナログ、デジタル、およびロジック・ベース回路は、独自の専用設計されたコンポーネント(例えば、層状修正可能フォーマット内に潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを生成すること、ならびにユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することに関連するランタイム・コンテナ・ソフトウェア技術を改善するための自動化プロセスを実施するためだけに設計された、例えば特定用途向け集積回路(ASIC)などの専用集積回路)を含み得る。ネットワーク117は、特に、5Gテレコム・ネットワーク、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、ワイヤレス・ネットワークなどを含む任意の種類のネットワークを含み得る。代替として、ネットワーク117は、アプリケーション・プログラミング・インターフェース(API)を含み得る。
【0014】
システム100は、標準プログラミング言語に関連する特定の事前構築されたランタイム・コンテナを使用する代わりに、ユニバーサル・ランタイム・コンテナを使用することによって、コンテナ・インスタンス化の改善をもたらす。システム100は、全ての必要なランタイムおよびサポートされるソフトウェア・バージョンを含むユニバーサル・ランタイム・コンテナを構築するように構成される。ワークロードをコンテナに投入してそれを実行する前に、システム100は、ワークロードに必要でない全てのランタイム層を除去する。全てのランタイム/バージョンが、コンテナ内で層として表され、容易に修正または除去あるいはその両方が行われる。
【0015】
システム100は、事前プロビジョニングを必要とする異なるコンテナの数を減少させる。前のコンテナ・システムでは、サポートされるランタイム毎に異なるコンテナが作成される必要があった。ユニバーサル・ランタイム・コンテナは、いかなるワークロードに対しても有効であり得るため、システム100は、1つのユニバーサル・コンテナのみを必要とするプロセスを有効にして、それによりシステムの柔軟性を改善する。したがって、呼び出し元コンポーネントは、現在の要求に基づいて個々のコンテナを作成する必要はないが、任意のワークロードに対して既存のユニバーサル・コンテナを使用してもよく、それにより、ただ1つのコンテナだけがメンテナンス(例えば、ソフトウェア更新、検証など)を必要とするように、コンテナの管理を簡略化し得る。
【0016】
システム100は、補充コンポーネント102(即ち、中央補充コンポーネント)機構によって、コンテナ供給管理プロセスの改善を可能にする。補充コンポーネント102は、各呼び出し元コンポーネント121内で必要なランタイム・コンテナの数を定義するプロビジョニング計画をメンテナンスするように構成される。その後、システム100は、エージェント・モデルを介してプロビジョニング計画を各ワーカ・ノード104a...104nに通信する。同様に、補充エージェント123は、必要に応じてコンテナを作成または削除することによって、プロビジョニング計画を適用する。例えば、補充エージェント123は、ワークロードが割り当てられるときに、不必要なランタイムを除去することによって減少したランタイム・コンテナのサイズに関してプロビジョニング計画を適用し、それにより追加空間が関連ノード上で利用可能となる結果をもたらす。プロビジョニング計画は、利用可能となっている空間全体がユニバーサル・コンテナのサイズを超えるときに、補充エージェント123が新たなユニバーサル・コンテナを割り当て得ることを示し得る。
【0017】
システム100は、各ワーカ・ノード(例えば、ワーカ・ノード104a)上の呼び出し元コンポーネント(例えば、呼び出し元コンポーネント121)が、新たなランタイム・コンテナを作成しなければならないか、または次に来るワークロード・アイテムを消費した後で既存のランタイム・コンテナを使用し得るかを判断することを可能にする。補充コンポーネント102は、呼び出し元コンポーネント121から補充コンポーネント102への担当の移転を可能にし得る。追加として、コンテナに関連する作成および準備プロセスは、実際のワークロードが呼び出し元コンポーネントに到達する前に開始され得る。
【0018】
補充コンポーネント102は、プロビジョニング計画を作成することに関して履歴データを分析するための機械学習ケイパビリティを追加することによって、さらに改善されてもよく、それにより関連アクションに対して予期されるワークロードの予測が改善され得る。改善によって、
1.より高速なワーカ・ノードの起動
2.最適化されたコールド・スタート性能による、より高速なワークロードの実行
3.再発生するワークロード・パターンに対する準備
4.最適化されたハードウェア/ソフトウェアのクリーンアップ手続きによる、リソース管理の改善
に関するより良い性能を可能にする結果となり得る。
【0019】
システム100は、ディスパッチャ・コンポーネントに関するキャパシティ・ハンドリングの改善をさらにもたらす。例えば、コントローラ・コンポーネントの2つのインスタンスは、必要かつ利用可能なハードウェア/ソフトウェア/メモリ・キャパシティに基づいて、到来するワークロードをワーカ・ノードにディスパッチすることを可能にされ得る。したがって、両方のコントローラが、個々のワーカ・ノード毎に半分のキャパシティを管理することを可能にされ、それにより、コントローラが、コントローラの管理に関連するキャパシティの比率をネゴシエートすることを可能にする。コントローラが、キャパシティ不足に起因して新たなワークロードを割り当てることができない場合、追加のコントローラが、関連ノードに関する欠落したキャパシティを提供するように構成される。追加のコントローラが、リクエストされたキャパシティを提供することが可能である場合、リクエストは承認され、ワーカ・ノードのための関連キャパシティが、リクエストされた量だけ減少される。続いて、(元の)コントローラが、リクエストされた量だけワーカ・ノードのためのキャパシティ全体を増加させ、ワークロードを割り当てる。追加として、全てのリクエストおよび応答が、各コントローラによって管理されるキャパシティに関連する情報を含む。通信同期問題が存在する場合、関連する状態情報の定期的な交換が、キャパシティ管理を修復するために用いられる。
【0020】
以下の実施例は、配置リクエストからワークロードが実行されるまでのワーカ・ノード上のワークロードの実行に関連するプロセスを示す。
【0021】
プロセスは、クラウド構造内で実行されること、および事前にパッケージ化されたランタイム・コンポーネントを提供することを可能にされる。プロセスは、呼び出し元コンポーネントがワークロード配置リクエストを受信することを可能にすることと、関連するソフトウェア要件でコンテナを位置特定することと、ワークロードを関連するコンテナに割り当てることと、ワークロードを初期化および実行することと、を含む。プロセスは、以下のようにさらに詳述される。
【0022】
ワークロード配置についてのリクエストが、呼び出し元コンポーネントによって受信される。リクエストは、必要なランタイムまたはランタイムのセットに関連する仕様を含む。仕様は、ワークロードを実行するのに必要なソフトウェア・コンポーネントの最小限のセットの宣言的記述を含む。仕様は、追加として、必要なソフトウェアの記述およびそれぞれの最低限のバージョン番号を含んでもよい。ソフトウェアは、ランタイム(例えば、JREまたはPython(R)ランタイム)および必要なライブラリのセットを含み得る。仕様は、ワークロードの要件に関連する。続いて、呼び出し元コンポーネントは、ノード上のコンテナ・インベントリからランタイム仕様に合致する非アクティブ・コンテナに対するリクエストを生成する。仕様を満たすコンテナが存在する場合、それは、インベントリ内でアクティブにマークされる。同様に、呼び出し元コンポーネントは、実行用コンテナ内にワークロードを配置する。コンテナ・インベントリがワークロード仕様に関連するコンテナを含まない場合、コンテナ・レジストリが、必要なコンテナを提供するためにインスタンス化され得るワークロード仕様に関連するテンプレートを含むかどうかを判断するために、分析される。コンテナ・レジストリは、利用可能なコンテナ・テンプレートおよび関連するインストール済みソフトウェアを提示する。コンテナ・レジストリがワークロードの要件に合致するテンプレートを含む場合、呼び出し元コンポーネントは、テンプレートのインスタンスを作成および開始し、コンテナ内でワークロードを配置および実行する。テンプレートのインスタンス化についての必要条件として、関連するノードが、インスタンス化されたコンテナに適合するのに十分なリソースを有する必要がある。コンテナ・リソースの十分な管理が、以下のように説明される。
【0023】
コンテナ・レジストリが、配置されるべきワークロードの要件に合致するテンプレートを含まない場合、ワークロードの要件に基づいて適当なコンテナ・テンプレートを作成するために、テンプレート管理プロセスがトリガされる。作成されたコンテナ・テンプレートは、レジストリに割り当てられる。テンプレート管理プロセスは、以下のような手動プロセスまたは自動化プロセスを含み得る。
1.テンプレート要件が、正当性について検証される。例えば、配置リクエストに関連する仕様が、実在しないバージョン番号または互換性のないバージョン番号を含むために、システムがテンプレートの位置を特定することができない場合がある。
2.プロセス依存関係が、必要なソフトウェアおよびバージョンに関連付けられる。例えば、構築されるテンプレートが、クラウド・プロバイダのポリシーおよびクラウド・プロバイダとワークロードのリクエスト元との間の契約の法的条件に合致することを確認するために、必要なソフトウェアの利用規約が検証される。
3.インスタンス化テンプレートが、予期した通りにワークロードを実行可能であることを保証するために、クラウド環境のリソース制限(ハードウェアまたはソフトウェア)に関して、要件が検証される。
4.必要なソフトウェア・パッケージが、テンプレート作成のためにダウンロードおよびインストールされる。
5.テンプレートが、コンテナ・レジストリ内に配置される。
【0024】
システム100は、クラウド・プロバイダが、プログラミング言語の人気度に基づいて、または顧客調査の結果として生成された標準テンプレートのセットを含むテンプレート・レジストリを開始し得るように、ワークロード処理のためにクラウド環境をセットアップするように構成される。代替として、テンプレート・レジストリは、最初は空の構造体として構成されてもよく、全てのテンプレート作成が、上記で説明した通り、テンプレート管理プロセスに関連する。標準テンプレートのセットに関するプロセスを開始することによって、早期展開のために応答時間が高速化され得る。
【0025】
コンテナ・リソース管理に関する前述の説明は、配置リクエストを受信することと、ワークロードがコンテナ上で実行中である間に発生する期間が、「time-until-up(アップまでの時間)」期間と呼ばれるように、リソース消費の最適化をもたらす。コンテナ初期化プロセスは、time-until-up期間に対して著しい影響を有し得るため、高速応答時間は、コンテナがノード上に事前にプロビジョニングされることを要求し得る。ワークロードにわたって最小限のtime-until-up期間を可能にするための主な成功要因は、コンテナ・レジストリ内にテンプレートの適当なセットを保持すること、および到来するワークロード要件に合致する見込みが高いテンプレートが混在したものを事前にプロビジョニングすることを含み得る。追加で必要とされるステップが、事前にプロビジョニングされたコンテナの削除などの修復を必要とし得るため、不正確な決定は、time-until-up期間に追加として悪影響を及ぼし得る。例えば、ランタイムA、B、Cに基づいてノードにコンテナが事前プロビジョニングされており、かつ顧客がランタイムDおよびEを必要とする指定された数のワークロードについてリクエストを開始する場合、コンテナは、ノード上でスワップすることを必要としてもよく、新たなコンテナは、インスタンス化を必要としてもよく、それは、既に事前プロビジョニングされたコンテナ上にワークロードを配置するよりも大きなコストを必要とし得る。
【0026】
ユニバーサル・コンテナは、全ての到来するワークロードの仕様に合致する必要がある事前インストールされた全てのソフトウェア・パッケージを含むコンテナ・テンプレート(構造)として、本明細書では定義される。ユニバーサル・コンテナは、不必要なソフトウェア・コンポーネントの容易な除去が、将来のワークロード配置のためにリソースを解放することを可能にするための、コンテナ(ソフトウェア/ハードウェア)・エンジンによって提供されるパーティショニング・ケイパビリティを含む。ソフトウェア・コンポーネントは、それらが単一コンテナ内で共存することができない場合があるように、互換性がないと判断されることがある。したがって、複数のユニバーサル・コンテナが必要とされることがある。
【0027】
ユニバーサル・コンテナ処理は、ユニバーサル・コンテナ内に存在するソフトウェアに関するワークロード要件を分析することを含み得る。不整合が検出される場合、呼び出し元コンポーネントは、必要なソフトウェアをユニバーサル・コンテナに追加し得る。同様に、ユニバーサル・コンテナがワークロード要件に合致する場合、非アクティブなユニバーサル・コンテナに対してインベントリがチェックされ、不必要なソフトウェア・コンポーネントがユニバーサル・コンテナから除去され、ワークロードは、コンテナ内に配置されて実行される。コンテナは、インベントリにおいてアクティブとしてマークされる。
【0028】
ユニバーサル・コンテナは、以下の利点を与える。
【0029】
合致するコンテナの位置特定をすることに関連する決定の簡略化。例えば、ワークロード要件は、ユニバーサル・コンテナ内に存在するソフトウェアに関して一度だけ照合される必要があり得る。照合プロセスは、全ての事前プロビジョニングされた非アクティブ・コンテナがユニバーサル・コンテナ・イメージのインスタンスを含むため、少なくとも1つの非アクティブ・コンテナを含むノード上でのみ実行される必要がある。ユニバーサル・コンテナがワークロード要件を満たさない場合、それは、テンプレート管理プロセスの間必要なソフトウェアを用いて拡張され得る。追加されたソフトウェアは、将来のワークロードによる使用のために存在することになる。
【0030】
ユニバーサル・コンテナは、特定のワークロード要件に対処するように構成されたコンテナよりも多くのストレージ空間を必要とし得る。したがって、ユニバーサル・コンテナがワークロードに必要な最小限のソフトウェアに調整されるため、コンテナが非アクティブである間、またはワークロードが配置される間、および不必要なソフトウェアの除去を含むコンテナ・サイズ調整プロセスの間のみ、オーバヘッドが存在する。補充コンポーネントは、新たなユニバーサル・コンテナをインテリジェントに割り当てることによって、利用可能な空間を管理するように構成され得る。
【0031】
図2は、本発明の実施形態による、層状修正可能フォーマット内に潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを実行するアプリケーションを生成すること、ならびにユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することに関連するランタイム・コンテナ・ソフトウェア技術を改善するための、
図1のシステム100によって可能にされるプロセス・フローを詳細化したアルゴリズムを示す。
図2のアルゴリズム内の各ステップは、コンピュータ・コードを実行するコンピュータ・プロセッサによって、任意の順番で作動され、実行され得る。追加として、
図2のアルゴリズム内の各ステップは、
図1のエッジ・サーバ107、コントローラ106aおよび106b、メッセージング・コンポーネント109、補充コンポーネント102、ならびにワーカ・ノード104a...104nによる組合せで作動され、実行されてもよい。ステップ200において、複数のワーカ・ノードのうちの各ワーカ・ノードに必要なランタイム・コンテナの数および関連特徴が、指定されたワークロードの実行用に(集中メンテナンス・デバイスによって)定義される。ステップ202において、指定されたワークロードが、協調型コントローラを介して複数のワーカ・ノードにディスパッチされる。同様に、協調型コントローラ間のワークロード・キャパシティが、ネゴシエートされてもよく、ディスパッチ・プロセスは、ネゴシエーションの結果に基づいて実行されてもよい。ディスパッチ・プロセスは、協調型コントローラのハードウェアおよびソフトウェア・キャパシティに基づいて実行されてもよい。
【0032】
ステップ204において、指定されたワークロードの指定部分が、協調型コントローラを介して各ワーカ・ノードに割り当てられる。ステップ208において、ユニバーサル・ランタイム・コンテナを実行するアプリケーションが、ステップ204の結果に基づいて生成される。ユニバーサル・ランタイム・コンテナは、複数の層を含む層状修正可能フォーマット内に潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む。追加として、各ワーカ・ノードがユニバーサル・ランタイム・コンテナを有効にするための指定された数のハードウェアおよびソフトウェア・リソースを含むと、判断され得る。
【0033】
ステップ210において、複数の層のうちの未使用層が、補充エージェント・コンポーネントの実行によって除去される。除去プロセスは、指定されたワークロードの各指定部分の実行に必要ではない潜在アプリケーション・ランタイムのアプリケーション・ランタイムを除去することをさらに含み得る。補充エージェント・コンポーネントは、指定されたワークロードを実行し、ユニバーサル・ランタイム・コンテナの将来のインスタンスを生成する、前のインスタンスに関連付けられた履歴データを分析するように構成される、統計プロセスまたは機械学習ケイパビリティを含み得る。
【0034】
ステップ212において、指定されたワークロードは、ユニバーサル・ランタイム・コンテナによって実行される。ステップ214において、関連するワーカ・ノード上で利用可能なユニバーサル・ランタイム・コンテナのセットが補充される。追加として、(上記利用可能なユニバーサル・ランタイム・コンテナのセットの)各コンテナが、初期化コンテナまたは初期化のために構成された無効化コンテナを含むかどうかが判断され得る。
【0035】
図3は、本発明の実施形態による、ワークロードを実行するように構成されるワーカ・ノード300の詳細図を示す。ワーカ・ノード300は、呼び出し元コンポーネント302と、補充エージェント・コンポーネント304と、作成動作、休止動作、除去動作などの(実行中コンテナ310および事前ウォーム・コンテナ312のための)全てのランタイム・コンテナ関連動作をハンドリングすることを担当するコンテナ・ブリッジ308と、を含む。呼び出し元コンポーネント302は、到来するワークロードの全ライフサイクル、ならびに実行中コンテナ310および事前ウォーム・コンテナ312を管理するように構成される。ワーカ・ノード300は、3種類のワークロード実行:コールド実行、事前ウォーム実行、およびウォーム実行に関連する。
【0036】
性能およびレイテンシの用語に関して、ウォーム実行は、事前ウォーム実行およびコールド実行よりも高速の動作に関連する。ウォーム実行は、呼び出し元コンポーネント302が、到来するワークロード・リクエストを実行するために実行中ユーザ・コンテナを再使用することを可能にする。同様に、コールド実行は、初期化のために新たなコンテナを必要とする。コールド実行の量を最小化するために、呼び出し元コンポーネント302は、初期化されているが、特定の顧客またはワークロードに対してまだカスタマイズされていない、事前ウォーム・コンテナのプールを含む。事前ウォーム・コンテナの分布および量が、呼び出し元コンポーネントの起動中に評価用の構成として記憶される。構成設定は、静的であり、展開でのみ変更され得る。
【0037】
補充エージェント・コンポーネント304は、ウォーム・コンテナおよび事前ウォーム・コンテナのプールを管理することを担当する。補充エージェント・コンポーネント304は、システム内の現在のニーズに基づいて、指定された種類および数のコンテナを事前プロビジョニングするためのケイパビリティを可能にする。したがって、ワークロードをコールド実行として実行するための機会は、劇的に減少する。
【0038】
補充エージェント・コンポーネント304は、処理待機時間を減少させるか、またはコールド実行を回避するためのプロセスを可能にする。このプロセスは、呼び出し元コンポーネント302がワークロードを消費し、ワークロードが新たなコンテナを開始する必要がある(コールド実行)かどうか、または(事前)ウォーム・コンテナがワークロードの実行に利用可能であるかどうかを判断するときに、開始される。ワーカ・ノードが必要なコンテナを既に開始しているとき、呼び出し元コンポーネント302がワークロードを受信する前に判断が実行されて、それによりコールド実行を回避し得る。同様に、補充エージェント・コンポーネント304がコンテナをすぐに開始することができない場合、ワークロードの実行準備ができるまでの待機時間が減少し得る。
【0039】
補充エージェント・コンポーネント304は、
図1のシステム100が、履歴データを評価することによってワークロードを再発生させるために準備することを可能にする。補充エージェント・コンポーネント304は、特定のコンテナ種類の必要性を検出することが可能であり、この情報に基づいて、実際のワークロードが関連するワーカ・ノードによって実行される前に、プロビジョニング計画が、必要なコンテナを開始するために生成される。したがって、(
図1の)システム100は、コールド実行を扱うことなく適時に応答することが可能である。補充エージェント・コンポーネント304は、追加として、過去に実行された、検出済みワークロードのシーケンスを検出し得る。この場合、補充エージェント・コンポーネント304は、追加として、実際のワークロードがワーカ・ノードに到達する前に、必要なコンテナをプロビジョニングし得る。履歴データの使用によって、補充エージェント・コンポーネント304が、到来するワークロードの種類および量をシステムが予測することを可能にすることが可能となる。補充エージェント・コンポーネント304は、単純な統計モジュールも高度なモデルベース予測システムも連結し得る、プラグ可能な予測ケイパビリティを提供し、それにより、ウォーム実行に対するコールド実行の比率を低下させることによってシステム性能を改善する。
【0040】
図4A~
図4Dは、本発明の実施形態による、ディスパッチャ・コンポーネントの改善されたキャパシティ・ハンドリングを可能にするためのプロセスを示す。例えば、コントローラが、リクエストに関連するキャパシティ不足に起因して、指定されたワーカ・ノードでワークロードを配置することができないとき、ワークロード配置のために別のワーカ・ノードを位置特定しようとする代わりに、追加コントローラから追加キャパシティが割り当てられ得る。必要なキャパシティの量および現在管理されるキャパシティの総量が、リクエストと共に送信され得る。追加コントローラは、特定のワーカ・ノード上でリクエストされた量のキャパシティを与えることができるかどうか、かつ利用可能なキャパシティに基づいて、リクエストが受け入れられるか、または拒絶されるかを検証し得る。追加のワーカ・ノードがリクエストを受け入れる場合、その利用可能なキャパシティをリクエストされた量だけ減少させる。関連する応答は、コントローラ管理に関連する現在のキャパシティの量を提示する。
【0041】
図4A~
図4Dは、16GBのキャパシティを含むワーカ・ノード上で最初は8GBのメモリを管理する2つのコントローラに関連する、実施態様の例を示す。両方のコントローラが、それぞれ6GBの既存のワークロードでワーカ・ノードを占有し、それにより、各コントローラに2GBの残りのキャパシティがある。
【0042】
図4Aは、ワークロード・キャパシティをシフトするリクエストが成功する結果となるプロセスに関連する第1の実施例を示す。プロセスは、3GBのキャパシティを必要とするワークロード404aがコントローラ400aにおいてリクエストされるときに開始される。コントローラ400aは、その残りのキャパシティが2GBしかないため、ワーカ・ノード上にワークロードを配置することができない。これに応じて、コントローラ400aは、コントローラ402aからの1GBの追加キャパシティについてのリクエストを開始する。コントローラ402aは、ワーカ・ノードに対して1GBのメモリを与えることができるため、リクエストを受け入れる。前述のプロセスによって、管理するメモリの総量は7GBに減少し、受け入れ応答が送信される。応答を受信することに応じて、コントローラ400aは、管理するキャパシティの量を9GBに増加させ、ワークロード404aをワーカ・ノード上に配置する。
【0043】
図4Bは、キャパシティをシフトするリクエストが不成功の結果となるプロセスに関連する第2の実施例を示す。プロセスは、5GBのキャパシティを必要とするワークロード404bがコントローラ400bにおいてリクエストされるときに開始される。コントローラ400bは、その残りのキャパシティが2GBしかないため、ワーカ・ノード上にワークロード404bを配置することができない。これに応じて、コントローラ400bは、コントローラ402aからの3GBの追加キャパシティについてのリクエストを開始する。コントローラ402bは、ワーカ・ノードのために3GBのメモリを与えることができないため、リクエストを拒絶する。同様に、コントローラ402bは、それが管理するメモリの総量を8GBに維持し、拒絶応答を送信する。応答を受信することに応じて、コントローラ400bは、ワークロード404bを異なるワーカ・ノード上に配置するか、またはキャパシティが再び利用可能になるまで、リクエストされたワークロード404bを延期する必要がある。
【0044】
図4Cは、自己回復結果でキャパシティをシフトするリクエストが成功する結果となるプロセスに関連する第3の実施例を示す。以前の誤通信に起因して、コントローラ402cは、それがワーカ・ノード上で現在6GBのメモリだけを管理すると仮定し、3GBのキャパシティを必要とするワークロード404cがコントローラ400cにおいてリクエストされる。コントローラ400cは、その残りのキャパシティが2GBしかないため、ワーカ・ノード上にワークロード404cを配置することができない。これに応じて、コントローラ400cは、コントローラ402aから1GBの追加キャパシティをリクエストする。同様に、コントローラ400cは、リクエストと、コントローラ400cが総量8GBのメモリを現在管理することを示す追加情報と、を送信する。これに応じて、コントローラ402cは、管理するキャパシティの両方の総量を合計し、コントローラ402cが管理するキャパシティの量に対して追加する、追加の2GBの差があると判断する。新たな総キャパシティに基づいて、コントローラ402cは、ワーカ・ノード上で1GBのメモリを与えることができ、したがってリクエストを受け入れる。コントローラ402cは、それが管理するメモリの総量を7GBに調整し、受け入れ応答を送信する。応答を受信することに応じて、コントローラ400cは、管理するキャパシティの量を9GBに増加させ、ワークロード404cをワーカ・ノード上に配置する。
【0045】
図4Dは、自己回復結果でキャパシティをシフトするリクエストが不成功の結果となるプロセスに関連する第4の実施例を示す。以前の誤通信に起因して、コントローラ400dは、それがワーカ・ノード上で現在9GBのメモリだけを管理すると判断し、5GBのキャパシティを必要とするワークロード404dがコントローラ400dにおいてリクエストされる。コントローラ400dは、その残りのキャパシティが3GBしかないため、ワーカ・ノード上にワークロード404dを配置することができない。これに応じて、コントローラ400dは、コントローラ402dから2GBの追加キャパシティをリクエストする。同様に、コントローラ400dは、リクエストと、コントローラ400dが総量9GBのメモリを現在管理することを示す追加情報と、を送信する。これに応じて、コントローラ402dは、管理するキャパシティの両方の総量を合計し、1GBのメモリが足りていないと判断し、したがって管理するキャパシティの量から1GBを除去する。コントローラ402dは、ワーカ・ノード上で2GBのメモリを与えることができないため、リクエストを拒絶する。同様に、コントローラ402dは、管理するメモリの総量を7GBに調整し、拒絶応答を送信する。応答を受信することに応じて、コントローラ400dは、ワークロード404dを異なるワーカ・ノード上に配置するか、またはキャパシティが再び利用可能になるまで、リクエストされたワークロード404dを延期する必要がある。
【0046】
図5は、本発明の実施形態による、潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを層状修正可能フォーマット内に含むユニバーサル・ランタイム・コンテナを実行し、ユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行する、アプリケーションを生成することに関連するランタイム・コンテナ・ソフトウェア技術を改善するための、
図1のシステムによって使用され、または構成されるコンピュータ・システム90(例えば、
図1のエッジ・サーバ107、コントローラ106aおよび106b、メッセージング・コンポーネント109、補充コンポーネント102、およびワーカ・ノード104a...104n)を示す。
【0047】
本発明の態様は、完全なハードウェア実施形態、完全なソフトウェア実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または本明細書で「回路」、「モジュール、」、もしくは「システム」と全て概して呼ばれ得るソフトウェアおよびハードウェア態様を組み合わせる実施形態の形態を取ってもよい。
【0048】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0049】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し、記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組合せであってもよいが、それらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはFlashメモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令をその上に記録させる溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組合せを含む。本明細書で用いられるコンピュータ可読記憶媒体は、電波もしくは他の自由伝播する電磁波、導波管もしくは他の送信媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通って送信される電気信号などの、一過性信号それ自体であると解釈されるべきではない。
【0050】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組合せを介して外部コンピュータまたは外部記憶デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含み得る。各コンピューティング/処理装置内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体内の記憶用に、コンピュータ可読プログラム命令を転送する。
【0051】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通してユーザのコンピュータに接続されてもよく、または、接続は、(例えば、インターネット・サービス・プロバイダを用いてインターネットを通して)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を用いて電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
【0052】
本発明の態様は、本発明の実施形態による、方法、デバイス(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せが、コンピュータ可読プログラム命令によって実施され得ると理解されたい。
【0053】
コンピュータまたは他のプログラマブル・データ処理デバイスのプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段を作成するように、これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、モバイル・デバイス、スマート・ウォッチ、または機械を製造するための他のプログラマブル・データ処理デバイスのプロセッサに提供されてもよい。内部に記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラマブル・データ処理デバイス、または他のデバイス、あるいはその組合せが特定の方法で機能するように指示し得る、コンピュータ可読記憶媒体に記憶されてもよい。
【0054】
コンピュータ、他のプログラマブル・デバイス、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ可読プログラム命令はまた、一連の動作ステップが、コンピュータ実施プロセスを生成するためにコンピュータ、他のプログラマブル・デバイス、または他のデバイス上で実行されるようにするために、コンピュータ、他のプログラマブル・データ処理デバイス、または他のデバイス上にロードされてもよい。
【0055】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実施態様のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替実施態様において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される2つのブロックが、実際には、同時に、実質的に同時に、部分的または全体的に時間的に重複して実行されて、1つのステップとして実現されてもよく、または、ブロックが、関係する機能性次第で逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェア・ベース・システムによって実施され得ることにも留意されたい。
【0056】
図5に示されるコンピュータ・システム90は、プロセッサ91、プロセッサ91に連結された入力デバイス92、プロセッサ91に連結された出力デバイス93、ならびにプロセッサ91にそれぞれ連結されたメモリ・デバイス94および95を含む。入力デバイス92は、特に、キーボード、マウス、カメラ、タッチスクリーンなどであってもよい。出力デバイス93は、特に、プリンタ、プロッタ、コンピュータ・スクリーン、磁気テープ、リムーバブル・ハード・ディスク、フロッピー(R)・ディスクなどであってもよい。メモリ・デバイス94および95は、特に、ハード・ディスク、フロッピー(R)・ディスク、磁気テープ、コンパクト・ディスク(CD)またはデジタル・ビデオ・ディスク(DVD)などの光学ストレージ、ダイナミック・ランダム・アクセス・メモリ(DRAM)、読み出し専用メモリ(ROM)などであってもよい。メモリ・デバイス95は、コンピュータ・コード97を含む。コンピュータ・コード97は、潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを層状修正可能フォーマット内に含むユニバーサル・ランタイム・コンテナを生成すること、ならびにユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することに関連するランタイム・コンテナ・ソフトウェア技術を改善するためのアルゴリズム(例えば、
図2のアルゴリズム)を含む。プロセッサ91は、コンピュータ・コード97を実行する。メモリ・デバイス94は、入力データ96を含む。入力データ96は、コンピュータ・コード97により必要とされる入力を含む。出力デバイス93は、コンピュータ・コード97からの出力を表示する。メモリ・デバイス94および95のいずれかもしくは両方(または、読み出し専用メモリ(ROM)・デバイスまたはファームウェア85などの1つもしくは複数の追加メモリ・デバイス)は、アルゴリズム(例えば、
図2のアルゴリズム)を含んでもよく、そこに具現化されたコンピュータ可読プログラム・コードを有する、またはそこに記憶された他のデータを有する、あるいはその両方であるコンピュータ使用可能媒体(または、コンピュータ可読媒体もしくはプログラム記憶デバイス)として使用されてもよく、コンピュータ可読プログラム・コードは、コンピュータ・コード97を含む。概して、コンピュータ・システム90のコンピュータ・プログラム製品(または代替的には、製品)は、コンピュータ使用可能媒体(または、プログラム記憶デバイス)を含み得る。
【0057】
いくつかの実施形態では、ハード・ドライブ、光学ディスク、または他の書き込み可能、書き換え可能、もしくはリムーバブル・ハードウェア・メモリ・デバイス95から記憶およびアクセスされるのではなく、記憶されたコンピュータ・プログラム・コード84(例えば、アルゴリズムを含む)は、ROMデバイスもしくはファームウェア85などの静的非リムーバブル読み出し専用記憶媒体上に記憶されてもよく、またはそのような静的非リムーバブル読み出し専用媒体から直接プロセッサ91によってアクセスされてもよい。同様に、いくつかの実施形態では、記憶されたコンピュータ・プログラム・コード97は、ROMデバイスもしくはファームウェア85として記憶されてもよく、またはハード・ドライブもしくは光学ディスクなどの、より動的もしくはリムーバブルなハードウェア・データ記憶デバイス95からではなく、そのようなROMデバイスもしくはファームウェア85から直接プロセッサ91によってアクセスされてもよい。
【0058】
さらに、本発明のコンポーネントのいずれかが、潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを層状修正可能フォーマット内に含むユニバーサル・ランタイム・コンテナを生成すること、ならびにユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することに関連する、ランタイム・コンテナ・ソフトウェア技術を改善することを提案するサービス供給者によって、作成され、統合され、ホストされ、メンテナンスされ、展開され、管理され、サービスされるなどであり得る。したがって、本発明は、コンピュータ可読コードをコンピュータ・システム90に統合することを含む、コンピューティング・インフラストラクチャを展開し、作成し、統合し、ホストし、メンテナンスし、または統合し、あるいはそれらの組合せを行うためのプロセスを開示する。コンピュータ・システム90と組み合わせたコードは、潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを層状修正可能フォーマット内に含むユニバーサル・ランタイム・コンテナを生成すること、ならびにユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することに関連する、ランタイム・コンテナ・ソフトウェア技術を改善するためのプロセスを可能にする方法を実行することが可能である。別の実施形態では、本発明は、サブスクリプション、広告、または料金、あるいはその組合せ単位で、本発明のプロセス・ステップを実行するビジネス方法を提供する。即ち、ソリューション・インテグレータなどのサービス供給者は、潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを層状修正可能フォーマット内に含むユニバーサル・ランタイム・コンテナを生成すること、ならびにユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することに関連するランタイム・コンテナ・ソフトウェア技術を改善するためのプロセスを可能にすることを提案し得る。この場合、サービス供給者は、1人または複数の顧客に対して本発明のプロセス・ステップを実行するコンピュータ・インフラを作成し、メンテナンスし、サポートなどし得る。これと引き換えに、サービス供給者は、サブスクリプションもしくは料金またはその両方の合意のもとに顧客から支払いを受けることができるか、またはサービス供給者は、1つまたは複数の第三者へのコンテンツ広告販売から支払いを受けることができるか、あるいはその両方である。
【0059】
図5は、ハードウェアおよびソフトウェアの構成として、コンピュータ・システム90を示しているが、当業者には既知であるハードウェアおよびソフトウェアの任意の構成が、
図5のコンピュータ・システム90と併せて、上述した目的に利用されてもよい。例えば、メモリ・デバイス94および95は、別々のメモリ・デバイスではなく単一のメモリ・デバイスの一部であってもよい。
【0060】
クラウド・コンピューティング環境
本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書に挙げる教示の実施態様は、クラウド・コンピューティング環境に限定されないと理解されたい。むしろ、本発明の実施形態は、現在既知の、または後に開発される任意の他の種類のコンピューティング環境と併せて実施されることが可能である。
【0061】
クラウド・コンピューティングは、最小の管理労力またはサービス・プロバイダとの対話で迅速にプロビジョニングされ、リリースされ得る、構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想機械、およびサービス)の共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含み得る。
【0062】
特性は、以下の通りである。
【0063】
オンデマンド・セルフサービス:クラウド消費者は、サービス・プロバイダと人との対話を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング・ケイパビリティを一方的にプロビジョニングし得る。
【0064】
幅広いネットワーク・アクセス:ケイパビリティは、ネットワーク上で利用可能であり、異種シン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを通してアクセスされる。
【0065】
リソースの共用:プロバイダのコンピューティング・リソースが、マルチテナント型モデルを使用して複数の消費者にサービスするためにプールされ、異なる物理リソースおよび仮想リソースが要求に従って動的に割り当ておよび再割り当てされる。消費者が、概して、提供されるリソースの正確な場所に対する制御または知識を有しないが、より高い抽象レベル(例えば、国、州、またはデータセンタ)において場所を指定することが可能であり得るという点において、位置独立の意味がある。
【0066】
スピーディな拡張性:ケイパビリティは、場合によっては自動的に、即座にスケール・アウトするようにスピーディかつ弾力的にプロビジョニングされ、即座にスケール・インするようにスピーディに解放され得る。消費者に対しては、プロビジョニングに利用可能なケイパビリティが、多くの場合無制限であるように見え、いつでも任意の量で購入可能である。
【0067】
サービスが計測可能であること:クラウド・システムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブ・ユーザ・アカウント)に適したある抽象レベルにおいて計測ケイパビリティを活用することによって、リソース使用を自動的に制御し、最適化する。リソース使用量は、モニタリングされ、制御され、報告されて、利用サービスのプロバイダおよび消費者の両方に透明性をもたらし得る。
【0068】
サービス・モデルは、以下の通りである。
【0069】
サービスとしてのソフトウェア(SaaS):消費者に提供されるケイパビリティは、クラウド・インフラ上で実行中のプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インターフェース(例えば、ウェブ・ベースの電子メール)を通して、様々なクライアント・デバイスからアクセス可能である。消費者は、限定されたユーザ固有アプリケーションの構成設定は例外である可能性があるが、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション・ケイパビリティでさえも含む、基礎的なクラウド・インフラを管理または制御しない。
【0070】
サービスとしてのプラットフォーム(PaaS):消費者に提供されるケイパビリティは、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者が作成したアプリケーションまたは消費者が取得したアプリケーションを、クラウド・インフラ上に展開することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎的なクラウド・インフラを管理または制御しないが、展開されたアプリケーション、および、可能な限りアプリケーション・ホスティング環境構成に対して制御を行う。
【0071】
サービスとしてのインフラ(IaaS):消費者に提供されるケイパビリティは、処理、ストレージ、ネットワーク、ならびに消費者がオペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを展開および実行することが可能な、他の基本コンピューティング・リソースをプロビジョニングすることである。消費者は、基礎となるクラウド・インフラを管理または制御しないが、オペレーティング・システム、ストレージ、展開されたアプリケーションに対して制御を行い、かつ可能な限り選択ネットワーキング・コンポーネント(例えば、ホスト・ファイアウォール)の限定的な制御を行う。
【0072】
展開モデルは、以下の通りである。
【0073】
プライベート・クラウド:クラウド・インフラは、組織のためだけに動作される。クラウド・インフラは、その組織または第三者によって管理されてもよく、構内または構外に存在し得る。
【0074】
コミュニティ・クラウド:クラウド・インフラは、複数の組織によって共有され、共有の関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラは、その組織または第三者によって管理されてもよく、構内または構外に存在し得る。
【0075】
パブリック・クラウド:クラウド・インフラは、一般公衆または大きな業界団体に利用可能とされ、クラウド・サービスを販売する組織によって所有される。
【0076】
ハイブリッド・クラウド:クラウド・インフラは、一意なエンティティのままであるが、データおよびアプリケーション・ポータビリティを可能にする標準化技術または独自技術(例えば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって結合された、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成物である。
【0077】
クラウド・コンピューティング環境は、ステートレス性、低結合、モジュール性、および意味相互運用性を中心としたサービス指向型である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラである。
【0078】
ここで
図6を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示するように、クラウド・コンピューティング環境50は、クラウド消費者によって使用されるローカル・コンピューティング・デバイス、例えば、携帯情報端末(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはそれらの組合せが通信し得る、1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信し得る。それらは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはそれらの組合せなどの、1つまたは複数のネットワーク内で物理的または仮想的にグループ化され得る(図示せず)。これによって、クラウド・コンピューティング環境50が、インフラ、プラットフォーム、またはソフトウェア、あるいはそれらの組合せを、クラウド消費者がローカル・コンピューティング・デバイス上でリソースを維持する必要がないサービスとして提案することが可能となる。
図6に示されるコンピューティング・デバイス54A、54B、54C、および54Nの種類は、単なる例示であるように意図され、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続あるいはその組合せを経て(例えば、ウェブ・ブラウザを用いて)、任意の種類のコンピュータ化デバイスと通信し得ると理解される。
【0079】
ここで
図7を参照すると、クラウド・コンピューティング環境50(
図6を参照)によって提供される機能抽象層のセットが示されている。
図7に示されるコンポーネント、層、および機能は、単なる例示であるように意図され、本発明の実施形態は、それらに限定されないと、予め理解されたい。図示されるように、以下の層および対応する機能が提供される。
【0080】
ハードウェアおよびソフトウェア層60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャ・ベース・サーバ62、サーバ63、ブレード・サーバ64、記憶デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66を含む。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0081】
仮想化層70は、仮想エンティティの以下の例、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75が提供され得る、抽象層を提供する。
【0082】
一実施例では、管理層80は、後述する機能を提供し得る。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される、コンピューティング・リソースおよび他のリソースの動的な調達を提供する。測定および価格設定82は、リソースが、クラウド・コンピューティング環境内で利用される際のコスト追跡、およびこれらのリソースの消費に対する課金または請求を提供する。一実施例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、データおよび他のリソースについての保護だけでなく、クラウド消費者およびタスクのための本人確認を提供する。ユーザ・ポータル83は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理87は、必要とされるサービス・レベルが満たされるように、クラウド・コンピューティング・リソース・アロケーションおよび管理を提供する。サービス水準合意(SLA)計画および遂行88は、SLAに従って将来の要件が予期されるクラウド・コンピューティング・リソースの事前配置および調達を提供する。
【0083】
ワークロード層101は、クラウド・コンピューティング環境が利用され得る機能性の例を提供する。この層から提供され得るワークロードおよび機能の実施例は、マッピングおよびナビゲーション99、ソフトウェア開発およびライフサイクル管理103、仮想クラスルーム教育配信133、データ分析処理134、トランザクション処理106、ならびに潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを層状修正可能フォーマット内に含むユニバーサル・ランタイム・コンテナを生成すること、ならびにユニバーサル・ランタイム・コンテナを介して指定されたワークロードを実行することに関連する、ランタイム・コンテナ・ソフトウェア技術を改善すること110を含む。
【0084】
本発明の実施形態が、本明細書において例示の目的で説明されているが、多くの修正および変更が、当業者には明らかとなるであろう。したがって、添付の特許請求の範囲は、本発明の真の思想および範囲内に入るものとしてそのような修正および変更の全てを包含するように意図される。
【手続補正書】
【提出日】2023-12-21
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
サーバレス・ランタイム・コンテナ・アロケーション方法であって、
集中メンテナンス・デバイスのプロセッサによって、指定されたワークロードの実行用の複数のワーカ・ノードのうちの各ワーカ・ノードに必要なランタイム・コンテナの数および関連特徴を定義することと、
複数の協調型コントローラを介して前記プロセッサによって、前記指定されたワークロードを前記複数のワーカ・ノードにディスパッチすることと、
前記複数の協調型コントローラを介して前記プロセッサによって、前記指定されたワークロードの指定部分をそれぞれの前記ワーカ・ノードに割り当てることと、
前記割り当てることの結果に基づいて前記プロセッサによって、複数の層を含む層状修正可能フォーマット内に複数の潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを実行するアプリケーションを生成することと、
補充エージェント・コンポーネントを実行する前記プロセッサによって、前記ユニバーサル・ランタイム・コンテナの前記複数の層のうちの未使用層を除去することと、
前記ユニバーサル・ランタイム・コンテナを前記生成することに応答して前記プロセッサによって、前記ユニバーサル・ランタイム・コンテナを介して前記指定されたワークロードを実行することと、
前記実行することに応答して前記複数の協調型コントローラを介して前記プロセッサによって、前記複数のワーク・ノードのうちの関連するワーカ・ノード上で利用可能なユニバーサル・ランタイム・コンテナのセットを補充することと、
を含む、サーバレス・ランタイム・コンテナ・アロケーション方法。
【請求項2】
前記除去することが、前記指定されたワークロードのそれぞれの指定部分の実行に必要ではない前記潜在アプリケーション・ランタイムのアプリケーション・ランタイムを除去することをさらに含む、請求項1に記載の方法。
【請求項3】
前記補充エージェント・コンポーネントが、前記指定されたワークロードを実行し、前記ユニバーサル・ランタイム・コンテナの将来のインスタンスを生成する、前のインスタンスに関連付けられた履歴データを分析するように構成される、統計プロセスまたは機械学習ケイパビリティを含む、請求項1または2に記載の方法。
【請求項4】
前記プロセッサによって、それぞれの前記ワーカ・ノードが、前記ユニバーサル・ランタイム・コンテナを有効にするための指定された数のハードウェアおよびソフトウェア・リソースを含むと判断することをさらに含む、請求項1ないし3のいずれか一項に記載の方法。
【請求項5】
前記プロセッサによって、前記複数の協調型コントローラ間でワークロード・キャパシティをネゴシエートすることであって、前記指定されたワークロードを前記複数のワーカ・ノードに前記ディスパッチすることが、前記ネゴシエートすることの結果に基づいて実行される、前記ネゴシエートすることをさらに含む、請求項1ないし4のいずれか一項に記載の方法。
【請求項6】
前記プロセッサによって、前記利用可能なユニバーサル・ランタイム・コンテナの前記セットの各コンテナが、初期化コンテナまたは初期化のために構成された無効化コンテナを含むかどうかを判断することをさらに含む、請求項1ないし5のいずれか一項に記載の方法。
【請求項7】
前記ディスパッチすることが、前記複数の協調型コントローラのハードウェアおよびソフトウェア・キャパシティに基づいて実行される、請求項1ないし6のいずれか一項に記載の方法。
【請求項8】
サーバ・ハードウェア・デバイスにおいてコンピュータ可読コードを作成すること、統合すること、ホストすること、メンテナンスすること、および展開することのうちの少なくとも1つのために少なくとも1つのサポート・サービスを提供することであって、前記コードが、前記定義すること、前記ディスパッチすること、前記割り当てること、前記生成すること、前記除去すること、前記実行すること、および前記補充することを実施するために前記プロセッサによって実行される、前記提供することをさらに含む、請求項1ないし7のいずれか一項に記載の方法。
【請求項9】
コンピュータ・プログラムであって、請求項1ないし8のいずれか一項に記載の方法をコンピュータに実行させるための、コンピュータ・プログラム。
【請求項10】
請求項9に記載のコンピュータ・プログラムを記録した、コンピュータ可読記録媒体。
【請求項11】
コンピュータ可読メモリ・ユニットに連結されたプロセッサを含む集中メンテナンス・デバイスであって、前記メモリ・ユニットが、前記プロセッサによる実行時にサーバレス・ランタイム・コンテナ・アロケーション方法を実施する命令を含み、前記方法が、
前記プロセッサによって、指定されたワークロードの実行用の複数のワーカ・ノードのうちの各ワーカ・ノードに必要なランタイム・コンテナの数および関連特徴を定義することと、
複数の協調型コントローラを介して前記プロセッサによって、前記指定されたワークロードを前記複数のワーカ・ノードにディスパッチすることと、
前記複数の協調型コントローラを介して前記プロセッサによって、前記指定されたワークロードの指定部分をそれぞれの前記ワーカ・ノードに割り当てることと、
前記割り当てることの結果に基づいて前記プロセッサによって、複数の層を含む層状修正可能フォーマット内に複数の潜在アプリケーション・ランタイムおよび関連するサポートされるソフトウェア・バージョンを含む、ユニバーサル・ランタイム・コンテナを実行するアプリケーションを生成することと、
補充エージェント・コンポーネントを実行する前記プロセッサによって、前記ユニバーサル・ランタイム・コンテナの前記複数の層のうちの未使用層を除去することと、
前記ユニバーサル・ランタイム・コンテナを前記生成することに応答して前記プロセッサによって、前記ユニバーサル・ランタイム・コンテナを介して前記指定されたワークロードを実行することと、
前記実行することに応答して前記複数の協調型コントローラを介して前記プロセッサによって、前記複数のワーク・ノードのうちの関連するワーカ・ノード上で利用可能なユニバーサル・ランタイム・コンテナのセットを補充することと、
を含む、集中メンテナンス・デバイス。
【請求項12】
前記除去することが、前記指定されたワークロードのそれぞれの指定部分の実行に必要ではない前記潜在アプリケーション・ランタイムのアプリケーション・ランタイムを除去することをさらに含む、請求項11に記載の集中メンテナンス・デバイス。
【請求項13】
前記補充エージェント・コンポーネントが、前記指定されたワークロードを実行し、前記ユニバーサル・ランタイム・コンテナの将来のインスタンスを生成する、前のインスタンスに関連付けられた履歴データを分析するように構成される、統計プロセスまたは機械学習ケイパビリティを含む、請求項11または12に記載の集中メンテナンス・デバイス。
【請求項14】
前記方法が、
前記プロセッサによって、それぞれの前記ワーカ・ノードが、前記ユニバーサル・ランタイム・コンテナを有効にするための指定された数のハードウェアおよびソフトウェア・リソースを含むと判断することをさらに含む、請求項11ないし13のいずれか一項に記載の集中メンテナンス・デバイス。
【請求項15】
前記方法が、
前記プロセッサによって、前記複数の協調型コントローラ間でワークロード・キャパシティをネゴシエートすることであって、前記指定されたワークロードを前記複数のワーカ・ノードに前記ディスパッチすることが、前記ネゴシエートすることの結果に基づいて実行される、前記ネゴシエートすることをさらに含む、請求項11ないし14のいずれか一項に記載の集中メンテナンス・デバイス。
【国際調査報告】