JP2022546672A - 分散システムのデプロイメント - Google Patents

分散システムのデプロイメント Download PDF

Info

Publication number
JP2022546672A
JP2022546672A JP2022508563A JP2022508563A JP2022546672A JP 2022546672 A JP2022546672 A JP 2022546672A JP 2022508563 A JP2022508563 A JP 2022508563A JP 2022508563 A JP2022508563 A JP 2022508563A JP 2022546672 A JP2022546672 A JP 2022546672A
Authority
JP
Japan
Prior art keywords
machines
pair
communication
container
network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2022508563A
Other languages
English (en)
Other versions
JP7457435B2 (ja
Inventor
ネーラーティース、アレクサンダー、ジョン
マスターズ、オリバー、ポール
スミス、サミュエル、クリストファー
ダニングス、アンドルー、ジェームズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2022546672A publication Critical patent/JP2022546672A/ja
Application granted granted Critical
Publication of JP7457435B2 publication Critical patent/JP7457435B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • H04L41/0826Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability for reduction of network costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0864Round trip delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Abstract

ネットワークの複数のマシンにわたる分散システムのデプロイメントを構成するためのコンピュータ実施方法。本方法は、ネットワークの複数のマシン間のネットワーク通信特性を記述するネットワーク情報を取得することを含むことができる。また、本方法は、所定の期間における、複数のマシンのうちのマシンの対の間の通信の少なくとも1つの特性を記述するコンテナ間通信情報を取得することを含むことができる。本方法はまた、ネットワーク情報及びコンテナ間通信に基づいて、潜在的なコンテナ・デプロイメント構成を予想される通信時間にマッピングするコスト関数を求めることを含むこともできる。本方法はまた、コスト関数を最適化アルゴリズムで処理することを含むこともできる。本方法はまた、処理することに応答して、コスト要件を満たす関連コストを有するコンテナ・デプロイメント構成を識別することを含むこともできる。

Description

本開示は、一般的には、分散システム(distributed system)に関し、より具体的には、複数のマシンにわたる分散システムのデプロイメントに関する。
本発明は、ネットワークの複数のマシンにわたる分散システムのデプロイメントを構成するための、コンピュータ実施方法、システム、及びコンピュータ・プログラム製品を提供する。本方法は、ネットワークの複数のマシン間のネットワーク通信特性を記述するネットワーク情報を取得することを含むことができる。また、本方法は、所定の期間における、複数のマシンのうちのマシンの対の間の通信の少なくとも1つの特性を記述するコンテナ間通信情報を取得することを含むこともできる。本方法はまた、ネットワーク情報及びコンテナ間通信に基づいて、潜在的なコンテナ・デプロイメント構成を予想される通信時間にマッピングするコスト関数を求めることを含むこともできる。本方法はまた、コスト関数を最適化アルゴリズムで処理することを含むこともできる。本方法はまた、処理することに応答して、コスト要件を満たす関連コストを有するコンテナ・デプロイメント構成を識別することを含むこともできる。
システムは、1つ又は複数のコンピュータ・プロセッサを有することができ、ネットワークの複数のマシン間のネットワーク通信特性を記述するネットワーク情報を取得するように構成することができる。本システムはまた、所定の期間における、複数のマシンのうちのマシンの対の間の通信の少なくとも1つの特性を記述するコンテナ間通信情報を取得するように構成することもできる。本システムはまた、ネットワーク情報及び前記コンテナ間通信に基づいて、潜在的なコンテナ・デプロイメント構成を予想される通信時間にマッピングするコスト関数を求めるように構成することもできる。本システムはまた、コスト関数を最適化アルゴリズムで処理するように構成することもできる。本システムはまた、処理に応答して、コスト要件を満たす関連コストを有するコンテナ・デプロイメント構成を識別するように構成することもできる。
コンピュータ・プログラム製品は、具体化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含むことができ、プログラム命令は、サーバによって実行可能であり、サーバに方法を実行させる。方法は、ネットワークの複数のマシン間のネットワーク通信特性を記述するネットワーク情報を取得することを含むことができる。また、本方法は、所定の期間における、複数のマシンのうちのマシンの対の間の通信の少なくとも1つの特性を記述するコンテナ間通信情報を取得することを含むこともできる。本方法はまた、ネットワーク情報及びコンテナ間通信に基づいて、潜在的なコンテナ・デプロイメント構成を予想される通信時間にマッピングするコスト関数を求めることもできる。本方法はまた、コスト関数を最適化アルゴリズムで処理することを含むこともできる。本方法はまた、処理することに応答して、コスト要件を満たす関連コストを有するコンテナ・デプロイメント構成を識別することを含むこともできる。
上記の概要は、本開示の図示された各実施形態又は全ての実装を説明することを意図したものではない。
本出願に含まれる図面は、本明細書に組み込まれ、その一部を形成する。これらの図面は、本開示の実施形態を示し、説明とともに本開示の原理を説明する役割を果たす。図面は、特定の実施形態を例示するものに過ぎず、本開示を限定するものではない。
幾つかの実施形態による、例示的な分散システムの概略図を示す。 幾つかの実施形態による、例示的なシステムのブロック図を示す。 幾つかの実施形態による、ネットワークの複数のマシンにわたるコンテナのデプロイメントを構成する方法のフローチャートを示す。 幾つかの実施形態による、サンプル・コンピュータ・システムのブロック図を示す。 幾つかの実施形態による、クラウド・コンピューティング環境を示す。 幾つかの実施形態による抽象化モデル層を示す。
本発明は、種々の修正及び代替形態に従うが、その特定のものが例として図面に示され、詳細に説明される。しかしながら、その意図は本発明を説明される特定の実施形態に限定することではないことを理解されたい。反対に、その意図は本発明の趣旨及び範囲内に入る全ての修正、均等物、及び代替物をカバーすることである。
本開示は、一般的には、分散システムに関し、より具体的には、複数のマシンにわたる分散システムのデプロイメントに関する。本開示は、必ずしもそうした用途に限定されるものではないが、本開示の様々な態様は、この文脈を用いた様々な例の議論を通じて理解することができる。
従来のオンサイト・デプロイメント(on-site deployment)に優る幾多の利点があるため、複数のマシン(例えばクラウドにおける)にわたってソフトウェア・サービスをホストするために、分散システムを作成することがある。しかしながら、複数のマシンにわたってソフトウェア・サービスをホストする場合、サービスが効率的かつ効果的に実行されることが重要であり得る。
これらのソフトウェア・サービスは、複数のマイクロサービスで構成することができ、各マイクロサービスは、それぞれのコンテナ内で実行することができ、互いに通信することもできる(例えば、representational state transfer(REST)、ハイパーテキスト転送プロトコル(HTTP:Hypertext Transfer Protocol)などを用いて)。異なるマイクロサービスは、他のものよりも多く通信することがある(例えば、システム全体のアーキテクチャに応じて)。コンテナをホストするために用いられる複数のマシンは、各マシン上で1より多いコンテナをホストすることができる。しかしながら、様々な異なるマシン間のピング時間(ping time)は大きく異なる可能性があり、その結果、マイクロサービスが相互作用するときにマシン間の待ち時間のばらつきが生じる。こうした待ち時間のばらつきは、システム性能全体に大きな影響を与える可能性がある。
本開示は、複数のマシンにわたり分散システムをデプロイするためのコンピュータ実施方法、システム、及びコンピュータ・プログラム製品を提供する。より具体的には、コンテナは、複数のマシン間のネットワーク通信特性を記述するネットワーク情報に基づいて、コンテナをマシン上にデプロイし、それによりシステム性能全体を最大化することができる。こうした概念は、クロス・コンテナ・メトリクス、その統計的分析、及び最適化ヒューリスティックの組み合わせを用いることができる。従って、実施形態は、クラウド・システム内の待ち時間を最小化してサービスの性能を向上させることができるツールを提供することができる。これにより、システム全体のスループット、及び顧客体験の向上をもたらすことができる。
ネットワーク情報及びコンテナ間通信情報(例えば、既存のデプロイ構成について取得された)に基づいて、実施形態では、性能向上のための好ましい又は最適なデプロイメント・アーキテクチャを識別することができる。
ネットワーク情報は、例えば、マシンの対の間のピング時間、データ転送速度、及び帯域幅のうちの少なくとも1つを測定することによって取得することができる。実際のデプロイメント(例えば、テスト・デプロイメント又はプロダクション・デプロイメント)からネットワーク情報を取得することによって、正確な関連情報を取得し、分析及び結果を改善することができる。
コンテナ間通信情報を取得することは、テスト・デプロイメント構成で複数のマシンにわたりマイクロサービス・コンテナをデプロイすることを含むことができる。その後、所定の期間、複数のマシンのうちのマシンの対の間の通信を監視して、所定の期間における複数のマシンのうちのマシンの対の間の通信の少なくとも1つの特性を判断することができる。例えば、初期テスト・デプロイメント構成を実施し、次に、監視して、マシンの対の間の通信に関する正確な情報を取得することができる。実際のデプロイメントからコンテナ間通信情報を取得することによって、より正確な関連情報を取得し、分析及び結果を改善することができる。
幾つかの実施形態では、既存のプロダクション・デプロイメントを監視して、コンテナ間通信情報を取得することができる。こうしたプロダクション・デプロイメントを監視することで、例えば、テスト・デプロイメントよりも正確な情報を提供することができる。
コンテナ間通信情報は、所定の期間(例えば、1時間、1日、1週間、1ヶ月など)複数のマシンのうちのマシンの対の間で転送されたデータの量を記述する情報を含むことができる。例として、コンテナ間通信情報は、所定の期間における複数のマシンのうちのマシンの対の間の要求及び応答の平均頻度、所定の期間における複数のマシンのうちのマシンの対の間の要求及び応答のコンテンツ長ヘッダ、及び所定の期間における複数のマシンのうちのマシンの対の間の要求及び応答の平均ペイロード・サイズのうちの少なくとも1つを記述する情報を含むことができる。要求及び応答の平均頻度に関する情報は、特定のコンテナ間の相互作用又はリンクの相対的重要性の指標を提供することができる。同様に、ペイロードの平均サイズに関する情報は、特定のコンテナ間リンクの相対的要件の指標を提供することができる。こうした情報を利用して、例えば、デプロイメント構成において特定のコンテナ間通信リンクが優先されることを保証することができる。
好ましい実施形態は、ユーザ入力信号、及び性能制御コンポーネントからの制御信号のうちの少なくとも1つに基づいて、コスト要件を判断することをさらに含むことができる。こうした実施形態はまた、性能制御コンポーネントを用いて、最小性能要件を判断することと、最小性能要件を表す制御信号を生成することとを含むことができる。従って、実施形態は、ユーザ・プリファレンスもしくはコントローラ(又はエキスパート・ユーザ)によってなされた判断又はその両方に従って、コスト要件に適合させることを容易にすることができる。これにより、特定のターゲット・ニーズに応じて、コスト要件の設定もしくは修正又はその両方を行うことを可能にすることができる。
例として、最適化アルゴリズムは、貪欲アルゴリズム(greedy algorithm)、アント・コロニー・アルゴリズム(ant colony algorithm)、シミュレーテッド・アニーリング・アルゴリズム(simulated annealing algorithm)、遺伝的アルゴリズム(genetic algorithm)、及びタブー検索(tabu search)のうちの少なくとも1つを含むことができる。従って、実施形態によって、幅広い既知の又は従来の最適化概念又はアルゴリズムを利用することができる。これは、実装の複雑さもしくはコスト又はその両方の削減に役立ち得る。
本願の文脈において、本発明の実施形態が方法を構成する場合、そうした方法は、コンピュータにより実行されるプロセス、すなわち、コンピュータ実施可能方法とすることができることを理解されたい。従って、方法の様々なステップは、コンピュータ・プログラムの様々な部分(例えば、1つ又は複数のアルゴリズムの様々な部分)を反映することができる。
また、本出願の文脈において、システムは、本発明の方法の1つ又は複数の実施形態を実行するように適合された単一のデバイス又は分散デバイスの集合とすることができる。例えば、システムは、本発明の方法の少なくとも1つの実施形態を協働して実行するために、ローカル・エリア・ネットワーク、インターネットなどのネットワークを介して接続されたパーソナル・コンピュータ(PC)、サーバ、又はPCもしくはサーバ又はその両方の集合とすることができる。
提案されるのは、ピング時間に基づいてコンテナをマシン上にデプロイして、システムにわたる待ち時間を最小化し、それによってシステム性能全体を最大化するための概念である。そうした概念は、クロス・コンテナ・メトリクス、その統計的分析、及び最適化ヒューリスティックの組み合わせを用いることができる。従って、実施形態は、クラウド・システム内の待ち時間を最小化して、サービスの性能を向上させることができるツールを提供することができる。これにより、システム全体のスループットが向上し、より良い顧客体験をもたらし得る。
従って、実施形態は、コンテナ間のピング時間を最小にするためのコンテナの最適なデプロイメント構成(例えば、位置)を見出すことによって、システムにおける待ち時間を低減させるためのコンピュータ実施方法を提供することができる。
例えば、幾つかの実施形態では、ピング時間、データ転送速度もしくはコンテナ間の帯域幅又はそれらの組み合わせなど、コンテナ間のネットワーキング・メトリクスの大きなマトリクスを用いて、性能のために全体的なシステムのデプロイメント構成を最適化することができる。そうした最適化は、高度な最適化技術(例えば、アント・コロニー最適化アルゴリズム)を利用することができる。
実施形態では、例えば、最初のテスト・デプロイメント構成の速度を殆ど考慮することなく、性能のための最良のデプロイメント・アーキテクチャを見出そうとすることが可能である。
幾つかの実施形態では、ネットワーク情報及びコンテナ間(inter-container)通信情報(例えば、既存のデプロイメント構成について取得された)に基づいて、潜在的なコンテナ・デプロイメント構成を予想される通信時間にマッピングするコスト関数を求めることができる。このコスト関数を用いて最適化アルゴリズムを利用し、コスト要件を満たす関連コストを有するコンテナ・デプロイメント構成を識別することができる。
単に例として、提案される実施形態により利用される最適化アルゴリズムは、貪欲アルゴリズム、アント・コロニー・アルゴリズム、又はそれらの組み合わせを含むことができる。従って、実施形態は、コスト関数を最適化するための様々な技術を利用し、それにより、実装の複雑さもしくはコスト又はその両方を低減させることができる。
ここで図1を参照すると、幾つかの実施形態による、例示的な分散システム100の概略図が示される。幾つかの実施形態では、分散システム100は、例示的な実施形態の態様を実施することができるコンピュータのネットワークを含む。分散システム100は、少なくとも1つのネットワーク102を含むことができ、このネットワーク102は、分散データ処理システム100内で互いに接続された様々なデバイス及びコンピュータ(例えば、クライアント110、クライアント112、クライアント114、サーバ104、サーバ106など)の間の通信リンクを提供するために用いられる媒体とすることができる。ネットワーク102は、有線、無線通信リンク、又は光ファイバ・ケーブルなどの接続を含むことができる。
幾つかの実施形態では、第1のサーバ104及び第2のサーバ106が、ストレージ・ユニット108と共にネットワーク102に接続される。さらに、クライアント110、112及び114もネットワーク102に接続される。クライアント110、112及び114は、例えば、パーソナル・コンピュータ、ネットワーク・コンピュータなどとすることができる。示される例では、第1のサーバ104は、ブート・ファイル、オペレーティング・システム・イメージ及びアプリケーションなどのデータをクライアント110、112、及び114に提供する。幾つかの実施形態では、クライアント110、112、及び114は、第1のサーバ104に対するクライアントである。分散処理システム100は、図示されていない付加的なサーバ、クライアント及び他のデバイスを含むことができる。
幾つかの実施形態では、分散システム100はインターネットとすることができ、ネットワーク102は、伝送制御プロトコル/インターネット・プロトコル(TCP/IP:Transmission Control Protocol/Internet Protocol)スイートのプロトコルを用いて互いに通信するネットワーク及びゲートウェイの世界規模の集まりを表すことができる。例えば、インターネットの中心は、データ及びメッセージを配信する何千もの商用、政府、教育、及び他のコンピュータ・システムから成る主要なノード又はホスト・コンピュータ間の高速データ通信ラインのバックボーンとすることができる。幾つかの実施形態では、分散システム100は、例えば、イントラネット、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)等といった多数の異なるタイプのネットワークを含むように実装される。上述のように、図1は、一例として、本発明の異なる実施形態に対するアーキテクチャ上の限定として意図されておらず、従って、図1に示される特定の要素は、本発明の例示的な実施形態を実装できる環境に関する限定と考えるべきではない。
図2を参照すると、幾つかの実施形態による、例示的な実施形態の態様を実装できる例示的なシステム200のブロック図が示される。システム200は、図1のクライアント110などのコンピュータの一例であり、その中に、本発明の例示的な実施形態のためのプロセスを実施するコンピュータ使用可能コード又は命令が配置され得る。
幾つかの実施形態では、システム200は、ノース・ブリッジ及びメモリ・コントローラ・ハブ(NB/MCH)202と、サウス・ブリッジ及び入力/出力(I/O)コントローラ・ハブ(SB/ICH)204とを含むハブ・アーキテクチャを利用する。処理ユニット206、メイン・メモリ208、及びグラフィックス・プロセッサ210は、NB/MCH202に接続することができる。幾つかの実施形態では、グラフィックス・プロセッサ210は、アクセラレーテッド・グラフィックス・ポート(AGP:Accelerated Graphics Port)を通してNB/MCH202に接続することができる。
幾つかの実施形態では、ローカル・エリア・ネットワーク(LAN)アダプタ212は、SB/ICH204に接続される。音声アダプタ216、キーボード及びマウス・アダプタ220、モデム222、読み出し専用メモリ(ROM)224、ハードディスク・ドライブ(HDD)226、CD-ROMドライブ230、ユニバーサル・シリアル・バス(USB)ポート及び他の通信ポート232、並びにPCI/PCIeデバイス234は、第1のバス238及び第2のバス240を通してSB/ICH204に接続することができる。PCI/PCIeデバイス234は、例えば、イーサネット・アダプタ、アドイン・カード、及びノートブック・コンピュータ用のPCカードを含むことができる。幾つかの実施形態では、PCIは、カード・バス・コントローラを使用することがあるが、PCIeは、それを使用しないことがある。幾つかの実施形態では、ROM224は、例えば、フラッシュ基本入力/出力システム(BIOS)とすることができる。
幾つかの実施形態では、HDD226及びCD-ROMドライブ230は、第2のバス240を通して、SB/ICH204に接続される。HDD226及びCD-ROMドライブ230は、例えば、インテグレーティド・ドライブ・エレクトロニクス(IDE:Integrated Drive Electronics)又はシリアル・アドバンスド・テクノロジー・アタッチメント(SATA:Serial Advanced Technology Attachment)インターフェースを用いることができる。スーパーI/O(SIO)デバイス236をSB/ICH204に接続することができる。
幾つかの実施形態では、オペレーティング・システムは、処理ユニット206上で動作する。オペレーティング・システムは、図2のシステム200内の様々なコンポーネントを連携させ、それらを制御することができる。幾つかの実施形態では、クライアントとして、オペレーティング・システムは、市販のオペレーティング・システムとすることができる。Java(商標)プログラミング・システムなどのオブジェクト指向プログラミング・システムは、オペレーティング・システムと共に動作し、システム200上で実行されるJava(商標)プログラム又はアプリケーションからオペレーティング・システムへの呼び出しを提供することができる。
幾つかの実施形態では、システム200は、処理ユニット206内に複数のプロセッサを含む対称型マルチプロセッサ(SMP)システムとすることができる。幾つかの実施形態では、シングル・プロセッサ・システムを利用することができる。
幾つかの実施形態では、オペレーティング・システム、プログラミング・システム、及びアプリケーション又はプログラムに対する命令は、HDD226などのストレージ・デバイス上に配置され、メイン・メモリ208内にロードされ、処理ユニット206により実行することができる。同様に、実施形態による1つ又は複数のメッセージ処理プログラムは、ストレージ・デバイスもしくはメイン・メモリ208又はその両方によって格納されるように適合させることができる。
本発明の例示的な実施形態のためのプロセスは、コンピュータ使用可能プログラム・コードを用いて処理ユニット206により実行することができ、このプログラム・コードは、例えば、メイン・メモリ208、ROM224などのメモリ内、又は1つ又は複数の周辺機器226及び230内に配置することができる。
幾つかの実施形態では、第1のバス238又は第2のバス240などのバス・システムは、1つ又は複数のバスを含むことができる。バス・システムは、ファブリック又はアーキテクチャに取り付けられた異なるコンポーネント又はデバイス間のデータの転送を提供する、任意のタイプの通信ファブリック又はアーキテクチャを用いて実装することができる。モデム222又はネットワーク・アダプタ212などの通信ユニットは、データを受送信するために用いられる1つ又は複数のデバイスを含むことができる。メモリは、例えば、メイン・メモリ208、ROM224、又はNB/MCH202内に見られるようなキャッシュとすることができる。
幾つかの実施形態では、図1及び図2のハードウェアは、実装によって異なり得る。図1及び図2に示されるハードウェアに加えて又はその代わりに、他の内部ハードウェア、又はフラッシュ・メモリ、同等の不揮発性メモリ、もしくは光ディスク・ドライブ等のような周辺機器を使用することもできる。また、本発明の趣旨及び範囲から逸脱することなく、例示的な実施形態のプロセスを、前述したシステム以外のマルチプロセッサ・データ処理システムに適用することもできる。
幾つかの実施形態では、システム200は、クライアント・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話又は他の通信機器、携帯情報端末(PDA)等を含む多数の異なるデータ処理システムのいずれかの形態をとることができる。幾つかの例示では、システム200は、例えば、オペレーティング・システム・ファイルもしくはユーザ生成データ又はその両方を格納するための不揮発性メモリを提供するようにフラッシュ・メモリを備えるように構成された携帯型コンピューティング・デバイスとすることができる。このように、システム200は、本質的に、アーキテクチャ上の制限なしに、いずれかの周知の又は後に開発されるデータ処理システムとすることができる。
上に詳述したように、提案される実施形態は、ネットワークの複数のマシンにわたるマイクロサービス・コンテナのデプロイメントを構成するための方法及びシステムを提供することができる。そうした実施形態は、性能要件(コンテナ又はマイクロサービス間の最大許容通信時間など)を満たすことを保証する1つ又は複数の好ましい又は最適な構成を識別することができる。幾つかの実施形態では、デプロイメント構成のそうした識別は、(i)複数のマシン間のネットワーク通信特性を記述するネットワーク情報(例えば、複数のマシン間のピング時間、データ転送速度もしくは帯域幅又はそれらの組み合わせ)と、(ii)コンテナ間通信情報(例えば、マシンの対の間で通信される情報/データの量を記述する)とを既述するコスト関数と組み合わせて、既知の最適化技術又はアルゴリズムを利用することができる。
ここで図3を参照すると、幾つかの実施形態による、ネットワークの複数のマシンにわたるマイクロサービス・コンテナのデプロイメントを構成するための方法300のフローチャートの例示的な実施形態が示される。
幾つかの実施形態において、方法300は、オペレーション310において、複数のマシン間のピング時間及び帯域幅の測定値を記述するネットワーク情報を取得することを含む。幾つかの実施形態では、オペレーション310は、オペレーション315において、複数のマシンのうちのマシンの対の間のピング時間及び帯域幅を測定することを含むことができる。
方法300は、所定の期間における、複数のマシンのうちのマシンの対の間で通信された情報の量を記述するコンテナ間通信情報を取得するオペレーション320を含むことができる。幾つかの実施形態では、コンテナ間通信情報を取得するオペレーション320は、テスト・デプロイメント構成で複数のマシンにわたってマイクロサービス・コンテナをデプロイすること(オペレーション325)と、複数のマシンのうちのマシンの対の間の通信を監視すること(オペレーション330)とを含むことができる。幾つかの実施形態では、監視することは、所定の期間(例えば、1時間、1日、1週間など)における、複数のマシンのうちのマシンの対の間の通信の少なくとも1つの特性を判断するための所定の期間とすることができる。
幾つかの実施形態では、コンテナ間通信情報は、所定の期間において、複数のマシンのうちのマシンの対の間で転送されたデータの量を記述する情報を含む。従って、通信を監視するオペレーション330は、所定の期間における、複数のマシンのうちのマシンの対の間の要求及び応答の頻度及びペイロード・サイズを監視することを含むことができる。
さらに、幾つかの実施形態では、取得されたコンテナ間通信情報はまた、所定の期間における、複数のマシンのうちのマシンの対の間の要求及び応答のコンテンツ長ヘッダを記述する情報を含むこともできる。
取得されたネットワーク情報(オペレーション310からの)及びコンテナ間通信情報(オペレーション320からの)に基づいて、オペレーション340において、コスト関数を求めることができる。コスト関数は、潜在的なコンテナ・デプロイメント構成を予想される通信時間にマッピングすることができる。
幾つかの実施形態では、方法300は、コスト要件を満たす関連コストを有するコンテナ・デプロイメント構成を識別するために、コスト関数を最適化アルゴリズムで処理するオペレーション350を含む。例えば、最適化アルゴリズムは、貪欲アルゴリズムを利用することができる(また、大域的最適解を見出すことを意図して、各段階で局所的に最適な選択を行う問題解決ヒューリスティックに従うことができる)。
幾つかの実施形態では、コスト関数を最適化アルゴリズムで処理するオペレーション350を行う前に、別個のオペレーション(オペレーション355)においてコスト要件を判断することができる。幾つかの実施形態では、オペレーション355は、ユーザ入力信号、及び性能制御コンポーネントからの制御信号のうちの少なくとも1つに基づいて、コスト要件を判断することを含むことができる。例えば、性能制御コンポーネントは、最小性能要件を判断し、次に、最小性能要件を表す制御信号を生成するように構成することができる。次に、そうした制御信号に基づいて、コスト要件を判断することができる。
提案される概念のさらなる理解及び認識を助けるために、ここで例示的な実装について説明する。こうした実装は、単に、利用することができる処理ステップ及びアルゴリズムを実証するものであり、他の実装は、こうした処理ステップ及びアルゴリズムのみに限定されるものではないことを理解されたい。
まず、幾つかの実施形態においては、マシンiとjとの間のピング時間が得られ、このピング時間はPijとして表わされる。マシンiとjとの間の帯域幅は、コンテナをデプロイできる全てのマシンについて得ることができる。幾つかの実施形態では、マシンiとjとの間の帯域幅は、Bijとして表される。さらに、マシンの各対について、マシンiとjとの間のデータ転送速度を得ることができる。マシンiとjとの間のデータ転送速度は、Dijとして表すことができる。例として、Pij、Bij、及びDijは、マシンのテスト・デプロイメント構成でピング・テスト、帯域幅テスト、及びデータ転送テストを行うことによって得ることができる。幾つかの実施形態では、こうしたテストに利用されるコンテナは、プロダクション・デプロイメント構成に用いられるようなフル・コンテナとすることができる。幾つかの実施形態では、テストを実行するために互いに通信可能な軽量コンテナを用いることができる。例えば、幾つかの実施形態では、マシンごとに単一のコンテナのみを用いることができ、次いで、全ての可能なマシンの対に対してテストを実行することができる。
「n choose 2」(すなわち、
Figure 2022546672000001

)だけのピング・テスト及び帯域幅テストが必要であるため、これは計算上実現可能であることが留意され、ここで、nはコンテナをデプロイすることができるマシンの数である。
幾つかの実施形態では、次いで、システムを通常の方法で(すなわち、初期デプロイメント構成で)デプロイすることができる。所定の期間にわたって、デプロイされた構成について、クロス・コンテナHTTPメトリクス(例えば、要求及び応答の平均頻度、コンテナ間のデータ転送、及びコンテンツ長ヘッダ)を記録することができる。幾つかの実施形態では、そうした期間は、異なる時間における需要の変動の影響を捉えるために、システムの長期間(例えば、丸1日/1週間)の実行を表すと考えられるように選択される。これにより、任意の2つのコンテナ間の予想される要求数Rijに関する情報を提供することができる。
幾つかの実施形態では、潜在的なコンテナ・デプロイメント・スキームを、システム全体にわたる予想される全体のイン・フライト(in-flight)要求及び応答時間にマッピングするコスト関数Fを作成することができる。コスト関数fは、P、D、B、R、及び、任意の所与の要求/ルートについての性能重要度格付け(performance criticality rating)Cを用いて、いかなる所与のデプロイメント・スキームにも近似させることができる。例として、一般的なコスト関数は次の通りであり得る。
Figure 2022546672000002
この例示的な関数は、システム・デプロイメントを、エッジ・セットEをもつ有向グラフとみなすことができる。
しかしながら、R、P、Dの増加に伴ってコストが増加し、Bの増加に伴ってコストが減少する他のコスト関数のような、他のコスト関数を利用することもできることを理解されたい。
幾つかの実施形態では、システム・アーキテクトは、認識される要求の性能重要度に従って、性能重要度格付けCを設定することができる。例えば、システム・アーキテクトは、バックエンドのユーザ・インターフェース呼び出しと比較すると性能のログ記録は重要でないと考えることができる。
このコスト関数Cを用いて、次に、最適化ヒューリスティックを利用し、十分に低いコストで、従って、改善されたシステム性能全体で解決法(すなわち、デプロイメント構成)を探し出すことができる。
こうした最適化スキームの例は、貪欲アルゴリズムとすることができ、貪欲アルゴリズムでは、コスト関数Cの最小化された予想増加に従って、各コンテナをインクリメンタルに追加することによって、解決法が見出される。こうしたインクリメンタル手法は、アント・コロニー法などのより高度な最適化アルゴリズムに適していると考えられる。特に、マイクロサービス・トポロジの変更及びサービスのクライアント使用における傾向のシフトに適合させる能力のために、アント・コロニー・アルゴリズムは、特に適している場合がある。
ここで図4を参照すると、コンピュータ・システム400は、幾つかの実施形態によれば、コンピュータ・システム/サーバ402が、汎用コンピューティング・デバイスの形で示される。幾つかの実施形態において、コンピュータ・システム400は、本発明の実施形態による、分散システム100(図1)のコンピューティング・デバイスであってもよい。コンピュータ・システム/サーバ402のコンポーネントは、これらに限定されるものではないが、1つ又は複数のプロセッサ又は処理ユニット410、システム・メモリ460、及びシステム・メモリ460を含む様々なシステム・コンポーネントをプロセッサ410に結合するバス415を含むことができる。
バス415は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び様々なバスアーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のいずれかの1つ又は複数を表す。限定ではなく例として、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、拡張ISA(EISA:Extended ISA)バス、ビデオ・エレクトロニクス・スタンダード・アソシエーション(VESA:Video Electronics Standards Association)ローカル・バス、及び周辺部品相互接続(PCI:Peripheral Component Interconnects)バスなどが挙げられる。
コンピュータ・システム/サーバ402は、典型的には、様々なコンピュータ・システム可読媒体を含む。こうした媒体は、コンピュータ・システム/サーバ402によってアクセス可能な任意の利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
システム・メモリ460は、ランダム・アクセス・メモリ(RAM)462もしくはキャッシュ・メモリ464又はその両方などの揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ402は、他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例示として、取り外し不能な不揮発性磁気媒体(図示されておらず、典型的には「ハード・ドライブ」と呼ばれる)との間の読み書きために、ストレージ・システム465を設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピー・ディスク」)との間の読み書きのための磁気ディスク・ドライブと、CD-ROM、DVD-ROM、又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み書きのための光ディスク・ドライブとを設けることができる。こうした事例においては、それぞれを、1つ又は複数のデータ媒体インターフェースによってバス415に接続することができる。以下にさらに示され説明されるように、メモリ460は、本開示の実施形態の機能を実行するように構成されたプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
限定ではなく例として、メモリ460内に、プログラム・モジュール469のセット(少なくとも1つ)を有するプログラム/ユーティリティ468、並びにオペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装を含むことができる。プログラム・モジュール469は、一般に、本明細書に説明される本発明の実施形態の機能もしくは方法又はその両方を実行する。
コンピュータ・システム/サーバ402はまた、キーボード、ポインティング/
デバイス、ディスプレイ430等といった1つ又は複数の外部デバイス440、ユーザがコンピュータ・システム/サーバ402と対話することを可能にする1つ又は複数のデバイス、もしくはコンピュータ・システム/サーバ402が1つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス(例えば、ネットワーク・カード、モデムなど)又はそれらの組み合わせと通信することもできる。こうした通信は、入力/出力(I/O)インターフェース420を経由して行うことができる。さらにまた、コンピュータ・システム/サーバ402は、ネットワーク・アダプタ450を介して、ローカル・エリア・ネットワーク(LAN)、一般的な広域ネットワーク(WAN)、もしくはパブリック・ネットワーク(例えば、インターネット)、又はそれらの組み合わせのような、1つ又は複数のネットワークと通信することができる。図示のように、ネットワーク・アダプタ450は、バス415を介して、コンピュータ・システム/サーバ402の他のコンポーネントと通信する。図示されていないが、コンピュータ・システム/サーバ402と共に他のハードウェア・コンポーネントもしくはソフトウェア・コンポーネント又はそれらの組み合わせを使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムなどが挙げられる。
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載される教示の実装は、クラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られている又は後に開発される他のいずれかのタイプのコンピューティング環境と関連して実施することが可能である。
クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及び解放することができる構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの、便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、及び少なくとも4つのデプロイメントメント・モデルを含むことができる。
特徴は以下の通りである。
オンデマンド・セルフ・サービス:クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを用いて、複数のコンシューマにサービスを提供するためにプールされ、異なる物理及び仮想リソースが、要求に応じて動的に割り当て及び再割り当てされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないという点で位置とは独立しているといえるが、より抽象化レベルの高い位置(例えば、国、州、又はデータセンタ)を特定できる場合がある。
迅速な弾力性:機能は、迅速かつ弾力的に、場合によっては自動的に、プロビジョニングしてすばやくスケールアウトし、迅速に解放して素早くスケールインすることができる。コンシューマにとって、プロビジョニングに利用可能な機能は、多くの場合、無制限であるように見え、いつでもどんな量でも購入できる。
計測されるサービス:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザアカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
サービス・モデルは以下の通りである
Software as a Service(SaaS):コンシューマに提供される機能は、クラウド・インフラストラクチャ上で動作するプロバイダのアプリケーションを使用することである。これらのアプリケーションには、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定を想定される例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
Platform as a Service(PaaS):コンシューマに提供される機能は、プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが作成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上にデプロイメントすることである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージを含む基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、デプロイメントされたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対する制御を有する。
Infrastructure as a Service(IaaS):コンシューマに提供される機能は、コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアをデプロイメントして動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングすることである。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、デプロイメントされたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント(例えば、ホストのファイアウォール)選択に対する限定された制御を有する。
デプロイメントメント・モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運営される。これは、その組織又は第三者によって管理することができ、オンプレミス又はオフプレミスに存在することができる。
コミュニティ・クラウド:インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項(例えば、ミッション、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項)を有する特定のコミュニティをサポートする。これは、それらの組織又は第三者によって管理することができ、オンプレミス又はオフプレミスに存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散のためのクラウド・バースティング)によって結び付けられる2つ又はそれより多いクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
ここで図5を参照すると、幾つかの実施形態による例示的なクラウド・コンピューティング環境50が示される。図示されるように、クラウド・コンピューティング環境50は、例えば、携帯情報端末(PDA)又は携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、もしくはコンピュータ・システム54N又はそれらの組み合わせなどのような、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスと通信することができる、1つ又は複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信することができる。ノード10は、互いに通信することができる。これらのノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、又はこれらの組み合わせなど、1つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる(図示せず)。このことは、クラウド・コンピューティング環境50が、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のない、infrastructure as a service、platform as a service、もしくはsoftware as a service又はそれらの組み合わせを提供することを可能にする。図6に示されるコンピューティング・デバイス54A~Nのタイプは単に例示であることを意図し、コンピューティング・ノード10及びクラウド・コンピューティング環境50は、任意のタイプのネットワーク上でもしくはネットワーク・アドレス指定可能な接続(例えば、ウェブ・ブラウザを用いる)上で又はその両方で、任意のタイプのコンピュータ化されたデバイスと通信できることを理解されたい。
ここで図6を参照すると、幾つかの実施形態による、クラウド・コンピューティング環境50(図5)によって提供される機能抽象化層600のセットが示される。図6に示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
ハードウェア及びソフトウェア層60は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、メインフレーム61と、RISC(Reduced Instruction Set Computer(縮小命令セットコンピュータ))アーキテクチャ・ベースのサーバ62と、サーバ63と、ブレード・サーバ64と、ストレージ・デバイス65と、ネットワーク及びネットワーク・コンポーネント66と、が含まれる。幾つかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67と、データベース・ソフトウェア68とを含む。
仮想化層70は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーション及びオペレーティング・システム74、並びに仮想クライアント75を提供することができる。
一例においては、管理層80は、以下で説明される機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、これらのリソースの消費に対する課金又は請求とを提供する。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータル83は、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(Service Level Agreement、SLA)の計画及び履行85は、SLAに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
ワークロード層90は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例として、マッピング及びナビゲーション91、ソフトウェア開発及びライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、及び分散システム・デプロイメント96が挙げられる。
本発明は、システム、方法もしくはコンピュータ・プログラム製品又はそれらの組み合わせを、いずれかの可能な技術的詳細レベルで統合したものとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有する1つ又は複数のコンピュータ可読ストレージ媒体を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカードもしくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク又はその組み合わせなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジサーバ又はその組み合わせを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に格納するためにコンピュータ可読プログラム命令を転送する。
本発明のオペレーションを実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語、又は類似のプログラミング言語などの通常の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コード又はオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部がリモートコンピュータ上で実行される場合もあり、又は完全にリモートコンピュータもしくはサーバ上で実行される場合もある。最後のシナリオにおいて、リモートコンピュータは、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて、電子回路を個別化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図もしくはブロック図又はその両方を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実施できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令はまた、コンピュータ、プログラム可能データ処理装置、もしくは他のデバイス又はそれらの組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読ストレージ媒体内に格納し、それにより、その中に格納された命令を有するコンピュー可読ストレージ媒体が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連のオペレーション・ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作を実施するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及びオペレーションを示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実施するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には1つのステップとして同時に、実質的に同時に、部分的に又は完全に時間的に重なる様式で達成されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又はその両方の各ブロック、及びブロック図もしくはフローチャート図又はその両方内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実施できることにも留意されたい。
本開示の種々の実施形態の説明は、例証の目的のために提示されたが、これらは、網羅的であること、又は開示した実施形態に限定することを意図するものではない。当業者には、説明される実施形態の範囲及び趣旨から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際の適用、又は市場に見られる技術に優る技術的改善を最もよく説明するため、又は、当業者が、本明細書に開示される実施形態を理解するのを可能にするために選択された。

Claims (20)

  1. コンピュータ実施方法であって、
    ネットワークの複数のマシン間のネットワーク通信特性を記述するネットワーク情報を取得することと、
    所定の期間における、前記複数のマシンのうちのマシンの対の間の通信の少なくとも1つの特性を記述するコンテナ間通信情報を取得することと、
    前記ネットワーク情報及び前記コンテナ間通信に基づいて、潜在的なコンテナ・デプロイメント構成を予想される通信時間にマッピングするコスト関数を求めることと、
    前記コスト関数を最適化アルゴリズムで処理することと、
    前記処理することに応答して、コスト要件を満たす関連コストを有するコンテナ・デプロイメント構成を識別することと
    を含む、方法。
  2. 前記ネットワーク情報を取得することは、
    前記複数のマシンのうちの前記マシンの対の間のピング時間、データ転送速度、及び帯域幅のうちの少なくとも1つを測定することを含む、請求項1に記載の方法。
  3. 前記コンテナ間通信情報を取得することは、
    テスト・デプロイメント構成で前記複数のマシンにわたりマイクロサービス・コンテナをデプロイすることと、
    前記所定の期間、前記マシンの対の間の通信を監視することと、
    前記監視することに応答して、前記所定の期間における前記マシンの対の間の通信の少なくとも1つの特性を判断することと
    を含む、請求項1に記載の方法。
  4. 前記コンテナ間通信情報は、前記所定の期間における、前記マシンの対の間で転送されたデータの量を記述する情報を含む、請求項1に記載の方法。
  5. 前記コンテナ間通信情報は、
    前記所定の期間における前記マシンの対の間の要求及び応答の平均頻度、
    前記所定の期間における前記マシンの対の間の前記要求及び応答のコンテンツ長ヘッダ、及び
    前記所定の期間における前記マシンの対の間の前記要求及び応答の平均ペイロード・サイズ
    のうちの少なくとも1つを記述する情報を含む、請求項1に記載の方法。
  6. ユーザ入力信号、及び性能制御コンポーネントからの制御信号のうちの少なくとも1つに基づいて前記コスト要件を求めることをさらに含む、請求項1に記載の方法。
  7. 前記性能制御コンポーネントを用いて、最小性能要件を判断することと、
    前記最小性能要件を表す制御信号を生成することと
    をさらに含む、請求項6に記載の方法。
  8. 前記最適化アルゴリズムは、
    貪欲アルゴリズム、
    アント・コロニー・アルゴリズム、
    シミュレーテッド・アニーリング・アルゴリズム、
    遺伝的アルゴリズム、及び
    タブー検索
    のうちの少なくとも1つを含む、請求項1に記載の方法。
  9. 1つ又は複数のコンピュータ・プロセッサを有するシステムであって、前記システムは、
    ネットワークの複数のマシン間のネットワーク通信特性を記述するネットワーク情報を取得し、
    所定の期間における、前記複数のマシンのうちのマシンの対の間の通信の少なくとも1つの特性を記述するコンテナ間通信情報を取得し、
    前記ネットワーク情報及び前記コンテナ間通信に基づいて、潜在的なコンテナ・デプロイメント構成を予想される通信時間にマッピングするコスト関数を求め、
    前記コスト関数を最適化アルゴリズムで処理し、
    前記処理に応答して、コスト要件を満たす関連コストを有するコンテナ・デプロイメント構成を識別する
    ように構成される、システム。
  10. 前記ネットワーク情報を取得することは、
    前記複数のマシンのうちの前記マシンの対の間のピング時間、データ転送速度、及び帯域幅のうちの少なくとも1つを測定することを含む、請求項9に記載のシステム。
  11. 前記コンテナ間通信情報を取得することは、
    テスト・デプロイメント構成で前記複数のマシンにわたりマイクロサービス・コンテナをデプロイすることと、
    前記所定の期間、前記マシンの対の間の通信を監視することと、
    前記監視することに応答して、前記所定の期間における前記マシンの対の間の通信の少なくとも1つの特性を判断することと
    を含む、請求項9に記載のシステム。
  12. 前記コンテナ間通信情報は、前記所定の期間における、前記マシンの対の間で転送されたデータの量を記述する情報を含む、請求項9に記載のシステム。
  13. 前記コンテナ間通信情報は、
    前記所定の期間における前記マシンの対の間の要求及び応答の平均頻度、
    前記所定の期間における前記マシンの対の間の前記要求及び応答のコンテンツ長ヘッダ、及び
    前記所定の期間における前記マシンの対の間の前記要求及び応答の平均ペイロード・サイズ
    のうちの少なくとも1つを記述する情報を含む、請求項9に記載のシステム。
  14. ユーザ入力信号、及び性能制御コンポーネントからの制御信号のうちの少なくとも1つに基づいて前記コスト要件を求めるようにさらに構成される、請求項9に記載のシステム。
  15. 前記性能制御コンポーネントを用いて、最小性能要件を判断し、
    前記最小性能要件を表す制御信号を生成する
    ようにさらに構成される、請求項14に記載のシステム。
  16. 前記最適化アルゴリズムは、
    貪欲アルゴリズム、
    アント・コロニー・アルゴリズム、
    シミュレーテッド・アニーリング・アルゴリズム、
    遺伝的アルゴリズム、及び
    タブー検索
    のうちの少なくとも1つを含む、請求項9に記載のシステム。
  17. 具体化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含むコンピュータ・プログラム製品であって、前記プログラム命令は、サーバによって実行可能であり、前記サーバに方法を実行させ、前記方法は、
    ネットワークの複数のマシン間のネットワーク通信特性を記述するネットワーク情報を取得することと、
    所定の期間における、前記複数のマシンのうちのマシンの対の間の通信の少なくとも1つの特性を記述するコンテナ間通信情報を取得することと、
    前記ネットワーク情報及び前記コンテナ間通信に基づいて、潜在的なコンテナ・デプロイメント構成を予想される通信時間にマッピングするコスト関数を求めることと、
    前記コスト関数を最適化アルゴリズムで処理することと、
    前記処理することに応答して、コスト要件を満たす関連コストを有するコンテナ・デプロイメント構成を識別することと
    を含む、コンピュータ・プログラム製品。
  18. 前記ネットワーク情報を取得することは、
    前記複数のマシンのうちの前記マシンの対の間のピング時間、データ転送速度、及び帯域幅のうちの少なくとも1つを測定することを含む、請求項17に記載のコンピュータ・プログラム製品。
  19. 前記コンテナ間通信情報を取得することは、
    テスト・デプロイメント構成で前記複数のマシンにわたりマイクロサービス・コンテナをデプロイすることと、
    前記所定の期間、前記マシンの対の間の通信を監視することと、
    前記監視することに応答して、前記所定の期間における前記マシンの対の間の通信の少なくとも1つの特性を判断することと
    を含む、請求項17に記載のコンピュータ・プログラム製品。
  20. 前記コンテナ間通信情報は、前記所定の期間における、前記マシンの対の間で転送されたデータの量を記述する情報を含む、請求項17に記載のコンピュータ・プログラム製品。
JP2022508563A 2019-09-09 2020-09-01 分散システムのデプロイメント Active JP7457435B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/564,266 2019-09-09
US16/564,266 US10972548B2 (en) 2019-09-09 2019-09-09 Distributed system deployment
PCT/IB2020/058134 WO2021048689A1 (en) 2019-09-09 2020-09-01 Distributed system deployment

Publications (2)

Publication Number Publication Date
JP2022546672A true JP2022546672A (ja) 2022-11-07
JP7457435B2 JP7457435B2 (ja) 2024-03-28

Family

ID=74849648

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022508563A Active JP7457435B2 (ja) 2019-09-09 2020-09-01 分散システムのデプロイメント

Country Status (4)

Country Link
US (1) US10972548B2 (ja)
JP (1) JP7457435B2 (ja)
CN (1) CN114341809A (ja)
WO (1) WO2021048689A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11316757B1 (en) * 2020-06-23 2022-04-26 Amdocs Development Limited System, method, and computer program for consumer requirement based management for physical edge deployment of an application
US11405451B2 (en) * 2020-09-30 2022-08-02 Jpmorgan Chase Bank, N.A. Data pipeline architecture

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2398705B (en) * 2003-02-21 2005-08-10 Toshiba Res Europ Ltd Automatic wireless connection selection
US7865582B2 (en) 2004-03-24 2011-01-04 Hewlett-Packard Development Company, L.P. System and method for assigning an application component to a computing resource
US9603188B2 (en) * 2009-01-13 2017-03-21 Qualcomm Incorporated Dynamic connection management
JP6024148B2 (ja) 2012-03-28 2016-11-09 日本電気株式会社 プログラム配置方法
US9986031B2 (en) 2015-05-06 2018-05-29 International Business Machines Corporation Container provisioning based on communications patterns between software components
US9965261B2 (en) 2015-08-18 2018-05-08 International Business Machines Corporation Dependency-based container deployment
US10892942B2 (en) 2016-01-22 2021-01-12 Equinix, Inc. Container-based cloud exchange disaster recovery
US10255413B2 (en) 2016-02-04 2019-04-09 International Business Machines Corporation Microservices inter-operational trust management
WO2017168484A1 (ja) 2016-03-28 2017-10-05 株式会社日立製作所 管理計算機および性能劣化予兆検知方法
US20180026856A1 (en) 2016-07-21 2018-01-25 Cisco Technology, Inc. Orchestrating micro-service deployment based on network policy health
US11044162B2 (en) * 2016-12-06 2021-06-22 Cisco Technology, Inc. Orchestration of cloud and fog interactions
CN106610836B (zh) 2016-12-23 2019-12-31 国网信息通信产业集团有限公司 一种微服务运行管理工具
US10394599B2 (en) 2017-01-05 2019-08-27 International Business Machines Corporation Breaking dependence of distributed service containers
US10719354B2 (en) * 2017-06-20 2020-07-21 Samsung Electronics Co., Ltd. Container workload scheduler and methods of scheduling container workloads
US10694455B2 (en) * 2017-06-29 2020-06-23 Ayla Networks, Inc. Connectivity state optimization to devices in a mobile environment
CN111279319A (zh) * 2017-09-30 2020-06-12 甲骨文国际公司 容器组的动态迁移
CN108664378B (zh) 2018-05-10 2020-04-14 西安电子科技大学 一种微服务最短执行时间的优化方法

Also Published As

Publication number Publication date
US20210075866A1 (en) 2021-03-11
JP7457435B2 (ja) 2024-03-28
CN114341809A (zh) 2022-04-12
WO2021048689A1 (en) 2021-03-18
US10972548B2 (en) 2021-04-06

Similar Documents

Publication Publication Date Title
US10972532B2 (en) Dynamic shared server resource allocation
US10832205B2 (en) System and method for determining node order fulfillment performance
JP5946468B2 (ja) イメージを実行するのに最適なコンピューティング環境の判断
US11556321B2 (en) Deploying microservices across a service infrastructure
US10594781B2 (en) Dynamic healthchecking load balancing gateway
US10942784B2 (en) Database resource scaling
JP7457435B2 (ja) 分散システムのデプロイメント
US10756977B2 (en) Node relevance determination in an evolving network
WO2022111112A1 (en) Automatically adjusting data access policies in data analytics
US11900078B2 (en) Tuning a container orchestrator
US11770411B2 (en) Prioritize endpoint selection based on criteria
US10680912B1 (en) Infrastructure resource provisioning using trace-based workload temporal analysis for high performance computing
US11652710B1 (en) Service level agreement aware resource access latency minimization
US11456933B2 (en) Generating and updating a performance report
US11954524B2 (en) Compliance aware application scheduling
US20220284059A1 (en) Measuring quality of a chatbot response
US20230297647A1 (en) Building models with expected feature importance
US20230229469A1 (en) Probe deployment
US20220308978A1 (en) Task simulation using revised goals
WO2024032653A1 (en) Reducing network overhead
US20240012692A1 (en) Dynamic light-weighted multi-tenancy
JP2022169470A (ja) コンピュータ実装方法、コンピュータプログラム、およびコンピュータシステム(協調的機械学習における並列交差検証)

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220325

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220311

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220518

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231024

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240124

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240227

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20240227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240312

R150 Certificate of patent or registration of utility model

Ref document number: 7457435

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150