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

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

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

<>
  • 特許-アプリケーション・トポロジの発見 図1
  • 特許-アプリケーション・トポロジの発見 図2
  • 特許-アプリケーション・トポロジの発見 図3
  • 特許-アプリケーション・トポロジの発見 図4
  • 特許-アプリケーション・トポロジの発見 図5
  • 特許-アプリケーション・トポロジの発見 図6
  • 特許-アプリケーション・トポロジの発見 図7
  • 特許-アプリケーション・トポロジの発見 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-26
(45)【発行日】2024-10-04
(54)【発明の名称】アプリケーション・トポロジの発見
(51)【国際特許分類】
   H04L 67/025 20220101AFI20240927BHJP
【FI】
H04L67/025
【請求項の数】 16
(21)【出願番号】P 2022568492
(86)(22)【出願日】2021-04-20
(65)【公表番号】
(43)【公表日】2023-06-26
(86)【国際出願番号】 IB2021053236
(87)【国際公開番号】W WO2021240260
(87)【国際公開日】2021-12-02
【審査請求日】2023-09-25
(31)【優先権主張番号】16/882,811
(32)【優先日】2020-05-26
(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)【発明者】
【氏名】シュウォーツ、ラリサ
(72)【発明者】
【氏名】ニド、マイケル
(72)【発明者】
【氏名】バゲホーン、フランク
(72)【発明者】
【氏名】クルチャク、ヤクブ
(72)【発明者】
【氏名】オルンバエフ、アルティンベク
(72)【発明者】
【氏名】ミレック、マイケル
(72)【発明者】
【氏名】サンドル、オタ
(72)【発明者】
【氏名】オンドレイ、トーマス
【審査官】白井 亮
(56)【参考文献】
【文献】特開2008-211350(JP,A)
【文献】特表2018-503275(JP,A)
【文献】北山 晋吾,Ansible実践ガイド,第3版,2019年10月21日,p. 297-315(6-2 Azureの連携)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/025
(57)【特許請求の範囲】
【請求項1】
アプリケーション・トポロジを識別するためのコンピュータ実装方法であって、
対象のアプリケーションに対応するサンドボックス環境を識別することと、
第1のトポロジを示す、前記サンドボックス環境内のサービス間の通信リンクのセットを識別するために前記サンドボックス環境を分析することと、
前記対象のアプリケーションに対応する本番システムを識別することと、
第2のトポロジを示す、構造的依存関係のセットを識別するために前記本番システムにクエリを実行することと、
前記第1のトポロジおよび前記第2のトポロジを組み合わせて前記対象のアプリケーションの完全なトポロジを作成することと、
を含む、コンピュータ実装方法。
【請求項2】
前記対象のアプリケーションの前記完全なトポロジを作成することは、前記サンドボックス環境内のサービスおよび前記本番システム内のサービスによって使用されるインフラストラクチャ情報を照合することによって、前記サンドボックス環境内の前記サービスを前記本番システム内の前記サービスと照合することを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記対象のアプリケーションの前記完全なトポロジを作成することは、前記サンドボックス環境内のサービス間通信リンクを使用して、前記本番システム内のサービス間に対応するリンクを確立することを含む、請求項1または2に記載のコンピュータ実装方法。
【請求項4】
1つまたは複数の可観測性ツールを使用して前記サンドボックス環境をインストルメンテーションすることをさらに含む、請求項1から3のいずれかに記載のコンピュータ実装方法。
【請求項5】
前記通信リンクのセットを識別するために前記サンドボックス環境を分析することは、前記サンドボックス環境に存在するコードおよび環境変数の静的分析を行うことを含む、請求項1から4のいずれかに記載のコンピュータ実装方法。
【請求項6】
前記通信リンクのセットを識別するために前記サンドボックス環境を分析することは、前記サンドボックス環境に対応するドメイン・ネーム・サービス(DNS)クエリを分析することを含む、請求項1から5のいずれかに記載のコンピュータ実装方法。
【請求項7】
前記第2のトポロジを示す前記構造的依存関係のセットを識別することは、前記サンドボックス環境内で前記サービスを支えるコンテナ・イメージのIDを、前記本番システム内で前記サービスを支えるコンテナ・イメージのIDと照合することを含む、請求項1から6のいずれかに記載のコンピュータ実装方法。
【請求項8】
請求項1から7のいずれかに記載の方法をコンピュータに実行させる、コンピュータ・プログラム。
【請求項9】
請求項8に記載のコンピュータ・プログラムを記録した、コンピュータ可読記憶媒体。
【請求項10】
アプリケーション・トポロジを識別するためのコンピュータ・システムであって、
1つまたは複数のコンピュータ・プロセッサと、
1つまたは複数のコンピュータ可読記憶媒体と、
前記1つまたは複数のプロセッサのうちの少なくとも1つによる実行のために前記コンピュータ可読記憶媒体に記憶されたプログラム命令と、
を含み、前記プログラム命令は、
対象のアプリケーションに対応するサンドボックス環境を識別する命令と、
第1のトポロジを示す、前記サンドボックス環境内のサービス間の通信リンクのセットを識別するために前記サンドボックス環境を分析する命令と、
前記対象のアプリケーションに対応する本番システムを識別する命令と、
第2のトポロジを示す、構造的依存関係のセットを識別するために前記本番システムにクエリを実行する命令と、
前記第1のトポロジおよび前記第2のトポロジを組み合わせて前記対象のアプリケーションの完全なトポロジを作成する命令と、
を含む、コンピュータ・システム。
【請求項11】
前記対象のアプリケーションの前記完全なトポロジを作成する命令は、前記サンドボックス環境内のサービスおよび前記本番システム内のサービスによって使用されるインフラストラクチャ情報を照合することによって、前記サンドボックス環境内の前記サービスを前記本番システム内の前記サービスと照合する命令を含む、請求項10に記載のコンピュータ・システム。
【請求項12】
前記対象のアプリケーションの前記完全なトポロジを作成する命令は、前記サンドボックス環境内のサービス間通信リンクを使用して、前記本番システム内のサービス間に対応するリンクを確立する命令を含む、請求項10または11に記載のコンピュータ・システム。
【請求項13】
1つまたは複数の可観測性ツールを使用して前記サンドボックス環境をインストルメンテーションする命令をさらに含む、請求項10から12のいずれかに記載のコンピュータ・システム。
【請求項14】
前記通信リンクのセットを識別するために前記サンドボックス環境を分析する命令は、前記サンドボックス環境に存在するコードおよび環境変数の静的分析を行う命令を含む、請求項10から13のいずれかに記載のコンピュータ・システム。
【請求項15】
前記通信リンクのセットを識別するために前記サンドボックス環境を分析する命令は、前記サンドボックス環境に対応するドメイン・ネーム・サービス(DNSクエリを分析する命令を含む、請求項10から14のいずれかに記載のコンピュータ・システム。
【請求項16】
前記第2のトポロジを示す前記構造的依存関係のセットを識別する命令は、前記サンドボックス環境内で前記サービスを支えるコンテナ・イメージのIDを、前記本番システム内で前記サービスを支えるコンテナ・イメージのIDと照合する命令を含む、請求項10から15のいずれかに記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般にクラウド・コンピューティングの分野に関し、より詳細には、既存のクラウド・コンピューティング環境のトポロジを発見することに関する。
【背景技術】
【0002】
クラウド・アプリケーションの通信トポロジは、クラウド・アプリケーション内で使用されるサービスのセットおよびそれらの外部依存関係またはコンポーネント、コンポーネントによってサポートされるAPIエンドポイント、それらの間の有向のソース-宛先間通信リンク、ならびに各リンクでソース・コンポーネントが接続する宛先コンポーネントのAPIエンドポイント(複数可)で構成される。粒度の細かいトポロジ情報は、本番環境で稼働しているクラウド・アプリケーションの障害診断および最適化に重要であり得る。アプリケーションのトポロジを発見または推測するための知られている解決策には、クラウド・サービス・メッシュ、サービス・メッシュ可観測性(observability)ツール、およびオープン・トレーシング・ツールの使用が含まれる。これらのタイプのツールはアプリケーション内での、特に本番環境内での一定程度のインストルメンテーション(instrumentation)を必要とし、これは侵入的であると考えられ得る。様々なケースにおいて、本番環境の「物理的な」トポロジは利用可能であり得るか、またはシステム内のコンポーネントの知識に基づいて発見可能であり得るが、物理的に明らかでない本番環境でのサービスまたはコンポーネントに関する情報は容易に入手できないことがあり得る。本番環境の所有者/管理者は、特にアプリケーションが機微情報を受け取ったり管理したりするシナリオでは、このような接続情報を利用可能にすることに消極的であり得る。分散型アプリケーションがますます普及するにつれて、アプリケーション内の物理的な接続を超えた推測および発見を行うことができるトポロジ分析の必要性が高まっている。
【発明の概要】
【0003】
本明細書で開示するように、アプリケーション・トポロジを識別するためのコンピュータ実装方法は、対象のアプリケーションに対応するサンドボックス環境を識別することを含む。サンドボックス環境が識別されると、この方法は、第1のトポロジを示す、サンドボックス環境内のサービス間の通信リンクのセットを識別するためにサンドボックス環境を分析することによって進行する。この方法は、対象のアプリケーションに対応する本番システムを識別することと、第2のトポロジを示す構造的依存関係のセットを識別するために上記本番システムにクエリを実行することと、をさらに含む。この方法は、第1のトポロジおよび第2のトポロジを組み合わせてクラウド・アプリケーションの完全なトポロジを作成することによって終了する。アプリケーション・トポロジを識別するための上記コンピュータ実装方法は、本番環境の侵入的なインストルメンテーションも広範な分析も必要とせずに、トポロジ発見を可能にし得る。アプリケーション・トポロジを識別するための上記コンピュータ実装方法は、サンドボックス環境内のサービスおよび本番システム内のサービスによって使用されるインフラストラクチャ情報を照合することによって、サンドボックス環境内のサービスを本番システム内のサービスと照合することをさらに含み得る。このようにサンドボックス環境内のサービスを本番システム内のサービスと照合することによって、トポロジにアクセス可能なサンドボックス環境に存在するサービスと、分析がより困難であり得る本番システムに存在するサービスとの間の対応関係を確立することが可能になり、これにより最終的に、対応する通信リンクを識別可能にすることができる。アプリケーション・トポロジを識別するための上記コンピュータ実装方法は、サンドボックス環境内のサービス間通信リンクを使用して、本番システム内のサービス間に対応するリンクを確立することをさらに含み得る。サンドボックス環境内の通信リンクを本番システムに存在するサービスと照合することにより、本番システムのインストルメンテーションを必要とせずに、本番システムのトポロジ内のリンクの推測が可能になる。
【0004】
アプリケーション・トポロジを識別するためのコンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読記憶媒体と、1つまたは複数のコンピュータ可読記憶媒体に記憶されたプログラム命令と、を含み、プログラム命令は、対象のアプリケーションに対応するサンドボックス環境を識別する命令を含む。このコンピュータ・プログラム製品は、第1のトポロジを示す、サンドボックス環境内のサービス間の通信リンクのセットを識別するためにサンドボックス環境を分析する命令をさらに含む。このコンピュータ・プログラム製品は、対象のアプリケーションに対応する本番システムを識別する命令と、第2のトポロジを示す構造的依存関係のセットを識別するために本番システムにクエリを実行する命令と、をさらに含む。このコンピュータ・プログラム製品は、第1のトポロジおよび第2のトポロジを組み合わせてクラウド・アプリケーションの完全なトポロジを作成する命令をさらに含む。上記コンピュータ・プログラム製品は、本番環境の侵入的なインストルメンテーションも広範な分析も必要とせずに、アプリケーション・トポロジを識別するための方法の実行を可能にし得る。上記コンピュータ・プログラム製品は、サンドボックス環境内のサービスおよび本番システム内のサービスによって使用されるインフラストラクチャ情報を照合することによって、サンドボックス環境内のサービスを本番システム内のサービスと照合する命令をさらに含み得る。アプリケーション・トポロジを識別するための上記コンピュータ・プログラム製品は、サンドボックス環境内のサービス間通信リンクを使用して、本番システム内のサービス間に対応するリンクを確立する命令をさらに含み得る。
【0005】
本明細書で開示するように、アプリケーション・トポロジを識別するためのコンピュータ・システムは、1つまたは複数のコンピュータ・プロセッサと、1つまたは複数のコンピュータ可読記憶媒体と、1つまたは複数のプロセッサのうちの少なくとも1つによる実行のためにコンピュータ可読記憶媒体に記憶されたプログラム命令と、を含み、プログラム命令は、対象のアプリケーションに対応するサンドボックス環境を識別する命令を含む。このコンピュータ・システムは、第1のトポロジを示す、サンドボックス環境内のサービス間の通信リンクのセットを識別するためにサンドボックス環境を分析する命令をさらに含む。このコンピュータ・システムは、対象のアプリケーションに対応する本番システムを識別する命令と、第2のトポロジを示す構造的依存関係のセットを識別するために本番システムにクエリを実行する命令と、をさらに含む。このコンピュータ・システムは、第1のトポロジおよび第2のトポロジを組み合わせてクラウド・アプリケーションの完全なトポロジを作成する命令をさらに含む。上記コンピュータ・プログラム製品は、本番環境の侵入的なインストルメンテーションも広範な分析も必要とせずに、アプリケーション・トポロジを識別するための方法の実行を可能にし得る。上記コンピュータ・システムは、サンドボックス環境内のサービスおよび本番システム内のサービスによって使用されるインフラストラクチャ情報を照合することによって、サンドボックス環境内のサービスを本番システム内のサービスと照合する命令をさらに含み得る。アプリケーション・トポロジを識別するための上記コンピュータ・システムは、サンドボックス環境内のサービス間通信リンクを使用して、本番システム内のサービス間に対応するリンクを確立する命令をさらに含み得る。
【図面の簡単な説明】
【0006】
図1】本発明の一実施形態によるクラウド・コンピューティング環境を示す図である。
図2】本発明の一実施形態による抽象化モデル・レイヤを示す図である。
図3】本発明の少なくとも1つの実施形態によるトポロジ分析システムを示すブロック図である。
図4】本発明の少なくとも1つの実施形態によるトポロジ発見方法を示すフローチャートである。
図5】本発明の少なくとも1つの実施形態による水平トポロジのブロック図である。
図6】本発明の例示的な実施形態による垂直トポロジのブロック図である。
図7】本発明の例示的な実施形態による完全なトポロジを示す図である。
図8】本発明の一実施形態によるイメージ分析システムを実行するコンピューティング・システムのコンポーネントのブロック図である。
【発明を実施するための形態】
【0007】
本発明の実施形態は、パッシブなクエリ実行およびサンドボックス環境(たとえば、テスト環境、開発環境、およびステージング環境)のインストルメンテーションの組み合わせを通じて、対応する本番システムの侵入的分析を行うことなく、既存のトポロジを分析して構築する。
【0008】
以下、図面を参照して本発明を詳細に説明する。本発明の実施形態の実装は様々な形態を取り得、例示的な実装の詳細については、図を参照して後で論じる。
【0009】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に列挙した教示の実装形態はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られているまたは今後開発される他の任意のタイプのコンピューティング環境と共に実装することが可能である。
【0010】
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとのやりとりによって迅速にプロビジョニングおよび解放することができる、設定可能なコンピューティング・リソース(たとえば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴と、少なくとも3つのサービス・モデルと、少なくとも4つのデプロイメント・モデルとを含み得る。
【0011】
特徴は以下の通りである。
【0012】
オンデマンド・セルフ・サービス:クラウド・コンシューマは、サービスのプロバイダとの人的な対話を必要とせずに、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を一方的にプロビジョニングすることができる。
【0013】
ブロード・ネットワーク・アクセス:能力はネットワークを介して利用することができ、異種のシンまたはシック・クライアント・プラットフォーム(たとえば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを介してアクセスされる。
【0014】
リソース・プーリング:プロバイダのコンピューティング・リソースをプールして、様々な物理リソースおよび仮想リソースが需要に応じて動的に割り当ておよび再割り当てされるマルチ・テナント・モデルを使用して複数のコンシューマにサービス提供する。一般にコンシューマは、提供されるリソースの正確な位置に対して何もできず、知っているわけでもないが、より高い抽象化レベル(たとえば、国、州、またはデータセンターなど)では位置を特定可能であり得るという点で位置非依存の感覚がある。
【0015】
迅速な弾力性:能力を迅速かつ弾力的に、場合によっては自動的にプロビジョニングして素早くスケール・アウトし、迅速に解放して素早くスケール・インすることができる。コンシューマにとって、プロビジョニング可能な能力は無制限であるように見えることが多く、任意の時間に任意の数量で購入することができる。
【0016】
測定されるサービス:クラウド・システムは、サービスのタイプ(たとえば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適したある抽象化レベルでの計量機能を活用して、リソースの使用を自動的に制御し、最適化する。リソース使用量を監視、管理、および報告して、利用されるサービスのプロバイダおよびコンシューマの両方に透明性を提供することができる。
【0017】
サービス・モデルは以下の通りである。
【0018】
ソフトウェア・アズ・ア・サービス(SaaS:Software as a Service):コンシューマに提供される能力は、クラウド・インフラストラクチャ上で動作するプロバイダのアプリケーションを使用することである。アプリケーションは、Webブラウザ(たとえば、Webベースの電子メール)などのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定を可能性のある例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個々のアプリケーション機能を含む、基盤となるクラウド・インフラストラクチャを管理も制御もしない。
【0019】
プラットフォーム・アズ・ア・サービス(PaaS:Platform as a Service):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、コンシューマが作成または取得したアプリケーションをクラウド・インフラストラクチャ上にデプロイすることである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基盤となるクラウド・インフラストラクチャを管理も制御もしないが、デプロイされたアプリケーションおよび場合によってはアプリケーション・ホスティング環境構成を制御する。
【0020】
インフラストラクチャ・アズ・ア・サービス(IaaS:Infrastructure as a Service):コンシューマに提供される能力は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをコンシューマがデプロイして動作させることが可能な、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングすることである。コンシューマは、基盤となるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御し、場合によっては選択したネットワーキング・コンポーネント(たとえば、ホスト・ファイアウォール)を限定的に制御する。
【0021】
デプロイメント・モデルは以下の通りである。
【0022】
プライベート・クラウド:クラウド・インフラストラクチャは組織専用に運用される。これは組織または第三者によって管理され得、構内または構外に存在し得る。
【0023】
コミュニティ・クラウド:クラウド・インフラストラクチャはいくつかの組織によって共有され、共通の懸念(たとえば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項など)を有する特定のコミュニティをサポートする。これは組織または第三者によって管理され得、構内または構外に存在し得る。
【0024】
パブリック・クラウド:クラウド・インフラストラクチャは、一般大衆または大規模な業界団体に対して利用可能にされ、クラウド・サービスを販売する組織によって所有される。
【0025】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データおよびアプリケーションの移植性を可能にする標準化技術または独自技術(たとえば、クラウド間の負荷分散のためのクラウド・バースティング)によって結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)を合成したものである。
【0026】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味論的相互運用性に重点を置いたサービス指向型である。クラウド・コンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0027】
ここで図1を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示のように、クラウド・コンピューティング環境50は1つまたは複数のクラウド・コンピューティング・ノード10を含み、これらを使用して、たとえば、パーソナル・デジタル・アシスタント(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはそれらの組み合わせなどの、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信し得る。ノード10は相互に通信し得る。これらは、たとえば、上述のプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはそれらの組み合わせなどの1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化され得る(図示せず)。これにより、クラウド・コンピューティング環境50は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを維持する必要がない、インフラストラクチャ・アズ・ア・サービス、プラットフォーム・アズ・ア・サービス、またはソフトウェア・アズ・ア・サービス、あるいはそれらの組み合わせを提供することが可能になる。図1に示したコンピューティング・デバイス54A~Nのタイプは例示的なものにすぎないことを意図しており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワークまたはネットワーク・アドレス指定可能接続(たとえば、Webブラウザを使用)あるいはその両方を介して任意のタイプのコンピュータ化デバイスと通信できることを理解されたい。
【0028】
ここで図2を参照すると、クラウド・コンピューティング環境50(図1)によって提供される機能的抽象化レイヤのセットが示されている。図2に示したコンポーネント、レイヤ、および機能は例示的なものにすぎないことを意図しており、本発明の実施形態はこれらに限定されないことを事前に理解されたい。図示のように、以下のレイヤおよび対応する機能が提供される。
【0029】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66が含まれる。いくつかの実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0030】
仮想化レイヤ70は抽象化レイヤを提供し、抽象化レイヤから、仮想エンティティの以下の例、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75が提供され得る。
【0031】
一例では、管理レイヤ80は、下記の機能を提供し得る。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的調達を提供する。計量および価格決定82は、クラウド・コンピューティング環境内でリソースが利用されたときの費用追跡と、これらのリソースの消費に対する会計または請求とを提供する。一例では、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、クラウド・コンシューマおよびタスクの同一性検証だけでなく、データおよび他のリソースに対する保護も提供する。ユーザ・ポータル83は、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されたサービス・レベルが満たされるような、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル合意(SLA:Service Level Agreement)の計画および履行85は、SLAに従って将来要求されると予想されるクラウド・コンピューティング・リソースの事前手配および調達を提供する。
【0032】
ワークロード・レイヤ90は、クラウド・コンピューティング環境が利用され得る機能性の例を提供する。このレイヤから提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ分析処理94、取引処理95、ならびにトポロジ発見96、を含む。
【0033】
図3は、本発明の少なくとも1つの実施形態によるトポロジ分析システム300を示すブロック図である。図示のように、トポロジ分析システム300は、コンピューティング・システム310、サンドボックス環境320、本番アプリケーション330、およびネットワーク340を含む。トポロジ分析システム300は、クラウド・アプリケーションのトポロジの非侵襲的分析を実行するように構成され得る。
【0034】
コンピューティング・システム310は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、専用コンピュータ・サーバ、または当技術分野で知られている他の任意のコンピュータ・システムとすることができる。いくつかの実施形態では、コンピューティング・システム310は、クラスタ化されたコンピュータを利用してシームレスなリソースの単一プールとして機能するコンピュータ・システムを表す。一般に、コンピューティング・システム310は、図8に関してより詳細に説明するように、データを受信および送信することが可能な任意の電子デバイスまたは電子デバイスの組み合わせを表す。コンピューティング・システム310は、図8に関してさらに詳細に図示および説明するように、内部および外部のハードウェア・コンポーネントを含み得る。
【0035】
図示のように、コンピューティング・システム310は、分析アプリケーション315を含む。分析アプリケーション315は、クラウド本番アプリケーションのトポロジを分析するように構成されるアプリケーションであり得る。少なくとも1つの実施形態では、分析アプリケーション315は、機微データへのアクセスを必要とせずに、非侵襲的な方法でクラウド・アプリケーションを分析するように構成される。一般に、分析アプリケーション315は、トポロジ発見方法を実行するように構成される。適切なトポロジ発見方法の一実施形態を図4に関して説明する。
【0036】
図示のように、分析アプリケーション315は、水平分析コンポーネント316、垂直分析コンポーネント317、およびトポロジ構築コンポーネント318を含む。水平分析コンポーネント316、垂直分析コンポーネント317、およびトポロジ構築コンポーネント318のそれぞれは、それら自体の専用メモリ・ユニットまたは処理ユニットを含み得、あるいはコンピューティング・システム310または分析アプリケーション315内に収容された共有メモリ・ユニットおよび処理ユニットを活用し得る。水平分析コンポーネント316、垂直分析コンポーネント317、およびトポロジ構築コンポーネント318は、組み合わせによって、図4に関して説明するトポロジ発見方法などのトポロジ発見方法の特定のステップを実行するように構成され得る。
【0037】
水平分析コンポーネント316は、サービス間の通信リンクのセットを識別するためにサンドボックス環境320を分析するように構成され、これはサンドボックス環境内に含まれる1つまたは複数のサービスを識別することを含み得る。少なくともいくつかの実施形態では、水平分析コンポーネントは、通信リンクのセットを確立するために、識別された1つまたは複数のサービスのいずれが互いに通信するかを特定するように構成される。水平分析コンポーネント316は、アプリケーション内に存在する任意のインストルメンテーション・ツールを監視するようにさらに構成され得る。少なくともいくつかの実施形態では、水平分析コンポーネント316は、既存の通信リンクを識別するために環境変数などのコード要素の静的分析を使用するようにさらに構成される。水平分析コンポーネントは、サンドボックス環境内に含まれる識別された1つまたは複数のサービスに対応する1つまたは複数のサービス名を識別するようにさらに構成され得る。
【0038】
垂直分析コンポーネント317は、構造的依存関係のセットを識別するために本番アプリケーション330にクエリを実行するように構成され得る。少なくとも1つの実施形態では、垂直分析コンポーネント317は、本番アプリケーションの1つまたは複数のコンポーネントに関する情報を要求するために、本番アプリケーション330の1つまたは複数のコンポーネントにクエリを送信するように構成される。垂直分析コンポーネント317は、各コンポーネントについて、サンドボックス環境320内の対応するコンポーネントからAPIを継承すると共に、サンドボックス化されたコンポーネント内の対応するソース-宛先間リンクに基づいてソース-宛先間リンクを継承するようにさらに構成され得る。垂直分析コンポーネント317はさらに、サービス、ポッド、デプロイメント、デーモン・セット、レプリカ・セット、ステートフル・セット、ノード、またはエグレス(egress)・ネットワーク・ポリシーのいずれかについて本番アプリケーション330にクエリを実行するようにさらに構成され得る。少なくともいくつかの実施形態では、垂直分析コンポーネント317は、本番アプリケーション330内のコンポーネントの名前と、本番システム内でサービスを支える(back)コンテナ・イメージのIDとを要求するように構成される。
【0039】
トポロジ構築コンポーネント318は、水平分析アプリケーション316および垂直分析アプリケーション317によって提供される水平トポロジおよび垂直トポロジを組み合わせるように構成され得る。少なくとも1つの実施形態では、トポロジ構築コンポーネント318は、サンドボックス環境320内でサービスを支えるコンテナ・イメージのIDを、本番アプリケーション330内でサービスを支えるコンテナ・イメージのIDと照合するように構成される。トポロジ構築コンポーネント318は、サンドボックス環境320内のサービスの名前を本番アプリケーション330内のサービスの名前と照合するように構成され得る。少なくとも1つの実施形態では、トポロジ構築コンポーネント318は、サンドボックス環境320および本番アプリケーション330内のサービスから発生するトラフィックのネットワーク・フィンガープリントを計算するように構成される。そのような実施形態では、トポロジ構築コンポーネント318は、ネットワーク・フィンガープリントに対して類似性照合アルゴリズムを実行するようにさらに構成され得る。トポロジ構築コンポーネント318は、構築されたトポロジに関するフィードバックまたは追加情報をユーザに求めるようにさらに構成され得る。
【0040】
サンドボックス環境320は、対象のクラウド・アプリケーションを表すことを意図したテスト環境に対応し得る。少なくともいくつかの実施形態では、サンドボックス環境320は、稼働中のサーバおよびそれらのデータを有害な可能性のある変更にもエラーにもさらすことなく、クラウド・アプリケーションに関してコードをテストできる環境である。いくつかの実施形態では、サンドボックス環境320は、対象のクラウド・アプリケーションを表すことを意図したステージング環境に対応する。ステージング環境は、アプリケーションがデプロイされる前に本番環境に似た環境で品質を確保するためにコード、ビルド、またはアップデートをテストすることを目的とした、本番環境のほぼ正確なレプリカであり得る。いくつかの実施形態では、サンドボックス環境320は開発環境に対応する。開発環境は、対象のクラウド・アプリケーションをテストおよびデバッグするためのプロシージャおよびツールの集合体に対応する。統合開発環境すなわちIDEと呼ばれることもある開発環境は、コンパイラ、インタープリタ、ソース・コード・エディタ、ビルド自動化ツールのセット、およびデバッガのいずれかを含み得る。いくつかの実施形態では、サンドボックス環境320は、ステージング環境、開発環境、およびテスト環境の何らかの組み合わせを表し得る。
【0041】
本番アプリケーション330は、機能的なクラウド・アプリケーションに対応する。本番アプリケーション330は、サンドボックス環境320が表すクラウド・アプリケーションの最終版であり得る。適切な本番アプリケーションの例示的な実施形態は、図6および図7に関して示している。
【0042】
ネットワーク340は、たとえば、ローカル・エリア・ネットワーク(LAN:local area network)、インターネットなどのワイド・エリア・ネットワーク(WAN:wide area network)、またはこれら2つの組み合わせとすることができ、有線、無線、または光ファイバ接続を含むことができる。一般に、ネットワーク340は、コンピューティング・システム310、サンドボックス環境320、および本番アプリケーション330の間の通信をサポートする接続およびプロトコルの任意の組み合わせとすることができる。
【0043】
図4は、本発明の少なくとも1つの実施形態によるトポロジ発見方法400を示すフローチャートである。図示のように、トポロジ発見方法400は、クラウド・アプリケーションに対応するサンドボックス環境を識別すること(410)と、サービス間の通信リンクのセットを識別するためにサンドボックス環境を分析すること(420)と、クラウド・アプリケーションに対応する本番システムを識別すること(430)と、構造的依存関係のセットを識別するために本番システムにクエリを実行すること(440)と、水平トポロジおよび垂直トポロジを組み合わせてクラウド・アプリケーションの完全なトポロジを作成すること(450)と、を含む。トポロジ発見方法400は、クラウド・アプリケーションのトポグラフィの非侵襲的分析を行うために利用され得る。
【0044】
クラウド・アプリケーションに対応するサンドボックス環境を識別すること(410)は、指定されたクラウド・アプリケーションまたは対象のクラウド・アプリケーションを分析する要求を受信または識別することを含み得る。少なくともいくつかの実施形態では、サンドボックス環境は、対象のクラウド・アプリケーションを表すことを意図したテスト環境に対応する。テスト環境は、稼働中のサーバおよびそれらのデータを有害な可能性のある変更にもエラーにもさらすことなく、クラウド・アプリケーションに関してコードをテストできる環境を提供する。いくつかの実施形態では、サンドボックス環境は、対象のクラウド・アプリケーションを表すことを意図したステージング環境に対応する。ステージング環境は、アプリケーションがデプロイされる前に本番環境に似た環境で品質を確保するためにコード、ビルド、またはアップデートをテストすることを目的とした、本番環境のほぼ正確なレプリカであり得る。いくつかの実施形態では、サンドボックス環境は開発環境に対応する。開発環境は、対象のクラウド・アプリケーションをテストおよびデバッグするためのプロシージャおよびツールの集合体に対応する。統合開発環境すなわちIDEと呼ばれることもある開発環境は、コンパイラ、インタープリタ、ソース・コード・エディタ、ビルド自動化ツールのセット、およびデバッガのいずれかを含み得る。クラウド・アプリケーションに対応するサンドボックス環境を識別すること(410)は、適切なサンドボックス環境へのアクセスの要求を送信することをさらに含み得る。そのような実施形態では、許可の要求が、クラウド・アプリケーションおよび対応するサンドボックス環境の所有者/管理責任者(controller)に送信され得る。少なくともいくつかの実施形態では、クラウド・アプリケーションに対応するサンドボックス環境を識別すること(410)は、クラウド・アプリケーションを最もよく表すサンドボックス環境を識別することをさらに含む。少なくともいくつかの実施形態では、図3に関して説明した水平分析コンポーネント316などの水平分析コンポーネントは、クラウド・アプリケーションに対応するサンドボックス環境を識別すること(420)に関連する処理を実行するように構成される。
【0045】
サービス間の通信リンクのセットを識別するためにサンドボックス環境を分析すること(420)は、サンドボックス環境内に含まれる1つまたは複数のサービスを識別することを含み得る。サービス間の通信リンクのセットを、本明細書では代わりに水平トポロジと呼び得る。追加の実施形態では、サービス間の通信リンクのセットを、代わりに第1のトポロジと呼び得る。水平トポロジまたは第1のトポロジという用語は、トポロジの物理的な向きも、トポロジの発生順序も示すものではないということを理解されたい。サンドボックス環境を分析すること(420)は、通信リンクのセットを確立するために、識別された1つまたは複数のサービスのいずれが互いに通信するかを特定することをさらに含み得る。少なくとも1つの実施形態では、サンドボックス環境を分析すること(420)は、接続の可視性を実現するために既存のサービス・メッシュ可観測性ツールを使用してクラウド・アプリケーションをインストルメンテーションすることを含む。サービス・メッシュは、アプリケーションに組み込まれた、そのアプリケーションの異なる部分が相互に通信する方法を制御するように構成される、専用のインフラストラクチャ・レイヤである。対象のクラウド・アプリケーションがサービス・メッシュ・レイヤを含む実施形態では、サンドボックス環境を分析すること(420)は、サンドボックス環境内に含まれる1つまたは複数のサービス間の通信インフラストラクチャを識別するためにサービス・メッシュを分析することを含む。サービス間の通信リンクのセットを識別するためにサンドボックス環境を分析すること(420)は、既存の通信リンクを識別するために環境変数などのコード要素の静的分析を使用することを含み得る。いくつかの実施形態では、サンドボックス環境を分析すること(420)は、サービス間の既存の通信リンクを識別するためにドメイン・ネーム・システム(DNS:Domain Name System)・クエリを分析することを含む。サンドボックス環境を分析すること(420)は、サンドボックス環境内に含まれる識別された1つまたは複数のサービスに対応する1つまたは複数のサービス名を識別することをさらに含み得る。少なくとも1つの実施形態では、サンドボックス環境を分析すること(420)は、サンドボックス環境内でサービスを支えるコンテナ・イメージのIDを識別することを含む。少なくともいくつかの実施形態では、図3に関して説明した水平分析コンポーネント316などの水平分析コンポーネントは、サンドボックス環境を分析すること(420)に関連する処理を実行するように構成される。
【0046】
クラウド・アプリケーションに対応する本番システムを識別すること(430)は、クラウド・アプリケーションまたは対応するサンドボックス環境に、対応する本番システムに関する情報についてクエリを実行することを含み得る。少なくとも1つの実施形態では、クラウド・アプリケーションに対応する本番システムを識別すること(430)は、サンドボックス環境内に含まれる1つまたは複数のサービスのうちの少なくとも1つに関係または関連する本番システムを識別することを含む。クラウド・アプリケーションに対応する本番システムを識別すること(430)は、クラウド・アプリケーションに関連する本番システムを識別する/示す情報を受信することを含み得る。少なくともいくつかの実施形態では、クラウド・アプリケーションに対応する本番システムを識別すること(430)は、クエリおよびクエリ応答が送信/受信され得るように、本番システムへのアクセスを要求すること、または本番システムとの接続の確立を試行することを含む。少なくともいくつかの実施形態では、図3に関して説明した垂直分析コンポーネント317などの垂直分析コンポーネントは、クラウド・アプリケーションに対応する本番システムを識別すること(430)に関連する処理を実行するように構成される。
【0047】
構造的依存関係のセットを識別するために本番システムにクエリを実行すること(440)は、本番システムの1つまたは複数のコンポーネントに関する情報を要求するために、本番システムの1つまたは複数のコンポーネントにクエリを送信することを含み得る。構造的依存関係のセットを、垂直トポロジとも呼び得る。追加の実施形態では、構造的依存関係のセット(または垂直トポロジ)を、第2のトポロジと呼び得る。垂直トポロジまたは第2のトポロジという用語は、トポロジの物理的な向きも、トポロジの発生順序も示すものではないということを理解されたい。少なくとも1つの実施形態では、本番システムにクエリを実行すること(440)は、本番システム内の各コンポーネントについて、サンドボックス環境内の対応するコンポーネントからAPIを継承すると共に、サンドボックス化されたコンポーネント内の対応するソース-宛先間リンクに基づいてソース-宛先間リンクを継承することを含む。換言すれば、本番システム内のコンポーネントがサンドボックス環境に存在する対応するコンポーネントを実際に有する実施形態では、そのコンポーネントは対応するサンドボックス・コンポーネントと同じ接続リンクおよびAPIも有すると推測される。そのような実施形態では、構造的依存関係のセットを識別するために本番システムにクエリを実行すること(440)は、サンドボックス環境内の対応するコンポーネント(複数可)によって示されるAPIを反映するように構造的依存関係のセットを更新することを含む。対応するコンポーネントがサンドボックス環境に存在しない場合、そのコンポーネントは欠落情報としてタグ付けされるか、または無視され得る。垂直トポロジを識別するために本番システムにクエリを実行すること(440)は、サービス、ポッド、デプロイメント、デーモン・セット、レプリカ・セット、ステートフル・セット、ノード、またはエグレス・ネットワーク・ポリシーのいずれかについて本番システムにクエリを実行することをさらに含み得る。垂直トポロジを識別するために本番システムにクエリを実行することは、本番システム内のコンポーネントの名前を要求することをさらに含み得る。少なくともいくつかの実施形態では、本番システムにクエリを実行すること(440)は、本番システム内でサービスを支えるコンテナ・イメージのIDを要求することをさらに含む。少なくともいくつかの実施形態では、図3に関して説明した垂直分析コンポーネント317などの垂直分析コンポーネントは、構造的依存関係のセットを識別するために本番システムにクエリを実行すること(440)に関連する処理を実行するように構成される。
【0048】
水平トポロジおよび垂直トポロジを組み合わせてクラウド・アプリケーションの完全なトポロジを作成すること(450)は、クラウド・アプリケーションの完全なトポロジを作成するためにステップ420において識別された、識別された通信リンクのセットと、ステップ440において識別された構造的依存関係のセットとを組み合わせることを含み得る。クラウド・アプリケーションの完全なトポロジを作成すること(450)は、サンドボックス環境内でサービスを支えるコンテナ・イメージのIDを、本番アプリケーション内でサービスを支えるコンテナ・イメージのIDと照合することを含み得る。コンテナ・イメージIDが利用可能でない場合などの追加の実施形態では、クラウド・アプリケーションの完全なトポロジを作成すること(450)は、サンドボックス環境内のサービスの名前を本番アプリケーション内のサービスの名前と照合することを含む。クラウド・アプリケーションの完全なトポロジを作成すること(450)は、サンドボックス環境および本番アプリケーション内のサービスから発生するトラフィックのネットワーク・フィンガープリントを計算することを含み得る。そのような実施形態は、ネットワーク・フィンガープリントに対して類似性照合アルゴリズムを実行することをさらに含み得る。クラウド・アプリケーションの完全なトポロジを作成すること(450)は、サンドボックス環境内の通信リンクに関する情報を本番環境に転送することをさらに含み得る。2つのトポロジを結合するための処理の一例は、垂直トポロジに関連するノードの構造的特性および接続性から類似のノードを発見し(たとえば、局所的な近傍の構造的類似性を使用して2つの異なるグラフのノードのペアごとの類似性スコアを導出する)、次いで、類似したサンドボックス・ノードから水平トポロジに関連する本番(prod)ノードの特性を推測することを通じたものであり得る。クエリが実行された情報の一部が不完全である場合などのいくつかの実施形態では、完全なトポロジは、専門家によって増補もしくは編集または調整され得る。少なくともいくつかの実施形態では、図3に関して説明したトポロジ構築コンポーネント318などのトポロジ構築コンポーネントは、アプリケーションの完全なトポロジを作成すること(450)に関連する処理を実行するように構成される。
【0049】
図5図6、および図7に関して、アプリケーションと、そのアプリケーション内の対応するサービスおよびサービス・デプロイメントとの例示的な実施形態が示されている。図示した実施形態は、様々な特定のサービスおよびデプロイメントを名前で含み、これらの特定のサービスおよびデプロイメントの間の接続を表示しているが、任意の数のアプリケーションが、本明細書で論じた方法を使用した分析に適し得、これらの図に関して論じたサービスの組み合わせだけを含むアプリケーションに限定されるべきではないということを理解されたい。むしろ、図示および説明したサービスおよびサービス・デプロイメントは、アプリケーション内に存在する、そのアプリケーションに関連付けられた容量内でデータの送信または受信あるいはその両方を行う役割を担う、任意のアプリケーションまたはサービスを表す。図示した実施形態に関して、各サービスは、データに対して様々な操作を行う場合があり、もしくはデータに対して操作を行わない場合があり、またはその間のどこかである場合があり、本明細書で開示した方法に関して、分析されるのは、これらのサービス/デプロイメント/アプリケーションならびにそれらの相互の通信の存在のみである。様々なサービスおよびデプロイメントの間の通信/接続に関して、本明細書で開示した方法は、これらの接続を介して行われる通信内のデータを分析するのではなく、これらの接続の存在を検出して、アプリケーション内でどのサービスが互いに通信するかを特定する。したがって、図5図6、および図7に関して示したサービス、デプロイメント、および他の様々な構造/アプリケーションは、本発明の単一の実施形態によるアプリケーションを表すことを意図しているが、本明細書の方法を使用して分析することが可能なサービスの包括的なリストでも、必要なコンポーネントのリストでもないということを理解されたい。
【0050】
図5は、本発明の少なくとも1つの実施形態による水平トポロジ500のブロック図を示している。図示した実施形態は、サンドボックス環境内に存在し得るサンプル・サービスのセットを含むが、本発明の他の実施形態に存在し得るサービスの多くの組み合わせの単なる一例と考えられるべきである。図示のように、水平トポロジ500は、報告サービス510、統計サービス520、トランザクション・サービス530、詳細サービス540、フロント・ページ・サービス550、評価サービス560、およびレビュー・サービス570を含む。図5は、図示したサービス間のデータの流れをさらに示している。図示のように、報告サービス510は、報告データを統計サービス520に提供する。統計サービス520は、受信した報告データを処理し、統計および分析をトランザクション・サービス530に提供する。フロント・ページ・サービス550は、ページ情報をレビュー・サービス570および詳細サービス540の両方に提供する。レビュー・サービス570は、受信したページ情報を処理し、レビュー情報を評価サービス560に提供する。詳細サービス540は、受信したページ情報を処理し、詳細情報をトランザクション・サービス530に提供する。
【0051】
図6は、本発明の例示的実施形態による垂直トポロジ600のブロック図を示している。図示した実施形態は、本番アプリケーション内に存在し得るサンプル構造および依存関係のセットを含むが、本発明の追加の実施形態に存在し得る構造および依存関係の多くの組み合わせの単なる一例と考えられるべきである。図示のように、垂直トポロジ600は、ポッド610、ノード620、レビュー・デプロイメント630、評価デプロイメント640、フロント・ページ・デプロイメント650、詳細デプロイメント660、報告デプロイメント670、統計デプロイメント680、およびトランザクション・デプロイメント690を含む。ポッド610(610A、610B、610C)はそれぞれ、クラスタ内で動作中のプロセス/マイクロサービスの単一のインスタンスを表し得る。ノード620は相互に通信し得る。これらは、たとえば、上述のプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはそれらの組み合わせなどの1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化され得る(図示せず)。ノード620が、任意のタイプのネットワークまたはネットワーク・アドレス指定可能接続(たとえば、Webブラウザを使用)あるいはその両方を介して任意のタイプのコンピュータ化デバイスと通信できることは理解される。いくつかの実施形態では、図示した各ノード620は個別のノードに対応し得、他の実施形態では、図示したノード620の一部は同じノードに対応する。デプロイメントは、それらに対応するノードおよびポッドと並べて図示しており、どのデプロイメントが各ノードに関連付けられるかは実施形態ごとに異なり得ることを理解されたい。レビュー・デプロイメント(複数可)630(630A、630B、630C)は、図5に関して説明したレビュー・サービスなどの1つまたは複数のレビュー・サービスの特定のデプロイメント(または複数のデプロイメント)に対応する。評価デプロイメント640は、図5に関して説明した評価サービスなどの評価サービスの特定のデプロイメントに対応する。フロント・ページ・デプロイメント650は、図5に関して説明したフロント・ページ・サービスなどのフロント・ページ・サービスの特定のデプロイメントに対応する。詳細デプロイメント660は、図5に関して説明した詳細サービスなどの詳細サービスの特定のデプロイメントに対応する。報告デプロイメント670は、図5に関して説明した報告サービスなどの報告サービスの特定のデプロイメントに対応する。統計デプロイメント680は、図5に関して説明した統計サービスなどの統計サービスの特定のデプロイメントに対応する。トランザクション・デプロイメント690は、図5に関して説明したトランザクション・サービスなどのトランザクション・サービスの特定の実装に対応する。図示のように、垂直トポロジ600は、サービスまたはデプロイメント間の接続に関する包括的な情報を含まない。
【0052】
図7は、本発明の例示的な実施形態による完全なトポロジ700を示している。図示のように、完全なトポロジ700は、水平トポロジ500および垂直トポロジ600の組み合わせを表す。垂直トポロジ・コンポーネント(様々な特定のデプロイメント)を囲む点線および対応するラベルは、それらが対応する水平トポロジからのサービスを示し、完全なトポロジ700における矢印は、示したサービス間の通信リンクに対応する。典型的なサンドボックスは、機微データも含み得る本番環境にアクセスせずに、トレーニングして実際の実践経験を積む方法を提供するために、最小限の設定およびリソースで構築される。図示のように、図5の水平トポロジ内のサービスは、サービス名に基づいて図6の垂直トポロジ内のデプロイメントと照合されているが、代わりにコンテナ・イメージIDを使用して照合することもできる。
【0053】
図8は、本発明の例示的な実施形態によるコンピューティング・システム110のコンポーネントのブロック図を示している。図8は1つの実装形態の例示を提供しているにすぎず、異なる実施形態が実装され得る環境に関するいかなる制限も意味するものではないことを理解されたい。図示した環境への多くの変更が加えられ得る。
【0054】
図示のように、コンピュータ800は、コンピュータ・プロセッサ(複数可)804、メモリ806、永続ストレージ808、通信ユニット812、および入力/出力(I/O:input/output)インターフェース(複数可)814の間の通信を提供する通信ファブリック802を含む。通信ファブリック802は、プロセッサ(たとえば、マイクロプロセッサ、通信およびネットワーク・プロセッサなど)、システム・メモリ、周辺デバイス、およびシステム内の他の任意のハードウェア・コンポーネントの間でデータまたは制御情報あるいはその両方を受け渡しするために設計された任意のアーキテクチャで実装することができる。たとえば、通信ファブリック802は、1つまたは複数のバスで実装することができる。
【0055】
メモリ806および永続ストレージ808は、コンピュータ可読記憶媒体である。この実施形態では、メモリ806は、ランダム・アクセス・メモリ(RAM:random access memory)816およびキャッシュ・メモリ818を含む。一般に、メモリ806は、任意の適切な揮発性または不揮発性のコンピュータ可読記憶媒体を含むことができる。
【0056】
1つまたは複数のプログラムが、それぞれのコンピュータ・プロセッサ804のうちの1つまたは複数によってアクセスまたは実行あるいはその両方を行うために、メモリ806の1つまたは複数のメモリを介して永続ストレージ808に記憶され得る。この実施形態では、永続ストレージ808は、磁気ハード・ディスク・ドライブを含む。代替として、または磁気ハード・ディスク・ドライブに加えて、永続ストレージ808は、ソリッド・ステート・ハード・ドライブ、半導体ストレージ・デバイス、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラム可能読み取り専用メモリ(EPROM:erasable programmable read-only memory)、フラッシュ・メモリ、またはプログラム命令もしくはデジタル情報を記憶することが可能な他の任意のコンピュータ可読記憶媒体を含むことができる。
【0057】
永続ストレージ808によって使用される媒体もまた、取り外し可能であり得る。たとえば、リムーバブル・ハード・ドライブが永続ストレージ808に使用され得る。他の例には、光ディスクおよび磁気ディスク、サム・ドライブ、ならびにスマート・カードが含まれ、これらはドライブに挿入されて他のコンピュータ可読記憶媒体上に転送され、これも永続ストレージ808の一部である。
【0058】
通信ユニット812は、これらの例では、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例では、通信ユニット812は、1つまたは複数のネットワーク・インターフェース・カードを含む。通信ユニット812は、物理および無線通信リンクの一方または両方を使用して通信を提供し得る。
【0059】
I/Oインターフェース(複数可)814は、コンピュータ800に接続され得る他のデバイスとのデータの入力および出力を可能にする。たとえば、I/Oインターフェース814は、キーボード、キーパッド、タッチ・スクリーン、または他の何らかの適切な入力デバイス、あるいはそれらの組み合わせなどの外部デバイス820への接続を提供し得る。外部デバイス820はまた、ポータブル式のコンピュータ可読記憶媒体、たとえば、サム・ドライブ、ポータブル式の光ディスクまたは磁気ディスク、およびメモリ・カードなどを含むことができる。本発明の実施形態を実践するために使用されるソフトウェアおよびデータは、そのようなポータブル式のコンピュータ可読記憶媒体に記憶することができ、I/Oインターフェース(複数可)814を介して永続ストレージ808にロードすることができる。I/Oインターフェース(複数可)814もまた、ディスプレイ822に接続され得る。
【0060】
ディスプレイ822は、データをユーザに表示するためのメカニズムを提供し、たとえば、コンピュータ・モニタであり得る。
【0061】
本明細書に記載のプログラムは、それらが本発明の特定の実施形態で実装される場合の用途に基づいて識別している。しかしながら、本明細書のいかなる特定のプログラム名称も便宜上使用しているにすぎず、したがって、本発明が、そのような名称によって識別または含意あるいはその両方が行われる任意の特定の用途のみに限定されるべきではないということを理解されたい。
【0062】
本発明は、任意の可能な技術的詳細レベルの統合におけるシステム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせであり得る。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0063】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持および記憶可能な有形のデバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、限定はしないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリー・スティック(R)、フレキシブル・ディスク、命令が記録されたパンチ・カードまたは溝の隆起構造などの機械的にコード化されたデバイス、およびこれらの任意の適切な組み合わせが含まれる。コンピュータ可読記憶媒体は、本明細書で使用する場合、たとえば、電波または他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、または有線で伝送される電気信号などの一過性の信号自体であると解釈されるべきではない。
【0064】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、たとえば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらの組み合わせなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶する。
【0065】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で実行され得る。最後のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得、または(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータへの接続がなされ得る。いくつかの実施形態では、たとえば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA:field-programmable gate array)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic array)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することによって、電子回路を個人向けにし得る。
【0066】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書で説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装できることは理解されよう。
【0067】
これらのコンピュータ可読プログラム命令を、コンピュータまたは他のプログラム可能データ処理装置のプロセッサに提供して、それらの命令がコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行された場合に、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為を実装するための手段が生成されるようなマシンを生成し得る。また、これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはそれらの組み合わせに特定の方法で機能するように指示することが可能なコンピュータ可読記憶媒体に記憶して、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為の態様を実装する命令を含む製造品を構成するようにし得る。
【0068】
また、コンピュータ可読プログラム命令をコンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させることによって、それらの命令がコンピュータ、他のプログラム可能装置、または他のデバイス上で実行された場合に、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為が実装されるようなコンピュータ実装処理を生成し得る。
【0069】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理的機能(複数可)を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表し得る。いくつかの代替的実装形態では、ブロックに記載した機能は、図示した順序以外で行われ得る。たとえば、関与する機能に応じて、連続して示した2つのブロックは、実際には、1つのステップとして実現され得、同時に、実質的に同時に、部分的にまたは完全に時間的に重なるように実行され得、またはそれらのブロックは、場合により逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせは、指定された機能もしくは行為を実行するか、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用のハードウェア・ベースのシステムによって実装できることにも気付くであろう。
【0070】
本発明の様々な実施形態の説明は例示の目的で提示しているが、網羅的であることも、開示した実施形態に限定されることも意図したものではない。本発明の範囲および思想から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本明細書で使用する用語は、実施形態の原理、実際の適用、もしくは市場で見られる技術に対する技術的改善を最もよく説明するために、または当業者が本明細書に開示した実施形態を理解できるようにするために選択している。
図1
図2
図3
図4
図5
図6
図7
図8