(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-21
(54)【発明の名称】アフィニティおよび非アフィニティ・ルールの自動生成
(51)【国際特許分類】
G06F 8/60 20180101AFI20231214BHJP
G06F 9/455 20180101ALI20231214BHJP
【FI】
G06F8/60
G06F9/455
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023530762
(86)(22)【出願日】2021-10-26
(85)【翻訳文提出日】2023-05-22
(86)【国際出願番号】 CN2021126241
(87)【国際公開番号】W WO2022116737
(87)【国際公開日】2022-06-09
(32)【優先日】2020-12-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
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000420
【氏名又は名称】弁理士法人MIP
(72)【発明者】
【氏名】ジャヤチャンドラン、プラヴィーン
(72)【発明者】
【氏名】シンギー、アミス
(72)【発明者】
【氏名】スリー プラカシュ、アショク、ポン クマール
(72)【発明者】
【氏名】ゴビンジャラダン、チャンダー
(72)【発明者】
【氏名】ラマクリシュナ、ヴェンカトラマン
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA07
5B376AB07
5B376AB12
(57)【要約】
一実施形態は、コンテナ・ベースの環境にデプロイされるアプリケーションを受信することと、所与のコンテナ内に含まれるアプリケーションの部分に関する情報を含むアプリケーションの仕様を取得することと、アプリケーションの異なる部分間の関連性およびアプリケーションの異なる部分間の干渉に対応する部分情報を抽出することと、アプリケーションの部分のアフィニティ・インジケータおよび非アフィニティ・インジケータを識別することであって、アフィニティ・インジケータはアプリケーションの異なる部分間の関連性に基づき、非アフィニティ・インジケータはアプリケーションの異なる部分間の干渉に基づく、識別することと、アフィニティ・ルールを構築するためにアフィニティ・インジケータを組み合わせることおよび非アフィニティ・ルールを構築するために非アフィニティ・インジケータを組み合わせることにより、コンテナのアフィニティ・ルールおよび非アフィニティ・ルールを構築することとを含む、コンピュータ実装方法を提供する。
【特許請求の範囲】
【請求項1】
コンテナ・ベースの環境にデプロイされるアプリケーションを受信することであって、前記アプリケーションは前記アプリケーションの部分を含むコンテナに分割される、前記受信することと、
所与のコンテナ内に含まれる前記アプリケーションの部分に関する情報を含む前記アプリケーションの仕様を取得することと、
前記仕様から、前記アプリケーションの異なる部分間の関連性および前記アプリケーションの異なる部分間の干渉に対応する部分情報を抽出することと、
前記部分情報から、前記アプリケーションの前記部分のアフィニティ・インジケータおよび非アフィニティ・インジケータを識別することであって、前記アフィニティ・インジケータは前記アプリケーションの異なる部分間の前記関連性に基づき、前記非アフィニティ・インジケータは前記アプリケーションの異なる部分間の前記干渉に基づく、前記識別することと、
アフィニティ・ルールを構築するために前記アフィニティ・インジケータを組み合わせることおよび非アフィニティ・ルールを構築するために前記非アフィニティ・インジケータを組み合わせることにより、前記コンテナのアフィニティ・ルールおよび非アフィニティ・ルールを構築することであって、前記アフィニティ・ルールは前記コンテナ・ベースの環境で同じホストによってホストされるコンテナを識別し、前記非アフィニティ・ルールは前記コンテナ・ベースの環境で異なるホストによってホストされるコンテナを識別する、前記構築することと、
を含む、コンピュータ実装方法。
【請求項2】
前記部分情報から、前記コンテナ・ベースの環境のポッド内に含まれる前記アプリケーションの部分を示すポッド設計インジケータを識別することを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記ポッド設計インジケータを利用して、前記コンテナ・ベースの環境内の前記アプリケーションのポッド設計を構築することを含む、請求項2に記載のコンピュータ実装方法。
【請求項4】
前記アフィニティ・インジケータを前記組み合わせることおよび前記非アフィニティ・インジケータを前記組み合わせることは、ルール・ベースの技術を利用することを含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記アフィニティ・インジケータを前記組み合わせることおよび前記非アフィニティ・インジケータを前記組み合わせることは、他のアフィニティ・インジケータおよび非アフィニティ・インジケータよりも大きい重みが与えられるアフィニティ・インジケータおよび非アフィニティ・インジケータを識別する優先順位制約をユーザから取得することと、前記アフィニティ・ルールおよび前記非アフィニティ・ルールを構築することに前記優先順位制約を組み込むこととを含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記アフィニティ・インジケータを前記組み合わせることおよび前記非アフィニティ・インジケータを前記組み合わせることは、反復的なユーザ・ガイド付きの分析を実行することを含み、前記反復的なユーザ・ガイド付きの分析は、反復的に(i)前記アフィニティ・ルールおよび非アフィニティ・ルールをユーザに提示することと、(ii)前記アフィニティ・ルールおよび前記非アフィニティ・ルールのうちの少なくとも1つの優先順位を変更するユーザからの入力を受け取ることと、(iii)前記ユーザからの前記入力に基づいて前記アフィニティ・ルールおよび非アフィニティ・ルールを修正することとを含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
アフィニティ・インジケータを前記識別することは、サービスの相互作用およびネットワーク構成からアプリケーション部分間の相互作用を識別することを含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
アフィニティ・インジケータを前記識別することおよび非アフィニティ・インジケータを前記識別することは、アプリケーション部分間にリソース干渉がないことおよびアプリケーション部分間にリソース干渉があることのうちの1つを示す前記部分のリソース要件を識別することを含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
非アフィニティ・インジケータを前記識別することは、前記コンテナ・ベースの環境にデプロイされる所与の部分のインスタンスの数を識別することと、前記数のインスタンスにわたるフォールト・トレランス要件を識別することとを含む、請求項1に記載のコンピュータ実装方法。
【請求項10】
前記部分情報は、アプリケーション部分間の相互作用、アプリケーション部分の関係、アプリケーション部分の制約、およびフォールト・トレランス要件を含む、請求項1に記載のコンピュータ実装方法。
【請求項11】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサによって実行可能なコンピュータ可読プログラム・コードを具現化したコンピュータ可読記憶媒体と、
を備え、
前記コンピュータ可読プログラム・コードは、コンテナ・ベースの環境にデプロイされるアプリケーションを受信するコードを含み、前記アプリケーションは前記アプリケーションの部分を含むコンテナに分割され、
前記コンピュータ可読プログラム・コードは、所与のコンテナ内に含まれる前記アプリケーションの部分に関する情報を含む前記アプリケーションの仕様を取得するコードを含み、
前記コンピュータ可読プログラム・コードは、前記仕様から、前記アプリケーションの異なる部分間の関連性および前記アプリケーションの異なる部分間の干渉に対応する部分情報を抽出するコードを含み、
前記コンピュータ可読プログラム・コードは、前記部分情報から、前記アプリケーションの前記部分のアフィニティ・インジケータおよび非アフィニティ・インジケータを識別するコードを含み、前記アフィニティ・インジケータは前記アプリケーションの異なる部分間の前記関連性に基づき、前記非アフィニティ・インジケータは前記アプリケーションの異なる部分間の前記干渉に基づき、
前記コンピュータ可読プログラム・コードは、アフィニティ・ルールを構築するために前記アフィニティ・インジケータを組み合わせることおよび非アフィニティ・ルールを構築するために前記非アフィニティ・インジケータを組み合わせることにより、前記コンテナのアフィニティ・ルールおよび非アフィニティ・ルールを構築するコードを含み、前記アフィニティ・ルールは前記コンテナ・ベースの環境で同じホストによってホストされるコンテナを識別し、前記非アフィニティ・ルールは前記コンテナ・ベースの環境で異なるホストによってホストされるコンテナを識別する、
装置。
【請求項12】
コンピュータ可読プログラム・コードを具現化したコンピュータ可読記憶媒体を備え、前記コンピュータ可読プログラム・コードはプロセッサによって実行可能であり、
前記コンピュータ可読プログラム・コードは、コンテナ・ベースの環境にデプロイされるアプリケーションを受信するコードを含み、前記アプリケーションは前記アプリケーションの部分を含むコンテナに分割され、
前記コンピュータ可読プログラム・コードは、所与のコンテナ内に含まれる前記アプリケーションの部分に関する情報を含む前記アプリケーションの仕様を取得するコードを含み、
前記コンピュータ可読プログラム・コードは、前記仕様から、前記アプリケーションの異なる部分間の関連性および前記アプリケーションの異なる部分間の干渉に対応する部分情報を抽出するコードを含み、
前記コンピュータ可読プログラム・コードは、前記部分情報から、前記アプリケーションの前記部分のアフィニティ・インジケータおよび非アフィニティ・インジケータを識別するコードを含み、前記アフィニティ・インジケータは前記アプリケーションの異なる部分間の前記関連性に基づき、前記非アフィニティ・インジケータは前記アプリケーションの異なる部分間の前記干渉に基づき、
前記コンピュータ可読プログラム・コードは、アフィニティ・ルールを構築するために前記アフィニティ・インジケータを組み合わせることおよび非アフィニティ・ルールを構築するために前記非アフィニティ・インジケータを組み合わせることにより、前記コンテナのアフィニティ・ルールおよび非アフィニティ・ルールを構築するコードを含み、前記アフィニティ・ルールは前記コンテナ・ベースの環境で同じホストによってホストされるコンテナを識別し、前記非アフィニティ・ルールは前記コンテナ・ベースの環境で異なるホストによってホストされるコンテナを識別する、
コンピュータ・プログラム製品。
【請求項13】
前記部分情報から、前記コンテナ・ベースの環境のポッド内に含まれる前記アプリケーションの部分を示すポッド設計インジケータを識別することを含む、請求項12に記載のコンピュータ・プログラム製品。
【請求項14】
前記ポッド設計インジケータを利用して、前記コンテナ・ベースの環境内の前記アプリケーションのポッド設計を構築することを含む、請求項13に記載のコンピュータ・プログラム製品。
【請求項15】
前記アフィニティ・インジケータを前記組み合わせることおよび前記非アフィニティ・インジケータを前記組み合わせることは、ルール・ベースの技術を利用することを含む、請求項12に記載のコンピュータ・プログラム製品。
【請求項16】
前記アフィニティ・インジケータを前記組み合わせることおよび前記非アフィニティ・インジケータを前記組み合わせることは、他のアフィニティ・インジケータおよび非アフィニティ・インジケータよりも大きい重みが与えられるアフィニティ・インジケータおよび非アフィニティ・インジケータを識別する優先順位制約をユーザから取得することと、前記アフィニティ・ルールおよび前記非アフィニティ・ルールを構築することに前記優先順位制約を組み込むこととを含む、請求項12に記載のコンピュータ・プログラム製品。
【請求項17】
前記アフィニティ・インジケータを前記組み合わせることおよび前記非アフィニティ・インジケータを前記組み合わせることは、反復的なユーザ・ガイド付きの分析を実行することを含み、前記反復的なユーザ・ガイド付きの分析は、反復的に(i)前記アフィニティ・ルールおよび非アフィニティ・ルールをユーザに提示することと、(ii)前記アフィニティ・ルールおよび前記非アフィニティ・ルールのうちの少なくとも1つの優先順位を変更するユーザからの入力を受け取ることと、(iii)前記ユーザからの前記入力に基づいて前記アフィニティ・ルールおよび非アフィニティ・ルールを修正することとを含む、請求項12に記載のコンピュータ・プログラム製品。
【請求項18】
アフィニティ・インジケータを前記識別することは、サービスの相互作用およびネットワーク構成からアプリケーション部分間の相互作用を識別することを含む、請求項12に記載のコンピュータ・プログラム製品。
【請求項19】
アフィニティ・インジケータを前記識別することおよび非アフィニティ・インジケータを前記識別することは、アプリケーション部分間にリソース干渉がないことおよびアプリケーション部分間にリソース干渉があることのうちの1つを示す前記部分のリソース要件を識別することを含む、請求項12に記載のコンピュータ・プログラム製品。
【請求項20】
非アフィニティ・インジケータを前記識別することは、前記コンテナ・ベースの環境にデプロイされる所与の部分のインスタンスの数を識別することと、前記インスタンスの数にわたるフォールト・トレランス要件を識別することとを含む、請求項12に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【背景技術】
【0001】
リモート・コンピューティングまたはサービス環境、たとえば、リモート・ネットワーク環境、クラウド・コンピューティング環境などの増加に伴い、より多くのユーザおよびエンティティがアプリケーションおよび他のサービスのホスティングをサービス環境に移行している。アプリケーションおよび他のサービスのホスティングをサービス環境に移行することにより、ユーザおよび他のエンティティは、内部リソース(たとえば、インフラストラクチャ、コンピューティング・リソース、人的資源など)の使用を削減し、アプリケーションおよび他のサービスに関連する他のコストを削減することができる。さらに、サービス環境は通常、ユーザまたはエンティティがローカルに有しているよりもはるかに多くのリソース、具体的には、コンピューティング・リソースを有しているので、ユーザまたはエンティティはサービス環境でホストされるアプリケーションをスケーリングすることができる。したがって、サービス環境の使用は、アプリケーション・エンティティにとって非常に魅力的である。
【発明の概要】
【0002】
要約すると、本発明の一態様は、コンテナ・ベースの環境にデプロイされるアプリケーションを受信することであって、アプリケーションはアプリケーションの部分(portion)を含むコンテナに分割される、受信することと、所与のコンテナ内に含まれるアプリケーションの部分に関する情報を含むアプリケーションの仕様を取得することと、仕様から、アプリケーションの異なる部分間の関連性(connection)およびアプリケーションの異なる部分間の干渉に対応する部分情報を抽出することと、部分情報から、アプリケーションの部分のアフィニティ・インジケータおよび非アフィニティ・インジケータを識別することであって、アフィニティ・インジケータはアプリケーションの異なる部分間の関連性に基づき、非アフィニティ・インジケータはアプリケーションの異なる部分間の干渉に基づく、識別することと、アフィニティ・ルールを構築するためにアフィニティ・インジケータを組み合わせることおよび非アフィニティ・ルールを構築するために非アフィニティ・インジケータを組み合わせることにより、コンテナのアフィニティ・ルールおよび非アフィニティ・ルールを構築することであって、アフィニティ・ルールはコンテナ・ベースの環境で同じホストによってホストされるコンテナを識別し、非アフィニティ・ルールはコンテナ・ベースの環境で異なるホストによってホストされるコンテナを識別する、構築することとを含む、コンピュータ実装方法を提供する。
【0003】
本発明の他の態様は、少なくとも1つのプロセッサと、少なくとも1つのプロセッサによって実行可能なコンピュータ可読プログラム・コードを具現化したコンピュータ可読記憶媒体とを含み、コンピュータ可読プログラム・コードは、コンテナ・ベースの環境にデプロイされるアプリケーションを受信するコードを含み、アプリケーションはアプリケーションの部分を含むコンテナに分割され、コンピュータ可読プログラム・コードは、所与のコンテナ内に含まれるアプリケーションの部分に関する情報を含むアプリケーションの仕様を取得するコードを含み、コンピュータ可読プログラム・コードは、仕様から、アプリケーションの異なる部分間の関連性およびアプリケーションの異なる部分間の干渉に対応する部分情報を抽出するコードを含み、コンピュータ可読プログラム・コードは、部分情報から、アプリケーションの部分のアフィニティ・インジケータおよび非アフィニティ・インジケータを識別するコードを含み、アフィニティ・インジケータはアプリケーションの異なる部分間の関連性に基づき、非アフィニティ・インジケータはアプリケーションの異なる部分間の干渉に基づき、コンピュータ可読プログラム・コードは、アフィニティ・ルールを構築するためにアフィニティ・インジケータを組み合わせることおよび非アフィニティ・ルールを構築するために非アフィニティ・インジケータを組み合わせることにより、コンテナのアフィニティ・ルールおよび非アフィニティ・ルールを構築するコードを含み、アフィニティ・ルールはコンテナ・ベースの環境で同じホストによってホストされるコンテナを識別し、非アフィニティ・ルールはコンテナ・ベースの環境で異なるホストによってホストされるコンテナを識別する、装置を提供する。
【0004】
本発明の追加の態様は、コンピュータ可読プログラム・コードを具現化したコンピュータ可読記憶媒体を含み、コンピュータ可読プログラム・コードはプロセッサによって実行可能であり、コンピュータ可読プログラム・コードは、コンテナ・ベースの環境にデプロイされるアプリケーションを受信するコードを含み、アプリケーションはアプリケーションの部分を含むコンテナに分割され、コンピュータ可読プログラム・コードは、所与のコンテナ内に含まれるアプリケーションの部分に関する情報を含むアプリケーションの仕様を取得するコードを含み、コンピュータ可読プログラム・コードは、仕様から、アプリケーションの異なる部分間の関連性およびアプリケーションの異なる部分間の干渉に対応する部分情報を抽出するコードを含み、コンピュータ可読プログラム・コードは、部分情報から、アプリケーションの部分のアフィニティ・インジケータおよび非アフィニティ・インジケータを識別するコードを含み、アフィニティ・インジケータはアプリケーションの異なる部分間の関連性に基づき、非アフィニティ・インジケータはアプリケーションの異なる部分間の干渉に基づき、コンピュータ可読プログラム・コードは、アフィニティ・ルールを構築するためにアフィニティ・インジケータを組み合わせることおよび非アフィニティ・ルールを構築するために非アフィニティ・インジケータを組み合わせることにより、コンテナのアフィニティ・ルールおよび非アフィニティ・ルールを構築するコードを含み、アフィニティ・ルールはコンテナ・ベースの環境で同じホストによってホストされるコンテナを識別し、非アフィニティ・ルールはコンテナ・ベースの環境で異なるホストによってホストされるコンテナを識別する、コンピュータ・プログラム製品を提供する。
【0005】
本発明の例示的な実施形態を、それらの他のおよびさらなる特徴および利点と共によりよく理解するために、添付の図面と併せて解釈される以下の説明を参照し、本発明の特許請求する実施形態の範囲を添付の特許請求の範囲に示す。
【図面の簡単な説明】
【0006】
【
図1】本発明の一実施形態によるクラウド・コンピューティング環境を示す図である。
【
図2】本発明の一実施形態による抽象化モデル・レイヤを示す図である。
【
図3】コンテナ内に含まれる部分に対応する情報からアフィニティおよび非アフィニティ・インジケータを抽出することによって、コンテナに分割されたアプリケーションのアフィニティおよび非アフィニティ・ルールを自動的に生成する方法を示す図である。
【
図4】コンテナ内に含まれる部分に対応する情報からアフィニティおよび非アフィニティ・インジケータを抽出することによって、コンテナに分割されたアプリケーションのアフィニティおよび非アフィニティ・ルールを自動的に生成するための全体的なシステム・アーキテクチャを示す図である。
【発明を実施するための形態】
【0007】
本明細書で概略的に説明および図示している本発明の実施形態のコンポーネントは、記載の例示的な実施形態に加えて、多種多様な異なる構成で配置および設計され得ることは容易に理解されよう。したがって、図に表現した本発明の実施形態の以下のより詳細な説明は、特許請求の範囲に記載の本発明の実施形態の範囲を限定することを意図したものではなく、本発明の例示的な実施形態を表すものにすぎない。
【0008】
本明細書全体を通じた「一実施形態(one embodiment)」または「一実施形態(an embodiment)」(など)への言及は、その実施形態に関連して説明する特定の特徴、構造、または特性が本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体における様々な場所での「一実施形態では(in one embodiment)」または「一実施形態では(in an embodiment)」などの句の出現は、必ずしも全てが同じ実施形態を指すとは限らない。
【0009】
さらに、記載の特徴、構造、または特性は、少なくとも1つの実施形態において任意の適切な方法で組み合わせられ得る。以下の説明では、本発明の実施形態を完全に理解できるようにするために、多くの特定の詳細を提供する。しかしながら、当業者は、本発明の実施形態が、それらの特定の詳細のうちの少なくとも1つがなくても実践することができ、または他の方法、コンポーネント、材料などを使用して実践することができるということをよく認識し得る。他の例では、よく知られている構造、材料、または動作については、本発明の態様を不明瞭にすることを避けるために、詳細には図示も説明もしない。
【0010】
本発明の例示した実施形態は、図を参照することによって十分に理解されよう。以下の説明は単なる例を意図しており、本明細書で特許請求する本発明の特定の選択した例示的な実施形態を単に例示している。図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、装置、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示していることを理解されたい。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理的機能を実装するための少なくとも1つの実行可能命令を含むモジュール、セグメント、またはコードの一部分を表し得る。
【0011】
いくつかの代替的実装形態では、ブロックに記載した機能は、図示した順序以外で行われ得ることにも留意されたい。たとえば、関与する機能に応じて、連続して示した2つのブロックは、実際には実質的に同時に実行され得、またはそれらのブロックは、場合により逆の順序で実行され得る。ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方におけるブロックの組み合わせは、指定された機能もしくは行為を実行するか、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用のハードウェア・ベースのシステムによって実装できることにも気付くであろう。
【0012】
本明細書では、
図1~
図5を以下で具体的に参照する。それらに大まかに示したプロセス、構成、および製品は基本的に、例示的かつ非限定的な例として
図5の12’に示すようなシステムまたはサーバを含み得る任意の適切なコンピュータ・システムまたはコンピュータ・システムのセットにおいて、またはそれらに従って実行できることを理解されたい。例示的な実施形態によれば、
図1~
図4に関して論じるプロセス・ステップ、コンポーネント、および出力の全てではないにしてもほとんどは、サーバ・コンピュータ、クライアント・コンピュータ、分散ネットワーク内のノード・コンピュータ、またはそれらの任意の組み合わせのいずれにおいても、
図5の16’および28’にそれぞれ示したような1つまたは複数の処理ユニットおよびシステム・メモリによって実行または利用することができる。
【0013】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に列挙した教示の実装形態はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られているまたは今後開発される他の任意のタイプのコンピューティング環境と共に実装することが可能である。
【0014】
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとのやりとりによって迅速にプロビジョニングおよび解放することができる、設定可能なコンピューティング・リソース(たとえば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴と、少なくとも3つのサービス・モデルと、少なくとも4つのデプロイメント・モデルとを含み得る。
【0015】
特徴は以下の通りである。
【0016】
オンデマンド・セルフ・サービス:クラウド・コンシューマは、サービスのプロバイダとの人的な対話を必要とせずに、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を一方的にプロビジョニングすることができる。
【0017】
ブロード・ネットワーク・アクセス:能力はネットワークを介して利用することができ、異種のシンまたはシック・クライアント・プラットフォーム(たとえば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを介してアクセスされる。
【0018】
リソース・プーリング:プロバイダのコンピューティング・リソースをプールして、様々な物理リソースおよび仮想リソースが需要に応じて動的に割り当ておよび再割り当てされるマルチ・テナント・モデルを使用して複数のコンシューマにサービス提供する。一般にコンシューマは、提供されるリソースの正確な位置に対して何も制御できず、知っているわけでもないが、より高い抽象化レベル(たとえば、国、州、またはデータセンターなど)では位置を特定可能であり得るという点で位置非依存の感覚がある。
【0019】
迅速な弾力性:能力を迅速かつ弾力的に、場合によっては自動的にプロビジョニングして素早くスケール・アウトし、迅速に解放して素早くスケール・インすることができる。コンシューマにとって、プロビジョニング可能な能力は無制限であるように見えることが多く、任意の時間に任意の数量で購入することができる。
【0020】
測定されるサービス:クラウド・システムは、サービスのタイプ(たとえば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適したある抽象化レベルでの計量機能を活用して、リソースの使用を自動的に制御し、最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよびコンシューマの両方に透明性を提供することができる。
【0021】
サービス・モデルは以下の通りである。
【0022】
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供される能力は、クラウド・インフラストラクチャ上で動作するプロバイダのアプリケーションを使用することである。アプリケーションは、Webブラウザ(たとえば、Webベースの電子メール)などのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定を可能性のある例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個々のアプリケーション機能を含む、基盤となるクラウド・インフラストラクチャを管理も制御もしない。
【0023】
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、コンシューマが作成または取得したアプリケーションをクラウド・インフラストラクチャ上にデプロイすることである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基盤となるクラウド・インフラストラクチャを管理も制御もしないが、デプロイされたアプリケーションおよび場合によってはアプリケーション・ホスティング環境構成を制御する。
【0024】
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供される能力は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをコンシューマがデプロイして動作させることが可能な、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングすることである。コンシューマは、基盤となるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御し、場合によっては選択したネットワーキング・コンポーネント(たとえば、ホスト・ファイアウォール)を限定的に制御する。
【0025】
デプロイメント・モデルは以下の通りである。
【0026】
プライベート・クラウド:クラウド・インフラストラクチャは組織専用に運用される。これは組織または第三者によって管理され得、オンプレミスまたはオフプレミスで存在し得る。
【0027】
コミュニティ・クラウド:クラウド・インフラストラクチャはいくつかの組織によって共有され、共通にかかわること(たとえば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項など)を有する特定のコミュニティをサポートする。これは組織または第三者によって管理され得、オンプレミスまたはオフプレミスで存在し得る。
【0028】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データおよびアプリケーションの移植性を可能にする標準化技術または独自技術(たとえば、クラウド間の負荷分散のためのクラウド・バースティング)によって結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)を合成したものである。
【0029】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味論的相互運用性に重点を置いたサービス指向型である。クラウド・コンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0030】
ここで
図1を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示のように、クラウド・コンピューティング環境50は1つまたは複数のクラウド・コンピューティング・ノード10を含み、これらを使用して、たとえば、パーソナル・デジタル・アシスタント(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、またはそれらの組み合わせなどの、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信し得る。ノード10は相互に通信し得る。これらは、たとえば、上述のプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはそれらの組み合わせなどの1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化され得る(図示せず)。これにより、クラウド・コンピューティング環境50は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを維持する必要がない、インフラストラクチャ・アズ・ア・サービス、プラットフォーム・アズ・ア・サービス、またはソフトウェア・アズ・ア・サービス、またはそれらの組み合わせを提供することが可能になる。
図1に示したコンピューティング・デバイス54A~Nのタイプは例示的なものにすぎないことを意図しており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワークもしくはネットワーク・アドレス指定可能接続(たとえば、Webブラウザを使用)またはその両方を介して任意のタイプのコンピュータ化デバイスと通信できることを理解されたい。
【0031】
ここで
図2を参照すると、クラウド・コンピューティング環境50(
図1)によって提供される機能的抽象化レイヤのセットが示されている。
図2に示したコンポーネント、レイヤ、および機能は例示的なものにすぎないことを意図しており、本発明の実施形態はこれらに限定されないことを事前に理解されたい。図示のように、以下のレイヤおよび対応する機能が提供される。
【0032】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66が含まれる。いくつかの実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0033】
仮想化レイヤ70は抽象化レイヤを提供し、抽象化レイヤから、仮想エンティティの以下の例、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75が提供され得る。
【0034】
一例では、管理レイヤ80は、下記の機能を提供し得る。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的調達を提供する。計量および価格決定82は、クラウド・コンピューティング環境内でリソースが利用されたときの費用追跡と、これらのリソースの消費に対する会計または請求とを提供する。一例では、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、クラウド・コンシューマおよびタスクの同一性検証だけでなく、データおよび他のリソースに対する保護も提供する。ユーザ・ポータル83は、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されたサービス・レベルが満たされるような、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル合意(SLA)の計画および履行85は、SLAに従って将来要求されると予想されるクラウド・コンピューティング・リソースの事前手配および調達を提供する。
【0035】
ワークロード・レイヤ90は、クラウド・コンピューティング環境が利用され得る機能性の例を提供する。このレイヤから提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ分析処理94、取引処理95、ならびにサービス・ホスティング96、を含む。
【0036】
開発エンティティ以外のエンティティによって制御されるサービス環境にアプリケーションがデプロイされる場合、サービス環境エンティティは、サービス環境に関するアプリケーションの多くの異なる側面を制御する。たとえば、サービス環境エンティティは、アプリケーションがサービス環境内のどこに配置されるか、どのリソースがアプリケーションに割り当てられるかなどを制御する。本出願のコンテキストでは、サービス環境とは、完全にリモートの場所でホストされるサービス環境だけでなく、オンプレミスであるかまたはプライベート・クラウド内にあり得るサービス環境も指す。むしろ、サービス環境という用語は、アプリケーション・エンティティがデプロイメント環境とサービス環境内でホストされ得る他のアプリケーションとについて完全な知識も制御も有さないサービス環境を指す。アプリケーションが異なる部分に分割される場合、たとえば、コンテナに分割され、各コンテナがアプリケーションの部分を含む場合に、問題が発生し得る。サービス環境にデプロイされる場合、サービス環境エンティティは、サービス環境上のこれらの異なる部分またはコンテナのそれぞれの場所を選択する。サービス環境エンティティはまた、どのリソースを各コンテナに割り当てるか、どのコンテナを(たとえば、クラスタ内、ポッド内などに)一緒にグループ化するかなどを選択する。
【0037】
サービス環境エンティティはアプリケーションに関する知識を有さないので、これらの選択は任意(arbitrary)であり、アプリケーションの属性ではなく、サービス環境の属性に基づく。この任意の選択は、アプリケーション全体のパフォーマンスに関する問題、たとえば、アプリケーションの処理速度および精度の低下、アプリケーション部分間の干渉の発生、所望のアプリケーションの冗長性の低下などを引き起こし得る。これらの問題は、異なるアプリケーション部分が、関連性があり得るために同じホストによってホストされるべきであるか、または他のアプリケーション部分との干渉を引き起こし得るために異なるホストによってホストされるべきであるということが理由で発生する。
【0038】
これらの問題に対処するための1つの技術は、アプリケーション・エンティティがアフィニティおよび非アフィニティ・ルールを指定できるようにすることである。アフィニティ・ルールは、サービス環境で同じホストによってホストされるべきであるアプリケーション部分またはコンテナを識別する。非アフィニティ・ルールは、サービス環境で異なるホストによってホストされるべきであるアプリケーション部分またはコンテナを識別する。これらのアフィニティおよび非アフィニティ・ルールを指定することにより、サービス環境は、どのアプリケーション部分またはコンテナが一緒に保持されるべきであるか、または互いに分離して保持されるべきであるかを知る。しかしながら、アプリケーション・エンティティは、どのアプリケーション部分またはコンテナが一緒に保持されるべきであるか、または互いに分離して保持されるべきであるかを知らない場合がある。したがって、アフィニティおよび非アフィニティ・ルールを指定する能力は有用であるが、指定されるべきルールをアプリケーション・エンティティが知らない場合には、この能力はあまり役に立たず、これは非常によく見られる問題である。
【0039】
したがって、一実施形態は、コンテナ内に含まれる部分に対応する情報からアフィニティおよび非アフィニティ・インジケータを抽出することによって、コンテナに分割されたアプリケーションのアフィニティおよび非アフィニティ・ルールを自動的に生成するためのシステムおよび方法を提供する。システムは、コンテナ・ベースの環境、たとえば、サービス環境にデプロイされるアプリケーションを受信する。アプリケーションはコンテナ・ベースの環境にデプロイされるので、アプリケーションはアプリケーションの異なる部分を含むコンテナに分割される。システムは、コンテナ内に含まれるアプリケーションの各部分に関する情報を識別するアプリケーションの仕様を取得する。この情報は、たとえば、アプリケーション部分間の相互作用、アプリケーション部分の関係、アプリケーション部分の制約、フォールト・トレランス要件などを含み得る。
【0040】
仕様から、システムは、部分またはコンテナに関する情報、より具体的には、アプリケーションの異なる部分間の関連性、およびアプリケーションの異なる部分間の干渉を抽出することができる。たとえば、システムは、異なるコンテナ内に含まれる2つの部分が頻繁に相互作用することを識別し得る。他の例として、システムは、異なるコンテナ内に含まれる2つの部分が大量の同じ処理リソース(たとえば、メモリ、ストレージ、プロセッサ、ハードウェアなど)を必要とすることを識別し得る。したがって、部分またはコンテナに関する抽出された情報から、システムはアフィニティ・インジケータおよび非アフィニティ・インジケータを識別することができる。アフィニティ・インジケータは、アプリケーションの他の部分と連携するかまたはこれらに依存するアプリケーションの部分を示す。非アフィニティ・インジケータは、アプリケーションの他の部分と競合または干渉するアプリケーションの部分を示す。アフィニティおよび非アフィニティ・インジケータから、システムはコンテナのアフィニティおよび非アフィニティ・ルールを構築することができ、これにより、アプリケーション・エンティティがこれらのルールを手動で識別するのに依存する代わりに、アフィニティおよび非アフィニティ・ルールを識別して構築するための自動化された技術を提供する。
【0041】
そのようなシステムは、コンテナ・ベースの環境にアプリケーションをデプロイするための現在のシステムに対して技術的改善を提供する。アプリケーション・エンティティがアフィニティおよび非アフィニティ・ルールを手動で指定する必要なく、記載のシステムおよび方法は、アプリケーションの入力された仕様からアフィニティおよび非アフィニティ・ルールを自動的に識別して生成することができる。記載のシステムおよび方法は、入力された仕様から各アプリケーションまたはコンテナに対応する情報を抽出し、この情報からアフィニティおよび非アフィニティ・インジケータを抽出することができる。アフィニティおよび非アフィニティ・インジケータをグループ化して、アフィニティおよび非アフィニティ・ルールを構築することができる。したがって、アプリケーション・エンティティにとって未知であり得るアフィニティおよび非アフィニティ・ルールを手動で指定することをアプリケーション・エンティティに求めるのではなく、記載のシステムはこれらの指定を自動的に行うことができる。したがって、記載のシステムおよび方法は、手動の技術よりもアフィニティおよび非アフィニティ・ルールをより正確に生成するシステムを提供する。より正確なアフィニティおよび非アフィニティ・ルールにより、従来の技術によって提供される不正確なまたは存在しないアフィニティおよび非アフィニティ・ルールよりも優れたパフォーマンスを発揮するアプリケーションが可能になる。
【0042】
図3は、コンテナ内に含まれる部分に対応する情報からアフィニティおよび非アフィニティ・インジケータを抽出することによって、コンテナに分割されたアプリケーションのアフィニティおよび非アフィニティ・ルールを自動的に生成するための方法を示している。301において、システムは、コンテナ・ベースの環境にデプロイされるべきアプリケーションを受信する。デプロイメントには、アプリケーション全体がコンテナ・ベースの環境内の新しいクラスタまたはポッドにデプロイされること、アプリケーションの1つまたは複数のプロセスまたはサービスが既に他のサービスをホストしているコンテナ・ベースの環境内にデプロイされること、既にデプロイされているアプリケーションをアフィニティおよび非アフィニティ・ルールで更新すること、などが含まれ得る。アプリケーションを受信することは、アプリケーションを取得するための任意の技術を含み得、これには、ユーザがアプリケーションをシステムまたはサービス環境にアップロードするかまたは別の方法で提供すること、システムまたはサービス環境がアプリケーションの場所にアクセスすること、ユーザがアプリケーションへのリンクまたはポインタを提供することなどが含まれるが、これらに限定されない。記載のシステムおよび方法は、スタンドアロン・アプリケーションであり得、サービス環境へのアドオンまたは補完アプリケーションであり得、アプリケーションをサービス環境にデプロイする前にローカルに実行され得、サービス環境によって実行され得る、などである。
【0043】
アプリケーションはコンテナ・ベースの環境にデプロイされるので、アプリケーションはコンテナに分割され、各コンテナはアプリケーションの1つまたは複数の部分またはプロセスを含む。読みやすくするために、部分という用語は、単一のコンテナ内に含まれるアプリケーションの1つまたは複数の部分を指すために本明細書全体で使用し、部分という用語は、本開示を各コンテナ内の単一の部分またはプロセスに限定することを意図していない。換言すれば、コンテナはアプリケーションの2つ以上のプロセスまたは部分を含み得るが、読みやすさのために部分と呼ぶ。アプリケーションは、本明細書ではアプリケーション・エンティティと呼ぶ、アプリケーションを開発した、所有する、または別の方法で制御するエンティティによってコンテナに分割され得る。
【0044】
アプリケーションを受信すると、システムは302においてアプリケーションの仕様を取得する。仕様は、コンテナ内のアプリケーションの各部分に関する情報を含む。たとえば、仕様は、部分によって表され、コンテナ内に含まれるプロセス、部分を実行するために必要なリソース、サービス環境で実行される必要がある部分のコピーの数などを識別する。換言すれば、仕様は、プロセスと、各コンテナ内に含まれるプロセスの制約もしくは要件またはその両方とを識別するための情報を提供する。仕様は、ソース・コード、開発者コメント、設定ファイルなど、またはそれらの組み合わせの形式であり得る。一般に、単一のアプリケーションの全てのコンテナが単一の仕様内に含まれると考えられる。しかしながら、記載のシステムおよび方法は、該当する場合、複数の仕様からコンテナに関する情報を収集することを可能にする。それにもかかわらず、仕様という用語は、読みやすくするために本明細書全体で使用するが、本開示の範囲を単一の仕様に限定することを意図していない。
【0045】
303において、システムは仕様から部分情報を抽出する。部分情報は、アプリケーションの異なる部分間の関連性、たとえば、部分間の相互作用、部分間の関係もしくは依存関係またはその両方、部分間の共通のリソース要件または制約などに対応する。部分情報はまた、たとえば、アプリケーション・エンティティに関係しないかまたはこれによって作成されていないアプリケーションなど、環境内でホストされている異なるアプリケーションもしくはサービスまたはその両方の間の関連性を識別し得る。部分情報はまた、アプリケーションの異なる部分間の干渉、またはアプリケーションと、環境上で共同でホストされる他のアプリケーションもしくはサービスとの間の干渉、たとえば、競合するリソース要件または制約、フォールト・トレランス要件、配置制約などを識別する。相互作用を抽出する際に、システムは、アプリケーションの部分間の接続のトポロジを生成するかまたはこれにアクセスし得る。
【0046】
配置制約は、特定の部分が、その部分の特定の要件または優先事項(preference)、たとえば、特定のハードウェア要件/優先事項、特定のソフトウェア要件/優先事項、特定の処理要件/優先事項などを満たすことができるサービス環境上の場所に配置される必要があることを識別し得る。フォールト・トレランス要件は、リモート・サービス環境の部分で障害または停止が発生した場合の冗長性を確保するために、部分のインスタンスがサービス環境内の異なるホストでホストされる必要があることを識別する。たとえば、部分の3つのインスタンスまたはコピーをサービス環境で実行している必要があり、サービス環境の部分の障害または停止の発生時に、その部分によって表されるサービスが完全に失われるのを防ぐために、3つ全てが別々のまたは異なるホストでホストされるべきであることが識別され得る。
【0047】
抽出された部分情報から、システムは、304においてアプリケーションの部分についてアフィニティ・インジケータおよび非アフィニティ・インジケータを識別することができるか否かを判定する。アフィニティ・インジケータは、一緒に保持されるべきまたはサービス環境で同じホストによってホストされるべきである部分を示す。したがって、アフィニティ・インジケータは、アプリケーションの異なる部分間の関連性に基づく。非アフィニティ・インジケータは、別々に保持されるべきまたはサービス環境で異なるホストによってホストされるべきである部分を示す。したがって、非アフィニティ・インジケータは、アプリケーションの異なる部分間の干渉に基づく。さらに、システムは、抽出された部分情報からポッド設計インジケータを識別することができる。ポッド設計は、サービス環境システム上の部分のクラスタまたはグルーピングである。部分情報からアフィニティ・インジケータもしくはポッド設計インジケータまたはその両方を識別するいくつかの非包括的な例が以下に続く。しかしながら、これらは単なる例であり、他の技術が企図され、可能である。
【0048】
アフィニティ・インジケータを識別する第1の例として、システムは、一部の部分が互いに通信することを示すであろう部分間の相互作用を識別し得る。システムはまた、通信の周波数を決定して、アフィニティ・インジケータの強度を決定し得る。相互作用を識別するために、システムはサービスの相互作用とネットワーク構成とにアクセスし得る。サービスの相互作用内には、1つのアプリケーション部分を他のアプリケーション部分に接続する定義されたリンクがあり得る。そのような定義されたリンクは、リンクされた部分間のアフィニティを示唆する。ユーザはまた、アプリケーションの部分間のネットワークを定義し得る。ネットワークは部分のグループを識別し、これらの部分は全てネットワーク内の部分間の通信を可能にするために一緒に接続されているが、ネットワーク上にない他の部分からは分離されている。したがって、ネットワークは、定義されたネットワーク内に含まれる部分間のアフィニティを示唆する。ポートに対応する情報は、部分が実行されているサービスのタイプを推定するために、また、アフィニティに関するリンクの強度のインジケータとして使用され得る。
【0049】
アフィニティ・インジケータの他の例は、部分間の関係もしくは依存関係またはその両方である。仕様内で使用されている特定の用語は、部分間の関係または依存関係を示し得る。たとえば、特定の用語は、特定の部分が他の部分に依存していることを示し得る。システムはまた、ファイルからサービスの関係を識別し得る。たとえば、単一のファイルに含まれる複数のサービス定義はアフィニティのインジケータとなり得、特に設定が多数のファイルに分けられている場合はそうである。一部のファイルはサービス機能チェーンを示し得、これは密接なサービスの相互作用、ひいてはそれらのサービスまたは部分間のアフィニティのインジケータである。これらのファイルはまた、部分のグループが同じポッド内に一緒に保持されるべきであることのインジケータであり得る。たとえば、関連性のあるファイル内に表された部分は、それらの部分が一緒にグループ化またはクラスタ化されるべきであることを示すポッド設計インジケータである。
【0050】
アフィニティ・インジケータの他の例は、部分間のストレージ要件である。共有ストレージ・ボリュームにアクセスする部分は、部分間のアフィニティを示し得る。これらの部分は、単一のポッドのみが共有ストレージ・ボリュームにアクセスするように、同じクラスタまたはポッド内に一緒に配置される候補でもあり、これにより、部分を異なるポッドに配置することで発生するはずのリモート読み出しの回数が減少する。また、ストレージまたは他のリソース要件は非アフィニティ・インジケータになり得る。システムは、たとえば、メモリ要件、処理要件、ストレージ要件などのリソース要件が大きい部分を識別し得る。複数の部分が同じ大きなリソース要件を有する場合、これは非アフィニティ・インジケータになり得る。たとえば、その他の点ではアフィニティを有さないか、またはある強いアフィニティを有する2つの部分が両方とも大量のメモリ・リソースを必要とする場合、これらの部分を同じホストでホストすると、メモリ・リソースがダウンし、これらの部分だけでなく同じホストによってホストされている他のあらゆる部分のパフォーマンスも低下し得る。
【0051】
アフィニティまたは非アフィニティ・インジケータの他の例は、配置制約である。配置制約は、サービス環境の特定のホストのみが満たすことができる、部分によって必要とされるまたは要求される特別な要件または優先事項(たとえば、ハードウェア要件、ソフトウェア要件、処理要件など)を識別する。したがって、これらの部分は、これらの要件を満たすことができるサービス環境内の場所にのみ配置することができる。配置制約は、要件であるハード制約を含み得、優先事項であるソフト制約を含み得る。たとえば、機能するために特定のハードウェア・リソースを必要とする部分はハード制約または要件であるが、特定のハードウェア・リソースによってより優れたパフォーマンスを発揮する部分はソフト制約または優先事項である。さらに、同じ配置制約を有する部分はアフィニティを示し得、分離されることが推奨される部分は非アフィニティを示し得る。
【0052】
非アフィニティ・インジケータの最後の例は、フォールト・トレランス要件である。アプリケーションは、特定の部分の複数のコピー、レプリカ、またはインスタンスがサービス環境で実行されることを必要とし得る。複数のコピーが必要な理由の1つは、障害または停止の発生時に、ある部分に対応するサービスが利用できなくなるのを防ぐためである。換言すれば、その部分に対応するサービスは、アプリケーションを動作可能に維持するために動作可能である必要がある重要なサービスであり得る。したがって、システムは、アプリケーションの動作を保証するために、サービスの複数のコピーが実行されていることを指定し得る。したがって、サービス環境での障害または停止の発生時に少なくとも1つのコピーが機能することをより確実にするためには、これらのコピーは同じホストでホストされるべきではない。したがって、レプリカまたはコピーを示すもの(indication)は、コピーまたはインスタンス間の非アフィニティ・インジケータである。
【0053】
304においてアフィニティおよび非アフィニティ・インジケータを識別できない場合、305においてシステムはユーザに通知し得る。次いで、ユーザは、インジケータを識別できるように追加の入力情報を提供することができるか、またはアフィニティおよび非アフィニティ・ルールを手動で提供し得る。一方、304においてインジケータを識別することができた場合、システムはアフィニティおよび非アフィニティ・インジケータに基づいてアフィニティおよび非アフィニティ・ルールを自動的に構築する。ルールを構築するために、システムはアフィニティ・インジケータを、コンテナ・ベースの環境で同じホストによってホストされるコンテナまたは部分を識別するアフィニティ・ルールへと組み合わせる。また、システムは非アフィニティ・インジケータを、別々に保持されるべきまたはコンテナ・ベースの環境で異なるホストによってホストされるべきであるコンテナまたは部分を識別する非アフィニティ・ルールへと組み合わせる。さらに、システムはポッド設計インジケータをポッド設計ルールへと組み合わせることができ、ポッド設計ルールは、コンテナ・ベースの環境内のアプリケーションのポッド設計を構築するためにコンテナ・ベースの環境の同じポッド内に含まれるべきであるアプリケーションの部分を示す。
【0054】
これらのルールは、アプローチのうちの1つまたは組み合わせによりインジケータを組み合わせることによって構築することができる。いくつかのアプローチを以下に説明する。しかしながら、これは例の非網羅的なリストであり、他のアプローチも可能であり、企図される。第1のアプローチは、ルール・ベースのアプローチを含む。このアプローチでは、アフィニティまたは非アフィニティ・インジケータが存在する場合に、アフィニティまたは非アフィニティを有する部分がそれぞれ一緒に配置されるかまたは別々に保持されることを示すルールが作成される。コンテナの配置に関する決定を行うには特定の数のアフィニティまたは非アフィニティ・インジケータが存在しなければならないという点で、ルールをより複雑にすることもできる。さらに、インジケータに重みを追加することができる。たとえば、特定のインジケータは他のインジケータよりも大きい重みを有し得る。次いで、システムは、インジケータの重みが特定の閾値を満たすかまたは超える場合に、配置に関する決定を行うことができると判定することができる。
【0055】
他のアプローチは、部分配置を決定するための先行順位(precedence)または優先順位(priority)ルールを利用することである。ユーザ、アプリケーション・エンティティ、記載のシステムなどは、特定の先行順位または優先順位を特定のアフィニティまたは非アフィニティ・インジケータに割り当て得る。したがって、これらのインジケータのうちの1つが存在する場合、システムはそのインジケータを先行または優先し、そのインジケータに基づいて配置に関するアクションを取る。このアプローチは、メタ制約の先行順位階層を構築し、それぞれに正規化された重みを割り当てることを含み得る。次いで、システムは、推定されたアフィニティおよび非アフィニティ・ルールを収集し、これらは信頼度の重みを含み得る。これらのルールは、メタ制約の重みに基づいてさらに洗練され、それによってこれらのルールの重みが増幅または減衰される。これらの洗練されたルールに基づいて、システムは、これらのルールを満たすであろう部分配置の様々な可能なシナリオを識別することができる。次いで、システムは制約充足問題を解いて、部分の最終的な配置を決定することができる。
【0056】
最後の例示的なアプローチは、反復的なユーザ・ガイド付きの分析であり、what-if分析とも呼ばれる。このアプローチでは、ユーザまたは管理者に初期ルール・セットとその結果の部分配置とが提示される。次いで、ユーザは、ルールのうちの1つまたは複数の優先順位への変更を識別するフィードバックまたは入力を提供することができる。ルールの優先順位が変更されると、部分の配置が変更され得る。それに応じて、システムは、ユーザ・フィードバックに基づいて配置分析を再実行し、この新しい部分配置をユーザに提示する。次いで、ユーザは、ルールの優先順位を変更する追加の入力またはフィードバックを提供することができ、その結果、システムは分析を再実行し、新しい部分配置を生成する。このプロセスは、ユーザがリモート・サービス環境内の部分の配置に満足するまで繰り返し実行することができる。ユーザが部分配置を確認すると、確認された配置を実施することができる。
【0057】
アフィニティおよび非アフィニティ・ルールならびにポッド設計が構築されると、ルールに従ってアプリケーションの部分をサービス環境に配置することができる。換言すれば、アフィニティおよび非アフィニティ・ルールが構築されると、システムは、ルールに従って部分を環境内に配置することによって、アプリケーションをサービス環境にデプロイすることができる。さらに、ポッド設計に従って部分をサービス環境のクラスタまたはポッド内に配置することができる。
【0058】
図4は、記載のシステムおよび方法の全体的なシステム・アーキテクチャを示している。アプリケーション仕様401がシステムで受信される。アプリケーション仕様から、システムは、たとえば、サービスの相互作用の決定、サービスの関係の検出、サービスの依存関係の検出、配置制約の抽出、共通ストレージの検出、フォールト・トレランス要件の抽出、および他の任意の情報によって、部分情報402を識別する。部分情報から、システムは、アフィニティおよび非アフィニティ・インジケータ403Aと、ポッド設計インジケータ403Bとを抽出することができる。アフィニティおよび非アフィニティ・インジケータ403Aは、インジケータが要件であるか優先事項であるかをそれぞれ指定するハード・インジケータおよびソフト・インジケータの両方を含み得る。抽出されたアフィニティおよび非アフィニティ・インジケータ403Aを組み合わせて、アフィニティおよび非アフィニティ・ルール404Aを構築することができる。ポッド設計インジケータを組み合わせて、コンテナ・ベースの環境404Bのポッド内にどのコンテナを一緒に配置すべきかを示すポッド設計を識別することができる。
【0059】
図5に示すように、クラウド・コンピューティング・ノード10’内のコンピュータ・システム/サーバ12’は、汎用コンピューティング・デバイスの形態で示している。コンピュータ・システム/サーバ12’のコンポーネントは、少なくとも1つのプロセッサまたは処理ユニット16’と、システム・メモリ28’と、システム・メモリ28’を含む様々なシステム・コンポーネントをプロセッサ16’に結合するバス18’とを含み得るが、これらに限定されない。バス18’は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、いくつかのタイプのバス構造のいずれかの少なくとも1つを表す。限定ではなく例として、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス規格協会(VESA)ローカル・バス、および周辺機器相互接続(PCI)バスが含まれる。
【0060】
コンピュータ・システム/サーバ12’は、典型的には、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ12’によってアクセス可能な任意の利用可能な媒体であり得、揮発性および不揮発性の媒体、取り外し可能および取り外し不可能な媒体の両方を含む。
【0061】
システム・メモリ28’は、ランダム・アクセス・メモリ(RAM)30’もしくはキャッシュ・メモリ32’またはその両方などの、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ12’は、他の取り外し可能/取り外し不可能な揮発性/不揮発性のコンピュータ・システム記憶媒体をさらに含み得る。単なる例として、取り外し不可能な不揮発性の磁気媒体(図示しない、典型的には「ハード・ドライブ」と呼ばれるもの)に読み書きするためのストレージ・システム34’を設けることができる。図示していないが、取り外し可能な不揮発性の磁気ディスク(たとえば、「フロッピー・ディスク」)に読み書きするための磁気ディスク・ドライブと、CD-ROM、DVD-ROM、または他の光学媒体などの取り外し可能な不揮発性の光学ディスクに読み書きするための光学ディスク・ドライブとを設けることができる。そのような例では、それぞれを、少なくとも1つのデータ・メディア・インターフェースによってバス18’に接続することができる。以下でさらに図示および説明するように、メモリ28’は、本発明の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(たとえば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。
【0062】
プログラム・モジュール42’のセット(少なくとも1つ)を有するプログラム/ユーティリティ40’は、(限定ではなく例として)オペレーティング・システム、少なくとも1つのアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ28’に記憶され得る。オペレーティング・システム、少なくとも1つのアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データまたはそれらの何らかの組み合わせのそれぞれは、ネットワーキング環境の一実装形態を含み得る。プログラム・モジュール42’は、一般に、本明細書に記載の本発明の実施形態の機能もしくは方法論またはその両方を実行する。
【0063】
コンピュータ・システム/サーバ12’はまた、キーボード、ポインティング・デバイス、ディスプレイ24’などの少なくとも1つの外部デバイス14’、ユーザがコンピュータ・システム/サーバ12’とやりとりすることを可能にする少なくとも1つのデバイス、もしくはコンピュータ・システム/サーバ12’が少なくとも1つの他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(たとえば、ネットワーク・カード、モデムなど)、またはそれらの組み合わせと通信し得る。そのような通信は、入力/出力(I/O)インターフェース22’を介して行うことができる。またさらに、コンピュータ・システム/サーバ12’は、ネットワーク・アダプタ20’を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、もしくはパブリック・ネットワーク(たとえば、インターネット)、またはそれらの組み合わせなどの、少なくとも1つのネットワークと通信することができる。図示のように、ネットワーク・アダプタ20’は、バス18’を介してコンピュータ・システム/サーバ12’の他のコンポーネントと通信する。図示していないが、他のハードウェア・コンポーネントもしくはソフトウェア・コンポーネントまたはその両方を、コンピュータ・システム/サーバ12’と併用できることを理解されたい。例には、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらに限定されない。
【0064】
本開示は例示および説明の目的で提示しているが、網羅的であることも限定的であることも意図していない。多くの修正および変形が当業者には明らかであろう。原理および実際の適用を説明し、当業者が本開示を理解できるようにするために、実施形態を選択し、説明している。
【0065】
添付の図面を参照して本発明の例示的な実施形態を本明細書で説明してきたが、本発明の実施形態はそれらの正確な実施形態に限定されず、本開示の範囲または思想から逸脱することなく、他の様々な変更および修正が当業者によって行われ得ることを理解されたい。
【0066】
本発明は、システム、方法、もしくはコンピュータ・プログラム製品、またはそれらの組み合わせであり得る。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0067】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持および記憶可能な有形のデバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、限定はしないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリー・スティック、フロッピー・ディスク、命令が記録されたパンチ・カードまたは溝の隆起構造などの機械的にコード化されたデバイス、およびこれらの任意の適切な組み合わせが含まれる。コンピュータ可読記憶媒体は、本明細書で使用する場合、たとえば、電波または他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、または有線で伝送される電気信号などの一過性の信号自体であると解釈されるべきではない。
【0068】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、たとえば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらの組み合わせなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはそれらの組み合わせを含み得る。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶する。
【0069】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、または完全にリモート・コンピュータまたはサーバ上で実行され得る。最後のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得、または(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータへの接続がなされ得る。いくつかの実施形態では、たとえば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行し、電子回路を個人向けにし得る。
【0070】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書で説明している。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方におけるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装できることは理解されよう。これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供して、それらの命令がコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行された場合に、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/行為を実装するための手段が生成されるようなマシンを生成し得る。また、これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、もしくは他のデバイス、またはそれらの組み合わせに特定の方法で機能するように指示することが可能なコンピュータ可読記憶媒体に記憶して、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/行為の態様を実装する命令を含む製造品を構成するようにし得る。
【0071】
また、コンピュータ可読プログラム命令をコンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させることによって、それらの命令がコンピュータ、他のプログラム可能装置、または他のデバイス上で実行された場合に、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/行為が実装されるようなコンピュータ実装処理を生成し得る。
【0072】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理的機能を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部分を表し得る。いくつかの代替的実装形態では、ブロックに記載した機能は、図示した順序以外で行われ得る。たとえば、関与する機能に応じて、連続して示した2つのブロックは、実際には実質的に同時に実行され得、またはそれらのブロックは、場合により逆の順序で実行され得る。ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方におけるブロックの組み合わせは、指定された機能もしくは行為を実行するか、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用のハードウェア・ベースのシステムによって実装できることにも気付くであろう。
【手続補正書】
【提出日】2023-07-13
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータ・システムが実行するコンピュータ実装方法であって、コンピュータ・システムが、
コンテナ・ベースの環境にデプロイされるアプリケーションを受信することであって、前記アプリケーションは前記アプリケーションの部分を含むコンテナに分割される、前記受信することと、
所与のコンテナ内に含まれる前記アプリケーションの部分に関する情報を含む前記アプリケーションの仕様を取得することと、
前記仕様から、前記アプリケーションの異なる部分間の関連性および前記アプリケーションの異なる部分間の干渉に対応する部分情報を抽出することと、
前記部分情報から、前記アプリケーションの前記部分のアフィニティ・インジケータおよび非アフィニティ・インジケータを識別することであって、前記アフィニティ・インジケータは前記アプリケーションの異なる部分間の前記関連性に基づき、前記非アフィニティ・インジケータは前記アプリケーションの異なる部分間の前記干渉に基づく、前記識別することと、
アフィニティ・ルールを構築するために前記アフィニティ・インジケータを組み合わせることおよび非アフィニティ・ルールを構築するために前記非アフィニティ・インジケータを組み合わせることにより、前記コンテナのアフィニティ・ルールおよび非アフィニティ・ルールを構築することであって、前記アフィニティ・ルールは前記コンテナ・ベースの環境で同じホストによってホストされるコンテナを識別し、前記非アフィニティ・ルールは前記コンテナ・ベースの環境で異なるホストによってホストされるコンテナを識別する、前記構築することと、
を含む、コンピュータ実装方法。
【請求項2】
前記部分情報から、前記コンテナ・ベースの環境のポッド内に含まれる前記アプリケーションの部分を示すポッド設計インジケータを識別することを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記ポッド設計インジケータを利用して、前記コンテナ・ベースの環境内の前記アプリケーションのポッド設計を構築することを含む、請求項2に記載のコンピュータ実装方法。
【請求項4】
前記アフィニティ・インジケータを前記組み合わせることおよび前記非アフィニティ・インジケータを前記組み合わせることは、ルール・ベースの技術を利用することを含む、請求項1
~3のいずれか1項に記載のコンピュータ実装方法。
【請求項5】
前記アフィニティ・インジケータを前記組み合わせることおよび前記非アフィニティ・インジケータを前記組み合わせることは、他のアフィニティ・インジケータおよび非アフィニティ・インジケータよりも大きい重みが与えられるアフィニティ・インジケータおよび非アフィニティ・インジケータを識別する優先順位制約をユーザから取得することと、前記アフィニティ・ルールおよび前記非アフィニティ・ルールを構築することに前記優先順位制約を組み込むこととを含む、請求項1
~4のいずれか1項に記載のコンピュータ実装方法。
【請求項6】
前記アフィニティ・インジケータを前記組み合わせることおよび前記非アフィニティ・インジケータを前記組み合わせることは、反復的なユーザ・ガイド付きの分析を実行することを含み、前記反復的なユーザ・ガイド付きの分析は、反復的に(i)前記アフィニティ・ルールおよび非アフィニティ・ルールをユーザに提示することと、(ii)前記アフィニティ・ルールおよび前記非アフィニティ・ルールのうちの少なくとも1つの優先順位を変更するユーザからの入力を受け取ることと、(iii)前記ユーザからの前記入力に基づいて前記アフィニティ・ルールおよび非アフィニティ・ルールを修正することとを含む、請求項1
~5のいずれか1項に記載のコンピュータ実装方法。
【請求項7】
アフィニティ・インジケータを前記識別することは、サービスの相互作用およびネットワーク構成からアプリケーション部分間の相互作用を識別することを含む、請求項1
~6のいずれか1項に記載のコンピュータ実装方法。
【請求項8】
アフィニティ・インジケータを前記識別することおよび非アフィニティ・インジケータを前記識別することは、アプリケーション部分間にリソース干渉がないことおよびアプリケーション部分間にリソース干渉があることのうちの1つを示す前記部分のリソース要件を識別することを含む、請求項1
~7のいずれか1項に記載のコンピュータ実装方法。
【請求項9】
非アフィニティ・インジケータを前記識別することは、前記コンテナ・ベースの環境にデプロイされる所与の部分のインスタンスの数を識別することと、前記数のインスタンスにわたるフォールト・トレランス要件を識別することとを含む、請求項1
~8のいずれか1項に記載のコンピュータ実装方法。
【請求項10】
前記部分情報は、アプリケーション部分間の相互作用、アプリケーション部分の関係、アプリケーション部分の制約、およびフォールト・トレランス要件を含む、請求項1
~9のいずれか1項に記載コンピュータ実装方法。
【請求項11】
コンピュータ・システムに対して、請求項1~10のいずれか1項に記載のコンピュータ実装方法を実行させるためのコンピュータ・プログラム。
【請求項12】
請求項11に記載のコンピュータ・プログラムを記録した、コンピュータ可読な記録媒体。
【請求項13】
コンピュータ可読プログラム・コードを具現化したコンピュータ可読記憶媒体を備える装置であって、
前記コンピュータ可読プログラム・コードは、コンテナ・ベースの環境にデプロイされるアプリケーションを受信するコードを含み、前記アプリケーションは前記アプリケーションの部分を含むコンテナに分割され、
前記コンピュータ可読プログラム・コードは、所与のコンテナ内に含まれる前記アプリケーションの部分に関する情報を含む前記アプリケーションの仕様を取得するコードを含み、
前記コンピュータ可読プログラム・コードは、前記仕様から、前記アプリケーションの異なる部分間の関連性および前記アプリケーションの異なる部分間の干渉に対応する部分情報を抽出するコードを含み、
前記コンピュータ可読プログラム・コードは、前記部分情報から、前記アプリケーションの前記部分のアフィニティ・インジケータおよび非アフィニティ・インジケータを識別するコードを含み、前記アフィニティ・インジケータは前記アプリケーションの異なる部分間の前記関連性に基づき、前記非アフィニティ・インジケータは前記アプリケーションの異なる部分間の前記干渉に基づき、
前記コンピュータ可読プログラム・コードは、アフィニティ・ルールを構築するために前記アフィニティ・インジケータを組み合わせることおよび非アフィニティ・ルールを構築するために前記非アフィニティ・インジケータを組み合わせることにより、前記コンテナのアフィニティ・ルールおよび非アフィニティ・ルールを構築するコードを含み、前記アフィニティ・ルールは前記コンテナ・ベースの環境で同じホストによってホストされるコンテナを識別し、前記非アフィニティ・ルールは前記コンテナ・ベースの環境で異なるホストによってホストされるコンテナを識別する、
装置。
【国際調査報告】