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

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

▶ キンドリル・インクの特許一覧

特許7488338マイクロサービス変更管理およびアナリティクス
<>
  • 特許-マイクロサービス変更管理およびアナリティクス 図1
  • 特許-マイクロサービス変更管理およびアナリティクス 図2A
  • 特許-マイクロサービス変更管理およびアナリティクス 図2B
  • 特許-マイクロサービス変更管理およびアナリティクス 図2C
  • 特許-マイクロサービス変更管理およびアナリティクス 図2D
  • 特許-マイクロサービス変更管理およびアナリティクス 図2E
  • 特許-マイクロサービス変更管理およびアナリティクス 図3
  • 特許-マイクロサービス変更管理およびアナリティクス 図4
  • 特許-マイクロサービス変更管理およびアナリティクス 図5
  • 特許-マイクロサービス変更管理およびアナリティクス 図6
  • 特許-マイクロサービス変更管理およびアナリティクス 図7
  • 特許-マイクロサービス変更管理およびアナリティクス 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-13
(45)【発行日】2024-05-21
(54)【発明の名称】マイクロサービス変更管理およびアナリティクス
(51)【国際特許分類】
   G06F 11/07 20060101AFI20240514BHJP
   G06F 8/70 20180101ALI20240514BHJP
【FI】
G06F11/07 190
G06F8/70
G06F11/07 140A
【請求項の数】 20
(21)【出願番号】P 2022532739
(86)(22)【出願日】2020-11-20
(65)【公表番号】
(43)【公表日】2023-02-03
(86)【国際出願番号】 IB2020060953
(87)【国際公開番号】W WO2021111235
(87)【国際公開日】2021-06-10
【審査請求日】2023-05-16
(31)【優先権主張番号】16/701,398
(32)【優先日】2019-12-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521555742
【氏名又は名称】キンドリル・インク
【氏名又は名称原語表記】Kyndryl Inc.
【住所又は居所原語表記】One Vanderbilt Avenue,15th Floor,New York,New York 10017,USA
(74)【代理人】
【識別番号】110000420
【氏名又は名称】弁理士法人MIP
(72)【発明者】
【氏名】ゾロトウ,クリア
(72)【発明者】
【氏名】ファウト,ウルリケ
(72)【発明者】
【氏名】オーズマン、セルチュク
【審査官】児玉 崇晶
(56)【参考文献】
【文献】特開2019-153017(JP,A)
【文献】特開2015-153139(JP,A)
【文献】特開2018-120465(JP,A)
【文献】特開2010-086516(JP,A)
【文献】米国特許出願公開第2017/0046146(US,A1)
【文献】米国特許出願公開第2020/0366580(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
G06F 8/70
(57)【特許請求の範囲】
【請求項1】
コンピュータ・ハードウェアで、複数のプロセスインスタンス表現を生成するステップであって、各プロセスインスタンス表現は、複数のマイクロサービスのうちの少なくとも1つを使用するプロセスによって実行される動作の順序付けシーケンスを含む、対応するプロセスパスに基づいて生成される、生成するステップと、
前記複数のプロセスインスタンス表現に基づいて、マイクロサービスネットワーク表現を構築するステップであって、前記マイクロサービスネットワークの各要素は、一対のマイクロサービス間のインタフェースに対応する、構築するステップと、
前記マイクロサービスネットワーク表現に基づいて、前記複数のマイクロサービス各々について相対頻度を決定するステップであって、各相対頻度は、マイクロサービスにおける変更が、前記複数のマイクロサービスのうちの少なくとも1つを用いる少なくとも1つのプロセスの性能に影響を与える可能性に対応する、決定するステップと
を含む、方法。
【請求項2】
前記プロセスインスタンス表現は、呼び出し行列を含み、前記マイクロサービスネットワーク表現は、前記呼び出し行列を総和するための行列加算を実行することによって構築されたネットワーク行列を含む、請求項1に記載の方法。
【請求項3】
前記決定するステップは、前記ネットワーク行列に基づいて相対頻度行列を生成するステップを含む、請求項2に記載の方法。
【請求項4】
前記マイクロサービスにおける変更は、前記マイクロサービスと、前記複数のマイクロサービスのうちの少なくとも1つを使用する他のプロセスとの間のインタフェースにおける変更を含む、請求項1に記載の方法。
【請求項5】
前記マイクロサービスにおける変更は、前記マイクロサービスの1つのバージョンを、前記マイクロサービスの別のバージョンの代わりに用いることを含む、請求項1に記載の方法。
【請求項6】
プロセスエラーの予想される原因としてマイクロサービスを識別することによって、前記プロセスエラーに応答するステップをさらに含む、請求項1に記載の方法。
【請求項7】
前記マイクロサービスを障害とマークすることと、
前記マイクロサービスの異なるバージョンを選択することと、
ネットワーク化されたマイクロサービスレポジトリから前記マイクロサービスの前記異なるバージョンを読み出すことと
によって、前記予想される原因として識別された前記マイクロサービスの現在のバージョンをロールバックするステップをさらに含む、請求項6に記載の方法。
【請求項8】
動作を開始するように構成されたプロセッサを含むシステムであって、前記動作が、
複数のプロセスインスタンス表現を生成することであって、各プロセスインスタンス表現は、複数のマイクロサービスのうちの少なくとも1つを使用するプロセスによって実行される動作の順序付けシーケンスを含む、対応するプロセスパスに基づいて生成される、生成することと、
前記複数のプロセスインスタンス表現に基づいて、マイクロサービスネットワーク表現を構築することであって、前記マイクロサービスネットワークの各要素は、一対のマイクロサービス間のインタフェースに対応する、構築することと、
前記マイクロサービスネットワーク表現に基づいて、前記複数のマイクロサービス各々について相対頻度を決定することであって、各相対頻度は、マイクロサービスにおける変更が、前記複数のマイクロサービスのうちの少なくとも1つを用いる少なくとも1つのプロセスの性能に影響を与える可能性に対応する、決定することと
を含む、システム。
【請求項9】
前記プロセスインスタンス表現は、呼び出し行列を含み、前記マイクロサービスネットワーク表現は、前記呼び出し行列を総和するための行列加算を実行することによって構築されたネットワーク行列を含む、請求項8に記載のシステム。
【請求項10】
前記決定することは、前記ネットワーク行列に基づいて相対頻度行列を生成することを含む、請求項9に記載のシステム。
【請求項11】
前記マイクロサービスにおける変更は、前記マイクロサービスと、前記複数のマイクロサービスのうちの少なくとも1つを使用する他のプロセスとの間のインタフェースにおける変更を含む、請求項8に記載のシステム。
【請求項12】
前記マイクロサービスにおける変更は、前記マイクロサービスの1つのバージョンを、前記マイクロサービスの別のバージョンの代わりに用いることを含む、請求項8に記載のシステム。
【請求項13】
前記プロセッサは、
プロセスエラーの予想される原因としてマイクロサービスを識別することによって、前記プロセスエラーに応答することと、
前記マイクロサービスを障害とマークし、前記マイクロサービスの異なるバージョンを選択し、ネットワーク化されたマイクロサービスレポジトリから前記マイクロサービスの前記異なるバージョンを読み出すことによって、前記予想される原因として識別された前記マイクロサービスの現在のバージョンをロールバックすることと
をさらに含む動作を開始するよう構成される、請求項8に記載のシステム。
【請求項14】
コンピュータプログラム製品であって、前記コンピュータプログラム製品は、1または複数のコンピュータ可読記憶媒体と、前記1または複数のコンピュータ可読記憶媒体にあわせて格納されるプログラム命令とを含み、前記プログラム命令は、プロセッサによって実行可能であり、前記プロセッサに、
コンピュータ・ハードウェアで、複数のプロセスインスタンス表現を生成することであって、各プロセスインスタンス表現は、複数のマイクロサービスのうちの少なくとも1つを使用するプロセスによって実行される動作の順序付けシーケンスを含む、対応するプロセスパスに基づいて生成される、生成することと、
前記複数のプロセスインスタンス表現に基づいて、マイクロサービスネットワーク表現を構築することであって、前記マイクロサービスネットワークの各要素は、一対のマイクロサービス間のインタフェースに対応する、構築することと、
前記マイクロサービスネットワーク表現に基づいて、前記複数のマイクロサービス各々について相対頻度を決定することであって、各相対頻度は、マイクロサービスにおける変更が、前記複数のマイクロサービスのうちの少なくとも1つを用いる少なくとも1つのプロセスの性能に影響を与える可能性に対応する、決定することと
を含む動作を開始させる、コンピュータプログラム製品。
【請求項15】
前記プロセスインスタンス表現は、呼び出し行列を含み、前記マイクロサービスネットワーク表現は、前記呼び出し行列を総和するための行列加算を実行することによって構築されたネットワーク行列を含む、請求項14に記載のコンピュータプログラム製品。
【請求項16】
前記決定することは、前記ネットワーク行列に基づいて相対頻度行列を生成することを含む、請求項15に記載のコンピュータプログラム製品。
【請求項17】
前記マイクロサービスにおける変更は、前記マイクロサービスと、前記複数のマイクロサービスのうちの少なくとも1つを使用する他のプロセスとの間のインタフェースにおける変更を含む、請求項14に記載のコンピュータプログラム製品。
【請求項18】
前記マイクロサービスにおける変更は、前記マイクロサービスの1つのバージョンを、前記マイクロサービスの別のバージョンの代わりに用いることを含む、請求項14に記載のコンピュータプログラム製品。
【請求項19】
プロセスエラーの予想される原因としてマイクロサービスを識別することによって、前記プロセスエラーに応答するステップをさらに含む、請求項14に記載のコンピュータプログラム製品。
【請求項20】
前記マイクロサービスを障害とマークすることと、
前記マイクロサービスの異なるバージョンを選択することと、
ネットワーク化されたマイクロサービスレポジトリから前記マイクロサービスの前記異なるバージョンを読み出すことと
によって、前記予想される原因として識別された前記マイクロサービスの現在のバージョンをロールバックするステップをさらに含む、請求項19に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ソフトウェア開発および運用に関し、より詳細には、マイクロサービスおよびプロセスインスタンス内で機能を提供する他のネットワーク化コンポーネントの回復力(resiliency)を監視および維持することに関する。
【背景技術】
【0002】
マイクロサービスは、各アプリケーションを、例えば特定のコーディング言語に依存しない、より小さな、独立してデプロイ可能なサービスにブレークダウンすることによって、ソフトウェアアプリケーションを構築するために使用することができる、ソフトウェア構成である。マイクロサービスを使用して、大きく複雑なアプリケーションを、再構成されるときに大規模で高度に複雑なアプリケーションの機能性を提供する、より小さな実行ファイルの基本ブロックに分割することができる。
【発明の概要】
【0003】
1または複数の実施形態においては、方法は、複数のプロセスインスタンス表現を生成するステップを含み、各プロセスインスタンス表現は、複数のマイクロサービスのうちの少なくとも1つを使用するプロセスによって実行される動作の順序付けシーケンスを含む。方法は、また、複数のプロセスインスタンス表現に基づいて、マイクロサービスネットワーク表現を構築するステップを含み、マイクロサービスネットワークの各要素は、一対のマイクロサービス間のインタフェースに対応する。加えて、方法は、マイクロサービスネットワーク表現に基づいて、複数のマイクロサービス各々について相対頻度を決定するステップを含み、各相対頻度は、マイクロサービスにおける変更が、複数のマイクロサービスのうちの少なくとも1つを用いる少なくとも1つのプロセスの機能に影響を与える可能性に対応する。
【0004】
1または複数の実施形態において、システムは、動作を開始するように構成されたプロセッサを含む。動作は、複数のプロセスインスタンス表現を生成することを含み、各プロセスインスタンス表現は、複数のマイクロサービスのうちの少なくとも1つを使用するプロセスによって実行される動作の順序付けシーケンスを含む。動作は、複数のプロセスインスタンス表現に基づいて、マイクロサービスネットワーク表現を構築することを含み、マイクロサービスネットワークの各要素は、一対のマイクロサービス間のインタフェースに対応する。加えて、動作は、マイクロサービスネットワーク表現に基づいて、複数のマイクロサービス各々について相対頻度を決定することを含み、各相対頻度は、マイクロサービスにおける変更が、複数のマイクロサービスのうちの少なくとも1つを用いる少なくとも1つのプロセスの性能に機能を与える可能性に対応する。
【0005】
1または複数の実施形態において、コンピュータプログラム製品は、その上にプログラム命令を有する1または複数のコンピュータ可読記憶媒体を含む。命令は、プロセッサによって、動作を開始するよう実行可能である。動作は、複数のプロセスインスタンス表現を生成することを含み、各プロセスインスタンス表現は、複数のマイクロサービスのうちの少なくとも1つを使用するプロセスによって実行される動作の順序付けシーケンスを含む、対応するプロセスパスに基づいて生成される。動作は、複数のプロセスインスタンス表現に基づいて、マイクロサービスネットワーク表現を構築することを含み、マイクロサービスネットワークの各要素は、一対のマイクロサービス間のインタフェースに対応する。加えて、動作は、マイクロサービスネットワーク表現に基づいて、複数のマイクロサービス各々について相対頻度を決定することを含み、各相対頻度は、マイクロサービスにおける変更が、複数のマイクロサービスのうちの少なくとも1つを用いる少なくとも1つのプロセスの機能に影響を与える可能性に対応する。
【0006】
この概要のセクションは、特定の概念を導入するためにだけに提供され、特許請求される主題の任意の重要なまたは本質的な特徴を特定するために提供されるものではない。本発明の構成の他の特徴は、添付の図面および以下の詳細な説明から明らかになるであろう。
【0007】
本発明の構成は、添付図面に例として示されている。図面は、しかしながら、本発明の構成を図示された特定の実施形態のみに限定するものと解釈されるべきではない。以下の詳細な説明および図面を参照することで、種々の側面および利点が明らかになるであろう。
【図面の簡単な説明】
【0008】
図1図1は、実施形態による、マイクロサービスの変更を管理し、関連するアナリティクスを提供するためのシステムを示す。
図2A図2Aは、実施形態による、マイクロサービスの変更を管理し、関連するアナリティクスを提供するためのシステムによって実行される手順の例示的なセットを示す。
図2B図2Bは、実施形態による、マイクロサービスの変更を管理し、関連するアナリティクスを提供するためのシステムによって実行される手順の例示的なセットを示す。
図2C図2Cは、実施形態による、マイクロサービスの変更を管理し、関連するアナリティクスを提供するためのシステムによって実行される手順の例示的なセットを示す。
図2D図2Dは、実施形態による、マイクロサービスの変更を管理し、関連するアナリティクスを提供するためのシステムによって実行される手順の例示的なセットを示す。
図2E図2Eは、実施形態による、マイクロサービスの変更を管理し、関連するアナリティクスを提供するためのシステムによって実行される手順の例示的なセットを示す。
図3図3は、実施形態による、マイクロサービスの変更を管理し、関連するアナリティクスを提供するためのシステムによって実行される一定の動作機能を示す。
図4図4は、実施形態による、マイクロサービスの変更を管理し、関連するアナリティクスを提供する方法を示す。
図5図5は、実施形態による、マイクロサービスの変更を管理し、関連するアナリティクスを提供するシステムによって、潜在的な問題原因として示されたマイクロサービスをロールバックする方法を示す。
図6図6は、実施形態によるクラウドコンピューティング環境を示す。
図7図7は、実施形態による抽象化モデルレイヤを示す。
図8図8は、実施形態によるクラウドコンピューティングノードを示す。
【発明を実施するための形態】
【0009】
本開示は、新規な特徴を定義する特許請求の範囲で結論されるが、本開示内で説明される種々の特徴は、図面と結合して説明を考慮することにより、より良く理解されるであろうと考えられる。本明細書で説明されるプロセス、マシン、製品およびそれらの任意の変形例は、例示のために提供される。本開示内で説明される特定の構造および機能的詳細は、限定するものとして解釈されるべきではなく、特許請求の範囲の基礎としてのみ解釈されるべきであり、また、事実上適切に詳細な構造で説明される特徴を種々使用することを当業者に教示するための代表的な基礎として解釈されるべきである。さらに、本開示内で使用される用語および句は、限定することを意図するものではなく、むしろ、説明される特徴の理解可能な説明を提供することを意図するものである。
【0010】
本開示は、ソフトウェア開発および運用(DevOps)に関し、より詳細には、マイクロサービスならびにプロセスインスタンス表現に加わる他のネットワーク化された要素、システムおよび機能の回復力を監視することおよび維持することに関する。よって、本明細書に開示される発明の側面は、大部分がマイクロサービスの文脈において説明されているが、プロセスインスタンス表現において動作するネットワーク化された要素、システムおよび機能に対しても説明されるように同一の側面が適用されることが理解されるべきである。
【0011】
本明細書で定義されるように、「マイクロサービス」は、(i)(ソフトウェアプログラム自体に含まれない、命令(コード)からソフトウェアプログラムによって呼び出される命令とは区別される)ソフトウェアプログラムを含む命令において完全に具現化され、かつ(ii)サービス指向アーキテクチャによって典型的に使用される伝統的な、いわゆる「マイクロサービス」との構造および文脈においてアーキテクチャ的に類似している、任意のソフトウェア構成である。典型的には、ソフトウェアプログラムの伝統的なサービス(例えば、サービス指向アーキテクチャに基づくソフトウェアプログラム)よりも小さいが、マイクロサービスは、サイズによってのみ特徴づけられるものではなく、マイクロサービスと他のサービスとの間に決定的なサイズの境界もまた存在しない。
【0012】
マイクロサービスの大部分は、モノリシックのアプリケーションを、RESTfulアプリケーション・プログラミング・インタフェース(API)および他のネットワークベースのメッセージング・プロトコルを介して通信する分解されたサービスにモーフィングすることによって開発された、DevOps原則の共通セットから生まれた。DevOpsは、ソフトウェア製品およびサービスのプロダクションおよびデプロイメントを高速化することを意図した、ソフトウェア開発および情報技術(IT)運用に関連する複雑な相互依存プロセスの計画および調整へのアプローチである。モノリシックプログラムの修正は、典型的には少数であり、ごくまれであり、しばしば任意の修正の前に動作の依存性およびリスクが決定されることを必要とする。これとは対照的に、DevOpsの目標は、大きな修正を小さな増分ステップにブレークダウンすることによって引き起こされる、小さくおよび頻繁な変更の最適化である。DevOpsの特定の文脈では、マイクロサービスは、可用性、修正可能性およびスケーラビリティを含む、有意な利益を提供することができる。
【0013】
マイクロサービスでは、ソフトウェアアプリケーションは、複数の小さなサイズのランタイムサービスを含む。よって、たとえ小さな変更であってもアプリケーション全体の完全なテストサイクルを必要とするモノリスとして、アプリケーション全体をビルドし、統合し、テストするのではなく、マイクロサービスは、明確に定義されたアプリケーションプログラミングインタフェース(API)を有する独立したランタイムサービスとして配信されてもよい。したがって、マイクロサービスのアプローチは、プログラムまたはアプリケーションに対し、より小さくより頻繁に実装される増分変更を迅速に配信することを可能にする。
【0014】
新しいマイクロサービスおよび既存のマイクロサービスの更新されたバージョンの迅速なデプロイメントは、複数のマイクロサービス上に構築されたソフトウェアアプリケーションの運用性を維持するための難題をもたらす可能性がある。種々のベンダまたはインハウスの開発者が直接本番に変更を推し進める場合に、課題がかなりのものとなり得る。ベンダが一日に10個または50個のマイクロサービスの変更を推し進めることは、前例のないことではない。さらに、ベンダまたはインハウスの開発者が直接本番に変更を推し進める場合、以前のソフトウェア命令を含むコンテナ化サービスがしばしば破壊される。このように、アプリケーションのマイクロサービスに関する変更の履歴は、不足している可能性がある。任意の変更をロールバックする能力は、マイクロサービスに関連する種々のアナリティクスを提供する能力と同様に、それに応じて制約される。
【0015】
本明細書に開示される方法、システム、およびコンピュータプログラム製品は、マイクロサービスに対する変更を効率的に追跡するためのデータ構造および表現を生成することができる。いくつかの実施形態においては、ベクトル、行列および多次元テンソルを用いて種々の表現が構築されて、複数のマイクロサービスを組みわせることによって構築されたプロセスをコンパクトに表現する。本明細書に開示される本発明の構成によれば、マイクロサービスのネットワークの表現を構築することができ、ここで、ネットワークは、複数のプロセスによって使用されるマイクロサービスを含む。
【0016】
マイクロサービスのネットワークを構築する側面は、変更が行われたプロセスに関してだけでなく、ネットワークの一部を形成する他のプロセス各々に関しても、マイクロサービス変更が行われた効果を評価する能力である。複雑な銀行アプリケーションからインターネットオブシングス(IoT)の一部である単一のデバイスに及び、異なるプロセスによって同一のマイクロサービスが使用されるケースでは、マイクロサービスにおける変更の影響は、マイクロサービスをまた使用する他のプロセス各々に影響を及ぼす可能性がある。単一プロセスを見ることに限定せず、サービスのポートフォリオとしてマイクロサービスを考えることで、単に切り離されたプロセス上での影響だけでなく、プロセスのポートフォリオ上でのマイクロサービスの変更の影響を評価することが可能になる。
【0017】
本明細書に開示される本発明の構成の別の側面は、マイクロサービスの変更を監視するための種々のクラスのデータの組み合わせおよびコンパクトな表現である。データの組み合わせおよびコンパクトな表現により、コンピュータシステムが、変更をより効率的に監視することが可能となり、ひいては、マイクロサービス監視システムの性能効率を改善する。
【0018】
本明細書に開示される本発明の構成の別の側面は、マイクロサービスのネットワークの動的挙動における変化を評価するための種々のアナリティクスの生成である。アナリティクスは、マイクロサービス修正および1または複数のマイクロサービスに対する変更の予想される影響を評価することができる。アナリティクスは、1または複数のマイクロサービスにおける最近の変更または修正に起因したシステムエラーおよびプロセスの基準に達しない性能の考えられる原因を評価することができる。アナリティクスは、DevOpsチームが、マイクロサービスのネットワークを「正常な」または「正しく機能している(well-functioning)」状態に戻すために(新しいバージョンが導入された後に以前のバージョンに)ロールバックすべきマイクロサービスを識別することを可能にし得る。
【0019】
さらに別の側面は、ユーザが、マイクロサービスのネットワークの一部である1または複数のマイクロサービスへの変更の特質および予想される影響を、より簡単かつ迅速に判断することが可能なやり方でのマイクロサービス変更および関連するアナリティクスの視覚的提示である。
【0020】
本開示で説明される実施形態のさらなる側面は、以下の図面を参照してより詳細に説明される。説明を簡単かつ明瞭なものとするために、図面に示された要素は、必ずしも縮尺通りに描かれていない。例えば、いくつかの要素の寸法は、明瞭化のために他の要素に対して誇張されている可能性がある。さらに、適切であると考えられる場合には、対応する、類似のまたは同様の特徴を示すために参照番号が図面の間で繰り返される。
【0021】
最初に図1を参照すると、システム100は、コンピュータソフトウェアプロセスを構築するために使用されるマイクロサービスに対する変更および修正の予想される影響を管理し、また、評価するためのシステムの実施形態を示す。システム100は、そのコンポーネントが以下に詳細に説明されるが、図8を参照して説明するコンピュータシステム812などのコンピュータシステムのプロセッサ816などの1または複数のプロセッサ上で実行可能なコンピュータ命令(例えば、1または複数のプログラムモジュール)において実装されてもよい。コンピュータシステムは、また図8を参照して説明されるコンピューティングノード800のようなコンピューティングノードの要素であってもよい。他の実施形態においては、システム100は、ハードワイヤード回路で実装されてもよいし、あるいは、ハードワイヤード回路とコンピュータシステム実行可能命令との組み合わせで実装されてもよい。
【0022】
動作上、システム100は、それぞれが、1または複数のコンピュータシステムによる異なるプロセスの実行によって呼び出される、複数のマイクロサービスの呼び出し(invocation)を表す、プロセスインスタンス表現を生成する。1つのプロセスインスタンス表現は、特定のプロセスによってマイクロサービスが呼び出される順序付けられたシーケンスであるプロセスパスに対応する。システム100は、複数のプロセスインスタンス表現に基づいて、マイクロサービスネットワーク表現を構築し、ここで、マイクロサービスネットワークの各要素は、一対のマイクロサービス間のインタフェースに対応する。本明細書で定義されるように、「インタフェース」は、1つのマイクロサービスの1つの実行が終了し、別のマイクロサービスが呼び出される処理パス内のポイントを意味する。
【0023】
システム100は、マイクロサービスネットワーク表現に基づいて、マイクロサービスの変化が、マイクロサービスの少なくとも1つを使用する少なくとも1つのプロセスの機能に影響を及ぼす可能性を示す相対頻度を決定する。マイクロサービスにおける変更は、マイクロサービスにインタフェースを追加またはマイクロサービスからインタフェースをドロップすること、マイクロサービスの現在のバージョンを新しいバージョンで置き換えることなどを含んでもよい。システム100は、図8に示すディスプレイ824のようなディスプレイを使用してユーザに視覚的に、プロセスパス、呼び出し表現、およびネットワーク表現、ならびに相対頻度を表現することができる。
【0024】
システム100は、1または複数のコンピュータシステム上で実行する、または「稼働する(run)」1または複数のプロセスを稼働する事業体(または他のユーザ)によって実装されてもよい。少なくともいくつかのプロセスは、マイクロサービスアーキテクチャに従って構成されてもよい。このように構成されるプロセスは、組み合わせて特定のプロセスを実行するためにコンピュータシステム実行可能命令を提供する、独立してデプロイ可能な、典型的には小型のモジュール形式のサービス(マイクロサービス)の一そろいを含むことができる。マイクロサービスは、DevOps原理に基づいて作られてもよく、1または複数のマイクロサービスベンダおよび/または事業体のインハウス開発者によって、事業体に提供されてもよい。
【0025】
例示的に、システム100は、通信ネットワーク102を介して、1または複数のマイクロサービスベンダのネットワークサイト104と通信可能に結合する。加えて、または、代替的に、システム100は、通信ネットワーク102を介して、事業体ワイドのインハウス開発者ネットワークサイト106に通信可能に結合してもよい。システム100は、また示されるように、通信ネットワーク102を介して、1または複数のデータベース108に通信可能に結合する。1または複数のデータベース108は、以下に説明するように、マイクロサービスリポジトリ並びに通信ネットワーク102を介してアクセス可能な他のデータベースを含んでもよい。
【0026】
通信ネットワーク102は、システム100や個々のデバイスおよびデータベースを含む種々のデータ処理システム間の通信リンクを提供することができる。通信リンクは、有線通信リンク、無線通信リンク、または光ファイバケーブルのような接続を含んでもよく、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、無線ネットワーク(例えば、無線WANおよび/または無線LAN)、移動または携帯ネットワーク、仮想プライベートネットワーク(VPN)、インターネット、公衆電話交換網(PSTN)のような異なる通信技術の1または複数(または任意の組み合わせ)として実装または該異なる通信技術の1または複数を含んでもよい。有線および/または無線の通信リンクを介して通信ネットワーク102に結合することができるデバイスは、メインフレームコンピュータ、ワークステーション、パーソナルコンピュータ、ポータブルコンピューティングまたは通信デバイス、タブレットコンピュータ、携帯電話などを含んでもよい。
【0027】
異なるマイクロサービスおよび/または同一マイクロサービスの異なるバージョンは、通信ネットワーク102を介して、1または複数のマイクロサービスベンダのネットワークサイト104からマイクロサービスベンダまたは複数のベンダによって配信されてもよい。例えば、ベンダは、軽量コンテナを使用してクラウド固有のマイクロサービスをデプロイしてもよく、この軽量コンテナは、異なる運用環境間でのソフトウェアの移転を可能にし、中央でホストされたクラウドベースのサーバから配信されてもよい。同様に、異なるマイクロサービスおよび/または同一マイクロサービスの異なるバージョンは、事業体ワイドなインハウス開発者ネットワークサイト106から通信ネットワーク102越しにデプロイされてもよい。DevOpsのプラクティスおよび非中央集権化された連続的な配信に基づくマイクロサービスの迅速な開発およびデプロイにより、明確な利点が創出されるが、システム100により提供され得る、密接かつ効果的な監視を必要とする。
【0028】
システム100は、例示的には、アソシエータ(associator)110、コンストラクタ(constructor)112、アナライザ(analyzer)114およびビジュアライザ(visualizer)116を含む。アソシエータ110は、1または複数のデータベース108(例えば、マイクロサービスベンダのデータベース)からデータ(例えば、メタデータ)を読み出し、ここで、データは、個々のマイクロサービスに一意に関連付けられる。アソシエータ110によって読み出されたデータは、記述的なメタデータ、構造的なメタデータ、管理性のメタデータ、統計的メタデータおよび/またはマイクロサービスに対応する他のデータであってもよい。例えば、特定のマイクロサービスに対応するデータは、ベンダID、マイクロサービスのバージョンの標示、バージョンの日付、マイクロサービスの1または複数の他のマイクロサービスとのインタフェースの数、および、他のマイクロサービス情報を含んでもよい。アソシエータ110によって読み出されるデータ(例えば、メタデータ)は、ある実施形態においては、ベクトル的に表されてもよい。例えば、マイクロサービスに対応する4要素ベクトル、または、4-タプル(x,x,x,x)=(マイクロサービスID、マイクロサービスベンダ、マイクロサービスバージョン番号、インタフェース数)は、マイクロサービスに割り当てられたID、x、マイクロサービスを提供しているベンダ、x、マイクロサービスのバージョン、x、および、マイクロサービスのインタフェース(例えば、マイクロサービスを呼び出す、および/またはマイクロサービスによって呼び出される他のマイクロサービス)、xを示す。
【0029】
コンストラクタ112は、個々のプロセスと、そこからプロセスがビルドされる構成マイクロサービスとに対応する異なるクラスのデータの異なる表現を構成する。以下でより詳細に説明されるある実施形態においては、コンストラクタ112は、アソシエータ110によって読み出されるインタフェースデータを使用して、プロセスパスとしてプロセスを表すn要素ベクトルまたはn-タプルを生成する。コンストラクタ112によって構成されるプロセスパスは、マイクロサービスの順序付けシーケンスであり、ここで、順序付けシーケンスは、プロセスをコンピュータシステム上で実行することによって実現される動作を実行する際に各マイクロサービスが呼び出される順序を指定する。したがって、ベクトル表現において、ベクトルの各要素は、マイクロサービスIDに対応してもよく、ベクトル内の要素の位置は、プロセスの実行中にマイクロサービスが呼び出される順序を示してもよい。
【0030】
例えば、ベクトル(x,x,…x)=(start,1,3,1,2,5,6,end)は、指定された順序、より具体的には、IDが1であるマイクロサービスから開始されるプロセスの実行、で動作する、1から6で番号付けされた6つのマイクロサービスから構築された非同期関数(例えば、メッセージ)の表現を示す。マイクロサービス1が実行された後、IDが呼び出されるマイクロサービスが実行され、その後、マイクロサービス1が再度実行され、そのIDが2であるマイクロサービスなどなどがそのIDが6であるマイクロサービスが実行されるまで後続し、これによって、プロセスパスベクトル(Start,1,3,1,2,5,6,end)によって表されるプロセスの実行が終了する。
【0031】
事業体(または他のユーザ)は、1または複数のコンピュータシステムを使用して種々の動作を実行するために複数のプロセスに依存する可能性がある。したがって、ある実施形態においては、コンストラクタ112は、マイクロサービスのネットワークの表現を構築してもよく、ここで、ネットワークは、使用される異なるプロセスの各々のモジュール形式のコンポーネントであるマイクロサービスを含む。いくつかの実施形態においては、コンストラクタ112によって構築される表現は、行列である。プロセスパスに対応するデータ構造は、n行n列の(n×n)行列によって表されてもよく、ここでは、マイクロサービスを呼び出すかまたはコールするマイクロサービスに対応する行と、コールされるかまたは呼び出されるマイクロサービスに対応する列との各行列セルに1が加えられる。行列の全ての要素は、初期ではゼロである。
【0032】
一実施形態においては、コンストラクタ112は、(M+P)×(M+P)行列を構築してもよく、ここで、Mは、マイクロサービスのネットワークにおけるマイクロサービスの数を表し、Pは、プロセスの数を表す。(全てのプロセスが、マイクロサービスのネットワークに含まれる全てのマイクロサービスを必ず使用するというわけではなく、マイクロサービスがプロセスの少なくとも1つによって呼び出され、使用された場合に、そのマイクロサービスがマイクロサービスのネットワークに含まれることに留意されたい。)種々の実施形態においては、コンストラクタ112は、データ通信ネットワーク越しにデータ処理システムにマイクロサービスを配信するコンテナの同様の行列表現を生成してもよい。上述のものと同様の行列表現においては、各コンテナからコンテナへの呼び出し(container-to-container invocation)は、その行が呼び出しているコンテナに対応し、その列が呼び出されるコンテナに対応する、行列セルに1を加算する。各コンテナは、しかしながら、1または複数のマイクロサービスを包含する。よって、ある実施形態において、各コンテナは、その要素がコンテナによって包含されるマイクロサービスに対応する、ベクトルによって表すことができる。
【0033】
システム100は、ある実施形態においては、各マイクロサービスに関連し、アソシエータ110によって読み出されるデータ(例えば、メタデータ)に基づいてシステム生成されたマイクロサービス属性テーブルを含むデータベースを生成する。データベースは、複数のプロセスによって使用されるマイクロサービスに対応するマイクロサービスネットワーク行列と、コンストラクタ112によって構築されたような、各プロセスに対応するプロセスパスとを含んでもよい。ベクトルおよび行列は、テンソルを用いて任意の数の次元に一般化することができる。よって、ある実施形態においては、2次元マイクロサービス属性テーブル、2次元マイクロサービスネットワーク行列および1次元プロセスパスベクトルが5次元テンソルへ組み合わせられてもよい。(テンソルの文脈では、各次元は、典型的には、「軸」と呼ばれ、以下で使用される用語である。)多次元テンソルは、図3を参照して以下により詳細に説明するように、種々のクラスのシステム生成データを組み合わせるためにシステム100によって使用されてもよい。
【0034】
そこからプロセスが構築されるマイクロサービスの1または複数の新しいバージョンを導入することによって、プロセスが、しばしば非常に頻繁に、時間の経過にわたって改訂される。同様に、新たなマイクロサービスがプロセスに加えられる可能性があり、プロセスから現在のものが削除される可能性もある。システム100は、マイクロサービスの1または複数の各新しいバージョンまたは1または複数のプロセスの改定について、修正または更新されたネットワーク行列を作成することができ、それによって、マイクロサービスの現在のバージョンを、過去のバージョンおよび/または将来計画されたバージョンと比較するために用いることができる、時系列を生成することができる。
【0035】
アナライザ114は、比較に基づいて、マイクロサービスのネットワークおよび/または1または複数のマイクロサービスを使用する個々のプロセスにおける変更またはそれに対する変更の予想される影響を評価するためのアナリティクスを生成してもよい。例えば、アナライザ114は、行列減算を実行して、提案されたマイクロサービスネットワーク構造を現在のバージョンから減算することができ、これは、DevOpsチームに対し、ネットワークの、または、個々のプロセスの、性能または動的挙動に影響する可能性が最も高い特定のマイクロサービスおよび/またはマイクロサービスの一対のインタフェースを識別することができる。アナライザ114は、1または複数のマイクロサービスにおける変更または対する修正によって新たに更新されたプロセスが適切に実行できない場合、同一の手順を使用してもよい。アナライザ114は、DevOpsチームに対し、プロセスを「正常」状態または正しく機能する状態に戻すために最もロールバックが必要な可能性が高いマイクロサービスを識別することができる。マイクロサービスへの変更の影響を評価するための手順のアルゴリズム的側面は、以下の例示の文脈において説明される。提示の容易のため、また、一般性を失うことなく、非同期プロセスの実例(メッセージ)において説明したが、手順は、同期プロセスの実例(例えば、RESTful‐API)に対しても同様に適用可能であることに留意されたい。
【0036】
ここで、付加的に、図2A図2Eを参照すると、3つの例示的なプロセスパスについての呼び出し行列のコンストラクタ112による構築が、ネットワーク行列および対応する相対頻度行列の構築と同様に説明される。図2Aは、プロセス200、そのプロセスパスは、(start,1,3,1,2,5,6,end)でベクトル的に表すことができる上記のプロセスに対応する呼び出し行列を示す。プロセス200は、マイクロサービスMS1呼び出しから開始され、マイクロサービスMS1は、マイクロサービスMS3を呼び出し、マイクロサービスMS3は、次いで、マイクロサービスMS1を呼び出す。MS1が再び実行された後、マイクロサービスは、MS2を呼び出し、これは、実行し、マイクロサービスMS5を呼び出す。MS5は、実行し、次いで、マイクロサービスMS6を呼び出し、その完了時にプロセス200が終了する。
【0037】
呼び出し行列202は、プロセス200に対応するP1とラベル付けされた行(行7)を含む。呼び出し行列202は、また、説明される他の2つの例示的なプロセスの各々についての行(行8および9)も含む。(他のプロセスについての行を含む理由は、手順が説明されるにつれて明らかになるであろう。)呼び出し行列202の行7、列1は、MS1に対する初期のコールを示す1の値を有する。行1、列2および行1、列3は、両方とも1であり、それぞれMS1のMS2の呼び出しとMS1のMS3の呼び出しとを示す。呼び出し行列202の行2、列5は、1であり、MS2のMS5の呼び出しを示す。行3、列1は、1であり、MS3のMS1の呼び出しを示す。行5、列6は、1であり、MS5のMS6の呼び出しを示す。MS6は、プロセス200の実行を終了し、これは、呼び出し行列202の行6、列7での1によって示される。呼び出し行列202の他の全ての行‐列の要素は、ゼロである。
【0038】
呼び出し行列202の行4および列4は、プロセス200がマイクロサービスMS4を使用しないという事実から、全てゼロを含むことに留意されたい。MS4は、しかしながら、2つのプロセスのうちの他方で使用され、したがって、呼び出し行列202の一部であることに留意されたい。また、最終列の各行の合計は、行によって表されるマイクロサービスが、プロセス200によって実行される他のマイクロサービスへ行う呼び出しまたは「外向きのコール(outgoing call)」の数を表すことに留意されたい。呼び出し行列202の最終行における各マイクロサービス列の合計は、列によって表されるマイクロサービスに対してなされる入来コール(incoming call)の数を表す。呼び出し行列202の各セルが例示的に0と1のみを含むが、より一般的には、セルの数字は、2つのマイクロサービス間の呼び出しまたはインタフェースの数に対応することが指摘される。したがって、より一般的には、呼び出し行列によって表されるプロセスの実行中に、i番目のマイクロサービスがj番目のマイクロサービスをn回呼び出す場合、呼び出し行列のi番目の行、j番目の列は、値nをとり、対応する呼び出しまたはインタフェースの数を反映する。
【0039】
図2Bは、プロセス204の呼び出し行列表現を示し、そのプロセスパスは、マイクロサービスMS2の初期呼び出し、それがそれ自身を呼び出し、次いでマイクロサービスMS4を呼び出す、ことに対応して、ベクトルとして{start,2,2,4,2,1,5,2,6,end}で表される。マイクロサービスMS4は、実行し、マイクロサービスMS2を呼び出し、それが、マイクロサービスMS1を呼び出す。MS1は、実行し、マイクロサービスMS5を呼び出し、このマイクロサービスMS5が実行された後、マイクロサービスMS2を呼び出す。MS2は、実行し、マイクロサービスMS6を呼び出し、その実行がプロセスを終了する。実行呼出しシーケンスは、呼び出し行列206によって表される。行8、列2における1は、プロセス204によるマイクロサービスMS2の初期呼び出しを示す。MS2の自身のコールは、行2、列2の1によって示される。行2、列4の1は、MS2のマイクロサービスMS4の呼び出しを示す。行4、列2の1は、MS4のMS2の呼び出しを示し、行2、列1の1は、MS2のマイクロサービスMS1の呼び出しを示す、等々である。
【0040】
図2Cは、プロセス208の呼び出し行列表現を示し、そのプロセスパスは、(start,4,2,1,5,6,6,3,end)としてベクトル的に表される。プロセス208に対応する呼び出し行列210は、したがって、マイクロサービスが呼び出される順序でリストされた次のセル、行9、列4;行4、列2;行2、列1;行1、列5;行5、列6;行6、列6;行6、列3および行3、列9の各々に1を含み、最終セルは、プロセス208によるマイクロサービスMS3の実行が完了すると発生する、プロセス208の終了に対応する。
【0041】
図2Dは、3つのそれぞれ9×9の呼び出し行列202、206および210の行列加算を実行することによってコンストラクタ112が生成する、ネットワーク行列212を示す。行列総和は、マイクロサービスのネットワークを形成するマイクロサービス間のインタフェース(入来/外向きのインタフェース接続)を集約し、それらのうちの種々の1つは、プロセス200、204および208によって異なる組み合わせで使用される。分布または相対頻度行列は、アナライザ114によってネットワーク行列212から生成される。
【0042】
図2Eは、ネットワーク行列212に基づいて生成されるような相対頻度行列214を示す。相対頻度行列214は、行列212の各行の各セルをその行内のセルの総和(ゼロでない場合)によって割るアナライザ114よって生成される。よって、相対頻度行列214の行1においては、50%のマイクロサービスMS1のコールがマイクロサービスMS5に対してであり、一方25%だけがマイクロサービスMS2に対してであり、25%だけがマイクロサービスMS3に対してである。これは、マイクロサービスMS5が、マイクロサービスMS1に対する変更または修正の影響を最も受けやすいことを意味する。同様に、相対頻度行列214の行2は、33%のMS2のコールがMS1に対するものであり、一方、マイクロサービスMS4、MS5およびMS6が、それぞれ、MS2の呼び出しの17パーセントのシェア(プロセス204においてMS2がそれ自体を呼び出すので、パーセンテージは、合計が1にならない)だけを占めるので、マイクロサービスMS2がマイクロサービスMS1への変更によって最も影響を受けやすいことを示す。類似の分析が、同様に、入来コールの相対頻度に基づいてアナライザ114によって実行することができる。プロセス200、204および208、呼び出し行列202、206および210、ネットワーク行列212、並びに相対頻度行列214は、図示されるように、ビジュアライザ116によって視覚的に提示されてもよい。
【0043】
相対頻度行列214は、別のアナリティクスを提供する。行列のセル内の非ゼロ値が高いほど、そのセルの行に対応するマイクロサービスとそのセルの列に対応するマイクロサービスとの相対的な重要性が大きくなる。例えば、相対頻度行列214の最高のセル値は、行4、列2にある。次に高い値は行5、列6にある。したがって、プロセス200、204および208のうちの1または複数のエラーまたは故障の場合、マイクロサービスMS4およびマイクロサービスMS2、並びにマイクロサービス間のインタフェースが、DevOpsチームによって最初に考慮されるべきである。マイクロサービスMS5およびMS6並びにマイクロサービスインタフェースが次に考慮されるべきである。アナライザ114によって提供されるアナリティクスは、よって、DevOpsチームを、1または複数のマイクロサービスに対するいずれの変更または修正が、マイクロサービスのネットワークのプロセスの失敗または不十分な性能の原因であるかどうかを決定するように導くことができる。
【0044】
アナライザ114によって生成される別のアナリティクスは、新しいマイクロサービスインタフェースを導入するか、または古いものをドロップすることによってなされる、プロセスまたは複数プロセスに行われる逐次変更に対応する。変更は、変更に応答して、更新された呼び出し行列を生成するシステム100によって、追跡される。よって、プロセスに対応するm個の呼び出し行列の時系列は、1または複数の対のマイクロサービスの間の1または複数の新しいインタフェースが導入されること、および/または、1または複数の先行するものが削除されることともに発生したm個の更新を反映することができる。上述したように、呼び出し行列のi番目の行、j番目の列は、呼出しまたは一対のマイクロサービス間のインタフェースの数に対応する値nを仮定することに留意されたく、最後の1つからの最後から2番目の呼び出し行列の行列減算により、発生した特定の変更が識別される。
【0045】
例えば、i番目のマイクロサービスとj番目のマイクロサービスとの間のインタフェースの数が、プロセスのすぐ前のバージョンと最後のバージョンとの間で変更されない場合、行列減算は、結果として得られる行列のi番目の行、j番目の列においてゼロをもたらす。しかしながら、プロセスの前のバージョンの呼び出し行列のi番目の行、j番目の列における値が、kであるが、プロセスの現在のバージョンの呼び出し行列においてlである場合、減算後の結果として得られる行列のi番目の行、j番目の列は、l-kとなるであろう。ゼロより大きい差分は、インタフェースの数の増加を示し、一方で、ゼロより小さい差分は、減少を示す。以下に説明するように、マイクロサービスのネットワークについて、ネットワーク行列212のようなネットワーク行列に対して、同一手順が適用される。
【0046】
説明される更新に応答して新たに構築された呼び出し行列によって提供される更新を用いて、複数の呼び出し行列の行列総和によって構成されるネットワーク行列を更新することができる。ネットワーク行列は、呼び出し行列を総和することによって改定され、その1または複数が、マイクロサービスの1または複数の対の間のインタフェースにおける1または複数の変更に応答して、新たに改定される。改定されたネットワーク行列からの以前のネットワーク行列の行列減算により、マイクロサービスのネットワーク上での変更の影響が識別されてもよい。
【0047】
行列減算の結果は、DevOpsチームに対し、プロセスまたはマイクロサービスまたはネットワークの動的挙動の変化の原因を識別することができ、これにより、DevOpsチームが、プロセスまたはマイクロサービスのネットワークを「通常」または正しく機能している状態に戻すためにロールバックすべきマイクロサービスを識別することが可能となる。1つの実施形態においては、システム100は、問題の予想される原因を決定することによってシステムエラーまたは1または複数のプロセスの不十分な性能に対して応答する。予想される原因は、プロセスが問題を経験しているものとして肯定的に識別された場合の特定のプロセスに対応する呼び出し行列、または、特定のプロセスが識別されなかった場合のネットワーク行列のいずれかである、現在の行列を生成するコンストラクタ112によって決定されてもよい。行列の前のバージョンは、アナライザ114によって、行列の新たに生成された現在のバージョンから減算されてもよい。行列減算は、問題がマイクロサービスに関連する変更から生じる場合に予想される原因を決定するために使用されてもよい。行列減算から結果として生じる行列は、更新されず、新たに追加されず、またはインタフェースが追加またはドロップされていないマイクロサービスに対応するすべてのセル内でゼロを有するであろう。非ゼロ値を有するセルまたは複数のセルは、しかしながら、現在の行列の生成と前の行列との間になされたそのような変化(または複数の変化)を示す。1または複数の列における非ゼロ値は、1または複数の他のマイクロサービスによって呼び出されるマイクロサービスに対応し、呼び出しているマイクロサービスは、非ゼロのセルの行によって示される。システム100は、変更の前に得られた正しく機能する状態に、影響を受けたプロセスを回復するために呼び出されたマイクロサービスの以前のバージョンへのロールバックを行ってもよい。
【0048】
行列減算が複数のマイクロサービス変更を明らかにする場合、システム100は、相対頻度行列によって提供されるアナリティクスを参照して、上述したように、最も高頻度で呼び出される変更されたマイクロサービスであるとして、問題の最も可能性の高い原因を決定することができる。そのマイクロサービスのロールバックによって問題が解決されない場合、システム100は、問題の原因である可能性が次に最も高いマイクロサービス(次に最も高い相対頻度に対応するマイクロサービス)をロールバックしてもよい。システム100は、このようにして、問題が解決されるまで、最も高い相対頻度を有するマイクロサービスから開始して、反復的にマイクロサービスをロールバックすることを継続することができる。
【0049】
1つの行列を他の行列から行列減算することは、両方の行列が同一の次元を有することを必要とする。このように、2つの行列が、1または複数の新たなプロセスまたはマイクロサービスの導入に起因して同一次元でない場合(更新された行列の次元が、新たに導入されたプロセスまたはマイクロサービス毎に増加する)は、故障/エラー要素の識別を異なるように決定してもよい。具体的には、故障/エラー要素の識別は、更新後の各マイクロサービスの行および列のカウントを決定し、これらを新しいプロセスまたはマイクロサービスの導入前のカウントと比較することによって、(更新された行列に新たに導入された)新しいプロセスまたはマイクロサービスにまで遡ることができる。この手順は、従来のネットワークの動的挙動が、新しいプロセスまたはマイクロサービスの導入によってどのように変化したかの簡易な分析を提供するであろう。
【0050】
マイクロサービスをプロセスエラーの予想される原因として識別すると、システム100は、そのマイクロサービスを障害としてマークしてもよい。システム100は、マイクロサービスの異なるバージョン(例えば、1または複数のプロセスによってエラーなしで実行された以前のバージョン)を選択し、通信ネットワーク102を介して、ネットワーク化されたマイクロサービスレポジトリから、異なるバージョンのマイクロサービスを読み出すことができる。システムが、そのマイクロサービスが実際にプロセスエラーの原因であると判断した場合、プロセスは、次いで、プロセスがコンピュータシステム上で実行されるときにマイクロサービスの代替バージョンを呼び出す。
【0051】
1または複数のデータベース108は、マイクロサービスの種々のバージョンに対応するソフトウェア命令(コード)を電子的に格納するデータベースまたはいくつかのデータベースを含んでもよい。システム100は、アソシエータ110によって読み出されたデータ(例えば、メタデータ)を利用して、マイクロサービスの以前のバージョンのソースを識別し、ソースから以前のバージョンを読み出して、ロールバックを促進することができる。データは、例えば、マイクロサービスID、バージョン番号、マイクロサービスがデプロイされた日付、マイクロサービスベンダなどを提供してもよい。システム100は、データを使用して、1または複数のデータベース108の中からデータベースを識別してもよく、1または複数のデータベース108から、マイクロサービスを含むソフトウェア命令が読み出される。ソフトウェア命令は、通信ネットワーク102を介してシステム100によってデータベースから読み出されてもよい。代替的に、または追加的に、システム100は、自らマイクロサービスの以前のバージョンを格納してもよい。例えば、システム100は、以前のバージョンを。クリアテキストの行列として格納することができる。
【0052】
アナライザ114によって生成されるさらに別のアナリティクスは、提案されたマイクロサービスの変更に関連する影響を予測する。分析は、提案された新しく追加されたまたはドロップされた、1または複数のマイクロサービス間のインタフェースに基づいて、1または複数の新しいまたは改定された呼び出し行列を構築するコンストラクタ112から導出される。新たに構築された、または改定された呼び出し行列を使用して、対応する新しいまたは改定されたネットワーク行列を生成することができる。アナライザ114は、ネットワークの現在のバージョンに対応するネットワーク行列を、提案されたバージョンに対応するネットワーク行列から減算することによって行列減算を実行することができる。結果として得られる行列は、提案された変更の影響を最も受けやすい、特定のインタフェースおよび対応するマイクロサービスを示す。
【0053】
ここで、加えて図3を参照すると、一実施形態によるシステム100の動作的な特徴300が概略的に示される。コンストラクタ112は、例示的に、時間軸302bに沿って配列されるネットワーク行列302Aを生成してテンソルを形成する。ネットワーク行列302Aは、プロセス304およびデータ306に対応した個々の呼び出し行列の総和を取るコンストラクタ112によって構築され、データ306は、アソシエータ110によって各プロセスに関連付けられる。データ306と、時間軸302bに沿って時系列として配列されたネットワーク行列302Aを含むテンソルとは、データベース308内に格納されてもよい。ある実施形態においては、ネットワーク行列302Aおよび時間軸302bは、例えば、各マイクロサービスのベンダおよび/またはバージョンを示すアレイを含む多次元テンソル(追加の軸は明示的に示されていない)の一部である。データベース308に格納される多次元テンソルは、よって、各時点で、マイクロサービスのネットワークの一部である各マイクロサービスの当時のベンダおよび/またはバージョンを示すことができる。
【0054】
新しいネットワーク行列は、1または複数のプロセスになされた各変更に応答して(新しくプロセスが導入されたことに応答することまたは古いプロセスをドロップしたことに応答することを含む)、コンストラクタ112によって生成され、時間軸302bに沿った時系列として配列されたネットワーク行列302Aに追加される。変更は、上記のように、マイクロサービスのネットワークにおける任意の一対のマイクロサービス間のインタフェースへの変更を含む。変更は、また、1または複数のマイクロサービスの新しいバージョンを導入すること、および/または、マイクロサービスの1つのベンダのバージョンを、他のベンダのそれの代わりに用いることを含んでもよい。このような変更に後続する、少なくとも1つのプロセスを巻き込んだエラーまたは障害に応答して、アナライザ114は、アナリティクス310を生成する。1または複数のプロセスの現在のバージョンのロールバックが必要である場合、システム100は、データベース308から、または通信ネットワーク102を介してネットワーク化されたマイクロサービスレポジトリから、適切なソフトウェアを取得してもよい。アナリティクス310は、ネットワーク行列314(現在のバージョン)からネットワーク行列(以前のバージョン)312を行列減算することによって、生成されてもよい。1または複数のマイクロサービスに対する提案された変更(例えば、インタフェースの変更、バージョンの変更、ベンダの変更)に対して、コンストラクタ112は、ネットワーク行列318(提案されるバージョン)を生成してもよい。行列減算を実行すること、ネットワーク行列318(提案されるバージョン)からネットワーク行列314(現在のバージョン)を減算することによって、アナライザ114は、ネットワーク内の任意の対のマイクロサービス間の1または複数のインタフェース接続に対する提案された変更によってもたらされる問題の潜在的な原因を識別することができる。
【0055】
図4は、一実施形態による、マイクロサービスの変更を管理し、関連するアナリティクスを実行するための方法400のフローチャートである。方法400は、図1図3を参照して説明したシステムと同一または類似のシステムによって実行することができる。システムは、ブロック402で、複数のプロセスインスタンス表現を生成する。各プロセスインスタンス表現は、マイクロサービスのうちの少なくとも1つを使用するプロセスによって実行される動作の順序付けシーケンスを含む、対応するプロセスパスに基づいて生成される。
【0056】
システムは、ブロック404で、プロセスインスタンス表現に基づいて、マイクロサービスネットワーク表現を構築する。マイクロサービスネットワークの各要素は、一対のマイクロサービス間のインタフェースに対応する。ブロック406で、システムは、マイクロサービスネットワーク表現に基づいて、マイクロサービス各々について相対頻度を決定する。各相対頻度は、マイクロサービスにおける変更が、マイクロサービスのうちの少なくとも1つを用いる少なくとも1つのプロセスの性能または機能に影響を与える可能性に対応する。
【0057】
プロセスインスタンス表現は、ある実施形態においては、呼び出し行列を含む。ある実施形態においては、マイクロサービスネットワーク表現は、複数の呼び出し行列を総和する行列加算を実行することによって構築されたネットワーク行列を含む。ある実施形態におけるシステムは、ネットワーク行列に基づいて相対頻度行列を生成することによって、マイクロサービス各々の相対頻度を決定する。
【0058】
マイクロサービスにおける変更は、マイクロサービスと、マイクロサービスのうちの少なくとも1つを使用する他のプロセスとの間のインタフェースにおける変更であってもよい。変更は、マイクロサービスの1つのバージョンを、マイクロサービスの別のバージョンの代わりに用いることであってもよい。
【0059】
1または複数の実施形態においては、方法400は、システムが、プロセスエラーの予想される原因としてマイクロサービスを識別することによって、プロセスエラーに応答することをさらに含む。さらに図5を参照すると、実施形態による、プロセスエラーに応答する方法500のフローチャートが示される。方法500は、また、図1図3を参照して説明したシステムと同一または類似のシステムによって実行されてもよい。システムは、ブロック502で、プロセスエラーの予想される原因であるマイクロサービスを識別する。ブロック504で、システムは、プロセスエラーの予想される原因として識別されたマイクロサービスを、障害としてマークする。ブロック506で、システムは、マイクロサービスの異なるバージョンを選択し、ブロック508で、ネットワーク化されたマイクロサービスレポジトリからマイクロサービスの異なるバージョンを読み出す。システムが、マイクロサービスが実際にプロセスエラーの原因であると判断した場合、プロセスは、プロセスがコンピュータシステム上で実行される場合のマイクロサービスの代替バージョンを呼び出す。1より多いマイクロサービスが、障害である可能性がある判断された場合には、システムは、呼び出しの相対頻度が最も高いマイクロサービスから開始して、手順を反復的に適用し、実際に故障しているマイクロサービスまたは複数のマイクロサービスが発見され、ロールバックされるまで継続してもよい。
【0060】
この開示は、クラウドコンピューティングについての詳細な説明を含むが、本明細書で詳述される教示の実装は、クラウドコンピューティング環境に限定されないことに理解されたい。むしろ、本発明の実施形態は、現時点で知られた、またはこれから開発される、他の任意のタイプのコンピューティング環境と併せて実装可能である。
【0061】
クラウドコンピューティングは、最小の管理労力またはサービスプロバイダとの対話で迅速にプロビジョニングおよびリリースされ得る、構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシンおよびサービス)の共有プールへの便利なオンデマンドのネットワークアクセスを可能とする、サービス配布のモデルである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデルおよび少なくとも4つのデプロイメントモデルを含み得る。
【0062】
特性は、以下の通りである。
【0063】
オンデマンド・セルフサービス:クラウドコンシューマは、サービスプロバイダとの人的な対話を必要とせずに自動的に必要なだけ、サーバ時間およびネットワークストレージなどのコンピュータ能力を一方的にプロビジョニングすることができる。
【0064】
広帯域ネットワークアクセス:能力は、ネットワーク越しに利用可能であり、異種シンクライアントまたはシッククライアントプラットフォーム(例えば、モバイルフォン、ラップトップ、PDA)による使用を促進する標準的なメカニズムを介して、アクセスされる。
【0065】
リソースプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを用いて複数のコンシューマに提供するためにプールされ、様々な物理的および仮想的リソースが需要に従って動的に割り当てられ、また、再割り当てられる。コンシューマは、一般的に、提供されるリソースの正確な場所を管理したり、知識を有したりせず、しかし、より高度な抽象レベル(例えば国、州、またはデータセンタ)にて場所を指定することが可能であるという意味で、場所の独立感がある。
【0066】
迅速な弾力性:能力は、迅速かつ柔軟に、いくつかの場合では自動的に、プロビジョニングされて素早くスケールアウトすることができ、また、迅速にリリースされて素早くスケールインすることができる。コンシューマにとって、プロビジョニング利用可能な能力は、しばしば外面的には無制限のように見え、任意の時間に任意の量を購入することができる。
【0067】
測量されたサービス:クラウドシステムは、サービスのタイプにとって適切なある抽象レベル(例えば、ストレージ、処理、帯域幅、アクティブユーザ数)での計量能力を利用することによって、自動的にリソース使用を制御し、また最適化する。リソース使用量は、監視され、制御されおよび報告されて、利用サービスのプロバイダおよびコンシューマの双方に対する透明性を提供する。
【0068】
サービスモデルは、以下の通りである。
【0069】
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供される能力は、クラウドインフラストラクチャ上で稼働するプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブブラウザ(例えばウェブベースの電子メール)などのシンクライアントインタフェースを介して様々なクライアントデバイスからアクセス可能である。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、ストレージ、または、限定されたユーザ固有のアプリケーション構成設定の潜在的な例外を除いて個々のアプリケーション能力すらも含む下層のインフラストラクチャを管理または制御しない。
【0070】
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを用いて作成された、コンシューマ作成または取得のアプリケーションをクラウドインフラストラクチャ上にデプロイすることである。コンシューマは、ネットワーク、サーバ、オペレーティングシステムまたはストレージを含む下層のクラウドインフラストラクチャを管理または制御しないが、デプロイされたアプリケーションおよび場合によってはアプリケーションホスティング環境の構成への制御を有する。
【0071】
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供される能力は、処理、ストレージ、ネットワーク、および、コンシューマが、オペレーティングシステムおよびアプリケーションを含み得る任意のソフトウェアをデプロイし、稼働させることができる他の基本的なコンピューティングリソースを提供することである。コンシューマは、下層のクラウドインフラストラクチャを管理または制御しないが、オペレーティングシステム、ストレージ、デプロイされたアプリケーションに対する制御、および、場合によっては、選択したネットワーキングコンポーネント(例えば、ホストファイアウォール)の限定された制御を有する。
【0072】
デプロイメントモデルは、以下の通りである。
【0073】
プライベートクラウド:クラウドインフラストラクチャは、1つの組織のためだけに使用される。これは、組織または第三者によって管理されてもよく、オンプレミスまたはオフプレミスが存在し得る。
【0074】
コミュニティクラウド:クラウドインフラストラクチャは、いくつかの組織により共有され、共通の懸念(例えば、ミッション、セキュリティ要件、ポリシーおよびコンプライアンスに関する考慮事項)を有する特定のコミュニティをサポートする。これは、組織または第三者によって管理されてもよく、オンプレミスまたはオフプレミスが存在し得る。
【0075】
パブリッククラウド:クラウドインフラストラクチャは、一般公衆、または、大きな業界団体が利用可能であり、クラウドサービスを販売する組織によって所有される。
【0076】
ハイブリッドクラウド:クラウドインフラストラクチャは、2以上のクラウド(プライベート、コミュニティまたはパブリック)の混成であり、これらのクラウドは、固有のエンティティのままであるが、しかし、データおよびアプリケーションのポータビリティを可能とする標準化されたまたは独自の技術(例えばクラウド間の負荷分散のためのクラウドバースティング)によって結合される。
【0077】
クラウドコンピューティング環境は、ステートレス性、低結合、モジュール性および意味論的な相互運用性に重点を置いたサービス指向である。クラウドコンピューティングの核心は、相互接続された複数のノードのネットワークを含むインフラストラクチャである。
【0078】
ここで、図6を参照すると、例示的なクラウドコンピューティング環境650が示されている。図示するように、クラウドコンピューティング環境650は、1以上のクラウドコンピューティングノード610を含み、これと、例えば、PDAまたは携帯電話654A、デスクトップコンピュータ654B、ラップトップコンピュータ654Cおよび/または自動車コンピュータシステム654Nなどの、クラウドコンシューマによって使用されるローカルコンピューティングデバイスが通信してもよい。ノード610は、互いに通信してもよい。これらは、プライベート、コミュニティ、パブリックもしくはハイブリッドクラウドなど上述したような、またはこれらの組み合わせなどの1以上のネットワークにおいて、物理的にまたは仮想的にグループ化(図示しない)されてもよい。これは、クラウドコンピューティング環境650が、インフラストラクチャ、プラットフォームおよび/またはソフトウェアをサービスとして提供することを可能とし、これらについては、クラウドコンシューマは、リソースをローカルコンピューティングデバイス上で維持する必要がない。図6に示されるコンピューティングデバイス654A~654Nのタイプは、説明の目的のみであり、コンピューティングノード610およびクラウドコンピューティング環境650が、任意のタイプのネットワークおよび/またはネットワークアドレス可能な接続(例えば、ウェブブラウザを使用して)を介して、任意のタイプのコンピュータ化されたデバイスと通信することができることが理解される。
【0079】
ここで、図7を参照すると、クラウドコンピューティング環境650(図6)によって提供される機能抽象レイヤのセットが示される。図7に示すコンポーネント、レイヤおよび機能は、説明する目的のみであり、本発明の実施形態は、これらに限定されないことが事前に理解される。図示するように、以下のレイヤおよび対応する機能が提供される。
【0080】
ハードウェアおよびソフトウェアレイヤ760は、ハードウェアおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム761、RISC(縮約命令セットコンピュータ)アーキテクチャに基づくサーバ762、サーバ763、ブレードサーバ764、ストレージデバイス765およびネットワークおよびネットワーキングコンポーネント766を含む。いくつかの実施形態においては、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア767およびデータベースソフトウェア768を含む。
【0081】
仮想化レイヤ770は、抽象化レイヤを提供し、そこから仮想化サーバ771、仮想化ストレージ772、仮想プライベートネットワークを含む仮想化ネットワーク773、仮想化アプリケーションおよびオペレーティングシステム774、および仮想クライアント775などの仮想化エンティティの例が提供される。
【0082】
一例においては、管理レイヤ780は、以下に説明する機能を提供してもよい。リソースプロビショニング781は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を提供する。メータリングおよびプライシング782は、リソースがクラウドコンピューティング環境内で利用されるコストの追跡およびこれらのリソースの消費に対する請求またはインボイスの送付を提供する。一例においては、これらのリソースは、アプリケーションソフトウェアのライセンスを含んでもよい。セキュリティは、クラウドコンシューマおよびタスクについての本人確認、並びに、データおよび他のリソースに対する保護を提供する。ユーザポータル783は、コンシューマおよびシステム管理者に対しクラウドコンピューティング環境へのアクセスを提供する。サービスレベルマネジメント784は、要求されるサービスレベルを満たすようにクラウドコンピューティングリソースの割り当ておよび管理を提供する。サービスレベル合意(SLA)の計画と履行785は、SLAに従って、将来の要求が予期されるクラウドコンピューティグリソースの事前配置および調達を提供する。
【0083】
ワークロードレイヤ790は、クラウドコンピューティング環境が利用される機能性の例を提供する。ワークロードおよびこのレイヤから提供される機能の例には、マッピングおよびナビゲーション791、ソフトウェア開発およびライフサイクル管理792、仮想クラスルーム教育配信793、データアナリティクス処理794、トランザクション処理795、マイクロサービス変更管理および関連アナリティクス実行796が含まれる。
【0084】
図8は、マイクロサービスを管理し、関連するアナリティクスを実行するシステム100のようなシステムを実装することができるコンピューティングノード800の一例の概略図である。1または複数の実施形態においては、コンピューティングノード800は、適切なクラウドコンピューティングノードの一例である。コンピューティングノード800は、本明細書で説明される本発明の実施形態の使用または機能の範囲に関する、如何なる限定を示唆するものではない。コンピューティングノード800は、この開示内で説明される機能の任意のものを実行することができる。
【0085】
コンピューティングノード800は、コンピュータシステム812を含み、コンピュータシステム812は、多数の他の汎用または特定用途のコンピューティングシステム環境または構成で動作可能である。コンピュータシステム812と使用するのに適した周知のコンピューティングシステム、環境および/または構成の例は、これらに限定されないが、パーソナル・コンピュータシステム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、上述したシステムまたは装置などの任意のものを含む分散型クラウドコンピューティング環境などを含む。
【0086】
コンピュータシステム812は、コンピュータシステムによって実行される、プログラムモジュールのようなコンピュータシステム実行可能命令の一般的な文脈で記述され得る。概して、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象的なデータタイプを実装するかする、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含む。コンピュータシステム812は、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散型クラウドコンピューティング環境で実装してもよい。分散型クラウドコンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含むローカルおよびリモートの両方のコンピュータシステムストレージ媒体に配置されてもよい。
【0087】
図8に示すように、コンピュータシステム812は、汎用コンピューティングデバイスの形態で示されている。コンピュータシステム812のコンポーネントは、これらに限定されないが、1以上のプロセッサ816と、システムメモリ828と、システムメモリ828を含む様々なシステムコンポーネントをプロセッサ816に結合するバス818とを含む。本明細書で定義されるように、プロセッサは、命令を実行するよう構成された少なくとも1つのハードウェア回路を意味する。ハードウェア回路は、集積回路であってよい。プロセッサの例には、これらに限定されるものではないが、中央処理ユニット(CPU)、アレイプロセッサ、ベクトルプロセッサ、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プロブラマブルロジックアレイ(PLA)、特定用途向け集積回路、プロブラマブルロジック回路およびコントローラが含まれる。
【0088】
コンピュータシステム812は、典型的には、様々なコンピュータシステム可読媒体を含む。このような媒体は、コンピュータシステム812によってアクセス可能な任意の利用可能な媒体であってもよく、これは、揮発性、不揮発性の両方の媒体、リムーバブルおよび非リムーバブル媒体を含んでもよい。
【0089】
メモリ828は、ランダムアクセスメモリ(RAM)830および/またはキャッシュメモリ832など、揮発性メモリの形態でコンピュータシステム可読な媒体を含んでもよい。コンピュータシステム812は、さらに、他のリムーバブル/非リムーバブルの揮発性/不揮発性コンピュータシステムストレージ媒体を含んでもよい。一例として、ストレージシステム834は、非ポータブルの不揮発性磁気媒体および/またはソリッドステートドライブ(図示しないが典型的にはハードドライブと参照される)から読み出すおよび磁気媒体へ書き込むために提供される。図示しないが、リムーバブルの不揮発性磁気ディスク(例えば、フロッピー(登録商標)ディスク)から読み出し、および、磁気ディスクへ書き込むための磁気ディスクドライブ、または、CD-ROM、DVD-ROMまたは他の光学メディアなどのリムーバブルの不揮発性光学ディスクから読み出しおよび光学ディスクへ書き込むための光学ディスクドライブが提供されてもよい。このような実例において、各々は、1以上のデータメディアインタフェースによってバス818に接続されてもよい。以下さらに説明するように、メモリ828は、本発明の実施形態の機能を実現するよう構成されたプログラムモジュールのセット(少なくとも1つ)を有する少なくとも1つのプログラム製品を含んでいてもよい。
【0090】
プログラム/ユーティリティ840は、それぞれ、プログラムモジュール842のセット(少なくとも1つ)を有しており、一例であるが限定されないメモリ828に格納されてもよく、1以上のオペレーティングシステム、1以上のアプリケーションプログラム、他のプログラムモジュールおよびプログラムデータを含んでもよい。オペレーティングシステム、1以上のアプリケーションプログラム、他のプログラムモジュールおよびプログラムデータの各々またはこれらのいくつかの組み合わせは、ネットワーキング環境の実装を含んでもよい。プログラムモジュール842は、概して、本明細書で説明されるような本発明の実施形態の機能および/または方法論を実現する。例えば、プロブラムモジュールの1または複数が、マイクロサービスの変更を管理し、関連するアナリティクスを実行するためのワークロードおよび機能796またはその部分であってもよい。
【0091】
プログラム/ユーティリティ840は、プロセッサ816によって実行可能である。プログラム/ユーティリティ840と、コンピュータシステム812によって使用され、生成され、および/またはその上で動作されるデータ項目とは、コンピュータシステム812によって使用された場合に、機能性を与える機能性データ構造である。本明細書で定義されるように、「データ構造」は、物理メモリ内のデータのデータモデルの編成の物理的な実装である。このように、データ構造は、メモリ内の特定の電気的または磁気的な構造要素から形成される。データ構造は、プロセッサを使用して実行されるアプリケーションプログラムによって使用されるように、メモリに格納されたデータ上の物理的な編成を与える。
【0092】
バス818は、メモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッド グラフィックス ポート、および種々のバスアーキテクチャの任意のものを使用するプロセッサまたはローカルバスを含む、いくつかのタイプのバス構造のうちの1または複数を表す。例として、また、限定するものではないが、このようなアーキテクチャには、インダストリスタンダードアーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、およびPCIExpress(PCIe)バスが含まれる。
【0093】
コンピュータシステム812は、また、キーボード、ポインティング・デバイス、ディスプレイ824などの1以上の外部装置814と、ユーザがコンピュータシステム812と対話することを可能にする1以上のデバイス、および/またはコンピュータシステム812が1以上の他のコンピューティングデバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)と通信してもよい。このような通信は、入力/出力(I/O)インタフェース822を介して行うことができる。さらに、コンピュータシステム812は、ネットワークアダプタ820を介して、ローカルエリアネットワーク(LAN)、一般ワイドエリアネットワーク(WAN)、および/または公衆ネットワーク(例えば、インターネット)などの1以上のネットワークと通信することができる。図示されるように、ネットワークアダプタ820は、バス818を介してコンピュータシステム812の他のコンポーネントと通信することができる。図示されていないが、他のハードウェアおよび/またはソフトウェアコンポーネントを、コンピュータシステム812と組み合わせて使用することができることを理解されたい。例としては、これらに限定されないが、マイクロコード、デバイスドライバ、冗長処理ユニットおよび外部ディスクドライブアレイ、RAIDシステム、テープドライブ、およびデータアーカイブストレージシステムなどを挙げることができる。
【0094】
コンピューティングノード800は、実装される特定のタイプのデバイスおよび/またはシステムに依存して、示されているものよりも少ないコンポーネントを含んでもよく、または、図8に示されていない追加のコンポーネントを含んでもよい。含まれる特定のオペレーティングシステムおよび/またはアプリケーションは、含まれるI/Oデバイスのタイプのように、デバイスおよび/またはシステムタイプに従って変化する可能性がある。さらに、例示的なコンポーネントの1または複数が、別のコンポーネントに組み込まれてもよいし、他のコンポーネントの一部を形成してもよい。例えば、プロセッサは、少なくともいくつかのメモリを含んでもよい。
【0095】
コンピューティングノード800もサーバの一例である。本明細書で定義されるように、「サーバ」は、1または複数の他のデータ処理システムとサービスを共有するように構成されたデータ処理システムを意味する。本明細書で定義されるように、「クライアントデバイス」とは、サーバから共有サービスを要求し、ユーザが直接対話するデータ処理システムを意味する。クライアントデバイスの例には、これらに限定されるものではないが、ワークステーション、デスクトップコンピュータ、コンピュータ端末、モバイルコンピュータ、ラップトップコンピュータ、ネットブックコンピュータ、タブレットコンピュータ、スマートフォン、パーソナルデジタルアシスタント、スマートウォッチ、スマートグラス、ゲームデバイス、セットトップボックス、スマートテレビなどが含まれる。1または複数の実施形態においては、本明細書で説明される種々のユーザデバイスは、クライアントデバイスであってもよい。ルータ、ファイアウォール、スイッチ、アクセスポイントなどのネットワークインフラストラクチャは、明細書で用語「クライアントデバイス」が定義される通り、クライアントデバイスではない。
【0096】
コンピューティングノード800は、例えば、コンピュータシステム812が実装されるクラウドコンピューティングノードであってもよい。コンピュータシステム812は、また、本明細書で説明される種々の動作を実行するための非クラウドコンピューティング実装において使用されるコンピュータシステムを示す。この点に関して、本明細書で説明される例示的な実施形態は、クラウドコンピューティング環境または任意の他のコンピューティング環境に限定されることを意図するものではない。より一般的には、コンピューティングノード800は、種々のタイプのデータ処理システムの例示である。本明細書で定義されるように、「データ処理システム」は、データを処理するように構成された1または複数のハードウェアシステムを意味し、各ハードウェアシステムは、動作を開始するようにプログラムされた少なくとも1つのプロセッサおよびメモリを含む。
【0097】
本明細書で使用される用語は、特定の実施形態を説明するためのみのものであり、限定することを意図するものではない。それにもかかわらず、この文書全体に適用されるいくつかの定義が提示される。
【0098】
本明細書で定義されているように、「少なくとも1つ」、「1または複数」、および「および/または」との記載は、明示的に述べられない限り、動作において、論理積および論理和の両方であるオープンエンド表現である。例えば、「A、BおよびCの少なくとも1つ」、「A、BまたはCの少なくとも1つ」、「A、BおよびCのうちの1または複数」、「A、BまたはCのうちの1または複数」および「A、Bおよび/またはC」の表現の各々は、Aのみ、Bのみ、Cのみ、AとB共に、AとC共に、BとC共に、または、AとBとC共に、を意味する。
【0099】
本明細書で定義されるように、「自動的に」とは、ユーザの介入なしを意味する。
【0100】
本明細書で定義されるように、「含む(include)」、「含んでいる(including)」、「含む(comprises)」および/または「含んでいる(comprising)」は、記述された特徴、整数、ステップ、動作、要素および/またはコンポーネントの存在を指定するが、しかしながら、1以上の他の特徴、整数、ステップ、動作、要素、コンポーネントおよび/またはこれらのグループの存在または追加を排除するものではない。
【0101】
本明細書で定義されるように、「の場合(if)」は、文脈に依存して、「とき(when)」「するにあたり(upon)」、「応答して(in response to)」、または「応答して(responsive to)」を意味する。よって、「決定された場合(if it is determined)」または「[述べた条件またはイベント]が検出された場合(if [a stated condition or event] is detected)」は、文脈に依存して、「[述べた条件またはイベント]が検出されると(upon detecting [the stated condition or event])」または「[述べた条件またはイベント]を検出したことに応答して(in response to detecting [the stated condition or event])」または、「[述べた条件またはイベント]を検出したことに応答して(responsive to detecting [the stated condition or event])」と解釈され得る。
【0102】
本明細書で定義されるように、「一実施形態」、「実施形態」、「1または複数の実施形態において」、「特定の実施形態において」、または類似の文言は、実施形態に関連して説明される特定の特徴、構造、または特徴が、本開示内で説明された少なくとも1つの実施形態に含まれることを意味する。よって、本開示を通じて上記句および/または類似の文言の出現は、すべてが同じ実施形態を指す可能性があるが、必ずしもそうではない。
【0103】
本明細書で定義されるように、「応答して(responsive to)」という用語は、アクションまたはイベントにすぐに応答または反応することを意味する。よって、第1のアクション「に応答して」第2のアクションが実行される場合、第1のアクションの発生と第2のアクションの発生との間に因果関係が存在する。「応答して(responsive to)」という用語は、因果関係を示す。
【0104】
本明細書で定義されるように、「実質的に(substantially)」とは、言及された特性、パラメータまたは値が厳密に達成される必要はないが、例えば、許容誤差、測定誤差、測定精度限界および当業者に知られている他の要因を含む偏差またはばらつきが、特性が提供することを意図した効果を排除しない量で発生し得ることを意味する。
【0105】
本明細書で定義されるように、「ユーザ」は人間である。関連して、「事業体(enterprise)」は、1または複数のコンピュータシステムを、1または複数の関連する目的のために、使用するユーザの集合を意味する。
【0106】
第1、第2などの用語は、本明細書では、種々の要素を説明するために使用され得る。これらの要素は、これらの用語によって制限されるべきではなく、これらの用語は、別段の記載があるか、または文脈が他の場合を明示的に示さない限り、1つの要素を別の要素と区別するためにのみ使用される。
【0107】
上述したように、本発明は、任意の統合の可能な技術的な詳細のレベルでのシステム、方法および/またはコンピュータプログラム製品であってよい。コンピュータプログラム製品は、プロセッサに本発明の側面を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含んでもよい。
【0108】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持し格納する有形のデバイスであってよい。コンピュータ可読ストレージ媒体は、例えば、これに限定されるものではないが、電子的ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁気ストレージデバイス、半導体ストレージデバイスまたは上記の任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のより具体的な例示の例示列挙としては、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリーメモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリーメモリ(CD-ROM)、デジタルバーサタイルディスク(DVD)、メモリースティック、フロッピーディスク(登録商標)、パンチカードまたは記録された命令を有する溝内の隆起構造のような機械的エンコードされたデバイス、および上記の任意の適切な組み合わせが含まれる。コンピュータ可読ストレージ媒体は、本明細書で使用されるように、電波、自由伝搬する電磁波、導波路または他の伝送媒体を伝搬する電磁波(たとえば、ファイバ光ケーブルを通過する光パルス)または、ワイヤを通して伝送される電気信号のような、それ自体が一時的な信号として解釈されるものではない。
【0109】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピュータ/処理デバイスに、または、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび/または無線ネットワークまたはこれらの組み合わせといったネットワークを介して外部コンピュータまたは外部ストレージデバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータおよび/またはエッジサーバまたはこれらの組み合わせを含んでもよい。各コンピュータ/処理デバイスにおけるネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0110】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用構成データ、または、1以上のプログラミング言語の任意の組み合わせで書かれたソースコードあるいはオブジェクトコードであってよく、1以上のプログラミング言語は、Smalltalk(登録商標)、C++またはこれらに類するもなどのオブジェクト指向言語、Cプログラミング言語または類似のプログラミング言語などの手続型言語を含む。コンピュータ可読プログラム命令は、スタンドアローンのソフトウェアパッケージとして、全体としてユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上かつ部分的に遠隔のコンピュータ上で、または、完全に遠隔のコンピュータまたはサーバ上で実行されてもよい。後者のシナリオでは、遠隔のコンピュータは、ユーザのコンピュータに、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを通じて接続されてもよく、あるいは接続は、(例えば、インターネットサービスプロバイダを用いてインターネットを通じて)外部コンピュータになされてもよい。いくつかの実施形態においては、電気的回路は、本発明の側面を実行するために、コンピュータ可読プログラム命令の状態情報を利用して、電気的回路を個別化することによって、コンピュータ可読プログラム命令を実行してもよく、この電気的回路は、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む。
【0111】
本発明の側面は、本明細書において、本発明の実施形態に従った方法、装置(システム)およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照しながら、説明される。フローチャート図および/またはブロック図の各ブロック、および、フローチャート図および/またはブロック図における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装されてもよいことが理解されよう。
【0112】
これらのコンピュータ可読プログラム命令は、コンピュータのプロセッサまたは他のプログラマブルデータ処理装置に提供され、コンピュータのプロセッサまたは他のプログラマブルデータ処理装置を介して実行される命令が、フローチャート図および/またはブロックまたはその両方のブロックまたは複数のブロックにおいて特定される機能/作用を実装するための手段を作成するように、マシンを生成する。これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブルデータ処理装置および/または他のデバイスに特定のやり方で機能するよう指示できるコンピュータ可読ストレージ媒体に格納され、それに格納された命令を有するコンピュータ可読ストレージ媒体に、フローチャートおよび/またはブロックのブロックまたは複数のブロックで特定される機能/作用の側面を実装する命令を含む製品が含まれるようにする。
【0113】
コンピュータ可読プログラム命令は、また、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブルデータ処理装置または他のデバイス上で一連の動作ステップを実行させて、コンピュータ、他のプログラマブルデータ処理装置または他のデバイス上で実行される命令が、フローチャートおよび/またはブロックのブロックまたは複数のブロックで特定される機能/作用の側面を実装するように、コンピュータ実装処理を生成することもできる。
【0114】
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能性および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能(複数可)を実装するための1以上の実行可能な命令を含む、モジュール、セグメントまたは命令の部分を表す可能性がある。いくつかの代替の実装では、ブロックにおいて言及された機能は、図面に示された順序から外れて生じる可能性がある。例えば、連続して示される2つのブロックは、実際には、同時に、実質的に同時に、または部分的にまたは全体的に一時的に重なった仕方で、一つのステップとして完了されてもよく、あるいは、複数のブロックは、関与する機能性に応じて逆の順序で実行されてもよい。ブロック図および/またはフローチャート図の両方の各ブロックおよびブロック図および/またはフローチャート図の複数のブロックの組み合わせが、特定の機能または作用を実行し、または、特別な目的のハードウェアおよびコンピュータ命令の組み合わせを実施する、特定目的ハードウェアベースのシステムによって実装されてもよいことに留意されたい。
【0115】
本発明の種々の実施形態の説明が、説明のために提示され、また、網羅的であること、または、開示される実施形態に限定されることを意図するものではない。説明される実施形態の範囲および精神を逸脱することなく、多くの変更および変形が当業者にとって明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の応用または市場で発見される技術に対する技術的改善を最もよく説明するために、あるいは、他の当業者が、本明細書で開示される実施形態を理解できるように選ばれたものである。
図1
図2A
図2B
図2C
図2D
図2E
図3
図4
図5
図6
図7
図8