(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-13
(54)【発明の名称】複雑なレガシーアプリケーションの移行
(51)【国際特許分類】
G06F 9/50 20060101AFI20231206BHJP
H04L 67/60 20220101ALI20231206BHJP
【FI】
G06F9/50 150Z
H04L67/60
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023532556
(86)(22)【出願日】2021-11-16
(85)【翻訳文提出日】2023-05-29
(86)【国際出願番号】 CN2021130929
(87)【国際公開番号】W WO2022116814
(87)【国際公開日】2022-06-09
(32)【優先日】2020-12-03
(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)【復代理人】
【識別番号】100104880
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】ヴェルマ、ディネシュ、シー
(72)【発明者】
【氏名】ダイジャバド、シャフロック
(72)【発明者】
【氏名】ダバリ、ビジャン
(57)【要約】
複数のレガシーアプリケーション間のネットワークトラフィックのセットが監視される。ネットワークトラフィックのセットから、複数のレガシーアプリケーションのための通信グラフが生成される。通信グラフから、複数のレガシーアプリケーション内の移行可能なアプリケーションのセットが特定される。移行可能なアプリケーションのセットは、クラウドエッジレイヤに移行され、ユーザに移行が通知される。
【選択図】
図2A
【特許請求の範囲】
【請求項1】
複雑なアプリケーションを移行するための方法であって、
複数のレガシーアプリケーション間のネットワークトラフィックのセットを監視することと、
前記監視されたネットワークトラフィックのセットから、前記複数のレガシーアプリケーションのための通信グラフを生成することと、
前記通信グラフから、前記複数のレガシーアプリケーション内の移行可能なアプリケーションのセットを特定することと、
移行可能なアプリケーションの前記セットをクラウドエッジレイヤに移行することと、
前記移行をユーザに通知することと、を含む、方法。
【請求項2】
前記通信グラフを生成することは、
アプリケーションコンポーネントのためのサーバアドレスとポート番号を特定することと、
前記サーバアドレスと前記ポート番号を用いて、前記アプリケーションコンポーネントに関連するクライアント要求のセットを特定することと、
前記特定されたクライアント要求のセットから、前記通信グラフを生成することと、をさらに含む、請求項1に記載の方法。
【請求項3】
前記通信グラフは、
前記クライアント要求のセットのための起点のセットに関連するサーバアドレスとポート番号のセットと、
前記クライアント要求のセットのための宛先のセットに関連するサーバアドレスとポート番号のセットと、
平均的なネットワークレイテンシと、
ネットワークトラフィックの量と、を含む、請求項2に記載の方法。
【請求項4】
前記移行可能なアプリケーションのセットを特定することは、
1つまたは複数の関連するプロセスのグループを特定するために前記通信グラフを分析することと、
前記1つまたは複数の関連するプロセスのグループから、前記複数のレガシーアプリケーション内の前記移行可能なアプリケーションのセットを判定することと、をさらに含む、請求項3に記載の方法。
【請求項5】
前記クラウドエッジレイヤは、前記移行可能なアプリケーションのセットからの第1のアプリケーションのネイティブアーキテクチャに基づくアプライアンスを含む、請求項4記載の方法。
【請求項6】
ソフトウェアは、前記第1のアプリケーションをホストするために、前記クラウドエッジレイヤにおいてサービスとして提供される、請求項5に記載の方法。
【請求項7】
前記移行可能なアプリケーションのセットと前記複数のレガシーアプリケーションの残りとの間で発生するネットワークトラフィックの第2のセットを監視することと、
前記監視に応答して、少なくとも1つのタイミングエラーが発生したと判定することと、
前記クラウドエッジレイヤにおいて、ネットワークレート制御フィルタを導入することであって、前記ネットワークレート制御フィルタの基準は、前記少なくとも1つのタイミングエラーに基づく、導入することと、
前記基準をユーザに通知することと、をさらに含む、請求項1に記載の方法。
【請求項8】
複雑なアプリケーションを移行するためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、プログラム命令を実装するコンピュータ可読記憶媒体を含み、前記プログラム命令は、装置によって実行可能であり、前記装置に、
複数のレガシーアプリケーション間のネットワークトラフィックのセットを監視することと、
前記監視されたネットワークトラフィックのセットから、前記複数のレガシーアプリケーションのための通信グラフを生成することと、
前記通信グラフから、前記複数のレガシーアプリケーション内の移行可能なアプリケーションのセットを特定することと、
移行可能なアプリケーションの前記セットをクラウドエッジレイヤに移行することと、
前記移行をユーザに通知することと、を行わせる、コンピュータプログラム製品。
【請求項9】
前記通信グラフを生成することは、
アプリケーションコンポーネントのためのサーバアドレスとポート番号を特定することと、
前記サーバアドレスと前記ポート番号を用いて、前記アプリケーションコンポーネントに関連するクライアント要求のセットを特定することと、
前記特定されたクライアント要求のセットから、前記通信グラフを生成することと、をさらに含む、請求項8に記載のコンピュータプログラム製品。
【請求項10】
前記通信グラフは、
前記クライアント要求のセットのための起点のセットに関連するサーバアドレスとポート番号のセットと、
前記クライアント要求のセットのための宛先のセットに関連するサーバアドレスとポート番号のセットと、
平均的なネットワークレイテンシと、
ネットワークトラフィックの量と、を含む、請求項9に記載のコンピュータプログラム製品。
【請求項11】
前記移行可能なアプリケーションのセットを特定することは、
1つまたは複数の関連するプロセスのグループを特定するために前記通信グラフを分析することと、
前記1つまたは複数の関連するプロセスのグループから、前記複数のレガシーアプリケーション内の前記移行可能なアプリケーションのセットを判定することと、をさらに含む、請求項10に記載のコンピュータプログラム製品。
【請求項12】
前記クラウドエッジレイヤは、前記移行可能なアプリケーションのセットからの第1のアプリケーションのネイティブアーキテクチャに基づくアプライアンスを含む、請求項11に記載のコンピュータプログラム製品。
【請求項13】
ソフトウェアは、前記第1のアプリケーションをホストするために、前記クラウドエッジレイヤにおいてサービスとして提供される、請求項12に記載のコンピュータプログラム製品。
【請求項14】
前記プログラム命令は、前記装置に、
前記移行可能なアプリケーションのセットと前記複数のレガシーアプリケーションの残りとの間で発生するネットワークトラフィックの第2のセットを監視することと、
前記監視に応答して、少なくとも1つのタイミングエラーが発生したと判定することと、
前記クラウドエッジレイヤにおいて、ネットワークレート制御フィルタを導入することであって、前記ネットワークレート制御フィルタの基準は、前記少なくとも1つのタイミングエラーに基づく、導入することと、
前記基準をユーザに通知することと、をさらに行わせる、請求項8に記載のコンピュータプログラム製品。
【請求項15】
複雑なアプリケーションを移行するためのシステムであって、
その上にプログラム命令が含まれるメモリサブシステムと、
前記メモリサブシステムと通信するプロセッサとを含み、前記プログラム命令が、前記プロセッサに、
複数のレガシーアプリケーション間のネットワークトラフィックのセットを監視することと、
前記監視されたネットワークトラフィックのセットから、前記複数のレガシーアプリケーションのための通信グラフを生成することと、
前記通信グラフから、前記複数のレガシーアプリケーション内の移行可能なアプリケーションのセットを特定することと、
移行可能なアプリケーションの前記セットをクラウドエッジレイヤに移行することと、
前記移行をユーザに通知することと、を行わせる、ことを含む、システム。
【請求項16】
前記通信グラフを生成することは、
アプリケーションコンポーネントのためのサーバアドレスとポート番号を特定することと、
前記サーバアドレスと前記ポート番号を用いて、前記アプリケーションコンポーネントに関連するクライアント要求のセットを特定することと、
前記特定されたクライアント要求のセットから、前記通信グラフを生成することと、をさらに含む、請求項15に記載のシステム。
【請求項17】
前記通信グラフは、
前記クライアント要求のセットのための起点のセットに関連するサーバアドレスとポート番号のセットと、
前記クライアント要求のセットのための宛先のセットに関連するサーバアドレスとポート番号のセットと、
平均的なネットワークレイテンシと、
ネットワークトラフィックの量と、を含む、請求項16に記載のシステム。
【請求項18】
前記移行可能なアプリケーションのセットを特定することは、
1つまたは複数の関連するプロセスのグループを特定するために前記通信グラフを分析することと、
前記1つまたは複数の関連するプロセスのグループから、前記複数のレガシーアプリケーション内の前記移行可能なアプリケーションのセットを判定することと、をさらに含む、請求項17に記載のシステム。
【請求項19】
前記クラウドエッジレイヤは、前記移行可能なアプリケーションのセットからの第1のアプリケーションのネイティブアーキテクチャに基づくアプライアンスを含む、請求項18に記載のシステム。
【請求項20】
前記プログラム命令は、前記プロセッサに、
前記移行可能なアプリケーションのセットと前記複数のレガシーアプリケーションの残りとの間で発生するネットワークトラフィックの第2のセットを監視することと、
前記監視に応答して、少なくとも1つのタイミングエラーが発生したと判定することと、
前記クラウドエッジレイヤにおいて、ネットワークレート制御フィルタを導入することであって、前記ネットワークレート制御フィルタの基準は、前記少なくとも1つのタイミングエラーに基づく、導入することと、
前記基準をユーザに通知することと、をさらに行わせる、請求項15に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、アプリケーション移行の分野に関し、より詳細には、複雑なレガシーアプリケーションを移行することに関する。
【背景技術】
【0002】
企業環境では、複雑なレガシーアプリケーションが当たり前になっている場合がある。このようなアプリケーションは、アプリケーションのコンポーネントが他のアプリケーション(レガシーまたはその他)と複雑に相互接続している可能性があるため、移行が困難な場合がある。その結果、運用コストがかさみ、クラウドベースのアプリケーションなどの新しい技術を活用できない可能性がある。
【0003】
複雑なレガシーアプリケーションを移行するための現在の解決策は、手作業によるエンジニアリングプロセスや、コンテナ、サービス指向アーキテクチャ(SOA)、マイクロサービスなどの新しいアーキテクチャパラダイムを使用して重要なコンポーネントを書き換えることを必要とする。あるいは、アプリケーションとコンポーネントの集合体全体を一緒に移行できる限り、ネイティブアプリケーションをクラウドモードに移行できるシステムレイヤの書き換えを統合した解決策も提案されている。アプリケーション全体をクラウドに移動するための最先端技術には、アプリケーションの自動リファクタリングに人工知能(AI)を使用することが含まれる。
【0004】
上記のアプローチは、アプリケーションの移動が比較的簡単である場合(例えば、アプリケーションに他のアプリケーションとの依存関係がほとんどない場合)、または移行によって複数のアプリケーション間の依存関係やその他のタイミングの問題が変化しない場合にのみ成功することができる。手作業によるソフトウェアエンジニアリングのアプローチは、面倒で時間がかかり、人為的なミスの可能性がある。
【0005】
多くのレガシーコンポーネントやアプリケーションに複雑な依存関係があり、レガシーコンポーネント/アプリケーションの暗黙の前提、特にアプリケーション間の様々な相互作用のタイミングによって、企業の全アプリケーションスイートが壊れやすく不安定になる可能性がある現実の環境では、現在のアプローチは単にうまく機能しない。
【発明の概要】
【0006】
本開示の実施形態は、複雑なアプリケーションを移行するための方法を含む。本方法は、複数のレガシーアプリケーション間のネットワークトラフィックのセットを監視することを含む。ネットワークトラフィックのセットから、複数のレガシーアプリケーションのための通信グラフが生成される。通信グラフから、複数のレガシーアプリケーション内の移行可能なアプリケーションのセットが特定される。移行可能なアプリケーションのセットは、クラウドエッジレイヤに移行され、ユーザに移行が通知される。
【0007】
本方法は、移行可能なアプリケーションのセットと複数のレガシーアプリケーションの残りとの間で発生するネットワークトラフィックの第2のセットを監視することをさらに含むことができる。監視に応答して、少なくとも1つのタイミングエラーが発生したと判定される。クラウドエッジレイヤにおいて、ネットワークレート制御フィルタが導入される。ネットワークレート制御フィルタの基準は、少なくとも1つのタイミングエラーに基づく。ユーザに基準が通知される。
【0008】
本開示の実施形態は、複雑なアプリケーションを移行するためのコンピュータプログラム製品を含む。コンピュータプログラム製品は、プログラム命令を実装するコンピュータ可読記憶媒体を含む。プログラム命令は、装置によって実行可能であり、装置に、複数のレガシーアプリケーション間のネットワークトラフィックのセットを監視させる。ネットワークトラフィックのセットから、複数のレガシーアプリケーションのための通信グラフが生成される。通信グラフから、複数のレガシーアプリケーション内の移行可能なアプリケーションのセットが特定される。移行可能なアプリケーションのセットは、クラウドエッジレイヤに移行され、ユーザに移行が通知される。
【0009】
コンピュータプログラム製品のプログラム命令は、さらに、装置に、移行可能なアプリケーションのセットと複数のレガシーアプリケーションの残りとの間で発生するネットワークトラフィックの第2のセットを監視させることができる。監視に応答して、少なくとも1つのタイミングエラーが発生したと判定される。クラウドエッジレイヤにおいて、ネットワークレート制御フィルタが導入される。ネットワークレート制御フィルタの基準は、少なくとも1つのタイミングエラーに基づく。ユーザに基準が通知される。
【0010】
本開示の実施形態は、複雑なアプリケーションを移行するためのシステムを含む。このシステムは、その上にプログラム命令が含まれるメモリサブシステムと、メモリサブシステムと通信するプロセッサを含む。プログラム命令は、プロセッサに、複数のレガシーアプリケーション間のネットワークトラフィックのセットを監視させる。ネットワークトラフィックのセットから、複数のレガシーアプリケーションのための通信グラフが生成される。通信グラフから、複数のレガシーアプリケーション内の移行可能なアプリケーションのセットが特定される。移行可能なアプリケーションのセットは、クラウドエッジレイヤに移行され、ユーザに移行が通知される。
【0011】
プログラム命令は、さらに、装置に、移行可能なアプリケーションのセットと複数のレガシーアプリケーションの残りとの間で発生するネットワークトラフィックの第2のセットを監視させることができる。監視に応答して、少なくとも1つのタイミングエラーが発生したと判定される。クラウドエッジレイヤにおいて、ネットワークレート制御フィルタが導入される。ネットワークレート制御フィルタの基準は、少なくとも1つのタイミングエラーに基づく。ユーザに基準が通知される。
【0012】
上記の要約は、例示された各実施形態または本開示のすべての実施形態を説明することを意図していない。
【0013】
本開示に含まれる図面は、本明細書に組み込まれ、本明細書の一部を構成する。これらは、本開示の実施形態を例示するものであり、説明とともに、本開示の原理を説明するのに役立つ。図面は、典型的な実施形態を例示するものに過ぎず、本開示を限定するものではない。
【図面の簡単な説明】
【0014】
【
図1】本開示の実施形態による、複雑なレガシーアプリケーションをクラウドエッジレイヤに移行するための例示的なネットワーク環境を示す図である。
【
図2A】本開示の実施形態による、複雑なレガシーアプリケーションを移行するための例示的な方法を示す図である。
【
図2B】本開示の実施形態による、複雑なアプリケーション間のタイミングエラーを緩和するための例示的な方法を示す図である。
【
図3】本開示の実施形態による、通信グラフに従って複雑なレガシーアプリケーションを移行するための例示的な方法を示す。
【
図4】本開示の実施形態による、クラウドコンピューティング環境を示す図である。
【
図5】本開示の実施形態による、抽象化モデルレイヤを示す図である。
【
図6】本開示の実施形態を実施する際に使用され得る例示的なコンピュータシステムの高レベルブロック図を示すものである。
【0015】
本明細書に記載された実施形態は、様々な変更および代替形態に従順であるが、その具体的な内容は、図面において例として示されており、詳細に説明されることになる。しかしながら、説明された特定の実施形態は、限定的な意味で取られるものではないことを理解されたい。それどころか、その意図は、本開示の範囲内に入る全ての変更、等価物、および代替物をカバーすることである。
【発明を実施するための形態】
【0016】
本開示の態様は、一般に、アプリケーション移行の分野に関し、より詳細には、複雑なレガシーアプリケーションを移行することに関するものである。本開示は必ずしもそのようなアプリケーションに限定されるものではないが、本開示の様々な態様は、この文脈を用いた様々な例の議論を通じて理解することができる。
【0017】
上述したように、現在の技術状況では、自動化でき、企業の一連のレガシーアプリケーションとそのコンポーネントの移行されるコンポーネントと移行されないコンポーネント間のタイミング依存性を緩和する両方の方法で、複雑で相互に依存するレガシーアプリケーションをクラウド、またはハイブリッドクラウドプラットフォームに移行する能力を切望している。
【0018】
クラウドコンピューティングアーキテクチャのエッジレイヤは、低レイテンシでローカルリソースを提供するため、複雑なレガシーアプリケーションにとって理想的な環境となり得る。クラウドの「エッジレイヤ」は、クラウドコンピューティングリソースにアクセスするクライアント装置にできるだけ近い位置にあるクラウドコンピューティングリソースを含むことができる。クライアント装置とクラウドとの間の物理的距離を短くすることで、低レイテンシと高い効率性を実現できる可能性がある。エッジレイヤは、レガシーアプリケーションのコンポーネントが実行されている施設に配置されてもよく、そのような施設は、データセンター、企業サイト、プライベートクラウドホスティングサイト、またはアウトソーシングデータセンターとしてインスタンス化されることがある。
【0019】
例えば、企業のサーバ上に存在する既存のレガシーアプリケーションは、相互作用するアプリケーションとそのコンポーネントの複雑なセットである可能性がある。アプリケーションのコンポーネントは、何年も前に作成された様々なプロトコルを介して相互作用する可能性がある。コンポーネントもしくはプロトコルまたはその両方は古いプログラミング言語を使用している場合があり、タイミングや関連するアプリケーションの応答性についての仮定は、まったくないとしても、十分に文書化されていない場合がある。そのため、アプリケーションやアプリケーションコンポーネント間のタイミング依存関係は利用できないか、不完全である可能性がある。しかし、これらのレガシーアプリケーションは、ある企業の運営に不可欠である場合がある。
【0020】
レガシーアプリケーションを新しいシステムやクラウド環境に移行する必要が生じた場合、所定のアプリケーション(または一連の/複数のアプリケーション)のすべてのコンポーネントの移行は、エラーの数、特に移行するコンポーネント/アプリケーションと非移行コンポーネント/アプリケーション間のタイミング依存性エラーが、開発者やその他のスタッフを圧倒し、企業の運営に悪影響を及ぼす可能性があるので、ほとんど試みられることはない。場合によっては、障害が連鎖的に発生し、大惨事となる可能性もある。
【0021】
想定される実施形態の影響を説明するために、ある企業に10個のアプリケーションがあって、それぞれが10個のコンポーネントで構成されていると仮定する。さらに、1つのアプリケーションがクラウドコンピューティング環境に移行するために選択されたと仮定する。選択されたアプリケーションのコンポーネントのうち2つが、非移行アプリケーションの1つまたは複数によっても利用されている場合、選択されたアプリケーションの移行によって、選択されたアプリケーションを利用する非移行アプリケーションの動作が遅くなる可能性がある。選択されたアプリケーションを利用する/依存する非移行アプリケーションの数が多ければ多いほど、企業の複数のアプリケーションに対する速度低下の影響は大きくなる(指数関数的となる可能性もある)。
【0022】
速度低下だけでなく、アプリケーション/コンポーネントが故障するリスクも高まる。レガシーアプリケーションは、企業のローカルサーバ上のローカル環境でのコンポーネント/アプリケーションのタイミング特性や依存関係にそのまま依存している場合があり、コンポーネントが当初2ms離れていた位置から突然100ms離れてしまうと、関連/付随するアプリケーション/コンポーネントが予想外の方法でタイムアウトする可能性がある。
【0023】
また、アプリケーション/コンポーネントがオンプレミス(例えば、ローカルのエンタープライズサーバ)に置かれているが、以前の実装/バージョンよりも高速/効率的に動作する新しい実装に更新された場合にも、同様の問題が発生する可能性がある。古い/未更新のコンポーネント/アプリケーションは、これまで実行/テストされたことのないコードパスにつながるタイミングの問題が発生し、アプリケーションをクラッシュさせる可能性がある。その結果、移行プロセスが失敗する可能性がある。言い換えると、速すぎる動作と遅すぎる動作の両方が、複雑なレガシーアプリケーションを失敗させる原因となる可能性がある。
【0024】
本開示の実施形態は、上記の問題を緩和し、複雑なレガシーアプリケーションの移行を加速および自動化するために、少なくとも3つの技術/技法を使用することを企図している。まず、受動的ネットワーク検査の使用は、各複雑なアプリケーションを構成するコンポーネントのトポロジーを決定するために採用され得る。受動的ネットワーク検査は、さらに、アプリケーション/コンポーネント間の通信の特性(例えば、サーバアドレス、ポートアドレス、プロトコルタイプ、ネットワークレイテンシ、トラフィック量、暗号化タイプなど)を決定するために利用され得る。
【0025】
第2に、受動的ネットワーク検査の結果から、ネットワーク通信グラフを生成することができる。通信グラフを使用して、プロセスをグループ化し、様々なコンポーネント/アプリケーションを特定し、タイミング依存性とアプリケーションの複雑さの程度を特定することができる。通信グラフを使用して、複雑なレガシーアプリケーションをランク付けするか、移行閾値基準と比較して、移行に最適な候補(例えば、移行可能なアプリケーション)を決定することができる。基準は、例えば、相互依存の量、特定のプロセス/コンポーネント/アプリケーションに関連するネットワークトラフィックの量などを考慮してもよい。
【0026】
最後に、ネットワークレート制御フィルタは、任意の特定のコンポーネント/アプリケーションが移行後の環境内で動作できることを保証するために(例えば、クラウドエッジレイヤ環境において)使用されることがある。ネットワークレート制御フィルタは、各コンポーネント/アプリケーション用に調整されてもよく、移行されたコンポーネント/アプリケーションが、移行失敗の主要な原因の一つであるタイミング依存性の失敗を回避することを可能にすることができる。
【0027】
実施形態では、コンポーネント/アプリケーションのいくつかは、受動的なネットワーク検査中に説明され得る比較的よく定義された構造を有するデータセンターで実行されている可能性が高いため、特定される可能性があると仮定され得る。この環境におけるネットワークトラフィックを監視することにより、互いに通信している様々な通信ポートをリッスンすることによって、プロセス/コンポーネント/アプリケーションのセットを特定することができる。例えば、アプリケーションのサーバコンポーネントは、サーバアドレスとポート番号によって特定される場合がある。ポート番号は、そのコンポーネントによるクライアント要求を特定するために使用され、ネットワーク上のプロセス要素の特定につながる場合がある。様々なプロセスの通信を分析することで、アプリケーションの異なるコンポーネント間の通信グラフを生成することができる。さらに、ネットワークレイテンシ、データパケット/ネットワークトラフィックの量などを含む、コンポーネント間の通信の特性を決定することができる。他の実施形態では、ネットワークトラフィックの監視は、単一のサーバ上で動作するコンポーネント間、例えば、物理マシン上の仮想マシンとして動作するコンポーネント間、メインフレーム上の論理パーティションとして動作するコンポーネント間、DOCKERネットワーク上のDOCKERコンテナ等の仮想ローカルネットワーク内のコンテナとして動作するコンポーネント間などで起こり得る。
【0028】
実施形態によれば、相互作用するプロセスが特定され、通信グラフが生成されると、通信グラフを分析することによって、様々なアプリケーションが決定/特定され得る。通信グラフの分析は、協調して、またはコンポーネント、アプリケーション全体、または複数のアプリケーションに典型的な方法で動作するプロセスのグループを特定することができる。この分析は、以下のアプローチの1つまたは複数を使用して行うことができる、類似している通信グラフのノードのクラスターを決定する、通信グラフの最小カット分割を決定する、通信グラフのノードのクリークまたは重み付け分割等を決定する。これらのプロセスグループをさらに分析して、共有コンポーネントもしくはプロセスまたはこれらの組み合わせを有するアプリケーション、ならびにそれらの間で交換されるネットワークトラフィックの量を特定することができる。
【0029】
実施形態では、プロセスグループ分析の結果は、各アプリケーションの特定、および監視されたネットワーク上で通信する各アプリケーションのコンポーネントを含むことができる。このように、これらの結果は、コンポーネント/アプリケーションのうち、クラウドまたはクラウドエッジレイヤへの移行に最も適しているものを決定するために使用することができる。ハイブリッドクラウドの実施形態では、レガシーコンポーネント/アプリケーションの一部のみが移行されることが想定される場合がある。
【0030】
通信グラフとプロセスグループ分析結果を分析することにより、他のコンポーネント/アプリケーションとのリンク/依存関係が最も少ないコンポーネント/アプリケーションは、これらのコンポーネント/アプリケーションが複数のレガシーアプリケーションに与える影響が最も少ないと考えられるため、移行のために選択されることができる。いくつかの実施形態では、これは、閾値チェック(例えば、移行閾値基準との比較)を含むことができる。基準は、ユーザ/管理者によって決定されてもよいし、一定期間の総ネットワークトラフィック量の割合として、アプリケーションの重要度の優先順位ベースのシステムとして、移行するのに最適なコンポーネント/アプリケーションの機械学習モデルによる決定の結果等として、自動化されてもよい。いくつかの実施形態では、これは、ユーザ/管理者によって決定され得る移行ポリシーのセットに対するチェックを含むことができる。移行ポリシーは、移行が許可される条件と、移行が回避されるべき条件とを定義することができる。
【0031】
実施形態において、クラウドエッジレイヤ環境は、移行のための目的地であってもよい。このようにして、移行するコンポーネント/アプリケーションと非移行コンポーネント/アプリケーションとの間のリンクが維持されることが確保され得る。このような実施形態は、恒久的な解決策であってもよいし、実施形態では、クラウドエッジレイヤは、従来のクラウド環境への統合に向けた中間段階として利用されてもよい。
【0032】
実施形態では、移行されたコンポーネント/アプリケーションをホストするクラウドエッジレイヤは、移行されたコンポーネント/アプリケーションのネイティブ/起源/レガシー環境と同じアーキテクチャに基づくアプライアンスを含み得る。例えば、メインフレームアプリケーション用のSYSTEM Zアプライアンス、またはLinux(登録商標)ベースのアプリケーション用のIBM CLOUD SATELLITEが、クラウドエッジレイヤ内に実装され得る。このように、クラウドエッジレイヤは、移行されたコンポーネント/アプリケーションと非移行コンポーネント/アプリケーションの間のレイテンシが変わらないようにすることができる。
【0033】
いくつかの実施形態では、更新されたコンポーネント/アプリケーションがあまりにも速く反応し、予期しないタイミング条件を引き起こすために、コンポーネント/アプリケーションが失敗することがある。いくつかの実施形態では、これらの問題を緩和または軽減するために、ネットワークレート制御フィルタを組み込むことができる。例えば、クラウドエッジレイヤは、ネットワークレート制御フィルタを介して、移行したコンポーネント/アプリケーションと非移行コンポーネント/アプリケーションとの間で経験されるレイテンシが、通信グラフまたはネイティブの移行前の環境で観察される遅延の範囲内に収まるように、ネットワークレイテンシを導入してもよい。このように、レガシーアプリケーションの複雑なシステムは、ネイティブ環境に存在したのと同じタイミング制約と仮定で動作し続けることができ、タイミングエラーを防止もしくは解決またはその両方をすることができる。
【0034】
ここで
図1を参照すると、本開示の実施形態に従って、複雑なレガシーアプリケーションをクラウドエッジレイヤに移行させるための例示的なネットワーク環境100が図示されている。例示的なネットワーク環境100は、例えば、クラウド110、クラウドエッジレイヤ120、およびエンタープライズサーバ130を含み得る。いくつかの実施形態では、クラウド110、クラウドエッジレイヤ120、およびエンタープライズサーバ130の特定の機能は、描写とは異なる場所で実装されてもよい。
【0035】
実施形態によれば、クラウド110、クラウドエッジレイヤ120、およびエンタープライズサーバ130は、コンピュータシステムで構成されてもよい(例えば、コンピュータシステム601と同じまたは同様のコンポーネントを含んでもよい)。クラウド110、クラウドエッジレイヤ120、およびエンタープライズサーバ130は、内部または外部のネットワークインタフェース(図示せず)を介して互いに通信するように構成されてもよい。ネットワークインタフェースは、例えば、モデム、ワイヤレスネットワークアダプタ、イーサネットアダプタなどであってもよい。クラウド110、クラウドエッジレイヤ120、およびエンタープライズサーバ130は、ディスプレイまたはモニタ(図示せず)をさらに備えてもよい。さらに、クラウド110、クラウドエッジレイヤ120、およびエンタープライズサーバ130は、任意の入力装置(例えば、キーボード、マウス、スキャナ、または他の入力装置)、もしくは任意の市販またはカスタムソフトウェア(例えば、画像処理ソフトウェア、オブジェクト識別ソフトウェアなど)またはこれらの組み合わせを含むことができる。いくつかの実施形態では、クラウド110、クラウドエッジレイヤ120、およびエンタープライズサーバ130は、追加のサーバ、デスクトップ、ラップトップ、IoT(モノのインターネット)デバイス、またはハンドヘルドデバイスを含み得る。
【0036】
クラウド110、クラウドエッジレイヤ120、およびエンタープライズサーバ130は、ストレージ(例えば、ストレージインタフェース614)をさらに含むことができる。ストレージは、例えば、仮想化ディスクドライブ、物理ハードディスクドライブ、ソリッドステートストレージドライブ、または任意の他の適切なストレージ媒体を含み得る。いくつかの実施形態では、ワークロードデータおよびメタデータは、一時的または永続的に、保存され得る。
【0037】
クラウド110、クラウドエッジレイヤ120、およびエンタープライズサーバ130は、互いに離れていてもよく、ネットワーク(図示せず)を介して通信してもよい。実施形態では、クラウド110は、クライアント-サーバネットワーキングモデルにおけるように、クラウドエッジレイヤ120およびエンタープライズサーバ130が通信接続を確立できる中央ハブであってもよい。他の実施形態では、クラウドエッジレイヤ120は、エンタープライズサーバ130およびクラウド110のためのそのようなハブとして機能し得る。いくつかの実施形態では、クラウド110、クラウドエッジレイヤ120、およびエンタープライズサーバ130は、任意の他の適切なネットワーク関係(例えば、ピアツーピア構成で、または別のネットワークトポロジを使用して)で構成されてもよい。
【0038】
実施形態では、ネットワーキング環境100のコンポーネント間の接続は、任意の数の任意の適切な通信媒体を使用して実装することができる。例えば、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、インターネット、またはイントラネットである。特定の実施形態では、クラウド110、クラウドエッジレイヤ120、およびエンタープライズサーバ130は、互いにローカルであり、任意の適切なローカル通信媒体を介して通信し得る。例えば、クラウド110、クラウドエッジレイヤ120、およびエンタープライズサーバ130は、ローカルエリアネットワーク(LAN)、1つまたは複数のハードワイヤ接続、無線リンクまたはルータ、またはイントラネットを使用して通信してもよい。いくつかの実施形態では、クラウド110、クラウドエッジレイヤ120、およびエンタープライズサーバ130、ならびに任意の他の装置は、1つまたは複数のネットワークもしくは1つまたは複数のローカル接続またはその両方の組み合わせを使用して通信可能に結合され得る。例えば、エンタープライズサーバ130は、クラウドエッジレイヤ120にハードワイヤード接続されてもよく(例えば、イーサネットケーブルで接続されている)、一方、第3のクライアント装置は、イントラネットまたはインターネットなどのネットワークを介してエンタープライズサーバ130と通信してもよい。
【0039】
いくつかの実施形態では、ネットワーク環境100は、クラウドコンピューティング環境内、またはその一部として実装され得る。様々な実施形態と一致して、クラウドコンピューティング環境は、1つまたは複数のクラウドコンピューティングサービスを提供するネットワークベースの分散データ処理システムを含むことができる。さらに、クラウドコンピューティング環境は、1つまたは複数のデータセンター内に配置され、ネットワークを介してリソースを共有するように構成された多くのコンピュータ(例えば、数百または数千のコンピュータまたはそれ以上)を含むことができる。クラウドコンピューティングに関するさらなる詳細は、
図4及び
図5に関して与えられる。
【0040】
実施形態によれば、エンタープライズサーバ130は、アプリケーション135A~Dを含むことができる。アプリケーション135A~Dは、例えば、レガシーアプリケーションおよびそのコンポーネント/プロセスを含むことができる。レガシーアプリケーションは、電子メールクライアント、インターネットブラウザ、データベース、ブロックチェーンアプリケーション、機械学習モデル、人工知能アプリケーション、ストリーミングアプリケーション、またはエンタープライズエンティティによって利用される他の任意のアプリケーションを含むことができる。いくつかの実施形態では、アプリケーション135A~Dは、本明細書で議論されるように、クラウドエッジレイヤ120への移行のための候補となり得る。描かれているように、アプリケーション135AおよびDは非移行アプリケーションであってもよく、アプリケーション135B~Cは移行アプリケーションであってもよい(例えば、移行されたアプリケーション135B~Cと実質的に類似していてもよく、同一でもよい)。
【0041】
実施形態によれば、エンタープライズサーバ130は、移行コントローラ140をさらに含むことができる。いくつかの実施形態では、移行コントローラ140は、クラウドエッジレイヤ120内に、またはクラウドエッジレイヤ120の外側に位置してもよいが、依然としてクラウド110内に位置することがある。移行コントローラは、トラフィックモニタ145(例えば、本明細書で説明されるような受動的ネットワーク検査を実行するためのもの)および通信グラフ作成器148(例えば、本明細書で説明されるような通信グラフを生成するための)を含むことができる。
【0042】
実施形態によれば、クラウドエッジレイヤ120は、移行されたアプリケーション135B~Cを含むことができる。本明細書で説明されるように、移行されたアプリケーションは、アプリケーション135B~Cの移行された実装であってもよい。移行されたアプリケーション135B~Cは、クラウドエッジレイヤ120の環境のために更新されてもよく、もしくは、クラウドエッジレイヤ120は、エンタープライズサーバ130のネイティブ環境を模倣するアプライアンスを含んでもよく、またはこれらの組み合わせでもよい。
【0043】
実施形態において、クラウドエッジレイヤは、トラフィックモニタ125をさらに含むことができる。トラフィックモニタは、トラフィックモニタ145と実質的に同様であってもよい。トラフィックモニタ125は、クラウドエッジレイヤ120内のネットワークトラフィック、もしくはアプリケーション135AおよびD、および移行されたアプリケーション135B~C間またはこれらの組み合わせのネットワークトラフィックを監視して、タイミングエラーおよび増加レイテンシの導入を通じて緩和または解決され得る他の問題を検出することができる。いくつかの実施形態では、ネットワークレート制御フィルタ128は、本明細書で説明するように、これらの緩和レイテンシを導入および実施することができる。
【0044】
クラウド110は、クラウドエッジレイヤ120および他のクラウドコンピューティングコンポーネントを含み得る。クラウド110およびそのコンポーネントに関する追加の詳細は、
図4および
図5に関して与えられる。
【0045】
図1は、例示的なネットワーク環境100の代表的な主要コンポーネントを描写することを意図していることに留意されたい。しかし、いくつかの実施形態では、個々のコンポーネントは、
図1に表されるような複雑さよりも大きいまたは小さい複雑さを有することがあり、
図1に示されるコンポーネント以外のまたはそれに加えてコンポーネントが存在することがあり、そのようなコンポーネントの数、タイプ、および構成は異なることがある。
【0046】
次に
図2Aに目を向けると、本開示の実施形態に従った、複雑なレガシーアプリケーションを移行するための例示的な方法200Aのフローチャートが図示されている。例示的な方法200Aは、205で開始されることができ、レガシーアプリケーション間のネットワークトラフィックが監視される。本明細書で議論されるように、受動的ネットワーク検査技術が監視において利用されることができ、監視は、レガシーアプリケーションのネイティブ環境(例えば、エンタープライズサーバ130の環境内)において実行され得る。
【0047】
210において、通信グラフが生成される。本明細書で説明するように、通信グラフは、通信特性およびアプリケーションのコンポーネント/プロセスの列挙を含んでもよく、プロセス、コンポーネント、およびアプリケーションの間の関係をさらに説明することができる。通信特性は、ある期間にわたるバイト単位のトラフィック量または接続確立、トラフィックにおける通信ネットワークプロトコルの分布、または通信の属性を記述する任意のモデルのパラメータを含むことができる。
【0048】
215において、移行可能なアプリケーションが特定される。本明細書で説明するように、移行可能なアプリケーションは、レガシーアプリケーションの総数の一部を含んでよく、移行可能なアプリケーションは、移行閾値基準を用いて決定/特定され得る。
【0049】
220において、移行可能なアプリケーションは、クラウドエッジレイヤ(例えば、クラウドエッジレイヤ120)に移行されることができる。実施形態において、移行は、ホット又はコールドで実行されてもよい。ホット移行では、アクティブに実行されているコンポーネントがシームレスに移行される。コールド移行では、アプリケーションコンポーネントはシャットダウンされ、新しい環境で再スタートされる。いくつかの実施形態では、アプリケーションのコンポーネントのサブセットの移行はホットで実行されてもよく、コンポーネントの移行の残りはコールドで実行されてもよい。本明細書で説明するように、クラウドエッジレイヤは、エンタープライズサーバ130の物理的位置に最も近い(物理的/地理的または論理的のいずれか)クラウド110内の仮想/物理的マシンを含み得る。いくつかの実施形態では、論理的な近さ/距離は、最低のレイテンシによって、または通信互換性によって測定され得る。本明細書で説明するように、クラウドエッジレイヤ120は、移行されたアプリケーションのネイティブ環境を模倣するアプライアンスを含むことができ、もしくはネットワークレート制御フィルタを含むことができる、またはこれらの組み合わせを含む。
【0050】
225において、ユーザに移行が通知される。実施形態において、ユーザは、管理者、開発者、エンドユーザなどであってもよく、通知は、ポップアップウィンドウ、テキスト、電子メール、オーディオサウンド、視覚的キュー、触覚的キューなどを通じて達成されてもよい。いくつかの実施形態では、ユーザは、移行を確定するために通知に応答するよう求められることがある。いくつかの実施形態では、ユーザは、移行されるコンポーネントのセットを修正することができる。いくつかの実施形態では、通知及び確認は、移行のプロセスが開始される前に起こる可能性がある。
【0051】
ここで
図2Bに目を向けると、本開示の実施形態による、複雑なアプリケーション間のタイミングエラーを緩和するための例示的な方法200Bが図示されている。実施形態において、例示的な方法200Bは、例示的な方法200Aの後に、または例示的な方法200Aに応答して発生し得る。例示的な方法200Bは、230で開始され、本明細書で説明するように、移行されたレガシーアプリケーションと非移行レガシーアプリケーション間のネットワークトラフィックが監視される。
【0052】
235において、本明細書で説明するように、タイミングエラーが発生したかどうかが判定される。実施形態では、これは、モニタリングによって生成された生データからの判定を含んでもよいし、モニタリングから生成された通信グラフから判定されてもよい。さらに他の実施形態では、判定は、クラウドエッジレイヤ内の移行されたアプリケーションの現実的な動作に関する機械学習モデルによって生成された予測によって行われる場合がある。さらに他の実施形態では、タイミングエラーは、通信の特定の閾値レートを有する活動中にエラー通知が観察されないので安全である通信の閾値を決定することによって回避され得る。いくつかの実施形態では、タイミングエラーまたは他の種類のエラーが観察され、それらのエラーを引き起こすネットワーク特性が、回避すべきものとしてマークされる。
【0053】
235において、タイミングエラーがないと判断された場合、本方法は、230においてネットワークトラフィックの監視を継続することができる。しかしながら、タイミングエラーが発生した、または発生すると判断された場合、またはネットワークがタイミングエラーなしで動作するための安全な基準を決定するためにネットワークが十分に監視された場合、本方法は240に進み、ネットワークレート制御フィルタ128が導入される。本明細書で説明するように、ネットワークレート制御フィルタは、移行されたアプリケーションでレイテンシを導入するために、クラウドエッジレイヤにおいて導入されてもよい。しかしながら、いくつかの実施形態では、ネットワークレート制御フィルタは、レガシーアプリケーションの非移行残部におけるレイテンシを導入するために、エンタープライズサーバにおいて導入されてもよい。
【0054】
245において、ネットワークレート制御フィルタの基準がユーザに通知される。いくつかの実施形態では、ネットワークレート制御フィルタの基準は、ネットワークレート制御フィルタによって影響を受ける各プロセス、コンポーネント、もしくはアプリケーションまたはこれらの組み合わせの通信特性および導入レイテンシを含み得る。
【0055】
次に
図3に目を向けると、本開示の実施形態に従った、通信グラフに従って複雑なレガシーアプリケーションを移行するための例示的な方法300が図示されている。例示的な方法300は、本明細書で説明するように、305で開始することができ、ネットワーク上で実行するプロセスを特定するためにレガシーアプリケーション間のネットワークトラフィックが監視される。
【0056】
310において、監視の結果に従って、本明細書で説明するように、プロセスもしくはコンポーネントまたはその両方のサーバアドレス及びポートアドレス/番号を特定することができる。
【0057】
315において、コンポーネントもしくはプロセスまたはその両方に関連するクライアント要求が、特定されたサーバアドレスおよびポート番号に基づいて、特定される。これは、例えば、クライアント要求に関連する発信元/宛先アドレス/ポート番号を決定することを含み得る。
【0058】
320において、本明細書で説明するように、通信グラフが生成される。実施形態において、生成された通信グラフは、例えば、通信特性、ネットワークトラフィック量、レイテンシ、データパケットの起点/終点等を含み得る。
【0059】
325において、通信グラフが分析される。通信グラフを分析することは、例えば、本明細書に記載されるように、アプリケーション間で送信された各データパケットの発信元および宛先、ネットワークトラフィック量、ハードウェアコンポーネント識別(例えば、MACアドレス指定、IPアドレス、ネットワークレイテンシ等)の決定を含み得る。
【0060】
330において、監視されたプロセス/コンポーネントが、通信グラフに従って、クリークまたはグループを形成しているかどうかが判定される。Noの場合、例示的な方法300は305に戻ることができ、あるいは、例示的な方法300は終了することができる。Yesである場合、プロセスグループは、335において、移行閾値基準と比較され得る。
【0061】
335において、プロセスグループが、本明細書で説明するように、移行閾値基準を超えると判定された場合、例示的な方法300は305に戻ってもよい。あるいは、例示的な方法300は終了してもよい。しかし、もし、プロセスグループが移行閾値基準に該当すると判定された場合、本方法は340に進んでもよい。
【0062】
340において、プロセスグループを含むアプリケーションは、本明細書で説明するように、移行可能なアプリケーションとして、クラウドエッジレイヤに移行され得る。
【0063】
345において、本明細書で説明するように、ユーザに移行が通知される。
【0064】
本開示は、クラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装は、クラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られている又は後に開発される任意の他のタイプのコンピューティング環境と組み合わせて実施することが可能である。
【0065】
クラウドコンピューティングは、設定可能なコンピューティングリソースの共有プール(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)へ、簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、リソースは、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの展開モデルを含むことがある。
【0066】
特性は以下の通りである。
【0067】
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
【0068】
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、PDA)による利用が促進される。
【0069】
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
【0070】
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
【0071】
測定されるサービス:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの測定機能を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
【0072】
サービスモデルは以下の通りである。
【0073】
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
【0074】
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
【0075】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含む任意のソフトウェアを消費者が展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
【0076】
展開モデルは以下の通りである。
【0077】
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0078】
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0079】
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
【0080】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
【0081】
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0082】
ここで、
図4に例示的なクラウドコンピューティング環境50を示す。図示するように、クラウドコンピューティング環境50は1つ以上のクラウドコンピューティングノード10を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、PDAもしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード10は互いに通信することができる。ノード10は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1つ以上のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境50は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、
図4に示すコンピュータ装置54A~Nの種類は例示に過ぎず、コンピューティングノード10およびクラウドコンピューティング環境50は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
【0083】
ここで、クラウドコンピューティング環境50(
図4)によって提供される機能的抽象化レイヤのセットを
図5に示す。なお、
図5に示すコンポーネント、レイヤおよび機能は例示に過ぎず、本発明の実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
【0084】
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、記憶装置65、ならびにネットワークおよびネットワークコンポーネント66が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0085】
仮想化レイヤ70は、抽象化レイヤを提供する。当該レイヤから、例えば以下の仮想エンティティを提供することができる:仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75。
【0086】
一例として、管理レイヤ80は以下の機能を提供することができる。リソース準備81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウド消費者およびタスクの識別確認を可能にする。ユーザポータル83は、消費者およびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行85は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
【0087】
ワークロードレイヤ90は、クラウドコンピューティング環境が利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の配信93、データ分析処理94、取引処理95、および複雑なアプリケーションの移行96が含まれる。
【0088】
ここで
図6を参照すると、例えば、
図2A~Bおよび
図3に記載された方法200A~B/300を含む本開示の様々な態様を実行するように構成され得る例示的なコンピュータシステム601のハイレベルブロック図が示されている。例示的なコンピュータシステム601は、本開示の実施形態に従って、本明細書に記載の方法またはモジュール、および任意の関連する機能または動作のうちの1つまたは複数を実施する際に(例えば、コンピュータの1つまたは複数のプロセッサ回路またはコンピュータプロセッサを使用して)使用され得る。いくつかの実施形態では、コンピュータシステム601の例示的なコンポーネントは、1つまたは複数のCPU602、メモリサブシステム604、端末インタフェース612、ストレージインタフェース614、I/O(入力/出力)装置インタフェース616、およびネットワークインタフェース618からなり、これらのすべては、メモリバス603、I/Oバス608、およびI/Oバスインタフェースユニット610を介してコンポーネント間の通信のために直接または間接に通信可能に結合され得る。
【0089】
コンピュータシステム601は、1つまたは複数の汎用プログラマブル中央処理装置(CPU)602A、602B、602C、および602Dを含むことができ、ここでは一般的にCPU602と呼ばれる。いくつかの実施形態では、コンピュータシステム601は、比較的大きなシステムに典型的な複数のプロセッサを含むことができるが、他の実施形態では、コンピュータシステム601は、代替的に単一CPUシステムであってもよい。各CPU602は、メモリサブシステム604に格納された命令を実行してもよく、1つまたは複数のレベルのオンボードキャッシュを含んでもよい。メモリサブシステム604は、プロセッサ602によって実行されると、プロセッサ602に、
図2A~Bおよび
図3に関して上述した機能の一部または全部を実行させる命令606を含んでもよい。
【0090】
いくつかの実施形態では、メモリサブシステム604は、データおよびプログラムを格納するためのランダムアクセス半導体メモリ、記憶装置、または記憶媒体(揮発性または不揮発性のいずれか)を含むことができる。いくつかの実施形態では、メモリサブシステム604は、コンピュータシステム601の仮想メモリ全体を表すことがあり、コンピュータシステム601に結合された、またはネットワークを介して接続された他のコンピュータシステムの仮想メモリも含むことがある。メモリサブシステム604は、概念的には単一のモノリシックエンティティであってもよいが、いくつかの実施形態では、メモリサブシステム604は、キャッシュおよび他のメモリデバイスの階層など、より複雑な配置であってもよい。例えば、メモリは、複数のレベルのキャッシュに存在してもよく、これらのキャッシュは、機能によってさらに分割されてもよく、あるキャッシュが命令を保持し、別のキャッシュがプロセッサまたはプロセッサによって使用される非命令データを保持するようにする。メモリは、様々ないわゆる不均等メモリアクセス(NUMA)コンピュータアーキテクチャのいずれかで知られているように、異なるCPUまたはCPUのセットにさらに分散され関連付けられることがある。いくつかの実施形態では、メインメモリまたはメモリサブシステム604は、CPU602によって使用されるメモリの制御および流れのための要素を含むことができる。これは、メモリコントローラ605を含むことができる。
【0091】
メモリバス603は、CPU602、メモリサブシステム604、およびI/Oバスインタフェース610の間の直接通信経路を提供する単一のバス構造として
図6に示されているが、メモリバス603は、いくつかの実施形態では、複数の異なるバスまたは通信経路で構成されていてよく、これらは、階層的、スター型またはウェブ構成におけるポイントツーポイントリンク、複数の階層的バス、並列および冗長経路、または他の適切なタイプの構成などの様々な形態のいずれかで配置されていてよい。さらに、I/Oバスインタフェース610およびI/Oバス608は、単一のそれぞれのユニットとして示されているが、コンピュータシステム601は、いくつかの実施形態において、複数のI/Oバスインタフェースユニット610、複数のI/Oバス608、またはその両方を含むことができる。さらに、複数のI/Oインタフェースユニットが示されているが、これはI/Oバス608を様々なI/O装置に走る様々な通信経路から分離しているが、他の実施形態では、I/O装置の一部または全部が1つまたは複数のシステムI/Oバスに直接接続されてもよい。
【0092】
いくつかの実施形態では、コンピュータシステム601は、マルチユーザメインフレームコンピュータシステム、シングルユーザシステム、またはサーバコンピュータもしくは直接ユーザインターフェースをほとんど持たないが、他のコンピュータシステム(クライアント)から要求を受け取る同様の装置であってもよい。さらに、いくつかの実施形態では、コンピュータシステム601は、デスクトップコンピュータ、ポータブルコンピュータ、ラップトップまたはノートブックコンピュータ、タブレットコンピュータ、ポケットコンピュータ、電話、スマートフォン、モバイルデバイス、または任意の他の適切なタイプの電子装置として実装することができる。
【0093】
図6は、例示的なコンピュータシステム601の代表的な例示的な構成要素を描写することを意図していることに留意されたい。しかしながら、いくつかの実施形態では、個々のコンポーネントは、
図6に表されるような複雑さよりも大きいまたは小さい複雑さを有することがあり、
図6に示されるもの以外のまたはそれに加えてコンポーネントが存在することがあり、そのようなコンポーネントの数、タイプ、および構成は異なることがある。
【0094】
本発明は、任意の可能な技術詳細レベルで統合されたシステム、方法もしくはコンピュータプログラム製品またはそれらの組み合せとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでよい。
【0095】
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよい。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶装置は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0096】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピュータ装置/処理装置へダウンロード可能である。あるいは、ネットワーク(例えばインターネット、LAN、WANもしくはワイヤレスネットワークまたはこれらの組み合わせ)を介して、外部コンピュータまたは外部記憶装置へダウンロード可能である。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはこれらの組み合わせを備えることができる。各コンピュータ装置/処理装置内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、各々のコンピュータ装置/処理装置におけるコンピュータ可読記憶媒体に記憶するために転送する。
【0097】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用構成データ、または、スモールトークやC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン型ソフトウェアパッケージとして完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または、完全にリモートコンピュータもしくはサーバ上で実行可能である。後者の場合、リモートコンピュータは、LANやWANを含む任意の種類のネットワークを介してユーザのコンピュータに接続してもよいし、外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネットを介して)接続してもよい。いくつかの実施形態において、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行する目的で当該電子回路をカスタマイズするために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行することができる。
【0098】
本発明の実施形態は、本明細書において、本発明の実施形態に係る方法、装置(システム)、およびコンピュータプログラム製品のフローチャートもしくはブロック図またはその両方を参照して説明されている。フローチャートもしくはブロック図またはその両方における各ブロック、および、フローチャートもしくはブロック図またはその両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実行可能である。
【0099】
上記のコンピュータ可読プログラム命令は、機械を生産するために、コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供してよい。これにより、かかるコンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行するための手段を創出する。上記のコンピュータ可読プログラム命令はさらに、コンピュータ、プログラマブルデータ処理装置もしくは他の装置またはこれらの組み合わせに対して特定の態様で機能するよう命令可能なコンピュータ可読記憶媒体に記憶してよい。これにより、命令が記憶された当該コンピュータ可読記憶媒体は、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作の態様を実行するための命令を含む製品を構成する。
【0100】
また、コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブル装置、または他の装置にロードし、一連の動作ステップを当該コンピュータ、他のプログラマブル装置、または他の装置上で実行させることにより、コンピュータ実行プロセスを生成してもよい。これにより、当該コンピュータ、他のプログラマブル装置、または他の装置上で実行される命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行する。
【0101】
本開示の図面におけるフローチャートおよびブロック図は、本発明の種々の実施形態に係るシステム、方法およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図における各ブロックは、特定の論理機能を実行するための1つ以上の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことができる。他の一部の実装形態において、ブロック内に示した機能は、各図に示す順序とは異なる順序で実行してもよい。例えば、連続して示される2つのブロックは、実際には、関係する機能に応じて、同時もしくは略同時に実行してもよいし、または場合により逆順で実行してもよい。なお、ブロック図もしくはフローチャートまたはその両方における各ブロック、および、ブロック図もしくはフローチャートまたはその両方における複数のブロックの組み合わせは、特定の機能または動作を行う、または専用ハードウェアとコンピュータ命令との組み合わせを実行する専用ハードウェアベースのシステムによって、実行可能である。
【0102】
本発明の様々な実施形態の説明は、例示の目的で提示されたが、開示された実施形態を網羅的または限定することを意図していない。説明した実施形態の範囲および精神から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見出される技術に対する実用化または技術的改善、または当業者が本明細書に開示された実施形態を理解することを可能にするために最適に説明するために選択された。
【国際調査報告】