IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

<>
  • 特許-アプリケーション移行 図1
  • 特許-アプリケーション移行 図2
  • 特許-アプリケーション移行 図3
  • 特許-アプリケーション移行 図4
  • 特許-アプリケーション移行 図5
  • 特許-アプリケーション移行 図6A
  • 特許-アプリケーション移行 図6B
  • 特許-アプリケーション移行 図7
  • 特許-アプリケーション移行 図8
  • 特許-アプリケーション移行 図9
  • 特許-アプリケーション移行 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-04-08
(45)【発行日】2025-04-16
(54)【発明の名称】アプリケーション移行
(51)【国際特許分類】
   G06F 8/60 20180101AFI20250409BHJP
   G06F 8/77 20180101ALI20250409BHJP
   G06F 9/50 20060101ALI20250409BHJP
   H04L 67/10 20220101ALI20250409BHJP
【FI】
G06F8/60
G06F8/77
G06F9/50 150Z
H04L67/10
【請求項の数】 19
(21)【出願番号】P 2023517663
(86)(22)【出願日】2021-08-31
(65)【公表番号】
(43)【公表日】2023-09-29
(86)【国際出願番号】 EP2021073979
(87)【国際公開番号】W WO2022058158
(87)【国際公開日】2022-03-24
【審査請求日】2024-01-23
(31)【優先権主張番号】17/024,745
(32)【優先日】2020-09-18
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】シルヴァ、ブルーノ
(72)【発明者】
【氏名】ステルマー ネット、マルコ アウレリオ
(72)【発明者】
【氏名】デ フレイタス クーニャ、レナト ルイス
(72)【発明者】
【氏名】ミムラ ゴンザレス、ネルソン
【審査官】円子 英紀
(56)【参考文献】
【文献】米国特許出願公開第2012/0060142(US,A1)
【文献】特表2020-518073(JP,A)
【文献】米国特許出願公開第2020/0285451(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/60
G06F 8/77
G06F 9/50
H04L 67/10
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実行される方法であって、
前記コンピュータが、アプリケーションをターゲットクラウドインフラストラクチャに移行する段階;
前記コンピュータが、前記ターゲットクラウドインフラストラクチャ上での前記アプリケーションの実行中にコスト認識コード依存関係グラフを生成する段階;
前記コンピュータが、前記アプリケーションを:
前記コスト認識コード依存関係グラフに従って未使用ノードに対応する未使用ソースコードを除去すること;及び
前記コスト認識コード依存関係グラフの高コストサブグラフの識別されたソースコードを、前記識別されたソースコードに類似している機能を提供するように構成された生成済みマイクロサービスに対する呼び出しに置き換えること
によって修正する段階;及び
前記コンピュータが、前記ターゲットクラウドインフラストラクチャの1つ又は複数の仮想マシン上に、前記修正されたアプリケーションを実装する段階
を備える、方法。
【請求項2】
前記コスト認識コード依存関係グラフは、前記アプリケーションの前記実行及びソースコード解析の間に前記アプリケーションに対するトレース機能を使用して生成される、請求項1に記載の方法。
【請求項3】
前記修正されたアプリケーションに関連付けられた前記生成済みマイクロサービスは、前記修正されたアプリケーションを実装する前記1つ又は複数の仮想マシンに対して前記ターゲットクラウドインフラストラクチャの異なる仮想マシン上で実行される、請求項1又は請求項2に記載の方法。
【請求項4】
前記異なる仮想マシンは、前記修正されたアプリケーションを実装する前記1つ又は複数の仮想マシンのリソースに対して前記生成済みマイクロサービスのために適応されたリソースの別個のセットに関連付けられる、請求項3に記載の方法。
【請求項5】
前記未使用ノードは、事前定義された実行時間量にわたって使用されていないノードである、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記コンピュータが、前記コスト認識コード依存関係グラフの高コストサブグラフの前記識別されたソースコードを置き換える段階は、前記コンピュータが、前記コスト認識コード依存関係グラフ内の各ノードに関連付けられたコストを決定することを更に有し、前記コストは、ノード実行中に利用されるリソースの量を代表する、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記リソースは:前記ノード実行中に利用されるメモリ、前記ノード実行中のプロセッサ(CPU)使用状況、前記ノード実行中に実装される入力/出力(I/O)動作、事前定義された時間にわたるノード利用の頻度、及び前記ノード実行の持続時間からなる群から選択される1つ又は複数を含む、請求項6に記載の方法。
【請求項8】
前記コンピュータが、前記コスト認識コード依存関係グラフの高コストサブグラフの前記識別されたソースコードを置き換える段階は、前記コンピュータが、それぞれのノードのそれぞれのコストを、前記それぞれのノードを向く各エッジに割り当てることによって、前記コスト認識コード依存関係グラフ内のノードコストをエッジコストに変換する段階を更に有する、請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記コンピュータが、前記コスト認識コード依存関係グラフの高コストサブグラフの前記識別されたソースコードを置き換える段階は、前記コンピュータが、最短経路グラフアルゴリズムを使用して、前記コスト認識コード依存関係グラフ内のノード間のコスト経路を計算する段階を更に有する、請求項8に記載の方法。
【請求項10】
前記コンピュータが、前記コスト認識コード依存関係グラフの高コストサブグラフの前記識別されたソースコードを、前記生成済みマイクロサービスに対する呼び出しに置き換える段階は、
前記コンピュータが、最高コストサブグラフに基づいて、前記生成済みマイクロサービスを作成する段階;
前記コンピュータが、前記最高コストサブグラフに関連付けられた第1のソースコードを、前記生成済みマイクロサービスに置き換える段階;
前記コンピュータが、前記最高コストサブグラフに対して閾値を超える類似度を有する第2のサブグラフを識別する段階;及び
前記コンピュータが、前記第2のサブグラフに関連付けられた第2のソースコードを、前記生成済みマイクロサービスに置き換える段階
を更に有する、請求項1から9のいずれか一項に記載の方法。
【請求項11】
前記コンピュータが、前記閾値を超える前記類似度を有する前記第2のサブグラフを識別する段階は、近似グラフ同型アルゴリズムに基づいている、請求項10に記載の方法。
【請求項12】
記方法は、リモートデータ処理システムから1つ又は複数のコンピュータにダウンロードされるソフトウェアに従って、前記1つ又は複数のコンピュータによって実行される、請求項1から11のいずれか一項に記載方法。
【請求項13】
前記コンピュータが、前記ソフトウェアの使用状況を計測する段階;及び
前記コンピュータが、前記使用状況を計測することに基づいてインボイスを生成する段階
を更に備える、請求項12に記載の方法。
【請求項14】
1つ又は複数のプロセッサ;及び
前記1つ又は複数のプロセッサによって実行されると、前記1つ又は複数のプロセッサに、
アプリケーションをターゲットクラウドインフラストラクチャに移行する段階;
前記ターゲットクラウドインフラストラクチャ上での前記アプリケーションの実行中にコスト認識コード依存関係グラフを生成する段階;
前記アプリケーションを:
前記コスト認識コード依存関係グラフに従って未使用ノードに対応するソースコードを除去すること;
前記コスト認識コード依存関係グラフの高コストサブグラフの識別されたソースコードを、前記識別されたソースコードに類似している機能を提供するように構成された生成済みマイクロサービスに対する呼び出しに置き換えること
によって修正する段階;及び
前記ターゲットクラウドインフラストラクチャの1つ又は複数の仮想マシン上に、前記修正されたアプリケーションを実装する段階
を備える方法を実行させるように構成されているプログラム命令を記憶する1つ又は複数のコンピュータ可読記憶媒体
を備える、システム。
【請求項15】
前記コスト認識コード依存関係グラフは、前記アプリケーションの前記実行及びソースコード解析の間に前記アプリケーションに対するトレース機能を使用して生成される、請求項14に記載のシステム。
【請求項16】
前記修正されたアプリケーションに関連付けられた前記生成済みマイクロサービスは、前記修正されたアプリケーションを実装する前記1つ又は複数の仮想マシンに対して前記ターゲットクラウドインフラストラクチャの異なる仮想マシン上で実行され、前記異なる仮想マシンは、前記修正されたアプリケーションを実装する前記1つ又は複数の仮想マシンのリソースに対して前記生成済みマイクロサービスのために適応されたリソースの別個のセットに関連付けられる、請求項14又は請求項15に記載のシステム。
【請求項17】
前記コスト認識コード依存関係グラフの高コストサブグラフの前記識別されたソースコードを置き換える段階は、
それぞれのノードのそれぞれのコストを、前記それぞれのノードを向く各エッジに割り当てることによって、前記コスト認識コード依存関係グラフ内のノードコストをエッジコストに変換する段階;及び
最短経路グラフアルゴリズムを使用して、前記コスト認識コード依存関係グラフ内のノード間のコスト経路を計算する段階
を更に有する、請求項14~16のいずれか1項に記載のシステム。
【請求項18】
前記コスト認識コード依存関係グラフの高コストサブグラフの前記識別されたソースコードを、前記生成済みマイクロサービスに対する呼び出しに置き換える段階は、
最高コストサブグラフに基づいて、前記生成済みマイクロサービスを作成する段階;
前記最高コストサブグラフに関連付けられた第1のソースコードを、前記生成済みマイクロサービスに置き換える段階;
近似グラフ同型アルゴリズムに基づいて、前記最高コストサブグラフに対して閾値を超える類似度を有する第2のサブグラフを識別する段階;及び
前記第2のサブグラフに関連付けられた第2のソースコードを、前記生成済みマイクロサービスに置き換える段階
を更に有する、請求項14~17のいずれか1項に記載のシステム。
【請求項19】
プログラム命令を備え、前記プログラム命令は、1つ又は複数のプロセッサに、請求項1~13のいずれか1項に記載の方法を実行させるように構成された命令を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、アプリケーション移行に関し、より詳細には、コスト認識コード依存関係グラフを使用するアプリケーション移行に関する。
【背景技術】
【0002】
アプリケーション移行は、或るコンピューティング環境から別のコンピューティング環境にソフトウェアアプリケーションを移動させるプロセスである。例えば、アプリケーションは、データセンタ間で、オンプレミスサーバからクラウドプロバイダの環境に、パブリッククラウドからプライベートクラウドに等で移動する可能性がある。
【0003】
アプリケーションは典型的には特定のネットワークアーキテクチャにおける特定のオペレーティングシステム上で稼働するように構築されるか、又は単一のクラウドプラットフォームのために開発されるので、アプリケーションを移行することは、多くの難題を課し得る。これらの難題は、企業のセキュリティ、コンプライアンス、及びコストの制約を満たしながらアプリケーションの依存関係及び技術的要件が維持されることを保証することを含み得る。
【0004】
クラウドプラットフォームへの(又はクラウドプラットフォーム間での)アプリケーションの効率的かつ効果的な移行は、アプリケーション所有者及びクラウドプロバイダの両方にとって最優先事項である。移行プロセスは、移行することができるアプリケーション部分の識別、移行されるために適応されなければならないアプリケーション部分の識別、及びアプリケーションの適応を含む。さらに、移行されたアプリケーションを効率的にホストするために、クラウドリソースの適切なセットも選択されなければならない。
【0005】
現在、開発者は、アプリケーションをターゲットクラウド環境に成功裏に移行することができ、かつ当該ターゲットクラウド環境によって実装することができるように、アプリケーションを手動で更新することができる。アプリケーションを更新した後、開発者は、アプリケーションを手動でテストすることができる。これらの現行の技法は、アプリケーション移行プロセスを、エラーが起こりやすく、労働集約的で、かつ多大な時間を要するものにする。
【発明の概要】
【0006】
本発明の1つの態様は、アプリケーションをターゲットクラウドインフラストラクチャに移行する段階を備えるコンピュータ実装方法を対象とする。前記方法は、前記ターゲットクラウドインフラストラクチャ上での前記アプリケーションの実行中にコスト認識コード依存関係グラフを生成する段階を更に備える。前記方法は、前記アプリケーションを、前記コスト認識コード依存関係グラフに従って未使用ノードに対応するソースコードを除去する段階、及び前記コスト認識コード依存関係グラフの高コストサブグラフの識別されたソースコードを、前記識別されたソースコードに類似している機能を提供するように構成された生成済みマイクロサービスに対する呼び出しに置き換える段階によって修正する段階を更に備える。前記方法は、前記ターゲットクラウドインフラストラクチャの1つ又は複数の仮想マシン上に、前記修正されたアプリケーションを実装する段階を更に備える。
【0007】
有利には、上述の方法は、ターゲットクラウドインフラストラクチャ上で展開されると移行されたアプリケーションを再構成することができるように、自動化された即座の(on-the-fly)アプリケーション分解を可能にする。さらに、上述の方法は、未使用ノードに対応するソースコードを除去すること、及び高コストサブグラフの識別されたソースコードを、生成済みマイクロサービスに対する呼び出しに置き換えることによって、ターゲットクラウドインフラストラクチャ上でのアプリケーションの改善された性能を実現するために、アプリケーションの自動化された修正を可能にする。未使用ソースコードを除去することは、アプリケーションを、より効率的にするとともに、エラーを起こしにくいものにすることができる。高コストサブグラフを、生成済みマイクロサービスに置き換えることは、当該生成済みマイクロサービスを効率的に実装するように適応されているターゲットクラウドインフラストラクチャの別の仮想マシン上で当該生成済みマイクロサービスを別個に実装することができる限り、改善された性能を実現することができる。
【0008】
上述の方法の更なる実施形態は、それぞれのノードのそれぞれのコストを、前記それぞれのノードを向く各エッジに割り当てることによって、前記コスト認識コード依存関係グラフ内のノードコストをエッジコストに変換する段階を更に含む。有利には、ノードコストをエッジコストに変換する段階は、サブグラフコストを識別するように構成されたグラフ探索アルゴリズムの改善された使用を促す。
【0009】
上述の方法の更なる実施形態は、最高コストサブグラフに基づいて、前記生成済みマイクロサービスを作成する段階、前記最高コストサブグラフに関連付けられた第1のソースコードを、前記生成済みマイクロサービスに置き換える段階、前記最高コストサブグラフに対して閾値を超える類似度を有する第2のサブグラフを識別する段階、及び前記第2のサブグラフに関連付けられた第2のソースコードを、前記生成済みマイクロサービスに置き換える段階を更に含む。有利には、最高コストサブグラフに対して閾値を超える類似度を有する第2のサブグラフのために生成済みマイクロサービスを使用することは、アプリケーションの1つよりも多くのコンポーネントのために、既に生成されたマイクロサービスを再使用することによって効率性を改善する。
【0010】
本発明の追加の態様は、上記で説明された方法を実行するように構成されたシステム及びコンピュータプログラム製品を対象とする。本発明の概要は、本開示の各態様、全ての実装若しくは全ての実施形態又はその組み合わせを示すようには意図されていない。
【図面の簡単な説明】
【0011】
本願に含まれる図面は、本明細書に組み込まれ、かつその一部をなす。これらは、本開示の実施形態を図示し、この説明とともに、本開示の原理を説明する役割を果たす。図面は、特定の実施形態の例示に過ぎず、本開示を限定しない。
【0012】
図1】本開示の幾つかの実施形態に係る、アプリケーション移行のための例示の計算環境のブロック図である。
【0013】
図2】本開示の幾つかの実施形態に係る、コスト認識コード依存関係グラフを使用してアプリケーションを移行する例示の方法のフローチャートである。
【0014】
図3】本開示の幾つかの実施形態に係る、コスト認識コード依存関係グラフの類似のサブグラフのために、生成済みマイクロサービスを再使用する例示の方法のフローチャートである。
【0015】
図4】本開示の幾つかの実施形態に係る、コスト認識コード依存関係グラフを使用してアプリケーションを移行する別の例示の方法のフローチャートである。
【0016】
図5】本開示の幾つかの実施形態に係る、移行されたアプリケーションを解析、剪定、及び修正する例示の方法のフローチャートである。
【0017】
図6A】本開示の幾つかの実施形態に係る、使用済みノード及び未使用ノードを有するコスト認識コード依存関係グラフの図である。
【0018】
図6B】本開示の幾つかの実施形態に係る、異なる計算コストが関連付けられたノードを有するコスト認識コード依存関係グラフの図である。
【0019】
図7】本開示の幾つかの実施形態に係る、コスト認識コード依存関係グラフ内の異なる高コスト経路の図である。
【0020】
図8】本開示の幾つかの実施形態に係る、例示のコンピュータのブロック図である。
【0021】
図9】本開示の幾つかの実施形態に係る、クラウドコンピューティング環境を示す図である。
【0022】
図10】本開示の幾つかの実施形態に係る、抽象化モデル層を示す図である。
【0023】
本開示は様々な修正形態及び代替形態に適しているが、その特定の形態が図面において例示として示されており、詳細に説明されることになる。しかしながら、説明される特定の実施形態に本開示を限定するようには意図されていないことが理解されるべきである。反対に、本開示の範囲内に入る全ての修正形態、均等形態、及び代替形態を包含するように意図されている。
【発明を実施するための形態】
【0024】
本発明の態様は、アプリケーション移行を対象とし、より詳細には、コスト認識コード依存関係グラフを使用するアプリケーション移行を対象とする。そのような用途に限定されているわけではないものの、本開示の実施形態は、上述の文脈に鑑みてより良好に理解され得る。
【0025】
本開示の態様は、ターゲットクラウドプラットフォームにおいて移行されるべきアプリケーションの動作コストを削減するために、移行されるべきアプリケーションを含むイメージを自動的に縮小及び分解するための技法を対象とする。本開示の態様は、限定されないが、(i)ワークロード実行トレース及び/又はソースコード解析に基づく展開後の即座のアプリケーション分解;(ii)実行トレース及び/又はソースコード解析、カスタマイズ可能目的関数、及び/又は収集される性能メトリックに基づくコスト認識コード依存関係グラフの生成;(iii)コスト認識コード依存関係グラフ内の未使用ノードの除去(例えば、剪定);(iv)コスト認識コード依存関係グラフ内の高コストサブグラフに対応するソースコードの、生成済みマイクロサービスへの置き換え、ここで、生成済みマイクロサービスは、移行されるべきアプリケーションとは異なる、ターゲットクラウドプラットフォーム上の仮想マシンによって実装することができる;及び/又は(v)生成済みマイクロサービスが当初作成された高コストサブグラフと類似しているコスト認識コード依存関係グラフ内の他のサブグラフのための、生成済みマイクロサービスの使用、等の多数の特徴を実現する。これらの特徴は、集合的に、自動化されたアプリケーション修正を可能にし、修正されたアプリケーションは、ターゲットクラウドプラットフォームに移行されるアプリケーションのために、削減されたリソース利用(例えば、削減されたメモリ及びプロセッサ利用)及び/又は削減されたメンテナンスコストを実現する。
【0026】
ここで図1を参照すると、本開示の幾つかの実施形態に係る、アプリケーション移行のための例示の計算環境100が示されている。計算環境100は、ネットワーク102によって互いに通信可能に結合された、移行エンジニアマネージャデバイス104、ソースクラウドインフラストラクチャ106、及びターゲットクラウドインフラストラクチャ108を備えることができる。エンジニアマネージャデバイス104は、ラップトップ、タブレット、デスクトップ、サーバ、又は、ソースクラウドインフラストラクチャ106からターゲットクラウドインフラストラクチャ108に移行されるべきアプリケーション110の移行を(例えば、移行エンジニアからのユーザ入力に従って)管理することができるハードウェア若しくはソフトウェア、又はその両方の別の構成とすることができる。
【0027】
ソースクラウドインフラストラクチャ106は、移行されるべきアプリケーション110の現在のホスティングコンピューティングプラットフォームを含む。同様に、ターゲットクラウドインフラストラクチャ108は、移行されるべきアプリケーション110の将来のホスティングコンピューティングプラットフォームを含む。ソースクラウドインフラストラクチャ106及びターゲットクラウドインフラストラクチャ108は両方とも、限定されないが、メモリリソース、処理リソース、ネットワーク接続リソース、他のリソース等の電子データ処理に適したコンポーネント、若しくは上述のリソースのうちのいずれかからプロビジョニングされた仮想マシン(VM)、又はその両方を含み、コンポーネント若しくはVM又はその両方のタイプ、数量、及び構成は異なってよい。さらに、ソースクラウドインフラストラクチャ106及びターゲットクラウドインフラストラクチャ108は、異なるオペレーティングシステム、異なるネットワーク接続プロトコル、若しくは異なるプログラム構成、又はその組み合わせを利用することができる。例えば、ソースクラウドインフラストラクチャ106は、オンプレミスハードウェア、プライベートクラウド、ハイブリッドクラウド、又はパブリッククラウドとすることができる。同様に、ターゲットクラウドインフラストラクチャ108は、プライベートクラウド、ハイブリッドクラウド、又はパブリッククラウドとすることができる。ソースクラウドインフラストラクチャ106及びターゲットクラウドインフラストラクチャ108の両方が同様のタイプのクラウドインフラストラクチャである(例えば、各々がハイブリッドクラウド構成である)場合、ソースクラウドインフラストラクチャ106は第1のベンダによって提供されてよい一方で、ターゲットクラウドインフラストラクチャ108は第2のベンダによって提供されてよい。そのような状況では、第1のベンダ及び第2のベンダは、移行されるべきアプリケーション110がターゲットクラウドインフラストラクチャ108上で効率的かつ効果的に機能するように、当該移行されるべきアプリケーション110の修正を容易にすることができる異なるスキーム、プロトコル、及び構成を導入することができる。
【0028】
移行されるべきアプリケーション110は、任意のアプリケーション、サービス、ワークロード、又は他のコンピュータ実装プロセス又は機能とすることができる。幾つかの実施形態では、移行されるべきアプリケーション110は、移行されるべきアプリケーション110の実装をサポートするペリフェラルソフトウェア、ファームウェア、オペレーティングシステム等を含むシステムイメージ(図示せず)内にパッケージすることができる。
【0029】
ターゲットクラウドインフラストラクチャ108は、ターゲットクラウドインフラストラクチャ108上での効率的かつ効果的な展開のために、移行されるべきアプリケーション110を修正する機能を含むことができる。例えば、ターゲットクラウドインフラストラクチャ108は、クラウドリソース選択ハンドラ112、アプリケーション構造アナライザ114、アプリケーション分解ハンドラ116、及びワークロードアナライザ118を含むことができる。クラウドリソース選択ハンドラ112は、移行されるべきアプリケーション110とともに使用するためにターゲットクラウドインフラストラクチャ108上で利用可能なクラウドリソース候補のセットを選択及び評価するように構成することができる。クラウドリソースは、メモリリソース、処理リソース、ネットワーク接続リソース等を含むことができる。幾つかの実施形態では、クラウドリソースは、特定のタイプのワークロード又はマイクロサービスの効率的な実装のために一括して適応することができるメモリリソース、処理リソース、ネットワーク接続リソース、若しくは他のリソース、又はその組み合わせの別個の構成で事前定義された又はカスタマイズされたVMとしてパッケージすることができる。
【0030】
アプリケーション構造アナライザ114は、移行されるべきアプリケーション110のためにコスト認識コード依存関係グラフ120を展開する目的で、移行されるべきアプリケーション110のソースコード解析及びシステムコールを実行するように構成することができる。例えば、アプリケーション構造アナライザ114は、トレース、ログ解析、又はプログラムの実行を理解するための他の機能を実装することができる。さらに、アプリケーション構造アナライザ114は、ソースコード自体を解析して、ソースコードの構造、依存関係、コンポーネント、機能、若しくは他の特徴、又はその組み合わせを識別することができる。幾つかの実施形態では、コスト認識コード依存関係グラフ120は、コールグラフ、コールマルチグラフ、制御フローグラフ、又は移行されるべきアプリケーション110の呼び出し関係、サブルーティン、機能、若しくは実行特性、又はその組み合わせの別のグラフィカル表現と同様にフォーマット化される。コスト認識コード依存関係グラフ120は、移行されるべきアプリケーション110の異なるコンポーネント(例えば、ノード)の使用状況(例えば、使用済みノード対未使用ノード)に関する情報を更に含むことができる。さらに、コスト認識コード依存関係グラフ120は、移行されるべきアプリケーション110の異なるコンポーネント(例えば、ノード)のリソースコストに関する情報を含むことができる。
【0031】
アプリケーション分解ハンドラ116は、ターゲットクラウドインフラストラクチャ108上での改善された実装のために、移行されるべきアプリケーション110を修正する目的で、移行されるべきアプリケーション110を分解するように構成することができる。例えば、アプリケーション分解ハンドラ116は、コスト認識コード依存関係グラフ120に従って未使用ノードに対応するソースコードを除去(例えば、剪定)するように構成することができる。別の例として、アプリケーション分解ハンドラ116は、コスト認識コード依存関係グラフ120の高コストサブグラフに対応するソースコードを、生成済みマイクロサービス(図示せず)に置き換えるように構成することができる。さらに、幾つかの実施形態では、アプリケーション分解ハンドラ116は、閾値を超える類似度を呈するコスト認識コード依存関係グラフ120の別のサブグラフを、生成済みマイクロサービスが当初作成された元の高コストサブグラフに置き換えるために生成済みマイクロサービスを再使用することができる。
【0032】
ワークロードアナライザ118は、分解のための候補を識別するために、移行されるべきアプリケーション110のコンポーネントの性能を評価する、若しくは修正が行われる(例えば、未使用ノードの剪定、高コストサブグラフの生成済みマイクロサービスとの置換等)と性能を評価する、又はその両方を行うように構成することができる。幾つかの実施形態では、ワークロードアナライザ118は、移行されるべきアプリケーション110の性能若しくは効率性、又はその両方を改善するために、VMとして提供されるクラウドリソースを移行されるべきアプリケーション110の態様に修正するためにクラウドリソース選択ハンドラ112にフィードバックを提供することができる。
【0033】
クラウドリソース選択ハンドラ112、アプリケーション構造アナライザ114、アプリケーション分解ハンドラ116、ワークロードアナライザ118、及びコスト認識コード依存関係グラフ120がターゲットクラウドインフラストラクチャ108上で示されているが、これらのコンポーネントのうちの1つ又は複数は、他の実施形態では他の箇所に位置することができる。例えば、幾つかの実施形態では、上述のコンポーネントは、移行エンジニアマネージャデバイス104に位置することができる。さらに、幾つかの実施形態では、上述のコンポーネントは、ソフトウェアとして、リモートデータ処理デバイス(図示せず)から、移行エンジニアマネージャデバイス104又はターゲットクラウドインフラストラクチャ108のいずれかにダウンロードされる。代替的に、上述のコンポーネントは、全くダウンロードされなくてもよく、サービスとして、上述のコンポーネントの機能をプロビジョニングすることが可能なリモートデータ処理システム(図示せず)内に収容されてよく、それにより、移行されるべきアプリケーション110をまずリモートデータ処理システム(図示せず)に提供することができ、その後、リモートデータ処理システム(図示せず)は、移行されるべきアプリケーション110の更新バージョンをターゲットクラウドインフラストラクチャ108に提供することができ、ここで、移行されるべきアプリケーション110の更新バージョンは、ターゲットクラウドインフラストラクチャ108上に展開されると、元の移行されるべきアプリケーション110と比較して改善されたリソース利用を実現する。
【0034】
ここで図2を参照すると、本開示の幾つかの実施形態に係る、コスト認識コード依存関係グラフを使用するアプリケーション移行のための例示の方法200のフローチャートが示されている。幾つかの実施形態では、方法200は、例えば、ターゲットクラウドインフラストラクチャ108、移行エンジニアマネージャデバイス104、リモートデータ処理システム、コンピュータ、プロセッサ、又はハードウェア若しくはソフトウェア又はその両方の別の構成によって実装することができる。
【0035】
動作202は、アプリケーション(例えば、図1の移行されるべきアプリケーション110)を、ターゲットクラウドインフラストラクチャ(例えば、図1のターゲットクラウドインフラストラクチャ108)に移行することを含む。幾つかの実施形態では、動作202は、ターゲットクラウドインフラストラクチャ上でアプリケーションを展開することを含む。幾つかの実施形態では、アプリケーションは、システムイメージの一部としてターゲットクラウドインフラストラクチャに移行される。
【0036】
動作204は、ターゲットクラウドインフラストラクチャ上でのアプリケーションの実行中にコスト認識コード依存関係グラフ(例えば、図1のコスト認識コード依存関係グラフ120)を生成することを含む。幾つかの実施形態では、コスト認識コード依存関係グラフは、アプリケーションの実行若しくはそのソースコード解析又はその両方の間にアプリケーションに対するトレース機能を使用して生成される。幾つかの実施形態では、コスト認識コード依存関係グラフを生成することは、コスト認識コード依存関係グラフ内の各ノードに関連付けられたコストを決定することを含み、コストは、ノード実行中に利用されるリソースの量を代表する。ノード実行中に利用されるリソースは、ノード実行中に利用されるメモリ、ノード実行中のプロセッサ(CPU)使用状況、ノード実行中に実装される入力/出力(I/O)動作、事前定義された時間にわたるノード利用の頻度、若しくはノード実行の持続時間、又はその組み合わせからなる群から選択される1つ又は複数を含むことができる。
【0037】
動作206及び208は、ターゲットクラウドインフラストラクチャ上でのアプリケーションの改善された性能を実現するために、アプリケーションを修正することに関連する。動作206は、コスト認識コード依存関係グラフ内の未使用ノードに対応する未使用ソースコードを除去することを含む。幾つかの実施形態では、コスト認識コード依存関係グラフ内のノードは、所定の時間量(例えば、5分、15分、1時間、1日等)にわたって実行されていない場合、未使用として識別される。
【0038】
動作208は、コスト認識コード依存関係グラフの高コストサブグラフの識別されたソースコードを、生成済みマイクロサービスに対する呼び出しに置き換えることを含む。幾つかの実施形態では、生成済みマイクロサービスは、高コストサブグラフ内のノードと、高コストサブグラフ内のノード間の相互関係と、高コストサブグラフに対応するソースコードとに従って作成することができる。幾つかの実施形態では、生成済みマイクロサービスは、アプリケーションを実行する1つ又は複数のVMからの異なるVM上で実行するように構成することができる。幾つかの実施形態では、異なるVMは、生成済みマイクロサービスのリソース要件(例えば、計算集約的なマイクロサービスのための処理リソースの増加等)に有益である仮想化されたリソースを含むことができる。
【0039】
動作210は、ターゲットクラウドインフラストラクチャの1つ又は複数のVM上に、修正されたアプリケーションを実装することを含む。修正されたアプリケーションは、(未使用ノードに対応する)除去された未使用ソースコードの結果として当初移行されたアプリケーション、若しくは、生成済みマイクロサービスに(高コストサブグラフに対応する)置き換えられた識別されたソースコード、又はその両方と比較して改善された性能を呈することができる。
【0040】
ここで図3を参照すると、本開示の幾つかの実施形態に係る、コスト認識コード依存関係グラフの類似のサブグラフのために、生成済みマイクロサービスを再使用する例示の方法300のフローチャートが示されている。幾つかの実施形態では、方法300は、例えば、ターゲットクラウドインフラストラクチャ108、移行エンジニアマネージャデバイス104、リモートデータ処理システム、コンピュータ、プロセッサ、又はハードウェア若しくはソフトウェア又はその両方の別の構成によって実装することができる。幾つかの実施形態では、方法300は、図2の動作208の下位方法である。
【0041】
動作302は、コスト認識コード依存関係グラフ内のノードコストをエッジコストに変換することを含む。幾つかの実施形態では、ノードコストは、それぞれのノードコストを、それぞれのノードを向く各エッジに適用することによって、エッジコストに変換することができる。
【0042】
動作304は、コスト認識コード依存関係グラフ内のノード間のコスト経路を計算することを含む。幾つかの実施形態では、動作304は、コスト経路を計算するために動作302のエッジコストを利用する。幾つかの実施形態では、動作304は、コスト経路を計算するために、優先度付きキューとしてフィボナッチヒープ(Fibonacci heap)を用いるダイクストラアルゴリズム(Dijkstra algorithm)を利用する。有利には、フィボナッチヒープは、漸近的な償却定数時間計算量を有し、ダイクストラの最短経路アルゴリズムの時間計算量を、(グラフ内の頂点の数とともに2次的にスケーリングする)O(|V|)から、(エッジの数及び頂点の数の準線形時間に線形にスケーリングする)
【数1】
に削減する。このアルゴリズムの定式化は、大規模グラフにおける効率的な処理を可能にする。当業者によって理解されているように、Oは、時間計算量を評価するように構成されたアルゴリズム等のアルゴリズムの漸近的性能の尺度を与える関数を表す。さらに、
【数2】
は、グラフ内のエッジの数を表すことができる一方、
【数3】
は、グラフ内の頂点の数を表すことができる。最後に、フィボナッチヒープを用いるダイクストラアルゴリズムが上記で論述されているが、これは、1つの例に過ぎず、動作304は、任意の効率的な最短経路グラフアルゴリズムを利用することができる。
【0043】
動作306は、コスト認識コード依存関係グラフの最高コストサブグラフに基づいて、生成済みマイクロサービスを作成することを含む。動作308は、最高コストサブグラフに関連付けられた第1のソースコードを、生成済みマイクロサービスに対する呼び出しに置き換えることを含む。
【0044】
動作310は、最高コストサブグラフに対して閾値を超える類似度を有するコスト認識コード依存関係グラフ内の第2のサブグラフを識別することを含む。幾つかの実施形態では、グラフ類似度は、近似グラフ同型アルゴリズム、例えば近似ランダムウォークに基づくアルゴリズム、又はグラフニューラルネットワークに基づいて決定される。
【0045】
動作312は、第2のサブグラフに関連付けられた第2のソースコードを、生成済みマイクロサービスに対する呼び出しに置き換えることを含む。換言すれば、方法300は、アプリケーションの類似のコンポーネント(例えば、サブグラフ)が以前に生成されたマイクロサービスを再使用することを可能にする。以前に生成されたマイクロサービスを再使用することは、(i)類似のマイクロサービスの再作成を回避すること;及び(ii)アプリケーションの1つよりも多くのコンポーネントのために特別なVM上で実行するように構成されたマイクロサービスを利用することによって、効率性を改善する。
【0046】
ここで図4を参照すると、本開示の幾つかの実施形態に係る、コスト認識コード依存関係グラフを使用するアプリケーション移行のための別の例示の方法400のフローチャートが示されている。幾つかの実施形態では、方法400は、例えば、ターゲットクラウドインフラストラクチャ108、移行エンジニアマネージャデバイス104、リモートデータ処理システム、コンピュータ、プロセッサ、又はハードウェア若しくはソフトウェア又はその両方の別の構成によって実装することができる。
【0047】
動作402は、移行環境を定義することを含む。動作402は、例えば、解析のためのイメージを定義することを含むことができる。イメージは、移行されるべきアプリケーション、及びそれを稼働するために要求される任意の基礎をなすソフトウェアインフラストラクチャを含むことができる。イメージは、コンテナ及び仮想マシン等の仮想化コンポーネントを始動するのに使用することができる。動作402は、解析において考慮されるべきメトリック若しくはパラメータ、又はその両方を定義することを更に含むことができる。例示のメトリックは、イメージの各コンポーネントの利用の頻度、データ入力/出力(I/O)パターン、リソース利用、各コンポーネント上で経過した時間等を含むことができる。幾つかの実施形態では、定義されたメトリック若しくはパラメータ、又はその両方は、閾値未満に減少させる(例えば、最小化させる)か、閾値を超えて増加させる(例えば、最大化させる)か、又は別様に最適化させることができる目的関数に変換することができる。
【0048】
動作404は、定義されたイメージを展開することを含む。動作404は、動作402において定義されたメトリック若しくはパラメータ、又はその両方を使用して構成されたクラウド環境上で、動作402において定義されたイメージを展開することを含むことができる。動作406は、移行されるべきアプリケーションを解析する目的で、移行されるべきアプリケーションを実行することを含む。
【0049】
動作408は、実行済みの移行されるべきアプリケーションのコンポーネントをスキャンすることを含む。幾つかの実施形態では、動作408は、実行済みの移行されるべきアプリケーションのコンポーネント、若しくはローンチ時にアプリケーションによって使用される他の任意のコンポーネント、又はその組み合わせをスキャンするために、トレース、ソースコード解析、若しくはシステムコール、又はその組み合わせを利用することができる。
【0050】
動作410は、動作408において識別されたコンポーネントを特性評価することを含む。動作410は、各識別されたコンポーネントによって使用されるライブラリ若しくはパッケージ、又はその両方のリストを生成することを含むことができる。
【0051】
動作412は、コンポーネントを解析及び剪定することを含む。動作412は、動作410からの評価に基づいて、再編成若しくは剪定、又はその両方が行われるべき要素を識別することができる。動作412は、図5に関して以降でより詳細に論述される。
【0052】
動作414は、フィードバックを評価することを含む。動作414は、例えば、移行エンジニアによる移行エンジニアデバイスへのデータ入力からのフィードバックを収集することができる。フィードバックは、動作412において利用される分解、再編成、若しくは剪定、又はその組み合わせの戦略を精緻化するために評価することができる。
【0053】
動作416は、新たなイメージを構築することを含む。新たなイメージは、動作412において解析されるとともに動作414において精緻化されるように、移行されるべきアプリケーションの要素を分解、再編成、若しくは剪定、又はその組み合わせを行うことができる。
【0054】
動作418は、プロセスが繰り返されるべきであるか否かを判断する。繰り返されるべきである場合(418:はい)、システムは、修正済みの移行されるべきアプリケーションをトラブルシュート、改善、若しくは精緻化、又はその組み合わせを行うために、動作404に戻り、新たなイメージを再展開することによって、プロセスを再開する。繰り返されるべきではない場合(418:いいえ)、方法400は終了する。
【0055】
ここで図5を参照すると、本開示の幾つかの実施形態に係る、移行されるべきアプリケーションを解析及び剪定する例示の方法500のフローチャートが示されている。幾つかの実施形態では、方法500は、例えば、ターゲットクラウドインフラストラクチャ108、移行エンジニアマネージャデバイス104、リモートデータ処理システム、コンピュータ、プロセッサ、又はハードウェア若しくはソフトウェア又はその両方の別の構成によって実装することができる。幾つかの実施形態では、方法500は、図4の動作412の下位方法である。
【0056】
動作502は、未使用ノードを剪定することを含む。未使用ノードを剪定することは、ソースコードの未使用部分を除去することを伴うことができる。例えば、動作502は、ユーザ定義期間中にアクセスされなかったソースコードの部分を考慮に入れることができる。動作502の一例は、図6Aに関して以降で論述される。
【0057】
動作504は、それぞれのノードのためのコストメトリックを計算することを含む。コストメトリックは、例えば、リソース利用(例えば、メモリ利用、処理利用等)、データ入力/出力(I/O)パターン、利用の頻度、若しくは他のコストメトリック、又はその組み合わせに基づくことができる。動作504の一例は、図6Bに関して以降で論述される。
【0058】
動作506は、動作504において計算されたコストメトリックに基づいて、移行されるべきアプリケーションに関連付けられたコールグラフ(例えば、コスト認識コード依存関係グラフ)内のコストが高い経路を識別することを含む。幾つかの実施形態では、動作506は、グラフ内の全てのノード間のコスト経路を計算する。これを行うことは、優先度付きキューとしてフィボナッチヒープを用いるダイクストラアルゴリズムを使用する場合、
【数4】
回で行うことができる。さらに、図6B及び図7に関して以降で論述されるノードコストグラフはノードにおける重み(例えば、コスト)を用いて実装されるが、グラフ探索アルゴリズムを使用することを可能とするために、本開示の実施形態は、ノード重みをエッジ重みに変換することができる。これを行うための1つのそのような方法は、或るノードに入る全てのエッジの重みを、当該ノードの重みに等しいものとして割り当てることである。
【0059】
動作508は、サブグラフを使用して、潜在的な作成されるべきマイクロサービスのリストを構築することを含む。動作510は、マイクロサービスに変換するために、最高コストを有するサブグラフを選択することを含む。
【0060】
動作512は、選択されたサブグラフが他のサブグラフに類似しているか否かを判断することを含む。類似度の決定は、近似グラフ同型アルゴリズムを利用することができる。選択されたサブグラフが別のサブグラフに類似している場合(512:はい)、方法500は、動作514に進み、潜在的な作成されるべきマイクロサービスのリストから類似のサブグラフを除去することができる。幾つかの実施形態では、動作514は、さらに、類似のサブグラフに、当該別のサブグラフに関連付けられた以前に生成されたマイクロサービスを利用させる。方法500は、その後、動作510に戻ることができる。選択されたサブグラフが別のサブグラフに類似していない場合(512:いいえ)、方法500は、動作516に進み、(例えば、マイクロサービスを作成することによって)元のアプリケーションからサブグラフを分離させるためのコードを生成することができる。サブグラフに関連付けられたコードを生成するために、多様な方法論を採用することができる。例えば、元のアプリケーション及び新たに作成されたマイクロサービスのインターフェースをエミュレートするのに、残りのアプリケーションプログラミングインターフェース(API)の自動作成を使用することができる。
【0061】
動作518は、コスト認識コード依存関係グラフ内のサブグラフのリストが空であるか又は生成済みマイクロサービスの閾値に到達するか否かを判断することを含む。動作518が満たされていない場合(518:いいえ)、方法500は、動作508に戻り、潜在的なマイクロサービスのリストの新たなサブグラフを選択することができる。動作518が満たされている場合(518:はい)、方法500は終了することができる。
【0062】
図6Aは、本開示の幾つかの実施形態に係る、使用済みノード602(影付き)及び未使用ノード604(影なし)を有する移行されるべきアプリケーションの例示のコスト認識コード依存関係グラフ600を示している。コスト認識コード依存関係グラフ600の未使用セグメント606は、排他的に未使用ノード604を含む。したがって、本開示の態様は、(例えば、未使用セグメント606内の未使用ノード604に対応するソースコードからのコードを除去することによって)内部に全て未使用ノード604を含む未使用セグメント606を剪定することを対象とする。
【0063】
図6Bは、各ノードがノードコスト612によって重み付けされている例示のコスト認識コード依存関係グラフ610を示している。見て取ることができるように、コスト認識コード依存関係グラフ610は、図6Bのコスト認識コード依存関係グラフ610が未使用ノード604の未使用セグメント606を除去していることを除いて、図6Aのコスト認識コード依存関係グラフ600に類似している。図6Bに戻って参照すると、ノードコスト612は、より低いコストのノードをより明るい影として、かつより高いコストのノードをより暗い影として表すことができる。ノードコスト612は、メモリリソース、処理リソース、ネットワーク接続リソース、I/Oリソース、若しくは各それぞれのノードを実装する際に消費される他のリソース、又はその組み合わせを代表することができる。見て取ることができるように、コスト認識コード依存関係グラフ610内の異なるノードは、異なるノードコスト612に関連付けられる。
【0064】
図7は、図6Bのコスト認識コード依存関係グラフ610内の異なるサブグラフの図を示している。例えば、本開示の態様は、サブグラフの中でもとりわけ、サブグラフ702、サブグラフ704、及びサブグラフ706を識別することができる。さらに、本開示の態様は、(例えば、近似グラフ同型アルゴリズムを使用して)サブグラフ704がサブグラフ706に類似していると判断するように構成することができる。2つ又はそれよりも多くの類似のサブグラフを識別することにおいて、本開示の態様は、当該類似のサブグラフの各々のために利用することができる単一のマイクロサービスを生成することができる。
【0065】
図8は、本開示の幾つかの実施形態に係る、例示のコンピュータ800のブロック図を示している。様々な実施形態において、コンピュータ800は、図2図5において説明された方法のうちの任意の又は全てのものを実行し、若しくは、図1及び図6A図7のうちの1つ又は複数において論述された機能を実装し、又はその両方を行うことができる。幾つかの実施形態では、コンピュータ800は、ネットワーク850を介してリモートデータ処理システムからプロセッサ実行可能命令をダウンロードすることによって、上述の方法及び機能に関連した命令を受信する。他の実施形態では、コンピュータ800は、クライアントマシンがコンピュータ800によって提供される命令に基づいて方法、又は方法の一部を実行するように、上述の方法若しくは機能、又はその両方のための命令をクライアントマシンに提供する。幾つかの実施形態では、コンピュータ800は、計算環境100の1つ又は複数のエンティティ(例えば、移行エンジニアマネージャデバイス104、ソースクラウドインフラストラクチャ106、若しくはターゲットクラウドインフラストラクチャ108、又はその組み合わせ)、若しくは本開示の他の態様、又はその組み合わせに組み込まれる(又は、コンピュータ800に類似している機能が、これらに仮想的にプロビジョニングされる)。
【0066】
コンピュータ800は、メモリ825、ストレージ830、インターコネクト820(例えば、バス)、1つ又は複数のCPU805(本明細書においてプロセッサとも称される)、I/Oデバイスインターフェース810、I/Oデバイス812、及びネットワークインターフェース815を備える。
【0067】
各CPU805は、メモリ825又はストレージ830に記憶されたプログラミング命令を索出及び実行する。インターコネクト820は、CPU805、I/Oデバイスインターフェース810、ストレージ830、ネットワークインターフェース815、及びメモリ825間でプログラミング命令等のデータを移動させるのに使用される。インターコネクト820は、1つ又は複数のバスを使用して実装することができる。CPU805は、様々な実施形態において、単一のCPU、複数のCPU、又は複数の処理コアを有する単一のCPUとすることができる。幾つかの実施形態では、CPU805は、デジタル信号プロセッサ(DSP)とすることができる。幾つかの実施形態では、CPU805は、1つ又は複数の3D集積回路(3DIC)(例えば、3Dウェハレベルパッケージ(3DWLP)、3Dインターポーザベースインテグレーション、3D積層IC(3D-SIC)、モノリシック3D IC、3D異種インテグレーション、3Dシステムインパッケージ(3DSiP)若しくはパッケージオンパッケージ(PoP)、又はその組み合わせのCPU構成)を含む。メモリ825は、概して、ランダムアクセスメモリ(例えば、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、又はフラッシュ)を代表するように含まれる。ストレージ830は、概して、ハードディスクドライブ、ソリッドステートデバイス(SSD)、リムーバブルメモリカード、光ストレージ、又はフラッシュメモリデバイス等の不揮発性メモリを代表するように含まれる。代替的な実施形態では、ストレージ830は、I/Oデバイスインターフェース810を介してコンピュータ800に、又はネットワークインターフェース815を介してネットワーク850に接続された、ストレージエリアネットワーク(SAN)デバイス、クラウド、又は他のデバイスに置き換えることができる。
【0068】
幾つかの実施形態では、メモリ825は、命令860を記憶する。しかしながら、様々な実施形態において、命令860は部分的にメモリ825に、かつ部分的にストレージ830に記憶されるか、又はそれらは全体的にメモリ825に又は全体的にストレージ830に記憶されるか、又はそれらはネットワークインターフェース815を介してネットワーク850にわたってアクセスされる。
【0069】
命令860は、図2図5の方法の任意の一部分、又はその全てを実行し、若しくは図1及び図6A図7の任意の一部分において論述された機能を実装する、又はその両方を行うコンピュータ可読及びコンピュータ実行可能命令とすることができる。命令860はメモリ825において示されているが、命令860は、多数のコンピュータ可読記憶媒体にわたって一括して記憶され、1つ又は複数のCPU805によって実行可能であるプログラム命令を含むことができる。
【0070】
様々な実施形態において、I/Oデバイス812は、情報を提示するとともに入力を受信することが可能なインターフェースを含む。例えば、I/Oデバイス812は、コンピュータ800とインタラクトするユーザに情報を提示するとともに、ユーザから入力を受信することができる。
【0071】
コンピュータ800は、ネットワークインターフェース815を介してネットワーク850に接続される。ネットワーク850は、物理的、無線、セルラ、又は異なるネットワークを含むことができる。
【0072】
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書において記載される教示の実装はクラウドコンピューティング環境に限定されないことが理解されるべきである。むしろ、本発明の実施形態は、現在既知の、又は今後開発される他の任意のタイプのコンピューティング環境と組み合わせて実装されることが可能である。
【0073】
クラウドコンピューティングは、最小の管理労力又はサービスプロバイダとのインタラクションで迅速にプロビジョニング及びリリースすることができる構成可能コンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの簡便なオンデマンドネットワークアクセスを可能にするためのサービス提供のモデルである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、及び少なくとも4つの展開モデルを含み得る。
【0074】
特性は、以下のとおりである。
【0075】
オンデマンドセルフサービス:クラウド消費者は、サービスプロバイダとの人的対話を必要とすることなく、必要に応じて自動的に、サーバ時間及びネットワークストレージ等のコンピューティング能力を一方的にプロビジョニングすることができる。
【0076】
幅広いネットワークアクセス:この能力は、ネットワークを介して利用可能であり、異種のシン又はシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促す標準メカニズムを通してアクセスされる。
【0077】
リソースプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを使用して複数の消費者に役立つようプールされ、異なる物理リソース及び仮想リソースが、需要に従って動的に割り当て及び再割り当てされる。消費者は概して提供されたリソースの正確なロケーションに対して制御又は知識を有していないが、より高いレベルの抽象化(例えば、国、州、又はデータセンタ)においてロケーションを指定することが可能である場合があるという点で、ロケーションの独立性がある。
【0078】
迅速な弾力性:この能力は、迅速かつ弾力的に、幾つかの事例では自動的にプロビジョニングして、早急にスケールアウトし、かつ迅速にリリースして早急にスケールインすることができる。消費者にとって、多くの場合、プロビジョニングに利用可能な能力は無制限に見え、任意の時点において任意の量で購入することができる。
【0079】
測定されるサービス:クラウドシステムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅及びアクティブユーザアカウント)に適切な或るレベルの抽象化における計測能力を活用することによって、自動的にリソース使用を制御及び最適化する。リソース使用状況をモニタリング、制御及び報告することができ、利用されるサービスのプロバイダ及び消費者の両方に透明性が提供される。
【0080】
サービスモデルは、以下のとおりである。
【0081】
ソフトウェアアズアサービス(SaaS):消費者に提供される能力は、クラウドインフラストラクチャ上で稼働するプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブブラウザ(例えば、ウェブベースの電子メール)等のシンクライアントインターフェースを通して様々なクライアントデバイスからアクセス可能である。消費者は、考えられる例外としての限定されたユーザ固有のアプリケーション構成設定を除き、ネットワーク、サーバ、オペレーティングシステム、ストレージ又は更には個々のアプリケーション能力を含む、基礎をなすクラウドインフラストラクチャを管理又は制御しない。
【0082】
プラットフォームアズアサービス(PaaS):消費者に提供される能力は、クラウドインフラストラクチャ上に、プロバイダによってサポートされるプログラミング言語及びツールを使用して作成される、消費者が作成又は取得したアプリケーションを展開することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、又はストレージを含む、基礎をなすクラウドインフラストラクチャを管理又は制御しないが、展開されたアプリケーション、及び場合によってはアプリケーションホスティング環境構成を制御する。
【0083】
インフラストラクチャアズアサービス(IaaS):消費者に提供される能力は、処理、ストレージ、ネットワーク及び他の基本的なコンピューティングリソースをプロビジョニングすることであり、ここで消費者は、オペレーティングシステム及びアプリケーションを含むことができる任意のソフトウェアを展開及び稼働することが可能である。消費者は、基礎をなすクラウドインフラストラクチャを管理又は制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーションを制御するとともに、場合によっては選択されたネットワーク接続コンポーネント(例えば、ホストファイアウォール)を限定的に制御する。
【0084】
展開モデルは、以下のとおりである。
【0085】
プライベートクラウド:このクラウドインフラストラクチャは、或る組織のためにのみ動作する。これは、その組織又はサードパーティによって管理されてよく、オンプレミス又はオフプレミスで存在してよい。
【0086】
コミュニティクラウド:このクラウドインフラストラクチャは、幾つかの組織によって共有され、共有される関心事項(例えば、ミッション、セキュリティ要件、ポリシー及びコンプライアンス考慮事項)を有する特定のコミュニティをサポートする。これは、それらの組織又はサードパーティによって管理されてよく、オンプレミス又はオフプレミスで存在してよい。
【0087】
パブリッククラウド:このクラウドインフラストラクチャは、一般大衆又は大規模な業界団体に利用可能とされ、クラウドサービスを販売する組織によって所有される。
【0088】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ又はそれよりも多くのクラウド(プライベート、コミュニティ、又はパブリック)の複合体であり、2つ又はそれよりも多くのクラウドは、独自のエンティティのままであるが、データ及びアプリケーションのポータビリティ(例えば、クラウド間の負荷分散のためのクラウドバースト)を可能にする標準技術又は独自技術によってともに結合される。
【0089】
クラウドコンピューティング環境は、ステートレス性、低結合性、モジュール性及びセマンティック相互運用性に焦点を当てたサービス指向である。クラウドコンピューティングの中核には、相互接続されたノードからなるネットワークを含むインフラストラクチャが存在する。
【0090】
ここで図9を参照すると、例示的なクラウドコンピューティング環境50が示されている。示されているように、クラウドコンピューティング環境50は、例えば、携帯情報端末(PDA)若しくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、若しくは自動車コンピュータシステム54N、又はその組み合わせ等の、クラウド消費者によって使用されるローカルコンピューティングデバイスが通信し得る、1つ又は複数のクラウドコンピューティングノード10を備える。ノード10は、互いに通信してよい。これらは、本明細書の上記で説明されたようなプライベートクラウド、コミュニティクラウド、パブリッククラウド、若しくはハイブリッドクラウド、又はこれらの組み合わせ等の、1つ又は複数のネットワーク内で物理的に又は仮想的にグループ化されてよい(図示せず)。これにより、クラウドコンピューティング環境50は、インフラストラクチャ、プラットフォーム、若しくはソフトウェア、又はその組み合わせを、クラウド消費者がそのためにローカルコンピューティングデバイス上にリソースを維持する必要がないサービスとして提供することが可能になる。図9において示されているコンピューティングデバイス54A~54Nのタイプは、単に例示を意図し、コンピューティングノード10及びクラウドコンピューティング環境50は、任意のタイプのネットワーク、若しくはネットワークアドレス指定可能接続、又はその両方を介して(例えば、ウェブブラウザを使用して)、任意のタイプのコンピュータ化デバイスと通信することができることが理解される。
【0091】
ここで、図10を参照すると、クラウドコンピューティング環境50(図9)によって提供される機能抽象化層のセットが示されている。図10において示されているコンポーネント、層、及び機能は、単に例示を意図するものであり、本発明の実施形態がそれらに限定されないことが事前に理解されるべきである。示されているように、以下の層及び対応する機能が提供される。
【0092】
ハードウェア及びソフトウェア層60は、ハードウェアコンポーネント及びソフトウェアコンポーネントを備える。ハードウェアコンポーネントの例としては:メインフレーム61;RISC(縮小命令セットコンピュータ)アーキテクチャベースサーバ62;サーバ63;ブレードサーバ64;記憶デバイス65;及び、ネットワーク及びネットワーキングコンポーネント66が挙げられる。幾つかの実施形態では、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67及びデータベースソフトウェア68を備える。
【0093】
仮想化層70は、仮想エンティティの次の例:仮想サーバ71;仮想ストレージ72;仮想プライベートネットワークを含む仮想ネットワーク73;仮想アプリケーション及びオペレーティングシステム74;及び仮想クライアント75が提供され得る抽象化層を提供する。
【0094】
1つの例では、管理層80は、以下で説明される機能を提供してよい。リソースプロビジョニング81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソース及び他のリソースの動的な調達を提供する。計測及び価格設定82は、リソースがクラウドコンピューティング環境内で利用されるときのコスト追跡、及び、これらのリソースの消費に対する請求又はインボイス作成を提供する。1つの例では、これらのリソースは、アプリケーションソフトウェアライセンスを含んでよい。セキュリティは、クラウド消費者及びタスクに対する識別情報検証、並びに、データ及び他のリソースに対する保護を提供する。ユーザポータル83は、消費者及びシステムアドミニストレータに対してクラウドコンピューティング環境へのアクセスを提供する。サービス水準管理84は、要求されるサービス水準が満たされるように、クラウドコンピューティングリソース割り当て及び管理を提供する。サービス水準合意(SLA)計画及び履行85は、将来の要件がSLAに従って予想されるクラウドコンピューティングリソースの事前の取り決め及び調達を提供する。
【0095】
ワークロード層90は、クラウドコンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロード及び機能の例としては:マッピング及びナビゲーション91;ソフトウェア開発及びライフサイクル管理92;仮想クラスルーム教育提供93;データ解析処理94;トランザクション処理95;及びアプリケーション移行管理96が挙げられる。
【0096】
本発明の実施形態は、統合のあらゆる可能な技術詳細レベルにおけるシステム、方法若しくはコンピュータプログラム製品、又はその組み合わせとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(又は複数の媒体)を含むことができる。
【0097】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるように命令を保持及び記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、又は前述したものの任意の適した組み合わせとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、次のもの:ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピディスク、機械的にエンコードされたデバイス、例えば、パンチカード又は命令を記録した溝内の隆起構造、及び前述したものの任意の適した組み合わせを含む。コンピュータ可読記憶媒体は、本明細書において使用される場合、電波若しくは他の自由に伝搬する電磁波、導波路若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又はワイヤを通じて伝送される電気信号等の一時的な信号それ自体とは解釈されるべきではない。
【0098】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピューティング/処理デバイスに、或いは、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク若しくは無線ネットワーク、又はその組み合わせを介して、外部コンピュータ又は外部ストレージデバイスに、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ若しくはエッジサーバ、又はその組み合わせを含むことができる。各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【0099】
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は、1つ又は複数のプログラミング言語の任意の組み合わせで記述されたソースコード又はオブジェクトコードのいずれかであってよく、1つ又は複数のプログラミング言語は、Smalltalk(登録商標)、C++等のようなオブジェクト指向プログラミング言語と、「C」プログラミング言語又は同様のプログラミング言語のような手続き型プログラミング言語とを含む。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に実行されてもよいし、スタンドアロンソフトウェアパッケージとしてユーザのコンピュータ上で部分的に実行されてもよいし、部分的にユーザのコンピュータ上で、かつ、部分的にリモートコンピュータ上で実行されてもよいし、リモートコンピュータ又はサーバ上で完全に実行されてもよい。後者のシナリオでは、リモートコンピュータが、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続することもできるし、その接続は、(例えば、インターネットサービスプロバイダを使用してインターネットを介して)外部コンピュータに対して行うこともできる。幾つかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズすることができる。
【0100】
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図若しくはブロック図、又はその両方を参照して説明されている。フローチャート図若しくはブロック図、又はその両方の各ブロック、並びに、フローチャート図若しくはブロック図、又はその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装することができることが理解されよう。
【0101】
これらのコンピュータ可読プログラム命令を汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供して機械を生成することができ、それにより、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート若しくはブロック図、又はその両方の単数又は複数のブロックで指定された機能/動作を実装する手段を作成するようになる。また、これらのコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体に記憶することができ、当該命令は、コンピュータ、プログラマブルデータ処理装置若しくは他のデバイス、又はその組み合わせに対し、特定の方式で機能するよう命令することができ、それにより、命令を記憶したコンピュータ可読記憶媒体は、フローチャート若しくはブロック図、又はその両方の単数又は複数のブロックで指定された機能/動作の態様を実装する命令を含む製品を含むようになる。
【0102】
また、コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードして、一連の動作段階をコンピュータ、他のプログラマブル装置又は他のデバイス上で実行させ、コンピュータ実装プロセスを生成することができ、それにより、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行される命令は、フローチャート若しくはブロック図、又はその両方の単数又は複数のブロックで指定された機能/動作を実装するようになる。
【0103】
図におけるフローチャート及びブロック図は、本発明の様々な実施形態に係るシステム、方法、及びコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、及び動作を示す。これに関して、フローチャート又はブロック図における各ブロックは、指定される論理機能を実装する1つ又は複数の実行可能命令を含む命令のモジュール、セグメント、又はサブセットを表し得る。幾つかの代替的な実装では、ブロックに記載される機能が、図に記載される順序とは異なる順序で行われてよい。例えば、連続して示されている2つのブロックは、実際には、実質的に同時に実行することもできるし、ブロックは、関与する機能に依存して逆の順序で実行される場合もあり得る。ブロック図若しくはフローチャート図、又はその両方の各ブロック、並びにブロック図若しくはフローチャート図、又はその両方におけるブロックの組み合わせは、指定された機能若しくは動作を実行するか、又は専用ハードウェアとコンピュータ命令との組み合わせを実行する専用ハードウェアベースシステムによって実装することができることにも留意されたい。
【0104】
プロセスソフトウェア(例えば、図8の命令860に記憶された命令のうちの任意のもの、及び/又は図2図5に関して説明された方法の任意の部分を実行し、及び/又は図1及び図6A図7において論述された機能の任意の部分を実装するように構成された任意のソフトウェア)はCD、DVD等のような記憶媒体をロードすることを介して、クライアント、サーバ、及びプロキシコンピュータにそれを手動で直接ロードすることによって展開することができることが理解されるが、プロセスソフトウェアは、プロセスソフトウェアを中央サーバ又は中央サーバのグループに送信することによってコンピュータシステムに自動的又は半自動的に展開することもできる。プロセスソフトウェアは、その後、プロセスソフトウェアを実行することになるクライアントコンピュータにダウンロードされる。代替的に、プロセスソフトウェアは、電子メールを介してクライアントシステムに直接送信される。プロセスソフトウェアは、その後、プロセスソフトウェアをディレクトリにデタッチするプログラム命令のセットを実行することによって、ディレクトリにデタッチするか又はディレクトリにロードされるかのいずれかである。別の代替形態は、プロセスソフトウェアを、クライアントコンピュータハードドライブ上のディレクトリに直接送信することである。プロキシサーバが存在する場合、プロセスは、プロキシサーバコードを選択し、プロキシサーバのコードをいずれのコンピュータ上に配置するのかを判断し、プロキシサーバコードを送信し、その後、プロキシコンピュータ上にプロキシサーバコードをインストールする。プロセスソフトウェアは、プロキシサーバに送信され、その後、プロキシサーバ上に記憶される。
【0105】
本発明の実施形態は、クライアント企業、非営利組織、政府機関、内部組織構造等に対するサービスエンゲージメントの一部として送達することもできる。これらの実施形態は、本明細書において説明される方法の一部又は全てを実行するコンピュータシステムを構成すること、及び当該方法の一部又は全てを実装するソフトウェア、ハードウェア、及びウェブサービスを展開することを含むことができる。これらの実施形態は、クライアントの動作を解析すること、解析に応答して推奨を作成すること、推奨のサブセットを実装するシステムを構築すること、システムを既存のプロセス及びインフラストラクチャに統合すること、システムの使用を計測すること、システムのユーザに費用を割り当てること、及び請求すること、インボイス作成すること(例えば、インボイスを生成すること)、又は別様にシステムの使用の支払いを受け取ることも含むことができる。
【0106】
本明細書において使用される術語は、特定の実施形態を説明する目的のためだけのものであり、様々な実施形態を限定することを意図されていない。
本明細書において使用される場合、「a」「an」及び「the」という単数形は、文脈による別段の明確な指示がない限り、複数形も含むことを意図されている。本明細書において使用される場合、「含む(includes)」若しくは「含む(including)」又はその両方の用語は、述べられている特徴、整数、段階、動作、要素若しくはコンポーネント又はその組み合わせの存在を指定するが、1つ又は複数の他の特徴、整数、段階、動作、要素、コンポーネント若しくはそのグループ又はその組み合わせの存在又は追加を除外するものではないことが更に理解されよう。様々な実施形態の例示の実施形態の前述の詳細な説明において、本明細書の一部をなす添付図面(ここで、同様の符号は同様の要素を表している)に対して参照がなされ、この添付図面において、様々な実施形態を実践することができる特定の例示の実施形態が例示として示されている。これらの実施形態は、当業者が当該実施形態を実践することを可能にするために十分詳細に説明されたが、様々な実施形態の範囲から逸脱することなく、他の実施形態を使用することができ、論理的、機械的、電気的、及び他の変更を行うことができる。前述の説明において、多数の特定の詳細が、様々な実施形態の完全な理解を提供するために記載された。しかし、これらの特定の詳細を伴うことなく様々な実施形態を実践することができる。他の事例において、周知の回路、構造及び技法は、実施形態を不明瞭にしないために、詳細に示されていない。
【0107】
本明細書内で使用される場合、「実施形態」という単語の異なる事例は、必ずしも同じ実施形態を指すわけではないが、それらの事例は、同じ実施形態も指し得る。本明細書において図示又は説明される任意のデータ及びデータ構造は、例に過ぎず、他の実施形態では、異なる量のデータ、データのタイプ、フィールド、フィールドの数及びタイプ、フィールド名、行の数及びタイプ、レコード、エントリ、又はデータの編成を使用することができる。加えて、任意のデータをロジックと組み合わせることができ、それにより、別個のデータ構造は不要であり得る。したがって、前述の詳細な説明は、限定的な意味で解釈されるべきものではない。
【0108】
本開示の様々な実施形態の説明は、図示の目的で提示されているが、網羅的であることも、開示された実施形態に限定することも意図されていない。説明された実施形態の範囲から逸脱することなく、多くの修正形態及び変形形態が、当業者には明らかであろう。本明細書において使用される術語は、実施形態の原理、実際の適用、若しくは市場に見られる技術に対する技術的改善を最も良好に説明するように、又は、当業者が本明細書において開示された実施形態を理解することを可能にするように選択された。
【0109】
本開示は、具体的な実施形態に関して説明されてきたが、それらの変更形態及び修正形態が当業者には明らかになることが予想される。したがって、以下の特許請求の範囲は、本開示の真の範囲内に入るような全てのそのような変更形態及び修正形態を包含するものとして解釈されることが意図される。
【0110】
本開示において論述される任意の利点は、例示の利点であり、本開示の範囲内に留まりながら論述された利点のうちの任意のものの全て、一部を実現するか、又はそれらのいずれも実現しない本開示の実施形態が存在することができる。
図1
図2
図3
図4
図5
図6A
図6B
図7
図8
図9
図10