(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024010659
(43)【公開日】2024-01-24
(54)【発明の名称】コマンド検証による迅速なエラー検出
(51)【国際特許分類】
H04L 41/0853 20220101AFI20240117BHJP
G06F 9/44 20180101ALI20240117BHJP
【FI】
H04L41/0853
G06F9/44
【審査請求】有
【請求項の数】13
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023109293
(22)【出願日】2023-07-03
(31)【優先権主張番号】17/862,680
(32)【優先日】2022-07-12
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.HDMI
2.PYTHON
3.HPUX
(71)【出願人】
【識別番号】518249328
【氏名又は名称】サービスナウ, インコーポレイテッド
【氏名又は名称原語表記】ServiceNow, Inc.
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【弁理士】
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100109335
【弁理士】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【弁理士】
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100141553
【弁理士】
【氏名又は名称】鈴木 信彦
(72)【発明者】
【氏名】アブヒシェク クマール
(72)【発明者】
【氏名】タル ベン アリ
(72)【発明者】
【氏名】レナン コエルホ シルヴァ
(72)【発明者】
【氏名】スリーニヴァス スブラマニアム
(72)【発明者】
【氏名】マニッシュ サティシュ ヴィムラ クマール
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA07
5B376AA32
5B376BC07
5B376BC23
5B376BC38
5B376BC80
(57)【要約】 (修正有)
【課題】所与のネットワークアドレスのセットに対してディスカバリ手順をテストするシステム、コンピュータ実施方法及び製造品を提供する。
【解決手段】ディスカバリ検証アプリケーションによる方法であって、永続ストレージから、それぞれネットワークアドレスのリストに関連付けられたディスカバリコマンドのリスト及びネットワークアドレスのリストを読み取り、ディスカバリコマンドのリスト内の各ディスカバリコマンドについて、1つ又は複数のプロキシサーバを介して、それぞれ関連付けられたネットワークアドレスのリスト内の各ネットワークアドレスにディスカバリコマンドを送信し、1つ又は複数のプロキシサーバを介して、送信されたディスカバリコマンドの各々にそれぞれ対応するディスカバリコマンドの成功又は失敗の何れかを示すディスカバリ結果を受信し、永続ストレージにディスカバリ結果を書き込む。
【選択図】
図10
【特許請求の範囲】
【請求項1】
ディスカバリコマンドのリストを含む永続ストレージであって、前記ディスカバリコマンドがそれぞれネットワークアドレスのリストに関連付けられる、永続ストレージと、
1つまたは複数のプロセッサと、
ディスカバリ検証アプリケーションとを備えるシステムであって、前記ディスカバリ検証アプリケーションが、前記1つまたは複数のプロセッサによって実行されるとき、
前記永続ストレージから、前記ディスカバリコマンドのリストおよび前記ネットワークアドレスのリストを読み取り、
前記ディスカバリコマンドのリスト内の各ディスカバリコマンドに関して、前記システムの外部で展開される1つまたは複数のプロキシサーバを介して、それぞれ関連付けられた前記ネットワークアドレスのリスト内の各ネットワークアドレスに前記ディスカバリコマンドを送信し、
前記1つまたは複数のプロキシサーバを介して、送信された前記ディスカバリコマンドの各々にそれぞれ対応するディスカバリ結果を受信し、前記ディスカバリ結果が、前記ディスカバリコマンドの成功または失敗のいずれかを示し、
前記ディスカバリ結果を前記永続ストレージに書き込む、
ように構成される、システム。
【請求項2】
前記ディスカバリ検証アプリケーションが、前記システムによって実行されるようにスケジュールされたディスカバリ手順に関係なく実行される、請求項1に記載のシステム。
【請求項3】
前記ネットワークアドレスのリストが、前記ディスカバリコマンドの各々に関連付けられたネットワークアドレスの共通のリストとして指定される、請求項1に記載のシステム。
【請求項4】
前記ディスカバリコマンドの各々が、コマンドラインインターフェースコマンド、SNMP(simple network management protocol)コマンド、ウェブベースのインターフェースを介して送達可能なコマンド、またはWMI(Windows Management Instrumentation)コマンドのうちの1つである、請求項1に記載のシステム。
【請求項5】
前記ディスカバリコマンドおよび前記ネットワークアドレスが、前記永続ストレージ内の第1のデータベーステーブルに記憶され、前記ディスカバリ結果が、前記永続ストレージ内の第2のデータベーステーブルに記憶される、請求項1に記載のシステム。
【請求項6】
前記第1のデータベーステーブルの各エントリが、特定のディスカバリコマンドが実行されるオペレーティングシステムのクラス、前記特定のディスカバリコマンドを送達するために使用されるネットワークプロトコルを指定する前記特定のディスカバリコマンドのタイプ、前記特定のディスカバリコマンドが送信される前記プロキシサーバの1つ、または前記特定のディスカバリコマンドで使用するための認証資格情報の指示を含む、請求項5に記載のシステム。
【請求項7】
前記第2のデータベーステーブル内の前記ディスカバリ結果の各エントリが、実行された特定のディスカバリコマンドの仕様、前記特定のディスカバリコマンドが送信された前記ネットワークアドレス、または前記特定のディスカバリコマンドが送信されたプロキシサーバを含む、請求項5に記載のシステム。
【請求項8】
前記ディスカバリ検証アプリケーションが、前記ディスカバリコマンドを連続バッチで送信するように構成される、請求項5に記載のシステム。
【請求項9】
前記ディスカバリコマンドのリストが順序付けを有し、前記ディスカバリ検証アプリケーションが、前記順序付けに従って、関連のネットワークアドレスごとに前記ディスカバリコマンドを送信するように構成される、請求項5に記載のシステム。
【請求項10】
前記ディスカバリ結果の成功の指示が、特定のネットワークアドレスに関連付けられたコンピューティングデバイス上での特定のディスカバリコマンドの実行からの出力を含む、請求項1に記載のシステム。
【請求項11】
前記ディスカバリ結果における失敗の指示は、特定のディスカバリコマンドが送信された特定のネットワークアドレスが到達不能であること、前記特定のネットワークアドレスに関連付けられたコンピューティングデバイスによって前記特定のディスカバリコマンドがサポートされていないこと、前記コンピューティングデバイスにアクセスするために前記特定のディスカバリコマンドによって使用される資格情報の認証失敗、または前記コンピューティングデバイスが前記特定のディスカバリコマンドの実行を試行したときの前記資格情報の認可失敗、により前記特定のディスカバリコマンドが失敗したかを指定する、請求項1に記載のシステム。
【請求項12】
ディスカバリ検証アプリケーションによって、永続ストレージから、それぞれネットワークアドレスのリストに関連付けられたディスカバリコマンドのリスト、および前記ネットワークアドレスのリストを読み取るステップと、
前記ディスカバリコマンドのリスト内の各ディスカバリコマンドについて、前記ディスカバリ検証アプリケーションによって、1つまたは複数のプロキシサーバを介して、それぞれ関連付けられた前記ネットワークアドレスのリスト内の各ネットワークアドレスに前記ディスカバリコマンドを送信するステップと、
前記ディスカバリ検証アプリケーションによって、前記1つまたは複数のプロキシサーバを介して、送信された前記ディスカバリコマンドの各々にそれぞれ対応するディスカバリ結果を受信するステップであって、前記ディスカバリ結果が、前記ディスカバリコマンドの成功または失敗のいずれかを示す、ステップと、
前記ディスカバリ検証アプリケーションによって、前記永続ストレージに前記ディスカバリ結果を書き込むステップと、
を含むコンピュータ実施方法。
【請求項13】
前記ディスカバリコマンドの各々が、コマンドラインインターフェースコマンド、SNMP(simple network management protocol)コマンド、ウェブベースのインターフェースを介して送達可能なコマンド、またはWMI(Windows Management Instrumentation)コマンドのうちの1つである、請求項12に記載のコンピュータ実施方法。
【請求項14】
前記ディスカバリコマンドおよび前記ネットワークアドレスが、前記永続ストレージ内の第1のデータベーステーブルに記憶され、前記ディスカバリ結果が、前記永続ストレージ内の第2のデータベーステーブルに記憶される、請求項12に記載のコンピュータ実施方法。
【請求項15】
前記第1のデータベーステーブルの各エントリが、特定のディスカバリコマンドが実行されるオペレーティングシステムのクラス、前記特定のディスカバリコマンドを送達するために使用されるネットワークプロトコルを指定する前記特定のディスカバリコマンドのタイプ、前記特定のディスカバリコマンドが送信される前記プロキシサーバの1つ、または前記特定のディスカバリコマンドで使用するための認証資格情報の指示を含む、請求項14に記載のコンピュータ実施方法。
【請求項16】
前記第2のデータベーステーブル内の前記ディスカバリ結果の各エントリが、実行された特定のディスカバリコマンドの仕様、前記特定のディスカバリコマンドが送信された前記ネットワークアドレス、または前記特定のディスカバリコマンドが送信されたプロキシサーバを含む、請求項14に記載のコンピュータ実施方法。
【請求項17】
前記ディスカバリ検証アプリケーションが、前記ディスカバリコマンドを連続バッチで送信するように構成される、請求項14に記載のコンピュータ実施方法。
【請求項18】
前記ディスカバリコマンドのリストが順序付けを有し、前記ディスカバリ検証アプリケーションが、前記順序付けに従って、関連のネットワークアドレスごとに前記ディスカバリコマンドを送信するように構成される、請求項14に記載のコンピュータ実施方法。
【請求項19】
前記ディスカバリ結果における失敗の指示は、前記特定のディスカバリコマンドが送信された特定のネットワークアドレスが到達不能であること、前記特定のネットワークアドレスに関連付けられたコンピューティングデバイスによって前記特定のディスカバリコマンドがサポートされていないこと、前記コンピューティングデバイスにアクセスするために前記特定のディスカバリコマンドによって使用される資格情報の認証失敗、または前記コンピューティングデバイスが前記特定のディスカバリコマンドの実行を試行したときの前記資格情報の認可失敗により、前記特定のディスカバリコマンドが失敗したかを指定する、請求項12に記載のコンピュータ実施方法。
【請求項20】
プログラム命令が記憶されている非一時的なコンピュータ可読媒体を含む製造品であって、前記プログラム命令が、コンピューティングシステムによる実行時に、ディスカバリ検証アプリケーションに、
永続ストレージから、それぞれネットワークアドレスのリストに関連付けられたディスカバリコマンドのリスト、および前記ネットワークアドレスのリストを読み取る操作と、
前記ディスカバリコマンドのリスト内の各ディスカバリコマンドについて、1つまたは複数のプロキシサーバを介して、それぞれ関連付けられた前記ネットワークアドレスのリスト内の各ネットワークアドレスに前記ディスカバリコマンドを送信する操作と、
前記1つまたは複数のプロキシサーバを介して、送信された前記ディスカバリコマンドの各々にそれぞれ対応するディスカバリ結果を受信する操作であって、前記ディスカバリ結果が、前記ディスカバリコマンドの成功または失敗のいずれかを示す操作と、
前記永続ストレージに前記ディスカバリ結果を書き込む操作と、
を含む操作を実行させる、製造品。
【発明の詳細な説明】
【背景技術】
【0001】
ディスカバリは、コンピューティングデバイス、ならびにこれらのコンピューティングデバイスにインストールされるおよび/またはコンピューティングデバイス上で実行されるソフトウェアアプリケーションを決定して特徴付けることができる自動または半自動プロセスである。そのようなデバイスおよびソフトウェアの表現は、構成アイテムとしてデータベースに記憶することができる。構成アイテム間の関係を決定して、データベースに記憶することもできる。ディスカバリは、典型的には管理対象ネットワークまたはパブリッククラウドサービスに適用されて、これらの構成アイテムおよび関係のリストを提供するだけでなく、上位レベルのアプリケーションが情報技術(IT)インフラストラクチャを管理することができるようにする基礎としても役立つ。
【0002】
それにもかかわらず、特定の環境では、正しく動作するようにディスカバリを構成することが困難であり得る。特に、ディスカバリパターン(特定のデバイスまたはシステムを発見するための段階的なプロセスを提供するスクリプトのようなコマンドのリスト)は、構成ミスにより失敗する可能性がある。しかし、これらの失敗は、典型的には数時間または数日間見つけられず、したがって、ディスカバリが試みられたデバイスまたはシステムはデータベースに表されないままである。
【発明の概要】
【0003】
本明細書における実施形態は、所与のネットワークアドレスのセットに対してディスカバリ手順をテストすることができるメカニズムを提供することによって、これらおよび場合によっては他の技術的問題に対処する。いくつかの例では、そのようなメカニズムは、ディスカバリコマンドのリストおよびネットワークアドレスのセットを入力として受け取るソフトウェアベースの検証ツール(「ディスカバリ検証アプリケーション」とも呼ばれる)の形態を取ることができる。次いで、検証ツールは、ディスカバリインフラストラクチャを使用して、ネットワークアドレスを用いてディスカバリコマンドをテストする。検証ツールは、例えばデータベーステーブル内で、ファイル内で、またはグラフィカルユーザインターフェースによって、これらのコマンド/アドレスのペアの成功または失敗の指示(Indication)を提供することができる。
【0004】
したがって、ユーザは、ディスカバリ手順に取り組む前に、ネットワークアドレスのセットに対してディスカバリパターンをテストすることができる。検証ツールからの出力は、サポートされていないコマンド、ネットワークアドレスへの到達不能(unreachable)、認証失敗(authentication failure)、または認可失敗(authorization failure)など、任意の失敗の原因を示すことがある。ユーザは、任意の失敗の指示を迅速に受け取り、失敗を修正または軽減するための措置を講じることができる。検証ツールによってディスカバリパターンを失敗なく実行することができると、正常な完了に関する高い信頼度で、そのパターンを定期的な自動ディスカバリ手順に追加することができる。
【0005】
したがって、第1の例示的実施形態は、それぞれネットワークアドレスのリストに関連付けられるディスカバリコマンドのリストを含む永続ストレージを含むことがある。第1の例示的な実施形態はまた、1つまたは複数のプロセッサと、ディスカバリ検証アプリケーションとを含むことがあり、ディスカバリ検証アプリケーションが、1つまたは複数のプロセッサによって実行されるとき、永続ストレージから、ディスカバリコマンドのリストおよびネットワークアドレスのリストを読み取り、ディスカバリコマンドのリスト内の各ディスカバリコマンドに関して、システムの外部で展開された1つまたは複数のプロキシサーバを介して、それぞれ関連付けられたネットワークアドレスのリスト内の各ネットワークアドレスにディスカバリコマンドを送信し、1つまたは複数のプロキシサーバを介して、送信されたディスカバリコマンドの各々にそれぞれ対応するディスカバリ結果を受信し、ディスカバリ結果が、ディスカバリコマンドの成功または失敗のいずれかを示し、検出結果を永続ストレージに書き込む、ように構成される。
【0006】
第2の例示的実施形態は、ディスカバリ検証アプリケーションによって、永続ストレージから、それぞれネットワークアドレスのリストに関連付けられたディスカバリコマンドのリスト、およびネットワークアドレスのリストを読み取ることを含むことがある。第2の例示的実施形態はまた、ディスカバリコマンドのリスト内の各ディスカバリコマンドについて、ディスカバリ検証アプリケーションによって、1つまたは複数のプロキシサーバを介して、それぞれ関連付けられたネットワークアドレスのリスト内の各ネットワークアドレスにディスカバリコマンドを送信することを含むことがある。第2の例示的実施形態はまた、ディスカバリ検証アプリケーションによって、1つまたは複数のプロキシサーバを介して、送信されたディスカバリコマンドの各々にそれぞれ対応するディスカバリ結果を受信することを含むことがあり、ここで、ディスカバリ結果は、ディスカバリコマンドの成功または失敗のいずれかを示す。第2の例示的実施形態はまた、ディスカバリ検証アプリケーションによって、永続ストレージにディスカバリ結果を書き込むことを含むことがある。
【0007】
第3の例示的実施形態では、製造品が、プログラム命令が記憶されている非一時的なコンピュータ可読媒体を含むことがあり、プログラム命令が、コンピューティングシステムによる実行時に、第1および/または第2の例示的実施形態による操作をコンピューティングシステムに実行させる。
【0008】
第4の例示的実施形態では、コンピューティングシステムは、少なくとも1つのプロセッサ、ならびにメモリおよびプログラム命令を含むことができる。プログラム命令は、メモリに記憶され、少なくとも1つのプロセッサによる実行時に、第1および/または第2の例示的実施形態に従ってコンピューティングシステムに操作を実行させることができる。
【0009】
第5の例示的実施形態では、システムは、第1および/または第2の例示的実施形態の操作の各々を実行するための様々な手段を含むことができる。
【0010】
これら、ならびに他の実施形態、態様、利点、および代替形態は、必要に応じて添付図面を参照しながら以下の詳細な説明を読むことによって当業者には明らかとなろう。さらに、本明細書で提供されるこの概要ならびに他の説明および図面は、単なる例として実施形態を例示することを意図されており、したがって多数の変形形態が可能である。例えば、特許請求された実施形態の範囲内に留まったまま、構造要素およびプロセスステップを再構成する、組み合わせる、分散させる、消去する、または他の形で変更することができる。
【図面の簡単な説明】
【0011】
【
図1】例示的実施形態による、コンピューティングデバイスの概略図である。
【
図2】例示的実施形態による、サーバデバイスクラスタの概略図である。
【
図3】例示的実施形態による、リモートネットワーク管理アーキテクチャを示す図である。
【
図4】例示的実施形態による、リモートネットワーク管理アーキテクチャを含む通信環境を示す図である。
【
図5】例示的実施形態による、リモートネットワーク管理アーキテクチャを含む別の通信環境を示す図である。
【
図6A】例示的実施形態による、仮想マシンクラスタを示す図である。
【
図6B】例示的実施形態による、
図6Aの仮想マシンクラスタに関する単純なディスカバリパターンを示す図である。
【
図7】例示的実施形態による、検証ツールをホストするリモートネットワーク管理アーキテクチャを含む通信環境を示す図である。
【
図8】例示的実施形態による、データベーステーブルと対話する検証ツールを示す図である。
【
図9】例示的実施形態による、検証ツールの動作を示す図である。
【
図10】例示的実施形態による、フローチャートである。
【発明を実施するための形態】
【0012】
本明細書では、例示的な方法、デバイス、およびシステムを述べる。本明細書において、「例」および「例示的」という語は、「例、実例、または例示として役立つ」ことを意味するために使用されることを理解されたい。「例」または「例示的」として本明細書で述べる任意の実施形態または特徴は、明示されない限り、他の実施形態または特徴よりも好ましいまたは有利であるとは必ずしも解釈されない。したがって、本明細書に提示される主題の範囲から逸脱することなく、他の実施形態を利用することができ、他の変更を施すことができる。
【0013】
したがって、本明細書で述べる例示的実施形態は、限定を意味するものではない。本明細書で全般的に述べて図面に示す本開示の態様は、多様な異なる構成で配置、置換、結合、分離、および設計することができることが容易に理解されよう。例えば、「クライアント」および「サーバ」コンポーネントへの機能の分離は、いくつかの方法で行うことができる。
【0014】
さらに、文脈が別段に示さない限り、各図に示された特徴は互いに組み合わせて使用することができる。したがって、図面は、図示された特徴のすべてが各実施形態に必要なわけではないという理解の下で、1つまたは複数の全体的な実施形態の構成要素の態様と全般的にみなすべきである。
【0015】
さらに、本明細書または特許請求の範囲における要素、ブロック、またはステップの任意の列挙は、わかりやすくするためのものである。したがって、そのような列挙は、これらの要素、ブロック、またはステップが特定の配置に従うこと、または特定の順序で実施されることを要求または示唆すると解釈すべきではない。
【0016】
(I.導入)
大企業は、相互に関連する多くの業務を抱える複合実体である。これらの業務の一部は、人事(HR)、サプライチェーン、情報技術(IT)、財務など、企業全体にわたって見られる。しかし、各企業は、重要な機能を提供する、および/または競争上の優位性を生み出す独自の業務も有する。
【0017】
広く実施されている業務をサポートするために、企業は、典型的には、顧客関係管理(CRM)や人的資本管理(HCM)パッケージなどの既製のソフトウェアアプリケーションを使用する。しかし、独自の要件を満たすためにカスタムソフトウェアアプリケーションが必要となることもある。大企業は、数十個または数百個のそのようなカスタムソフトウェアアプリケーションを有していることがよくある。それにもかかわらず、本明細書における実施形態によって提供される利点は、大企業に限定されず、任意の規模の企業または任意の他のタイプの組織に適用可能であり得る。
【0018】
多くのそのようなソフトウェアアプリケーションは、企業内の個々の部門によって開発されている。これらは、単純なスプレッドシートから、カスタム構築されたソフトウェアツールおよびデータベースまで多岐にわたる。しかし、サイロ化されたカスタムソフトウェアアプリケーションの急増には多くの欠点がある。これは、企業がその業務を実行して成長し、革新し、規制要件を満たす能力に悪影響を及ぼす。企業は、サブシステムおよびデータを一元化する単一のシステムがないので、業務の統合、合理化、および強化が難しいと感じることがある。
【0019】
カスタムアプリケーションを効率的に作成するために、企業は、不要な開発の複雑さをなくす、リモートでホストされるアプリケーションプラットフォームの恩恵を受ける。そのようなプラットフォームの目標は、時間のかかる反復的なアプリケーション開発タスクを削減し、ソフトウェアエンジニアおよび他の役割を担う者が独自の高価値の機能を開発することに集中できるようにすることである。
【0020】
この目標を達成するために、企業全体のワークフローをインテリジェントに自動化するためにaPaaS(Application Platform as a Service:サービスとしてのアプリケーションプラットフォーム)の概念が導入されている。aPaaSシステムは、企業からリモートでホストされるが、安全な接続を介して企業内のデータ、アプリケーション、およびサービスにアクセスすることができる。そのようなaPaaSシステムは、多くの有利な機能および特性を備えることがある。これらの利点および特性により、IT、HR、CRM、顧客サービス、アプリケーション開発、およびセキュリティに関する企業の業務およびワークフローを改善することが可能であり得る。それにもかかわらず、本明細書における実施形態は、企業アプリケーションまたは環境に限定されず、より広範に適用することができる。
【0021】
aPaaSシステムは、MVC(model-view-controller:モデル・ビュー・コントローラ)アプリケーションの開発および実行をサポートすることがある。MVCアプリケーションは、それらの機能を、相互接続された3つの部分(モデル、ビュー、およびコントローラ)に分割して、情報の表現を、情報がユーザに提示される様式から分離し、それにより効率的なコード再利用および並列開発を可能にする。これらのアプリケーションはウェブベースでよく、作成、読み取り、更新、および削除(CRUD)機能を提供することがある。これは、共通のアプリケーションインフラストラクチャに新しいアプリケーションを構築できるようにする。いくつかの場合には、単方向データフローを使用するアプリケーションなど、MVCとは異なる構造のアプリケーションが採用されることがある。
【0022】
aPaaSシステムは、GUI(グラフィカルユーザインターフェース)開発用の標準化されたウィジェットセットなど、標準化されたアプリケーションコンポーネントをサポートすることがある。このようにして、aPaaSシステムを使用して構築されたアプリケーションは、共通のルックアンドフィールを有する。他のソフトウェアコンポーネントおよびモジュールも同様に標準化することができる。いくつかの場合には、このルックアンドフィールは、企業のカスタムロゴおよび/または配色でブランディングまたはスキン変更することができる。
【0023】
aPaaSシステムは、メタデータを使用してアプリケーションの挙動を設定する機能をサポートすることがある。これは、アプリケーションの挙動を特定のニーズに合わせて迅速に適応させることができるようにする。そのような手法は、開発時間を短縮し、柔軟性を向上させる。さらに、aPaaSシステムは、メタデータの作成および管理を容易にするGUIツールをサポートすることがあり、したがってメタデータでのエラーを低減する。
【0024】
aPaaSシステムは、ソフトウェア開発者がアプリケーション間の望ましくない依存関係を回避することができるように、アプリケーション間の明確に定義されたインターフェースをサポートすることがある。したがって、aPaaSシステムは、永続的な状態情報および他のデータが記憶されるサービス層を実施することができる。
【0025】
aPaaSシステムは、システム上のアプリケーションがレガシーアプリケーションおよびサードパーティアプリケーションと対話することができるように、統合機能の豊富なセットをサポートすることがある。例えば、aPaaSシステムは、レガシーHR、IT、および会計システムと統合するカスタム従業員オンボーディングシステムをサポートすることがある。
【0026】
aPaaSシステムは、エンタープライズグレードのセキュリティをサポートすることがある。さらに、aPaaSシステムはリモートでホストされることがあるので、企業内のシステム、または企業の外部でホストされるサードパーティネットワークおよびサービスと対話するときにもセキュリティ手順を利用すべきである。例えば、aPaaSシステムは、企業および他の当事者間でデータを共有して、一般的なセキュリティ脅威を検出および識別するように構成されることがある。
【0027】
aPaaSシステムの他の特徴、機能、および利点も存在し得る。本説明は、例示を目的としたものであり、限定を意図されていない。
【0028】
aPaaS開発プロセスの一例として、ソフトウェア開発者は、aPaaSシステムを使用して新しいアプリケーションを作成する任務を担うことがある。まず、開発者は、アプリケーションが使用するデータのタイプ、およびそれらの間の関係を指定するデータモデルを定義することがある。次いで、aPaaSシステムのGUIを介して、開発者はデータモデルを入力(例えばアップロード)する。aPaaSシステムは、対応するデータベーステーブル、フィールド、および関係をすべて自動的に作成し、これらは、オブジェクト指向サービス層を介してアクセスすることができる。
【0029】
さらに、aPaaSシステムは、クライアント側インターフェースおよびサーバ側CRUD論理を備えた完全機能のアプリケーションを構築することもできる。この生成されたアプリケーションは、ユーザのためのさらなる開発の基礎として機能することがある。有利には、開発者は、基本的なアプリケーション機能に多大な時間を費やす必要はない。さらに、アプリケーションはウェブベースであり得るので、インターネット対応のクライアントデバイスからアクセスすることができる。代替または追加として、例えばインターネットサービスが利用可能でないときに、アプリケーションのローカルコピーにアクセスすることが可能であり得る。
【0030】
aPaaSシステムは、アプリケーションに追加することができる事前定義された機能の豊富なセットをサポートすることもある。これらの機能には、検索、電子メール、テンプレート、ワークフロー設計、レポート、分析、ソーシャルメディア、スクリプト、モバイルフレンドリーな出力、およびカスタマイズされたGUIのためのサポートが含まれる。
【0031】
そのようなaPaaSシステムは、様々な方法でGUIを表現することができる。例えば、aPaaSシステムのサーバデバイスは、HTML(HyperText Markup Language)とJAVASCRIPT(登録商標)との組合せを使用してGUIの表現を生成することがある。JAVASCRIPT(登録商標)は、クライアント側の実行可能コード、サーバ側の実行可能コード、またはそれら両方を含むことがある。サーバデバイスは、ローカルで定義されたルックアンドフィールに従ってクライアントデバイスが画面上に表示できるように、この表現をクライアントデバイスに送信または他の形で提供することができる。代替として、GUIの表現は、クライアントデバイスがグラフィカル出力を直接生成するために使用することができる中間形式(例えばJAVA(登録商標)バイトコード)など、他の形式を取ることもできる。他の可能性も存在する。
【0032】
さらに、ボタン、メニュー、タブ、スライダ、チェックボックス、トグルなどのGUI要素とのユーザ対話は、その「選択」、「アクティブ化」、または「作動」と呼ばれることがある。これらの用語は、GUI要素がキーボード、ポインティングデバイス、タッチスクリーン、または別のメカニズムのいずれを介して対話されるかに関係なく使用することができる。
【0033】
aPaaSアーキテクチャは、企業のネットワークと統合され、そのようなネットワークを管理するために使用されるときに特に強力である。以下の実施形態は、例示的なaPaaSシステムのアーキテクチャ的および機能的態様、ならびにその特徴および利点を述べる。
【0034】
(II.例示的なコンピューティングデバイスおよびクラウドベースのコンピューティング環境)
図1は、コンピューティングデバイス100を例示する簡略化されたブロック図であり、本明細書における実施形態に従って動作するように構成されたコンピューティングデバイスに含まれ得る構成要素のいくつかを示す。コンピューティングデバイス100は、クライアントデバイス(例えば、ユーザによって能動的に操作されるデバイス)、サーバデバイス(例えば、クライアントデバイスに計算サービスを提供するデバイス)、または何らかの他のタイプの計算プラットフォームでよい。いくつかのサーバデバイスは、時として、特定の操作を実施するためにクライアントデバイスとして動作することがあり、いくつかのクライアントデバイスは、サーバ機能を組み込むことがある。
【0035】
この例では、コンピューティングデバイス100は、プロセッサ102、メモリ104、ネットワークインターフェース106、および入出力ユニット108を含み、それらはすべて、システムバス110または同様の機構によって結合され得る。いくつかの実施形態では、コンピューティングデバイス100は、他のコンポーネントおよび/または周辺デバイス(例えば、取外し可能な記憶装置やプリンタなど)を含むことがある。
【0036】
プロセッサ102は、中央処理装置(CPU)、コプロセッサ(例えば、数学、グラフィックス、または暗号化コプロセッサ)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、および/またはプロセッサ操作を実施する集積回路またはコントローラの形態など、任意のタイプのコンピュータ処理要素のうちの1つまたは複数でよい。いくつかの場合には、プロセッサ102は、1つまたは複数のシングルコアプロセッサでよい。他の場合には、プロセッサ102は、複数の独立した処理ユニットを備える1つまたは複数のマルチコアプロセッサでもよい。プロセッサ102は、実行中の命令および関連データを一時的に記憶するためのレジスタメモリ、ならびに最近使用された命令およびデータを一時的に記憶するためのキャッシュメモリを含むこともある。
【0037】
メモリ104は、RAM(ランダムアクセスメモリ)、ROM(読み出し専用メモリ)、および不揮発性メモリ(例えば、フラッシュメモリ、ハードディスクドライブ、ソリッドステートドライブ、CD(コンパクトディスク)、DVD(デジタルビデオディスク)、および/またはテープストレージなど)を含むがこれらに限定されない任意の形式のコンピュータ使用可能なメモリでよい。したがって、メモリ104は、主記憶装置と長期記憶装置との両方を表す。他のタイプのメモリは、生物学的メモリを含むことがある。
【0038】
メモリ104は、プログラム命令、および/またはプログラム命令が操作することができるデータを記憶することがある。例として、メモリ104は、これらのプログラム命令を非一時的なコンピュータ可読媒体に記憶することがあり、それにより、本明細書または添付図面に開示される方法、プロセス、または操作の任意のものを実行するためにプロセッサ102によって命令が実行可能になる。
【0039】
図1に示されるように、メモリ104は、ファームウェア104A、カーネル104B、および/またはアプリケーション104Cを含むことがある。ファームウェア104Aは、コンピューティングデバイス100の一部またはすべてをブートまたは他の形で開始するために使用されるプログラムコードでよい。カーネル104Bは、メモリ管理、プロセスのスケジューリングおよび管理、入出力、ならびに通信のためのモジュールを含むオペレーティングシステムでよい。カーネル104Bは、オペレーティングシステムがコンピューティングデバイス100のハードウェアモジュール(例えば、メモリユニット、ネットワーキングインターフェース、ポート、およびバス)と通信できるようにするデバイスドライバを含むこともある。アプリケーション104Cは、ウェブブラウザまたは電子メールクライアントなど1つまたは複数のユーザ空間ソフトウェアプログラム、ならびにこれらのプログラムによって使用される任意のソフトウェアライブラリでよい。メモリ104は、これらおよび他のプログラムおよびアプリケーションによって使用されるデータを記憶することもある。
【0040】
ネットワークインターフェース106は、イーサネット(例えば、ファストイーサネットやギガビットイーサネットなど)など、1つまたは複数の有線インターフェースの形態を取ることがある。ネットワークインターフェース106は、同軸ケーブルや電力線など1つまたは複数の非イーサネット媒体を介した通信、またはSONET(同期型光ネットワーキング)やDSL(デジタル加入者線)技術など広帯域媒体を介した通信をサポートすることもある。ネットワークインターフェース106はさらに、IEEE802.11(WiFi)、BLUETOOTH(登録商標)、GPS(全地球測位システム)、または広帯域無線インターフェースなど、1つまたは複数の無線インターフェースの形態を取ってもよい。しかし、他の形式の物理層インターフェースおよび他のタイプの標準またはプロプリエタリ通信プロトコルがネットワークインターフェース106を介して使用されてもよい。さらに、ネットワークインターフェース106は、複数の物理インターフェースを備えることもある。例えば、コンピューティングデバイス100のいくつかの実施形態は、イーサネット、BLUETOOTH(登録商標)、およびWiFiインターフェースを含むことがある。
【0041】
入出力ユニット108は、ユーザおよび周辺デバイスとコンピューティングデバイス100との対話を容易にすることができる。入出力ユニット108は、キーボード、マウス、タッチスクリーンなど1つまたは複数のタイプの入力デバイスを含むことがある。同様に、入出力ユニット108は、スクリーン、モニタ、プリンタ、および/または1つまたは複数のLED(発光ダイオード)など、1つまたは複数のタイプの出力デバイスを含むこともある。追加または代替として、コンピューティングデバイス100は、例えばUSB(ユニバーサルシリアルバス)またはHDMI(高精細度マルチメディアインターフェース)ポートインターフェースを使用して他のデバイスと通信することもできる。
【0042】
いくつかの実施形態では、コンピューティングデバイス100のような1つまたは複数のコンピューティングデバイスが、aPaaSアーキテクチャをサポートするために展開されることがある。これらのコンピューティングデバイスの正確な物理的位置、接続性、および構成は、クライアントデバイスには不明である、および/または重要でないことがある。したがって、コンピューティングデバイスは、様々なリモートデータセンタ位置に収容され得る「クラウドベース」のデバイスと呼ばれることがある。
【0043】
図2は、例示的実施形態によるクラウドベースのサーバクラスタ200を示す。
図2では、コンピューティングデバイス(例えば、コンピューティングデバイス100)の動作は、サーバデバイス202、データストレージ204、およびルータ206の間で分散されることがあり、これらはすべて、ローカルクラスタネットワーク208によって接続され得る。サーバクラスタ200内のサーバデバイス202、データストレージ204、およびルータ206の数は、サーバクラスタ200に割り当てられたコンピューティングタスクおよび/またはアプリケーションに依存することがある。
【0044】
例えば、サーバデバイス202は、コンピューティングデバイス100の様々なコンピューティングタスクを実施するように構成することができる。したがって、コンピューティングタスクは、1つまたは複数のサーバデバイス202に分散させることができる。これらのコンピューティングタスクを並列に実施することができる範囲で、そのようなタスクの分散は、これらのタスクを完了して結果を返すまでの合計時間を短縮することができる。簡単にするために、サーバクラスタ200と個々のサーバデバイス202との両方を「サーバデバイス」と呼ぶことがある。この命名法は、1つまたは複数の個別のサーバデバイス、データ記憶デバイス、およびクラスタルータがサーバデバイス動作に関与し得ることを示唆していると理解すべきである。
【0045】
データストレージ204は、ハードディスクドライブおよび/またはソリッドステートドライブのグループへの読み取りおよび書き込みアクセスを管理するように構成されたドライブアレイコントローラを含むデータストレージアレイでよい。ドライブアレイコントローラは、単独で、またはサーバデバイス202と連携して、データストレージ204に記憶されているデータのバックアップまたは冗長コピーを管理して、データストレージ204のユニットに1つまたは複数のサーバデバイス202がアクセスするのを妨げるドライブ障害または他のタイプの障害を防止するように構成することもできる。ドライブ以外の他のタイプのメモリを使用することもできる。
【0046】
ルータ206は、サーバクラスタ200に関する内部および外部通信を提供するように構成されたネットワーキング機器を含むことがある。例えば、ルータ206は、(i)ローカルクラスタネットワーク208を介したサーバデバイス202とデータストレージ204との間のネットワーク通信、および/または(ii)ネットワーク212への通信リンク210を介したサーバクラスタ200と他のデバイスとの間のネットワーク通信を提供するように構成された1つまたは複数のパケットスイッチングおよび/またはルーティングデバイス(スイッチおよび/またはゲートウェイを含む)を含むことがある。
【0047】
さらに、ルータ206の構成は、サーバデバイス202およびデータストレージ204のデータ通信要件、ローカルクラスタネットワーク208の待ち時間およびスループット、通信リンク210の待ち時間、スループット、およびコスト、ならびに/あるいは、システムアーキテクチャのコスト、速度、フォールトトレランス、回復力、効率、および/または他の設計目標に寄与することがある他の因子に少なくとも部分的に基づくことができる。
【0048】
可能な一例として、データストレージ204は、SQL(構造化照会言語)データベースなど任意の形式のデータベースを含むことがある。様々なタイプのデータ構造が、テーブル、アレイ、リスト、ツリー、およびタプルを含むがそれらに限定されない情報をそのようなデータベースに記憶することができる。さらに、データストレージ204内の任意のデータベースは、モノリシックであっても、複数の物理デバイスにわたって分散されていてもよい。
【0049】
サーバデバイス202は、データストレージ204にデータを送信し、データストレージ204からデータを受信するように構成され得る。この送信および検索は、それぞれ、SQLクエリまたは他のタイプのデータベースクエリ、およびそのようなクエリの出力の形式を取ることがある。追加のテキスト、画像、ビデオ、および/またはオーディオが含まれることもある。さらに、サーバデバイス202は、受信されたデータをウェブページまたはウェブアプリケーション表現に編成することがある。そのような表現は、マークアップ言語、例えば、HTML、XML(eXtensible Markup Language)の形式、またはいくつかの他の標準化されたフォーマットもしくはプロプリエタリフォーマットなどの形式を取ることがある。さらに、サーバデバイス202は、Perl、Python、PHP(PHT Hypertext Preprocessor)、ASP(Active Server Pages)、JAVASCRIPT(登録商標)などを含むがそれらに限定されない様々なタイプのコンピュータ化されたスクリプト言語を実行する能力を有することがある。これらの言語で書かれたコンピュータプログラムコードは、クライアントデバイスへのウェブページの提供、およびウェブページとのクライアントデバイスの対話を容易にすることができる。代替または追加として、JAVA(登録商標)を使用してウェブページの生成を容易にする、および/またはウェブアプリケーション機能を提供することができる。
【0050】
(III.例示的なリモートネットワーク管理アーキテクチャ)
図3は、例示的実施形態による、リモートネットワーク管理アーキテクチャを示す。このアーキテクチャは、管理対象ネットワーク300、リモートネットワーク管理プラットフォーム320、およびパブリッククラウドネットワーク340の3つの主要なコンポーネントを含み、これらはすべて、インターネット350を介して接続される。
【0051】
(A.管理対象ネットワーク)
管理対象ネットワーク300は、例えばコンピューティングおよび通信タスクならびにデータの記憶のために実体によって使用される企業ネットワークでよい。したがって、管理対象ネットワーク300は、クライアントデバイス302、サーバデバイス304、ルータ306、仮想マシン308、ファイアウォール310、および/またはプロキシサーバ312を含むことがある。クライアントデバイス302は、コンピューティングデバイス100によって具現化され、サーバデバイス304は、コンピューティングデバイス100またはサーバクラスタ200によって具現化され、ルータ306は、任意のタイプのルータ、スイッチ、またはゲートウェイでよい。
【0052】
仮想マシン308は、コンピューティングデバイス100またはサーバクラスタ200のうちの1つまたは複数によって具現化され得る。一般に、仮想マシンは、コンピューティングシステムのエミュレーションであり、物理コンピュータの機能(例えば、プロセッサ、メモリ、および通信リソース)を模倣する。サーバクラスタ200などの1つの物理コンピューティングシステムは、最大数千個の個別の仮想マシンをサポートすることができる。いくつかの実施形態では、仮想マシン308は、個々の仮想マシンへの物理コンピューティングリソースの割り当てならびにパフォーマンスおよびエラー報告を容易にする集中サーバデバイスまたはアプリケーションによって管理されることがある。企業は、必要に応じて効率的にコンピューティングリソースを割り当てるために、仮想マシンを採用することがよくある。仮想化されたコンピューティングシステムのプロバイダとしては、VMWARE(登録商標)やMICROSOFT(登録商標)が挙げられる。
【0053】
ファイアウォール310は、管理対象ネットワーク300から開始される認可された通信を許可しながら、管理対象ネットワーク300内のデバイス、アプリケーション、およびサービスにアクセスしようとする非認可の試行から管理対象ネットワーク300を保護する、1つまたは複数の特殊なルータまたはサーバデバイスでよい。ファイアウォール310はまた、侵入検出、ウェブフィルタリング、ウイルススキャン、アプリケーション層ゲートウェイ、および他のアプリケーションまたはサービスを提供することもある。
図3に示されていないいくつかの実施形態では、管理対象ネットワーク300は、リモートネットワーク管理プラットフォーム320と通信するための1つまたは複数のVPN(仮想プライベートネットワーク)ゲートウェイを含むことがある(以下を参照)。
【0054】
管理対象ネットワーク300は、1つまたは複数のプロキシサーバ312を含むこともある。プロキシサーバ312の実施形態は、管理対象ネットワーク300、リモートネットワーク管理プラットフォーム320、およびパブリッククラウドネットワーク340の間のデータの通信および移動を容易にするサーバアプリケーションでよい。特に、プロキシサーバ312は、リモートネットワーク管理プラットフォーム320の1つまたは複数の計算インスタンスとの安全な通信セッションを確立および維持することが可能であり得る。そのようなセッションによって、リモートネットワーク管理プラットフォーム320は、管理対象ネットワーク300およびそのコンポーネントのアーキテクチャおよび構成の態様を発見して管理することが可能であり得る。
【0055】
場合によってはプロキシサーバ312の支援を受けて、リモートネットワーク管理プラットフォーム320は、管理対象ネットワーク300によって使用されるパブリッククラウドネットワーク340の態様を発見して管理することも可能であり得る。
図3には示されていないが、このディスカバリおよび管理を容易にするために、パブリッククラウドネットワーク340のいずれかに1つまたは複数のプロキシサーバ312を配置することができる。
【0056】
ファイアウォール310などのファイアウォールは、セッションが最終的にファイアウォールの後ろから(すなわち管理対象ネットワーク300上のデバイスから)開始された場合、またはファイアウォールがセッションをサポートするように明示的に構成されている場合を除き、典型的には、インターネット350を介して着信するすべての通信セッションを拒否する。プロキシサーバ312をファイアウォール310の後ろに配置する(例えば、管理対象ネットワーク300内にあり、ファイアウォール310によって保護される)ことによって、プロキシサーバ312は、ファイアウォール310を介してこれらの通信セッションを開始することが可能であり得る。したがって、ファイアウォール310は、リモートネットワーク管理プラットフォーム320からの着信セッションをサポートするように特に構成される必要はないことがあり、それにより、管理対象ネットワーク300に対する潜在的なセキュリティリスクを回避する。
【0057】
いくつかの場合には、管理対象ネットワーク300は、少数のデバイスおよび少数のネットワークからなることがある。他の展開では、管理対象ネットワーク300は、複数の物理的位置にまたがり、数百のネットワークおよび数十万のデバイスを含むことがある。したがって、
図3に示されるアーキテクチャは、数桁のスケールアップまたはスケールダウンが可能である。
【0058】
さらに、管理対象ネットワーク300のサイズ、アーキテクチャ、および接続性に応じて、様々な数のプロキシサーバ312をネットワーク内に展開することができる。例えば、プロキシサーバ312はそれぞれ、管理対象ネットワーク300の一部に関してリモートネットワーク管理プラットフォーム320と通信する役割を担うことがある。代替または追加として、負荷分散、冗長性、および/または高可用性の目的で、2つ以上のプロキシサーバのセットが管理対象ネットワーク300のそのような部分に割り当てられることがある。
【0059】
(B.リモートネットワーク管理プラットフォーム)
リモートネットワーク管理プラットフォーム320は、ユーザ、特に管理対象ネットワーク300の操作者にaPaaSサービスを提供するホストされた環境である。これらのサービスは、例えば前述したウェブベースの技術を使用して、ウェブベースのポータルの形式を取ることがある。したがって、ユーザは、例えばクライアントデバイス302から、または場合によっては管理対象ネットワーク300の外部のクライアントデバイスから、リモートネットワーク管理プラットフォーム320に安全にアクセスすることができる。ウェブベースのポータルによって、ユーザは、アプリケーションの設計、テスト、および展開、レポート作成、分析の閲覧、ならびに他のタスクを実施することができる。リモートネットワーク管理プラットフォーム320は、マルチアプリケーションプラットフォームと呼ばれることもある。
【0060】
図3に示されるように、リモートネットワーク管理プラットフォーム320は、4つの計算インスタンス322、324、326、および328を含む。これらの計算インスタンスの各々が、aPaaSソフトウェアの専用コピーを操作する1つまたは複数のサーバノード、および/または1つまたは複数のデータベースノードを表すことがある。物理サーバデバイスおよび/または仮想マシン上のサーバおよびデータベースノードの配置は柔軟性があり得て、企業のニーズに基づいて変えることができる。これらのノードは、組み合わせて、特定の企業が利用可能なウェブポータル、サービス、およびアプリケーション(例えば、完全機能のaPaaSシステム)のセットを提供することができる。いくつかの場合には、単一の企業が複数の計算インスタンスを使用することがある。
【0061】
例えば、管理対象ネットワーク300は、リモートネットワーク管理プラットフォーム320の企業顧客でよく、計算インスタンス322、324、および326を使用することがある。1人の顧客に複数の計算インスタンスを提供する理由は、顧客がそのアプリケーションおよびサービスを個別に開発し、テストし、展開することを望むことがあるからである。したがって、計算インスタンス322は、管理対象ネットワーク300に関係するアプリケーション開発に専用のものでよく、計算インスタンス324は、これらのアプリケーションのテストに専用のものでよく、計算インスタンス326は、テストされたアプリケーションおよびサービスのライブ操作に専用のものでよい。計算インスタンスは、ホストされたインスタンス、リモートインスタンス、顧客インスタンス、または何らかの他の名称で呼ばれることもある。計算インスタンスに展開される任意のアプリケーションは、その計算インスタンス内のデータベースへのアクセスをデータベース内の特定の要素(例えば、1つまたは複数の特定のデータベーステーブル、または1つまたは複数のデータベーステーブル内の特定の行)に制限することができるという点で、スコープ付きアプリケーションでよい。
【0062】
わかりやすくするために、本明細書における開示では、アプリケーションノード、データベースノード、その上で実行されるaPaaSソフトウェア、および基礎となるハードウェアの配置を「計算インスタンス」と呼ぶ。それによって提供されるグラフィカルユーザインターフェースを口語ではユーザが「インスタンス」と呼ぶことがあることに留意されたい。しかし、本明細書で別段に定義されない限り、「計算インスタンス」は、リモートネットワーク管理プラットフォーム320内に配設されたコンピューティングシステムである。
【0063】
リモートネットワーク管理プラットフォーム320のマルチインスタンスアーキテクチャは、従来のマルチテナントアーキテクチャとは対照的であり、マルチインスタンスアーキテクチャは、従来のマルチテナントアーキテクチャに勝るいくつかの利点を有する。マルチテナントアーキテクチャでは、様々な顧客(例えば、企業)からのデータが単一のデータベースに混在する。これらの顧客のデータは互いに分離しているが、その分離は、単一のデータベースを操作するソフトウェアによって実現される。その結果、このシステムでのセキュリティ侵害は、すべての顧客のデータに影響を及ぼす可能性があり、特に政府、医療、および/または金融規制の対象となる実体にとってはさらなるリスクを生み出す。さらに、1人の顧客に影響を与える任意のデータベース操作が、そのデータベースを共有しているすべての顧客に影響を及ぼす可能性が高い。したがって、ハードウェアまたはソフトウェアエラーによる機能停止がある場合、この機能停止は、すべてのそのような顧客に影響を及ぼす。同様に、1人の顧客のニーズを満たすためにデータベースがアップグレードされることになった場合、アップグレードプロセス中にすべての顧客がデータベースを利用できなくなる。多くの場合、共有データベースのサイズにより、そのようなメンテナンス期間は長くなる。
【0064】
対照的に、マルチインスタンスアーキテクチャは、各顧客に、専用の計算インスタンス内にある独自のデータベースを提供する。これは、顧客データの混在を防止し、各インスタンスを独立して管理できるようにする。例えば、ある顧客のインスタンスがエラーまたはアップグレードにより機能停止したときでも、他の計算インスタンスは影響を及ぼされない。データベースは1人の顧客のデータしか含まないので、メンテナンスのダウンタイムは限られる。さらに、マルチインスタンスアーキテクチャのよりシンプルな設計により、各顧客データベースおよびインスタンスの冗長コピーを地理的に多様に展開できるようになる。これは高可用性を促進し、障害が検出されたときまたはメンテナンスが実施されているときに、顧客のインスタンスのライブバージョンを移動させることができる。
【0065】
いくつかの実施形態では、リモートネットワーク管理プラットフォーム320は、このプラットフォームを運営する実体によって制御される1つまたは複数の中央インスタンスを含むことがある。計算インスタンスと同様に、中央インスタンスは、いくつかの物理サーバデバイスまたは仮想マシン上に配設されたいくつかのアプリケーションおよびデータベースノードを含むことがある。そのような中央インスタンスは、計算インスタンスの特定の構成、および少なくともいくつかの計算インスタンス間で共有することができるデータのためのリポジトリとして機能することがある。例えば、計算インスタンスで発生し得る一般的なセキュリティ脅威の定義、計算インスタンスで一般的に発見されるソフトウェアパッケージ、および/または計算インスタンスに展開させることができるアプリケーション用のアプリケーションストアが中央インスタンスに常駐することがある。計算インスタンスは、このデータを得るために、よく定義されたインターフェースを介して中央インスタンスと通信することができる。
【0066】
複数の計算インスタンスを効率的にサポートするために、リモートネットワーク管理プラットフォーム320は、単一のハードウェアプラットフォーム上に複数のこれらのインスタンスを実施することができる。例えば、aPaaSシステムは、サーバクラスタ200などのサーバクラスタ上に実施されるとき、様々な量の計算、記憶、および通信リソースをインスタンスに対して確保する仮想マシンを動作させることができる。しかし、サーバクラスタ200の完全な仮想化は必要ないことがあり、インスタンスを分離するために他のメカニズムを使用することもできる。いくつかの例では、各インスタンスは、専用アカウントおよび1つまたは複数の専用データベースをサーバクラスタ200に有することがある。代替として、計算インスタンス322などの計算インスタンスは、複数の物理デバイスにまたがることもある。
【0067】
いくつかの場合には、リモートネットワーク管理プラットフォーム320の単一のサーバクラスタが、複数の独立した企業をサポートすることもある。さらに、後述するように、リモートネットワーク管理プラットフォーム320は、負荷分散、冗長性、および/または高可用性を促進するために、地理的に異なるデータセンタに展開された複数のサーバクラスタを含むこともある。
【0068】
(C.パブリッククラウドネットワーク)
パブリッククラウドネットワーク340は、アウトソーシングされた計算、データ記憶、通信、およびサービスホスティング操作に使用することができるリモートサーバデバイス(例えば、サーバクラスタ200などの複数のサーバクラスタ)でよい。これらのサーバは仮想化することができる(すなわち、サーバは仮想マシンでよい)。パブリッククラウドネットワーク340の例としては、AMAZON WEB SERVICES(登録商標)およびMICROSOFT(登録商標) AZURE(登録商標)を挙げることができる。リモートネットワーク管理プラットフォーム320と同様に、パブリッククラウドネットワーク340をサポートする複数のサーバクラスタは、負荷分散、冗長性、および/または高可用性の目的で、地理的に異なる場所に展開されることがある。
【0069】
管理対象ネットワーク300は、1つまたは複数のパブリッククラウドネットワーク340を使用して、そのクライアントおよび顧客にアプリケーションおよびサービスを展開することができる。例えば、管理対象ネットワーク300がオンライン音楽ストリーミングサービスを提供する場合、パブリッククラウドネットワーク340は、音楽ファイルを記憶し、ウェブインターフェースおよびストリーミング機能を提供することができる。このようにして、管理対象ネットワーク300の企業は、これらの操作のためにその独自のサーバを構築および維持する必要がなくなる。
【0070】
リモートネットワーク管理プラットフォーム320は、パブリッククラウドネットワーク340と統合して、内部の仮想マシンおよび管理対象サービスを管理対象ネットワーク300に見せるモジュールを含むことができる。これらのモジュールにより、ユーザは、仮想リソースを要求し、割り当てられたリソースを発見し、パブリッククラウドネットワーク340に関する柔軟なレポートを提供することが可能になり得る。この機能を確立するために、管理対象ネットワーク300からのユーザは、まずパブリッククラウドネットワーク340でアカウントを確立し、関連するリソースのセットを要求することができる。次いで、ユーザは、リモートネットワーク管理プラットフォーム320の適切なモジュールにアカウント情報を入力することができる。次いで、これらのモジュールは、そのアカウントにおける管理可能なリソースを自動的に発見し、使用量、パフォーマンス、請求に関するレポートを提供することもできる。
【0071】
(D.通信サポートおよび他の動作)
インターネット350は、グローバルインターネットの一部を表すことがある。しかし、インターネット350は、代替として、プライベートワイドエリアまたはローカルエリアパケット交換ネットワークなど異なるタイプのネットワークを表すこともある。
【0072】
図4は、管理対象ネットワーク300と計算インスタンス322との間の通信環境をさらに示し、追加の機能および代替実施形態を導入する。
図4では、計算インスタンス322は、全体的または部分的に、データセンタ400Aおよび400Bにわたって複製される。これらのデータセンタは地理的に互いに離れており、異なる都市または異なる国にあることもある。各データセンタは、管理対象ネットワーク300およびリモートユーザとの通信を容易にするサポート機器を含む。
【0073】
データセンタ400Aでは、外部デバイスとの間のネットワークトラフィックは、VPNゲートウェイ402Aまたはファイアウォール404Aのいずれかを通って流れる。VPNゲートウェイ402Aは、IPsec(Internet Protocol Security:インターネットプロトコルセキュリティ)またはTLS(Transport Layer Security:トランスポートレイヤセキュリティ)などのセキュリティプロトコルによって、管理対象ネットワーク300のVPNゲートウェイ412とピアリングすることができる。ファイアウォール404Aは、ユーザ414およびリモートユーザ416などの認可されたユーザからのアクセスを許可し、認可されていないユーザのアクセスを拒否するように構成することができる。ファイアウォール404Aによって、これらのユーザは、計算インスタンス322および場合によっては他の計算インスタンスにアクセスすることができる。ロードバランサ406Aを使用して、計算インスタンス322をホストする1つまたは複数の物理または仮想サーバデバイス間でトラフィックを分散することができる。ロードバランサ406Aは、データセンタ400Aの内部構成(例えば、計算インスタンス322)をクライアントデバイスから隠すことによって、ユーザアクセスを簡略化することができる。例えば、計算インスタンス322が、複数のデータベースへのアクセスを共有する複数の物理または仮想コンピューティングデバイスを含む場合、ロードバランサ406Aは、ネットワークトラフィックおよび処理タスクをこれらのコンピューティングデバイスおよびデータベースにわたって分散させることができ、あるコンピューティングデバイスまたはデータベースが他のものよりも著しくビジーにならないようにする。いくつかの実施形態では、計算インスタンス322は、VPNゲートウェイ402A、ファイアウォール404A、およびロードバランサ406Aを含むことがある。
【0074】
データセンタ400Bは、データセンタ400Aでのコンポーネントの独自のバージョンを含むことがある。したがって、VPNゲートウェイ402B、ファイアウォール404B、およびロードバランサ406Bは、それぞれ、VPNゲートウェイ402A、ファイアウォール404A、およびロードバランサ406Aと同一または同様の動作を実行することができる。さらに、リアルタイムまたはほぼリアルタイムのデータベース複製および/または他の操作によって、計算インスタンス322は、データセンタ400Aと400Bとに同時に存在することができる。
【0075】
図4に示されるデータセンタ400Aおよび400Bは、冗長性および高可用性を促進することができる。
図4の構成では、データセンタ400Aはアクティブであり、データセンタ400Bはパッシブである。したがって、データセンタ400Aは、管理対象ネットワーク300との間でのすべてのトラフィックにサービス提供しており、データセンタ400Bの計算インスタンス322のバージョンは、ほぼリアルタイムで更新されている。両方のデータセンタがアクティブである構成など、他の構成もサポートされ得る。
【0076】
データセンタ400Aが何らかの故障を生じた場合、または他の理由でユーザが利用できなくなった場合、データセンタ400Bが、アクティブなデータセンタとして引き継ぐことができる。例えば、計算インスタンス322のドメイン名をデータセンタ400Aの1つまたは複数のIP(インターネットプロトコル)アドレスに関連付けるDNS(ドメイン名システム)サーバは、ドメイン名をデータセンタ400Bの1つまたは複数のIPアドレスに関連付けし直すことがある。この関連付けの変更が完了した後(1秒未満または数秒かかることがある)、ユーザは、データセンタ400Bを介して計算インスタンス322にアクセスすることができる。
【0077】
図4は、管理対象ネットワーク300の可能な構成も示す。上述したように、プロキシサーバ312およびユーザ414は、ファイアウォール310を介して計算インスタンス322にアクセスすることができる。プロキシサーバ312は、構成アイテム410にアクセスすることもできる。
図4において、構成アイテム410は、クライアントデバイス302、サーバデバイス304、ルータ306、および仮想マシン308、それらの任意のコンポーネント、それらの上で実行される任意のアプリケーションまたはサービス、ならびにデバイス、コンポーネント、アプリケーション、およびサービス間の関係のいずれかまたはすべてを表すことがある。したがって、「構成アイテム」という用語は、すべての任意の物理もしくは仮想デバイス、または計算インスタンス322によってリモートで発見可能であるもしくは管理される任意のアプリケーションもしくはサービス、または発見されたデバイス、アプリケーション、およびサービス間の関係のうちの一部に関する略記であり得る。構成アイテムは、計算インスタンス322の構成管理データベース(CMDB)内に表されることがある。
【0078】
記憶または送信されるとき、構成アイテムは、その構成アイテムが表すハードウェアまたはソフトウェアを特徴付ける属性のリストであり得る。これらの属性は、製造業者、ベンダー、場所、所有者、一意の識別子、説明、ネットワークアドレス、動作ステータス、シリアル番号、最終更新時刻などを含むことがある。構成アイテムのクラスは、その構成アイテムにどの属性サブセットが存在するかを決定することができる(例えば、ソフトウェア構成アイテムとハードウェア構成アイテムとが異なる属性リストを有することがある)。
【0079】
上述したように、VPNゲートウェイ412は、VPNゲートウェイ402Aに専用のVPNを提供することができる。そのようなVPNは、管理対象ネットワーク300と計算インスタンス322との間に大量のトラフィックがあるとき、あるいはセキュリティポリシーがこれらのサイト間でのVPNの使用を示唆または要求するときに役立つことがある。いくつかの実施形態では、VPNを介して直接通信する管理対象ネットワーク300内の任意のデバイスおよび/または計算インスタンス322にパブリックIPアドレスが割り当てられる。管理対象ネットワーク300および/または計算インスタンス322内の他のデバイスには、プライベートIPアドレス(例えば、それぞれサブネット10.0.0.0/8および192.168.0.0/16として略記される、10.0.0.0~10.255.255.255または192.168.0.0~192.168.255.255の範囲から選択されるIPアドレス)が割り当てられることがある。様々な代替形態では、プロキシサーバ312などの管理対象ネットワーク300内のデバイスは、安全なプロトコル(例えばTLS)を使用して、1つまたは複数のデータセンタと直接通信することができる。
【0080】
(IV.例示的なディスカバリ)
リモートネットワーク管理プラットフォーム320が管理対象ネットワーク300のデバイス、アプリケーション、およびサービスを管理するために、リモートネットワーク管理プラットフォーム320は、まず、管理対象ネットワーク300に存在するデバイス、それらのデバイスの構成、構成コンポーネント、および動作ステータス、ならびにそれらのデバイスによって提供されるアプリケーションおよびサービスを決定することがある。リモートネットワーク管理プラットフォーム320は、発見されたデバイス、それらのコンポーネント、アプリケーション、およびサービス間の関係を決定することもある。各デバイス、コンポーネント、アプリケーション、およびサービスの表現は、構成アイテムと呼ばれることがある。管理対象ネットワーク300内の構成アイテムおよび関係を決定するプロセスはディスカバリと呼ばれ、プロキシサーバ312によって少なくとも部分的に促進され得る。構成アイテムおよび関係の表現は、CMDBに記憶される。
【0081】
このセクションでは、管理対象ネットワーク300上で行われるディスカバリについて述べるが、同一または同様のディスカバリ手順をパブリッククラウドネットワーク340上で使用することもできる。したがって、いくつかの環境では、「ディスカバリ」は、管理対象ネットワークおよび/または1つまたは複数のパブリッククラウドネットワーク上の構成アイテムおよび関係のディスカバリを表すこともある。
【0082】
本明細書における実施形態の目的では、「アプリケーション」は、1つまたは複数のプロセス、スレッド、プログラム、クライアントソフトウェアモジュール、サーバソフトウェアモジュール、またはデバイスもしくはデバイスのグループ上で実行される任意の他のソフトウェアを表すことがある。「サービス」とは、互いに連携して動作する1つまたは複数のデバイス上で実行される1つまたは複数のアプリケーションによって提供される高レベルの機能を表すことがある。例えば、ウェブサービスは、1つのデバイス上で実行され、別のデバイス上で実行されるデータベースアプリケーションからの情報にアクセスする複数のウェブアプリケーションサーバスレッドを含むことがある。
【0083】
図5は、構成アイテムおよび関係をどのように発見することができるか、ならびにそれらに関係する情報をどのように記憶することができるかを論理図で示す。簡単にするために、リモートネットワーク管理プラットフォーム320、パブリッククラウドネットワーク340、およびインターネット350は示されていない。
【0084】
図5では、CMDB500と、タスクリスト502と、識別および調整エンジン(IRE)514とが、計算インスタンス322内に配設される、および/または計算インスタンス322内で動作する。タスクリスト502は、計算インスタンス322とプロキシサーバ312との間の接続ポイントを成す。タスクリスト502は、キュー、より特定的には外部通信チャネル(ECC)キューと呼ばれることもある。タスクリスト502は、キュー自体だけでなく、キュー内の情報の追加、削除、および/または操作など任意の関連の処理を表すこともある。
【0085】
ディスカバリが行われるとき、計算インスタンス322は、プロキシサーバ312が1つまたは複数のバッチでディスカバリタスク(ジョブ)を要求するまで、プロキシサーバ312が実行するこれらのタスクをタスクリスト502に記憶することができる。タスクをタスクリスト502に配置することにより、プロキシサーバ312によるそれらのディスカバリ操作の開始をトリガまたは他の形で引き起こすことができる。例えば、プロキシサーバ312は、タスクリスト502を定期的にもしくは時々ポーリングすることがあり、または何らかの他の様式でタスクリスト502内でのディスカバリコマンドを通知されることがある。代替または追加として、ディスカバリは、手動でトリガされてもよく、またはトリガイベントに基づいて自動的にトリガされてもよい(例えば、ディスカバリが1日1回、特定の時間に自動的に始まってもよい)。
【0086】
いずれにせよ、計算インスタンス322は、要求に応じてこれらのディスカバリコマンドをプロキシサーバ312に送信することができる。例えば、プロキシサーバ312は、タスクリスト502が空になるまで、または別の停止条件に達するまで、タスクリスト502に繰り返しクエリし、タスクリスト502中の次のタスクを取得し、このタスクを実行することがある。ディスカバリコマンドの受信に応答して、プロキシサーバ312は、(簡略化のために
図5ではデバイス504、506、508、510、および512によって表されている)管理対象ネットワーク300内の様々なデバイス、コンポーネント、アプリケーション、および/またはサービスにクエリすることができる。これらのデバイス、コンポーネント、アプリケーション、および/またはサービスは、それらの構成、動作、および/またはステータスに関する応答をプロキシサーバ312に提供することができる。次いで、プロキシサーバ312は、この発見された情報をタスクリスト502に提供することができる(すなわち、タスクリスト502は、プロキシサーバ312によって要求されるまでディスカバリコマンドを保持するための発信キューと、読み取られるまでディスカバリ情報を保持するための着信キューとを有することがある)。
【0087】
IRE514は、タスクリスト502からディスカバリ情報を除去し、このディスカバリ情報を構成アイテム(例えば、管理対象ネットワーク300上で発見されたデバイス、コンポーネント、アプリケーション、および/またはサービスを表す)およびそれらの間の関係に策定するソフトウェアモジュールでよい。次いで、IRE514は、これらの構成アイテムおよび関係をCMDB500に提供し、そこに記憶することができる。IRE514の動作については以下でより詳細に述べる。
【0088】
このようにして、CMDB500に記憶された構成アイテムは、管理対象ネットワーク300の環境を表す。一例として、これらの構成アイテムは、物理および/または仮想デバイス(例えば、クライアントデバイス、サーバデバイス、ルータ、または仮想マシン)のセット、その上で実行されるアプリケーション(例えば、ウェブサーバ、電子メールサーバ、データベース、またはストレージアレイ)、ならびに複数の個別の構成アイテムを含むサービスを表すことがある。関係は、構成アイテム間の配置または依存関係のペアでの定義でよい。
【0089】
上述したようにディスカバリを行うために、プロキシサーバ312、CMDB500、および/または1つまたは複数の資格情報ストアを、発見すべきデバイスに関する資格情報と共に構成することができる。資格情報は、デバイスにアクセスするために必要とされる任意のタイプの情報を含むことがある。これらは、ユーザID/パスワードのペアや、証明書などを含むことがある。いくつかの実施形態では、これらの資格情報は、CMDB500の暗号化されたフィールドに記憶されることがある。プロキシサーバ312は、資格情報に関する復号キーを含むことがあり、それにより、これらの資格情報を使用して、発見されているデバイスにログオンする、または他の形でアクセスすることができる。
【0090】
ディスカバリには、水平方向と垂直方向(トップダウン)との2つの全般的なタイプがある。それぞれを以下で論じる。
【0091】
(A.水平ディスカバリ)
水平ディスカバリは、管理対象ネットワーク300をスキャンし、デバイス、コンポーネント、および/またはアプリケーションを見つけ、次いで、これらのデバイス、コンポーネント、および/またはアプリケーションを表す構成アイテムをCMDB500にデータ投入するために使用される。水平ディスカバリは、構成アイテム間の関係も作成する。例えば、これは、ソフトウェアアプリケーションを表す構成アイテムと、それが実行されるサーバデバイスを表す構成アイテムとの間の「実行」関係であり得る。典型的には、水平ディスカバリはサービスを認識せず、構成アイテムが動作するサービスに基づいて構成アイテム間の関係を作成するわけではない。
【0092】
水平ディスカバリには2つのバージョンがある。一方はプローブおよびセンサに依拠し、他方はパターンも採用する。プローブおよびセンサは、デバイス上のディスカバリ情報を収集して処理し、次いでそれに応じてCMDB500を更新するスクリプト(例えばJAVASCRIPT(登録商標)で書かれたもの)でよい。より具体的には、プローブは、管理対象ネットワーク300上のデバイスを探索または調査し、センサは、プローブから返されたディスカバリ情報を解析する。
【0093】
パターンは、1つまたは複数のデバイス上のデータを収集し、そのデータを処理し、CMDBを更新するスクリプトでもある。パターンは、特定のディスカバリプログラミング言語で記述され、より一般的なプローブおよびセンサによっては確実には発見できない(または全く発見できない)ことが多い特定のデバイス、コンポーネント、および/またはアプリケーションに対する詳細なディスカバリ手順を行うために使用されるという点で、プローブおよびセンサとは異なる。特に、パターンは、デバイス、コンポーネント、および/またはアプリケーションの特定の配置を発見する方法、使用する資格情報、およびこのディスカバリにより得られた構成アイテムをデータ投入するCMDBテーブルを定義する一連の操作を指定することがある。
【0094】
どちらのバージョンも、スキャン、分類、識別、および探索という4つの論理フェーズで進行することがある。また、どちらのバージョンも、ディスカバリが行われる管理対象ネットワーク300上のIPアドレスの1つまたは複数の範囲の指定を必要とすることがある。各フェーズは、管理対象ネットワーク300上のデバイスとプロキシサーバ312との間、およびプロキシサーバ312とタスクリスト502との間の通信を含むことがある。いくつかのフェーズは、部分的または予備的な構成アイテムをCMDB500に記憶することを含むことがあり、後のフェーズで更新されることがある。
【0095】
スキャンフェーズでは、プロキシサーバ312は、オープンなTCP(Transmission Control Protocol:伝送制御プロトコル)および/またはUDP(User Datagram Protocol:ユーザデータグラムプロトコル)ポートに関してIPアドレスの指定された範囲内で各IPアドレスをプローブして、全般的なタイプのデバイスおよびそのオペレーティングシステムを決定することができる。IPアドレスでのそのようなオープンポートの存在は、そのIPアドレスに割り当てられたデバイス上で特定のアプリケーションが動作していることを示すことがあり、これはさらに、デバイスによって使用されるオペレーティングシステムを識別することがある。例えば、TCPポート135が開いている場合、デバイスは、WINDOWS(登録商標)オペレーティングシステムを実行している可能性が高い。同様に、TCPポート22が開いている場合、デバイスは、LINUX(登録商標)などのUNIX(登録商標)オペレーティングシステムを実行している可能性が高い。UDPポート161が開いている場合、デバイスはSNMP(Simple Network Management Protocol)を介してさらに識別することが可能であり得る。他の可能性も存在する。
【0096】
分類フェーズでは、プロキシサーバ312は、発見された各デバイスをさらにプローブして、そのオペレーティングシステムのタイプを決定することができる。特定のデバイスに関して使用されるプローブは、スキャンフェーズ中にデバイスに関して収集された情報に基づく。例えば、TCPポート22が開いているデバイスが見つかった場合、UNIX(登録商標)固有のプローブのセットが使用され得る。同様に、TCPポート135が開いているデバイスが見つかった場合、WINDOWS(登録商標)固有のプローブのセットが使用され得る。いずれの場合でも、プロキシサーバ312が実行できるように、適切なタスクのセットをタスクリスト502に配置することができる。これらのタスクにより、プロキシサーバ312は、特定のデバイスにログオンする、または他の形で特定のデバイスからの情報にアクセスすることができるようになる。例えば、TCPポート22が開いている場合、プロキシサーバ312は、特定のデバイスへのSSH(セキュアシェル)接続を開始し、そのデバイス上の特定のタイプのオペレーティングシステムに関する情報をファイルシステム内の特定の場所から取得するように指示されることがある。この情報に基づいて、オペレーティングシステムを決定することができる。一例として、TCPポート22が開いているUNIX(登録商標)デバイスは、AIX(登録商標)、HPUX、LINUX(登録商標)、MACOS(登録商標)、またはSOLARIS(登録商標)として分類されることがある。この分類情報は、CMDB500に1つまたは複数の構成アイテムとして記憶されることがある。
【0097】
識別フェーズでは、プロキシサーバ312は、分類されたデバイスに関する特定の詳細を決定することがある。このフェーズ中に使用されるプローブは、分類フェーズ中に特定のデバイスに関して収集された情報に基づくことがある。例えば、デバイスがLINUX(登録商標)として分類された場合、LINUX(登録商標)固有のプローブのセットが使用され得る。同様に、デバイスがWINDOWS(登録商標)10として分類された場合、WINDOWS(登録商標)固有のプローブのセットが使用され得る。分類フェーズの場合と同様に、プロキシサーバ312が実行できるように、適切なタスクのセットをタスクリスト502に配置することができる。これらのタスクにより、プロキシサーバ312は、BIOS(基本入出力システム)情報、シリアル番号、ネットワークインターフェース情報、これらのネットワークインターフェースに割り当てられたメディアアクセス制御アドレス、特定のデバイスによって使用されるIPアドレスなどの情報を特定のデバイスから読み取ることができるようになる。この識別情報は、それらの間の任意の重要な関係と共に、1つまたは複数の構成アイテムとしてCMDB500に記憶されることがある。この実施は、曖昧さをなくす目的で重複構成アイテムの生成を回避するために、および/またはディスカバリ情報が書き込まれるべきCMDB500のテーブルを決定するために、IRE514を介して識別情報を渡すことを含むことがある。
【0098】
探索フェーズでは、プロキシサーバ312は、分類されたデバイスの動作状態に関するさらなる詳細を決定することができる。このフェーズ中に使用されるプローブは、分類フェーズおよび/または識別フェーズ中に特定のデバイスに関して収集された情報に基づくことがある。ここでも、プロキシサーバ312が実行できるように、適切なタスクのセットをタスクリスト502に配置することができる。これらのタスクにより、プロキシサーバ312は、プロセッサ情報、メモリ情報、実行中のプロセス(ソフトウェアアプリケーション)のリストなどの追加情報を特定のデバイスから読み取ることができるようになる。ここでも、発見された情報は、1つまたは複数の構成アイテム、および関係としてCMDB500に記憶され得る。
【0099】
スイッチやルータなど特定のデバイスでの水平ディスカバリの実行は、SNMPを利用することがある。実行中のプロセスのリストまたは他のアプリケーション関連情報を決定する代わりに、またはそれに加えて、ディスカバリは、ルータが認識している追加のサブネットと、ルータのネットワークインターフェースの動作状態(例えば、アクティブ、非アクティブ、キューの長さ、脱落したパケットの数など)とを決定することがある。追加のサブネットのIPアドレスは、さらなるディスカバリ手順に関する候補となり得る。したがって、水平ディスカバリは、反復的または再帰的に進行し得る。
【0100】
パターンは、識別および探索フェーズ中にのみ使用される。パターンベースのディスカバリの下では、スキャンおよび分類フェーズは、プローブおよびセンサが使用される場合と同様に進む。分類フェーズが完了した後、識別中に使用するためのプローブとしてパターンプローブが指定される。次いで、パターンプローブと、それが指定するパターンとが起動される。
【0101】
パターンは、ディスカバリプログラミング言語により、プローブおよびセンサを使用したディスカバリでは利用可能でないまたは実現するのが難しい多くの機能をサポートする。例えば、パブリッククラウドネットワーク内のデバイス、コンポーネント、および/またはアプリケーションのディスカバリ、ならびに構成ファイルの追跡は、パターンベースのディスカバリを使用して、はるかに簡単に実現することができる。さらに、これらのパターンは、プローブおよびセンサよりもユーザによって容易にカスタマイズされる。さらに、パターンは、特定のデバイス、コンポーネント、および/またはアプリケーションに対してより重点が置かれており、したがって、プローブおよびセンサによって使用されるより一般的な手法よりも高速に実行され得る。
【0102】
水平ディスカバリが完了すると、発見された各デバイス、コンポーネント、および/またはアプリケーションの構成アイテム表現がCMDB500で利用可能になる。例えば、ディスカバリ後、オペレーティングシステムのバージョンと、ハードウェア構成と、管理対象ネットワーク300内のクライアントデバイス、サーバデバイス、およびルータに関するネットワーク構成の詳細と、そこで実行されるアプリケーションとを構成アイテムとして記憶することができる。この収集された情報は、ユーザがデバイスのハードウェア構成および動作ステータスを閲覧できるように、様々な方法でユーザに提示される。
【0103】
さらに、CMDB500は、構成アイテム間の関係に関するエントリを含むことがある。より特定的には、サーバデバイスが多数のハードウェアコンポーネント(例えば、プロセッサ、メモリ、ネットワークインターフェース、ストレージ、およびファイルシステム)を含み、いくつかのソフトウェアアプリケーションがインストールされているまたは実行されていると仮定する。コンポーネントとサーバデバイスとの間の関係(例えば、「包含」関係)、およびソフトウェアアプリケーションとサーバデバイスとの間の関係(例えば、「実行」関係)自体が、CMDB500に表現されることがある。
【0104】
より一般的には、ハードウェア構成アイテムにインストールされているまたはその上で実行されているソフトウェア構成アイテムの関係は、「被ホスト」、「実行」、または「依存」など、様々な形態を取ることがある。したがって、サーバデバイスにインストールされたデータベースアプリケーションは、サーバデバイスと「被ホスト」関係を有することがあり、データベースアプリケーションがサーバデバイス上でホストされていることを示す。いくつかの実施形態では、サーバデバイスは、データベースアプリケーションと「被使用」の相互関係を有することがあり、サーバデバイスがデータベースアプリケーションによって使用されていることを示すことがある。これらの関係は、上述したディスカバリ手順を使用して自動的に見つけることができるが、手動で関係を設定することも可能である。
【0105】
このようにして、リモートネットワーク管理プラットフォーム320は、管理対象ネットワーク300上に展開され、管理対象ネットワーク300によって提供されるハードウェアおよびソフトウェアを発見し、インベントリを作成することができる。
【0106】
(B.垂直ディスカバリ)
垂直ディスカバリは、ウェブサービスなどのサービス全体の一部である構成アイテムを見つけてマッピングするために使用される技法である。例えば、垂直ディスカバリは、ウェブサーバアプリケーションと、LINUX(登録商標)サーバデバイスと、ウェブサービスに関するデータを記憶するデータベースとの間の関係を示すことによって、ウェブサービスをマッピングすることができる。典型的には、最初に水平ディスカバリが実行されて、構成アイテム、および構成アイテム間の基本的な関係を発見し、次いで垂直ディスカバリが実行されて、サービスを構成する構成アイテム間の関係を確立する。
【0107】
パターンは、サービスが展開される方法の説明に適合するハードウェアおよびソフトウェアの特定の配置を探すようにプログラムすることができるので、特定のタイプのサービスを発見するために使用することができる。代替または追加として、トラフィック解析(例えば、デバイス間でのネットワークトラフィックの検査)を使用して、垂直ディスカバリを容易にすることができる。いくつかの場合には、サービスのパラメータを手動で構成して、垂直ディスカバリを支援することができる。
【0108】
一般に、垂直ディスカバリは、デバイス、コンポーネント、および/またはアプリケーション間の特定のタイプの関係を見つけることを試みる。これらの関係のいくつかは、構成ファイルから推測されることがある。例えば、ウェブサーバアプリケーションの構成ファイルは、それが依拠するデータベースのIPアドレスおよびポート番号を参照することができる。垂直ディスカバリパターンは、そのような参照を探し、そこから関係を推測するようにプログラムすることができる。デバイス間のトラフィックから関係を推測することもできる。例えば、ロードバランサとウェブサーバをホストするデバイスとの間で大量のウェブトラフィック(例えばTCPポート80または8080)が生じている場合、ロードバランサとウェブサーバとが関係を有することがある。
【0109】
垂直ディスカバリによって見つけられる関係は、様々な形態を取ることがある。一例として、電子メールサービスは、電子メールサーバソフトウェア構成アイテムと、データベースアプリケーションソフトウェア構成アイテムとを含むことがあり、それぞれが異なるハードウェアデバイス構成アイテムにインストールされる。電子メールサービスは、これらのソフトウェア構成アイテムの両方と「依存」関係を有することがあり、ソフトウェア構成アイテムは、電子メールサービスと「使用」相互関係を有する。そのようなサービスは、水平ディスカバリ手順によっては完全には決定することが可能でないことがあり、垂直ディスカバリおよび場合によってはある程度の手動構成に依拠することがある。
【0110】
(C.ディスカバリの利点)
ディスカバリ情報が取得される方法に関係なく、ディスカバリ情報は、管理対象ネットワークの運用にとって貴重であり得る。特に、IT担当者は、特定のソフトウェアアプリケーションがどこで展開されているか、およびどの構成アイテムがサービスを構成しているかを迅速に判断することができる。これにより、サービスの機能停止や機能低下の根本原因を迅速に特定できるようになる。例えば、2つの異なるサービスの応答時間が遅い場合、(おそらく他のアクティビティがある中でも)CMDBへのクエリを行い、両方のサービスで使用されている高いプロセッサ使用率を有するデータベースアプリケーションが根本原因であると決定することができる。したがって、IT担当者は、サービスを構成する他の構成アイテムの健全性やパフォーマンスを考慮して時間を無駄にすることなく、データベースアプリケーションに取り組むことができる。
【0111】
別の例では、あるデータベースアプリケーションがサーバデバイス上で実行されており、このデータベースアプリケーションが従業員オンボーディングサービスおよび給与計算サービスによって使用されていると仮定する。したがって、サーバデバイスがメンテナンスのために動作を停止された場合、従業員オンボーディングサービスおよび給与計算サービスに影響が及ぼされることは明らかである。同様に、構成アイテム間の依存性および関係は、特定のハードウェアデバイスが故障したときに影響を及ぼされるサービスを表すことが可能であり得る。
【0112】
一般に、構成アイテム、および/または構成アイテム間の関係は、ウェブベースのインターフェース上に表示され、階層形式で表現されることがある。CMDB内のそのような構成アイテムおよび/または関係への変更は、このインターフェースを介して達成することができる。
【0113】
さらに、管理対象ネットワーク300からのユーザは、特定の調整されたアクティビティが複数の発見されたデバイスにわたって行われることを可能にするワークフローを開発することができる。例えば、ITワークフローは、ユーザが、発見されたすべてのLINUX(登録商標)デバイスへの共通の管理者パスワードを単一の操作で変更できるようにすることがある。
【0114】
(V.CMDB識別ルールおよび調整)
CMDB500などのCMDBは、構成アイテムおよび関係のリポジトリを提供する。これは、適切に提供されるとき、計算インスタンス内で展開されるまたは計算インスタンスに関与する上位層のアプリケーションで重要な役割を担うことができる。これらのアプリケーションは、企業ITサービス管理、運用管理、資産管理、構成管理、コンプライアンスなどに関係することがある。
【0115】
例えば、ITサービス管理アプリケーションは、CMDB内の情報を使用して、誤動作している、クラッシュしている、または高負荷が発生しているコンポーネント(例えばサーバデバイス)によって影響を及ぼされることがあるアプリケーションおよびサービスを決定することができる。同様に、資産管理アプリケーションは、CMDB内の情報を使用して、特定のエンタープライズアプリケーションをサポートするためにどのハードウェアおよび/またはソフトウェアコンポーネントが使用されているかを決定することができる。CMDBの重要性により、CMDBに記憶されている情報が正確であり、一貫性があり、最新であることが望ましい。
【0116】
CMDBには様々な方法でデータ投入することができる。上で論じたように、ディスカバリ手順は、構成アイテムおよび関係を含む情報をCMDBに自動的に記憶することができる。しかし、全体としてまたは一部、手動入力、構成ファイル、およびサードパーティのデータソースによってCMDBにデータ投入することもできる。複数のデータソースがいつでもCMDBを更新することが可能であり得るという前提で、あるデータソースが別のデータソースのエントリを上書きし得る可能性がある。また、2つのデータソースが、同じ構成アイテムに関してそれぞれわずかに異なるエントリを作成し、重複データを含むCMDBをもたらすことがある。これらの事象のいずれかが生じるとき、それによりCMDBの健全性および有用性が低下され得る。
【0117】
この状況を軽減するために、これらのデータソースは、構成アイテムをCMDBに直接書き込まないことがある。代わりに、IRE514の識別および調整アプリケーションプログラミングインターフェース(API)に書き込むことがある。次いで、IRE514は、設定可能な識別ルールのセットを使用して、構成アイテムを一意に識別し、それらをCMDBに書き込むかどうか、およびどのように書き込むかを決定することができる。
【0118】
一般に、識別ルールは、この一意の識別に使用することができる構成アイテム属性のセットを指定する。識別ルールは優先順位も有することがあり、より高い優先順位を有するルールがより低い優先順位を有するルールよりも前に考慮される。追加として、ルールは、いくつかの構成アイテムを他の構成アイテムから独立して識別するという点で、独立していることがある。代替として、ルールは、依存する構成アイテムを識別するために最初にメタデータルールを使用するという点で、依存していることもある。
【0119】
メタデータルールは、特定の構成アイテム内に他のどの構成アイテムが含まれるか、または特定の構成アイテムがどのホスト上で展開されるかを記述する。例えば、ネットワークディレクトリサービス構成アイテムは、ドメインコントローラ構成アイテムを含むことがあり、ウェブサーバアプリケーション構成アイテムは、サーバデバイス構成アイテム上でホストされることがある。
【0120】
各識別ルールの目標は、ある構成アイテムを他のすべての構成アイテムから明確に区別することができ、構成アイテムの存続期間中に変更されないことが予想される属性の組合せを使用することである。例示的なサーバデバイスに関するいくつかの可能な属性として、シリアル番号、場所、オペレーティングシステム、オペレーティングシステムのバージョン、メモリ容量などを挙げることができる。構成アイテムを一意に識別しない属性をルールが指定する場合、複数のコンポーネントが、CMDB内で同じ構成アイテムとして表されることがある。また、特定の構成アイテムに関して変更する属性をルールが指定する場合、重複した構成アイテムが作成されることがある。
【0121】
したがって、データソースが構成アイテムに関する情報をIRE514に提供するとき、IRE514は、その情報と1つまたは複数のルールとの照合を試行することがある。照合が見つかった場合、構成アイテムはCMDBに書き込まれる、またはCMDB内にすでに存在する場合には更新される。照合が見つからない場合、構成アイテムは、さらなる分析のために保留されることがある。
【0122】
構成アイテム調整手順を使用して、信頼できるデータソースのみがCMDB内の構成アイテムデータの上書きを許可されることを保証することができる。この調整は、ルールベースでもよい。例えば、調整ルールは、特定のデータソースが、特定の構成アイテムタイプおよび属性のセットに関して信頼できることを指定することがある。次いで、IRE514は、この信頼できるデータソースのみに特定の構成アイテムへの書き込みを許可することができ、認可されていないデータソースからの書き込みを防止することができる。したがって、認可されたデータソースは、特定の構成アイテムに関する信頼できる唯一の情報源になる。いくつかの場合には、構成アイテムを作成している場合、または書き込み先の属性が空である場合、認可されていないデータソースが構成アイテムへの書き込みを許可されることがある。
【0123】
さらに、複数のデータソースが、同じ構成アイテムまたはその属性に対して信頼できるものであり得る。曖昧さを避けるために、これらのデータソースは、構成アイテムの書き込み中に考慮される優先順位を割り当てられることがある。例えば、認可された二次データソースは、認可された一次データソースが構成アイテムの属性に書き込むまで、この属性に書き込むことが可能であり得る。その後、認可された二次データソースによる属性へのさらなる書き込みは防止されることがある。
【0124】
いくつかの場合には、重複した構成アイテムが、IRE514によってまたは別の方法で自動的に検出されることがある。これらの構成アイテムは、削除される、または手動での重複排除のためにフラグが付けられることがある。
【0125】
(VI.ディスカバリコマンド検証ツール)
ここで論じるディスカバリ手順は、様々なタイプのITシステムの保守および運用を大幅に容易にする。それにもかかわらず、これらのシステムは複雑さを増しており、従来のパターンレスのディスカバリを使用しても発見が不可能または非効率的であるようにカスタマイズされることが多い。したがって、ここ数年にわたって、パターンは重要性および使用量を増している。
【0126】
パターンベースのディスカバリの能力および有用性の一例は、仮想マシンクラスタの文脈で理解することができる。そのようなクラスタでは、時間の経過と共に仮想マシンがスピンアップ(アクティブ化)またはスピンダウン(非アクティブ化)されることがあるので、従来のディスカバリ手順がこれらの各仮想マシンの各々を突き止めてプローブすることは困難であり得る。しかし、ほとんどの仮想マシンクラスタリング技術は、仮想マシンを管理する何らかの形式の制御ノード(例えば、ハイパーバイザ)を使用する。制御ノードは、これらの仮想マシンの数および場所、それらの役割、それらの冗長性スキームなどを認識していることがある。制御ノードは、各仮想マシンにクエリして、この情報またはリアルタイムパフォーマンスデータ、例えば稼働時間、負荷、使用率、または他の因子を決定することも可能であり得る。これを行うために、コマンドを受信することができるコマンドラインまたはREST(representational state transfer)インターフェースを用いて制御ノードを構成することができる。
【0127】
この場合、仮想マシンクラスタのディスカバリは、そのインターフェースを介して制御ノードにアクセスし、そのサポートされている仮想マシンに関する情報をクエリすることを含むことがある。それを実施するには、制御ノードがディスカバリインフラストラクチャによって(例えばプロキシサーバによって)到達可能であること、適切な資格情報(例えばユーザIDおよびパスワード)が制御ノードに提供されていること、制御ノードに発行された任意のコマンドを実施するためにこれらの資格情報が認可されていること、およびコマンドが適切にフォーマットされていることを必要とし得る。これらの要件のいずれかが満たされていない場合、ディスカバリは失敗する可能性が非常に高い。したがって、展開される前にパターンが適切にテストまたは検証されることが有利である。
【0128】
いくつかの場合には、ディスカバリパターンは、場合によってはコマンド間の依存関係により、所与の順序で実施されることを意図されるコマンドのリストを含む。仮想マシンクラスタの制御ノードの例では、最初のコマンドは、制御ノードによって管理される仮想マシンのリストを要求することがあり、後続のコマンドは、各仮想マシンに関する詳細を要求することがある。順序のより早いコマンドが失敗した場合、後続のコマンドの実行を試行することさえせずにパターン全体が終了することがある。したがって、いくつかのディスカバリパターンの失敗により、いくつかのコマンドが実行されず、それらの妥当性を不定の状態にする。
【0129】
一例として、
図6Aは、仮想マシンクラスタ600を示す。仮想マシンクラスタ600は、制御ノード602、ならびにM個の処理ノード(参照番号604-1~604-Mを付されている)およびN個の記憶ノード(参照番号606-1~606-Nを付されている)を含む。処理ノードおよび記憶ノードは、仮想マシンであると仮定される。省略記号の使用は、MおよびNが1以上の任意の値を取ることができることを示す。
【0130】
制御ノード602は、例えば、<address>によって示されるネットワークアドレスを使用するハイパーバイザでよい。このネットワークアドレスは、IPアドレス(例えばIPv4もしくはIPv6)または任意の他のタイプのネットワークアドレスであり得る。以下の説明では、簡単にするためにIPアドレスが使用されるが、本明細書における実施形態はこの様式に限定されない。
【0131】
制御ノード602は、処理ノード604-1~604-Mおよび記憶ノード606-1~606-Nを動的に管理することができる。所与の時点でのMおよびNの値は、実際の需要、予想される需要、過去の需要、または他の因子に基づくことがある。さらに、処理ノード604-1~604-Mは、いくつかの動作中の仮想マシンと、1つまたは複数のアイドル状態の仮想マシンとを備えた冗長スキームを使用することがあり、アイドル状態の仮想マシンは、動作中の仮想マシンが故障した場合、非アクティブ化された場合、または他の理由でそのタスクを実行することができなくなった場合に、動作中の仮想マシンの役割を引き継ぐ準備状態になっている。同様に、記憶ノード606-1~606-Nは、同様の冗長機構を採用することがある。
【0132】
これらの処理ノードおよび記憶ノードは、稼働時間、負荷、使用率などに関係する様々な特性を決定することが可能であり得る。さらに、各処理ノードおよび記憶ノードは、制御ノード602によって参照することができる一意の識別子を有すると仮定される。
【0133】
図6Bは、仮想マシンクラスタ600のコンポーネントを発見するためのディスカバリパターン610を示す。このパターンは、わかりやすくするために高レベルで表現されている。実際のディスカバリパターンは、既成のスクリプト言語に似たコマンドおよび実行フロー制御機能(例えば分岐またはループ)を有するディスカバリプログラミング言語で記述されることがある。
【0134】
さらに、ディスカバリパターン610のコマンドは、コマンドラインインターフェース、RESTインターフェース、SNMPインターフェース、またはWMI(Windows Management Instrumentation)インターフェースを介してフォーマットされて通信されることがある。これらのインターフェースのいずれかの代わりに、またはこれらのインターフェースのいずれかに加えて、他のタイプのインターフェースがサポートされることもある。システム要件に応じて、同じまたは異なる資格情報が各コマンドに現れ得る。代替として、いくつかのコマンドは、資格情報を必要としないこともある。
【0135】
ディスカバリパターン610のコマンド1により、コンピューティングデバイス(例えば、プロキシサーバ)が、資格情報<credentials>でネットワークアドレス<address>にログオンする。上述したように、<address>は、制御ノード602のIPアドレスでよく、<credentials>は、ユーザID/パスワードのペア、または制御ノード602へのアクセスを許可する何らかの他の形式の認証トークンでよい。
【0136】
コマンド2により、コンピューティングデバイスは、制御ノード602に処理ノードのリストを要求する。このリストは、処理ノード604-1~604-Mの各々に関する一意の識別子を含むことがある。
【0137】
コマンド3により、コンピューティングデバイスは、リスト内の処理ノード604-1~604-Mの各々の稼働時間および負荷を要求する。例えば、コマンド3は、実際上、各処理ノードに関する複数のコマンド(例えば、リスト内の各処理ノードに関する「稼働時間取得」および「負荷取得」コマンド)であり得る。
【0138】
コマンド4により、コンピューティングデバイスは、制御ノード602に記憶ノードのリストを要求する。このリストは、記憶ノード606-1~606-Nの各々に関する一意の識別子を含むことがある。
【0139】
コマンド5により、コンピューティングデバイスは、リスト内の記憶ノード606-1~606-Nの各々の使用率を要求する。例えば、コマンド5は、実際上、各記憶ノードに関する1つのコマンド(例えば、リスト内の各処理ノードに関する「使用率取得」コマンド)であり得る。
【0140】
示されていない他のコマンドを採用して、仮想マシンクラスタ600のノード間の関係を決定する、および/または任意のノードから他の情報を取得することもできる。さらに、追加のコマンドは、コマンド2~5からの結果、およびそこから推論された任意の情報を(例えばCMDBの)様々なデータベーステーブルに書き込むことができる。
【0141】
典型的にはディスカバリはあまり頻繁には実行されないので(例えば、数時間に1回、1日に1回、1週間に1回など)、ディスカバリ手順によるパターンのデバッグは時間のかかるプロセスであり、数日、さらには数週間かかることもある。パターンの失敗は、失敗の原因を明確には識別しないことがある。さらに、パターンの欠陥を修復することを意図された変更は、この原因に対処することが保証されておらず、後のディスカバリ実行までに見つからない追加の欠陥をもたらす可能性さえある。
【0142】
本明細書における実施形態は、ディスカバリコマンドに関する検証ツールを導入することによって、これらの制限および場合によっては他の制限に対処する。本質的に、検証ツールは、1つまたは複数のディスカバリコマンドのリスト(例えば、手動で入力されたもの、またはディスカバリパターンから解析されたもの)と、ディスカバリコマンドごとの1つまたは複数のネットワークアドレスのリストとを取得するソフトウェアである。パターンからのディスカバリコマンドの解析は、パターンを通して反復し、(例えば構文および/またはキーワードに基づいて)パターンでのコマンドを識別し、これらのコマンドを抽出することを含むことがある。有利には、検証ツールが使用されるたびに解析を動的に実行することができ、したがって、パターンへの変更が検証ツールのプロセスに自動的に組み込まれる。
【0143】
次いで、検証ツールは、その関連のリスト内の各ネットワークアドレスに対して各ディスカバリコマンドを実行することを試行し、コマンド/アドレスの各ペアに関して実行の結果を報告する。これらの結果は、成功の指示(例えば、コマンド、応答コード、コマンド出力、他のテキストなどの実行の成功を表すブール値)または失敗の指示(例えば、コマンド、エラーコード、コマンド出力、他のテキストなどの実行の失敗を表すブール値)を含むことがある。いくつかの実施形態では、ネットワークアドレスの共通のリストが、すべてのディスカバリコマンドで使用されることがある。
【0144】
前述したように、ディスカバリパターンは必須ではない。検証ツールは、ディスカバリパターンに現れない1つまたは複数の関係するまたは無関係のディスカバリコマンドで実行することもできる。
【0145】
本明細書では、検証ツールは、「ディスカバリ検証アプリケーション」、「検証アプリケーション」、または何らかの他の名前で呼ばれることもある。そのような検証ツールは、リモートネットワーク管理プラットフォームまたは場合によっては何らかの他のタイプのプラットフォーム上で実行するように構成されたソフトウェアを含むことがある。
【0146】
検証ツールは、スケジュールされたディスカバリ手順にパターンが追加される前に、これらの手順に関係なく使用されることが意図される。例えば、ユーザは、IPアドレスのリストにあるパターンからのコマンドをテストし、必要に応じてパターンをデバッグし、最終的にパターンが期待どおりに動作していることを決定し、次いで、次のスケジュールされたディスカバリ手順に関してパターンを展開することができる。しかし、検証ツールは、あらゆる失敗を再現する試みで、展開されたパターンに対して使用することもできる。いずれにせよ、検証ツールは、ディスカバリ手順よりもはるかに迅速に(例えば、数日ではなく数秒または数分で)結果を提供し、したがってパターンを開発し、テストし、正常に展開する能力を大幅に向上させる。
【0147】
図7は、検証ツール700が計算インスタンス322内で実行されるように構成された、例示的なアーキテクチャを示す。このアーキテクチャは、検証ツール700を示し、タスクリスト502またはIRE514を示さないことを除いて、
図5のアーキテクチャと本質的に同じである。特に、検証ツール700は、入力としてディスカバリコマンドおよびネットワークアドレスを受け取り、ディスカバリコマンドおよびネットワークアドレスの表現をプロキシサーバ312のうちの1つに送信し、このプロキシサーバからディスカバリ情報を受信し、結果をCMDB500に提供する。プロキシサーバ312は、適切なディスカバリインターフェースを介してネットワークアドレスにディスカバリコマンドを適用することができる。前述したように、各ディスカバリコマンドは、1つまたは複数のネットワークアドレスの同じまたは異なるリストに適用することができる。さらに、いくつかの環境ではプロキシサーバの使用が必要とされず、検証ツールは、ディスカバリが実行されるコンピューティングデバイスとより直接的な方法で通信することがある。
【0148】
図7では、ディスカバリコマンドは、例えば、個別のコマンド、コマンドのリスト、またはディスカバリパターン全体の形式を取ることがある。ネットワークアドレスは、そのようなアドレスのリストであり得る。IPアドレスの例を使用すると、ネットワークアドレスは、単一のIPアドレス(例えば「10.172.43.167」)、IPアドレスのリスト(例えば「10.172.43.167」、「10.172.43.168」、「10.172.44.17」)、またはある範囲のIPアドレス(例えば「10.172.43.0~10.172.43.255」または「10.172.43/24」)でよい。
【0149】
上述したように、検証ツール700によって検出することができるディスカバリ失敗のタイプには、到達不能なネットワークアドレス、認証失敗、認可失敗、および/またはサポートされていないコマンドが含まれる。さらなるタイプの失敗も検出され得る。
【0150】
ネットワークアドレスは、そのアドレスにあるとされているコンピューティングデバイスにコマンドを発行する1つまたは複数の試行が不成功であるときに、到達不能とみなされることがある。そのような失敗の理由は、アドレスが使用されていないこと、コマンドを発行するプロキシサーバからアドレスがルーティング可能でないこと、検証ツールにアドレスが指定される方法の誤植、またはアドレスにあるコンピューティングデバイスが試行に応答していないことを含むことがある。到達不能なネットワークアドレスは、典型的には、コマンドを発行する1つまたは複数の試行が応答を受信しなかったとき、またはこれらのコマンドが、近くのルータもしくはスイッチがコマンドをネットワークアドレスに転送する方法を知らないことを示す応答をそのルータまたはスイッチから受信したときに検出される。代替として、プロキシサーバ(例えばプロキシサーバ312のうちの1つ)は、検証ツール(例えば検証ツール700)から到達不能であり得る。
【0151】
認証失敗は、ネットワークアドレスが到達可能であるが、提供される資格情報がそのアドレスでのコンピューティングデバイスによって受け入れられないときに発生する。例えば、資格情報が、コンピューティングデバイス上で構成されていないことがある。いくつかの場合には、そのアドレスでのコンピューティングデバイスによってコマンドが実行されるために資格情報が必要であるが、資格情報が提供されなかったときに、認証失敗が発生する。認証失敗は、典型的には、発行されたコマンドに関して認証が失敗したことを示すエラーメッセージを検証ツール700が受信することによって検出される。
【0152】
認証失敗とは異なり、認可失敗は、コマンドが、そのアドレスでのコンピューティングデバイスによって正常に認証されたが(そのような認証が必要な場合に)、コマンドの発行元のアカウントまたはユーザIDが、コマンドを実行するための許可を有していないときに発生する。例えば、検証ツール700は、非特権アカウントにログインしていることがあるが、コマンド(例えばUNIX「sudo」コマンド)は、特権(例えばスーパーユーザまたはルート)アカウントによってのみ実行することができる。認可失敗は、発行されたコマンドに関して認可が失敗したことを示すエラーメッセージを検証ツール700が受信することによって検出される。
【0153】
サポートされていないコマンドは、そのアドレスでのコンピューティングデバイスによってサポートされていないコマンド、およびサポートされているコマンドに関するサポートされていないオプションまたはパラメータを含む。誤植のあるコマンドは、サポートされていないコマンドの1つのあり得る例である。サポートされていないコマンドは、発行されたコマンドが見つからないまたは不明であるという指示をそのコマンドがもたらしたことを示すエラーメッセージを検証ツール700が受信することによって検出される。検証ツールは、コマンドがサポートされていないかどうかを認識していないことがあり、サポートされていない場合に、エラーメッセージを受信することによってのみ通知されることがあることに留意されたい。他方で、検証ツールは、サポートされているコマンドのリストを備えて構成することができ、このリストにないコマンドに関して事前にエラーフラグを立てることができる。
【0154】
いくつかの場合には、検証ツールは、データベース(例えばCMDB500)内のテーブルからディスカバリコマンドおよびネットワークアドレスを読み取ることがある。さらに、検証ツールは、結果および/または特定のディスカバリ情報を記憶するように構成されたデータベース(例えばCMDB500)内の一時テーブルに書き込むことがある。
【0155】
一例として、
図8は、データベーステーブル800からディスカバリコマンドおよびネットワークアドレスを読み取り、対応するディスカバリ結果をデータベーステーブル802に書き込む検証ツール700を示す。データベーステーブル800とデータベーステーブル802とは、同じデータベース(例えばCMDB500)の一部でも、異なるデータベースの一部でもよい。
【0156】
【0157】
データベーステーブル800に関する可能なスキーマの一例が表1に示されている。例えば、データベーステーブル800での各エントリは、表1にリストされた属性(すなわち、number、ip_address、os_class、command_type、command、proxy_server、progress、status、credentials、および/またはis_automated)のいくつかを含むことがある。表1で、これらの各属性は、名前、ラベル、タイプ、および説明に関して指定されている。いくつかの属性に関して例が提供されている。
【0158】
number属性は、エントリの一意の識別子であり得る。ip_address属性は、1つまたは複数のIPアドレスを指定することがある。os_class属性は、コマンドが実行されるオペレーティングシステムのタイプを指定することがある。command_type属性は、コマンドがシェル(CLI)、SNMP、WMI、またはHTTP GET(例えば、ウェブベースのRESTインターフェースを介する)のどれを介して送達され得るかを指定することがある。command属性は、IPアドレスに発行する実際のコマンドを指定することがある。proxy_server属性は、コマンドをルーティングするプロキシサーバを指定することがある(プロキシサーバが指定されていない場合、デフォルトのプロキシサーバが使用され得る)。progress属性は、実行中のコマンドに関して、結果の何パーセントが受信されたかを指定することがある。status属性は、コマンド実行が完了し、すべての結果が受信されたかどうかを指定することがある。credentials属性は、別のデータベーステーブルに記憶されている資格情報のセットへの参照を指定することがある。is_automated属性は、(パターンからのコマンドを解析するために)自動コマンド検証が使用されるかどうか、またはコマンドがユーザ入力として提供されるかどうかを指定することがある。
【0159】
特に、表1は、取り得る属性のタイプの一例にすぎない。様々な実施形態では、より多数またはより少数の属性が存在してもよい。
【0160】
【0161】
データベーステーブル802に関する取り得るスキーマの一例が表2に示されている。例えば、データベーステーブル802の各エントリは、表2にリストされた属性(すなわち、command_validation、ip_address、os_class、command_type、command、proxy_server、state、result、result_details、および/またはsteps_to_remediate)のいくつかを含むことがある。表2で、これらの各属性は、名前、ラベル、タイプ、および説明に関して指定されている。いくつかの属性に関して例が提供されている。
【0162】
特に、データベーステーブル800での単一のエントリが、コマンドが実行されるIPアドレスの数に基づいて、データベーステーブル802内に複数のエントリを生成することがある。例えば、データベーステーブル800でのエントリが、10個のIPアドレスでコマンドが実行され得ることを指定している場合、データベーステーブル802には10個のエントリ(これらのIPアドレスの各々に対して1つ)が存在することになる。
【0163】
command_validation属性は、コマンドと、この結果を生成したコマンドが実行されたコンピューティングデバイスのIPアドレスとを含むデータベーステーブル800内のエントリを指定することがある。ip_address属性は、コマンドが実行されたコンピューティングデバイスのIPアドレスを指定することがある。os_class属性は、このコンピューティングデバイスのオペレーティングシステムのタイプを指定することがある。command_type属性は、シェル(CLI)、SNMP、WMI、またはHTTP GET(例えば、ウェブベースのRESTインターフェースを介する)など、コマンドがどのように送達されたかを指定することがある。command属性は、発行された実際のコマンドを指定することがある。proxy_server属性は、コマンドをルーティングしたプロキシサーバを指定することがある。state属性は、コマンドがIPアドレスでの処理を待機しているか、IPアドレスで処理中であるか、またはIPアドレスでの処理が完了しているかを指定することがある。result属性は、コマンドの実行が成功したか失敗したかを指定することがある。result_details属性は、失敗の理由(コマンドが失敗した場合)、またはコマンドの出力の指示(コマンドが成功した場合)を指定することがある。steps_to_remediate属性は、発生した任意の障害に対処するために行うことができることに関する説明を指定する、またはその説明へのリンクを張ることができる(そのような情報が利用可能である場合)。
【0164】
表1と同様に、表2も、取り得る属性のタイプの一例にすぎない。様々な実施形態では、より多数またはより少数の属性が存在してもよい。
【0165】
図9は、これらの機能をまとめた検証ツールの動作を示す。プロセス900は、コマンドランチャ910が、ディスカバリコマンドおよびネットワークアドレスのユーザ提供リスト902、および/またはパターンパーサ906によってパターン904から抽出されたディスカバリコマンドおよびネットワークアドレス908を受信することを含む。
【0166】
コマンドランチャ910は、(例えばプロキシサーバを介して)ネットワークアドレスにディスカバリコマンドを送信することによって、一連のプローブ912A、912B、912C、および912Dを起動する。したがって、例えば、プローブ912Aは、コマンドcmd1をネットワークアドレスaddr1に送信し、プローブ912Bは、コマンドcmd2をネットワークアドレスaddr1に送信し、プローブ912Cは、コマンドcmd1をネットワークアドレスaddr2に送信し、プローブ912Dは、コマンドcmd2をネットワークアドレスaddr2に送信する。省略記号で示されているように、より多くのプローブが使用されることもある。
【0167】
上記の議論に従って、コマンドランチャ910がi個のコマンドおよびj個のアドレスを受信する場合、i×j個のプローブが使用され得る。代替として、いくつかのコマンドは、その独自のアドレスリストに関連付けられることがあり、したがって、これらの各コマンドに関するプローブは、それらの関連の各アドレスに関してのみ使用されることがある。
【0168】
さらに、各プローブは、コマンドの実行または試行された実行の結果を受信して解析し、これらの結果をデータベーステーブル914に書き込むように構成されたセンサ(
図9には図示せず)を伴う、またはそのようなセンサに関連付けられることがある。ここで、データベーステーブル914は、データベーステーブル802と同一でよく、および/またはデータベーステーブル802の役割を包含することもある。
【0169】
(VII.例示的な操作)
図10は、例示的実施形態を示すフローチャートである。
図10によって示されるプロセスは、コンピューティングデバイス100などのコンピューティングデバイス、および/またはサーバクラスタ200などのコンピューティングデバイスのクラスタによって実行され得る。しかし、このプロセスは、他のタイプのデバイスまたはデバイスサブシステムによって実行することもできる。例えば、このプロセスは、リモートネットワーク管理プラットフォームの計算インスタンス、またはラップトップやタブレットデバイスなどのポータブルコンピュータによって実行することができる。
【0170】
図10の実施形態は、そこに示されている特徴の任意の1つまたは複数を除去することによって簡略化することができる。さらに、これらの実施形態は、前述の図のいずれかまたは本明細書に記載の特徴、態様、および/または実施形態と組み合わせることができる。
【0171】
ブロック1000は、ディスカバリ検証アプリケーションによって、永続ストレージから、それぞれネットワークアドレスのリストに関連付けられたディスカバリコマンドのリスト、およびネットワークアドレスのリストを読み取ることを含むことがある。ブロック1002は、ディスカバリコマンドのリスト内の各ディスカバリコマンドについて、ディスカバリ検証アプリケーションによって、1つまたは複数のプロキシサーバを介して、それぞれ関連付けられたネットワークアドレスのリスト内の各ネットワークアドレスにディスカバリコマンドを送信することを含むことがある。ブロック1004は、ディスカバリ検証アプリケーションによって、1つまたは複数のプロキシサーバを介して、送信されたディスカバリコマンドの各々にそれぞれ対応するディスカバリ結果を受信することを含むことがあり、ここで、ディスカバリ結果は、ディスカバリコマンドの成功または失敗のいずれかを示す。ブロック1006は、ディスカバリ検証アプリケーションによって、永続ストレージにディスカバリ結果を書き込むことを含むことがある。
【0172】
いくつかの実施形態では、ディスカバリ検証アプリケーションは、システムによって実行されるようにスケジュールされたディスカバリ手順に関係なく実行される。
【0173】
いくつかの実施形態では、ネットワークアドレスのリストは、ディスカバリコマンドの各々に関連付けられたネットワークアドレスの共通のリストとして指定される。
【0174】
いくつかの実施形態では、ディスカバリコマンドの各々が、コマンドラインインターフェースコマンド、SNMP(simple network management protocol:簡易ネットワーク管理プロトコル)コマンド、ウェブベースのインターフェースを介して送達可能なコマンド、またはWMI(Windows Management Instrumentation)コマンドのうちの1つである。
【0175】
いくつかの実施形態では、ディスカバリコマンドおよびネットワークアドレスは、永続ストレージ内の第1のデータベーステーブルに記憶され、ディスカバリ結果は、永続ストレージ内の第2のデータベーステーブルに記憶される。
【0176】
いくつかの実施形態では、第1のデータベーステーブルの各エントリは、特定のディスカバリコマンドが実行されるオペレーティングシステムのクラス、特定のディスカバリコマンドを送達するために使用されるネットワークプロトコルを指定する特定のディスカバリコマンドのタイプ、特定のディスカバリコマンドが送信されるプロキシサーバの1つ、または特定のディスカバリコマンドで使用するための認証資格情報の指示を含む。
【0177】
いくつかの実施形態では、第2のデータベーステーブル内のディスカバリ結果の各エントリは、実行された特定のディスカバリコマンドの仕様、特定のディスカバリコマンドが送信されたネットワークアドレス、または特定のディスカバリコマンドが送信されたプロキシサーバを含む。
【0178】
いくつかの実施形態では、ディスカバリ検証アプリケーションは、連続するバッチでディスカバリコマンドを送信するように構成される。各バッチは、例えば5~25個のディスカバリコマンド/ネットワークアドレスのペアを含むことがある。
【0179】
いくつかの実施形態では、ディスカバリコマンドのリストは順序付けを有し、ディスカバリ検証アプリケーションは、その順序付けに従って、関連のネットワークアドレスごとにディスカバリコマンドを送信するように構成される。代替として、ディスカバリコマンドのリストは順序付けされないことがあり、したがって任意の順序で送信され得る。
【0180】
いくつかの実施形態では、ディスカバリ結果の成功の指示は、特定のネットワークアドレスに関連付けられたコンピューティングデバイス上での特定のディスカバリコマンドの実行からの出力を含む。
【0181】
いくつかの実施形態では、ディスカバリ結果における失敗の指示は、特定のディスカバリコマンドが送信された特定のネットワークアドレスが到達不能であること、特定のネットワークアドレスに関連付けられたコンピューティングデバイスによって特定のディスカバリコマンドがサポートされていないこと、コンピューティングデバイスにアクセスするために特定のディスカバリコマンドによって使用される資格情報の認証失敗、またはコンピューティングデバイスが特定のディスカバリコマンドを実行しようと試行したときの資格情報の認可失敗により、特定のディスカバリコマンドが失敗したかを指定する。
【0182】
(VIII.結論)
本開示は、様々な態様の例示として意図されている本出願で述べる特定の実施形態に限定されるものではない。当業者には明らかなように、その範囲から逸脱することなく多くの修正および変形を施すことができる。本明細書で述べたものに加えて、本開示の範囲内で機能的に等価な方法および装置が、前述の説明から当業者には明らかであろう。そのような修正および変形は、添付の特許請求の範囲の範囲に含まれることが意図されている。
【0183】
上記の詳細な説明では、添付図面を参照して、開示されたシステム、デバイス、および方法の様々な特徴および動作を述べた。本明細書および図面に記載される例示的実施形態は、限定を意図するものではない。本明細書に提示される主題の範囲から逸脱することなく、他の実施形態を利用することができ、他の変更を施すことができる。本明細書で全般的に述べて図面に示す本開示の態様は、多様な異なる構成で配置、置換、結合、分離、および設計することができることが容易に理解されよう。
【0184】
図面中および本明細書で論じるメッセージフロー図、シナリオ、およびフローチャートのいずれかまたはすべてに関して、各ステップ、ブロック、および/または通信は、例示的実施形態による情報の処理および/または情報の送信を表すことができる。代替実施形態は、これらの例示的実施形態の範囲内に含まれる。これらの代替実施形態では、例えばステップ、ブロック、送信、通信、要求、応答、および/またはメッセージとして述べられる操作は、関与する機能に応じて、図示されるまたは論じられる順序とは異なる順序で実行することができ、実質的に同時にまたは逆の順序で実行することもできる。さらに、本明細書で論じるメッセージフロー図、シナリオ、およびフローチャートの任意のものと共に、より多数またはより少数のブロックおよび/または操作を使用することができ、これらのメッセージフロー図、シナリオ、およびフローチャートは、部分的にまたは全体的に相互に組み合わせることができる。
【0185】
情報の処理を表すステップまたはブロックは、本明細書に記載の方法または技法の特定の論理機能を実行するように構成することができる回路に対応し得る。代替または追加として、情報の処理を表すステップまたはブロックは、モジュール、セグメント、またはプログラムコードの一部(関連データを含む)に対応することができる。プログラムコードは、方法または技法において特定の論理演算またはアクションを実施するためにプロセッサによって実行可能な1つまたは複数の命令を含むことができる。プログラムコードおよび/または関連データは、RAM、ディスクドライブ、ソリッドステートドライブ、または別の記憶媒体を含む記憶デバイスなど、任意のタイプのコンピュータ可読媒体に記憶することができる。
【0186】
コンピュータ可読媒体は、非一時的なコンピュータ可読媒体、例えば、レジスタメモリやプロセッサキャッシュなどデータを短期間記憶する非一時的なコンピュータ可読媒体も含むことができる。非一時的なコンピュータ可読媒体は、プログラムコードおよび/またはデータを長期間記憶する非一時的なコンピュータ可読媒体をさらに含むことができる。したがって、非一時的なコンピュータ可読媒体は、例えばROM、光ディスクまたは磁気ディスク、ソリッドステートドライブ、またはコンパクトディスク読み出し専用メモリ(CD-ROM)などの二次または永続的長期記憶装置を含むことがある。非一時的なコンピュータ可読媒体は、他の揮発性または不揮発性記憶システムでもよい。非一時的なコンピュータ可読媒体は、例えばコンピュータ可読記憶媒体、または有形の記憶デバイスと考えることができる。
【0187】
さらに、1つまたは複数の情報送信を表すステップまたはブロックは、同じ物理デバイスでのソフトウェアおよび/またはハードウェアモジュール間の情報送信に対応することがある。しかし、他の情報送信は、異なる物理デバイスでのソフトウェアモジュール間および/またはハードウェアモジュール間で行われ得る。
【0188】
図面に示されている特定の配置は、限定的なものと見なされるべきではない。他の実施形態は、所与の図に示される各要素をより多数またはより少数含むこともできることを理解されたい。さらに、図示された要素のいくつかを組み合わせる、または省略することができる。さらに、例示的実施形態は、図面に示されていない要素を含むこともできる。
【0189】
様々な態様および実施形態が本明細書に開示されているが、他の態様および実施形態が当業者には明らかであろう。本明細書に開示される様々な態様および実施形態は、例示を目的とするものであり、限定は意図されておらず、真の範囲は添付の特許請求の範囲によって示される。
【符号の説明】
【0190】
100 コンピューティングデバイス
102 プロセッサ
104 メモリ
106 ネットワークインターフェース
108 入出力ユニット
110 システムバス
200 サーバクラスタ
202 サーバデバイス
204 データストレージ
206 ルータ
208 ローカルクラスタネットワーク
210 通信リンク
212 ネットワーク
300 管理対象ネットワーク
302 クライアントデバイス
304 サーバデバイス
306 ルータ
308 仮想マシン
310 ファイアウォール
312 プロキシサーバ
320 リモートネットワーク管理プラットフォーム
322 計算インスタンス
340 パブリッククラウドネットワーク
350 インターネット
【手続補正書】
【提出日】2023-07-07
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ディスカバリコマンドのリストを含む永続ストレージであって、前記ディスカバリコマンドがそれぞれネットワークアドレスのリストに関連付けられる、永続ストレージと、
1つまたは複数のプロセッサと、
ディスカバリ検証アプリケーションとを備えるシステムであって、前記ディスカバリ検証アプリケーションが、前記1つまたは複数のプロセッサによって実行されるとき、
前記永続ストレージから、前記ディスカバリコマンドのリストおよび前記ネットワークアドレスのリストを読み取り、
前記ディスカバリコマンドのリスト内の各ディスカバリコマンドに関して、前記システムの外部で展開される1つまたは複数のプロキシサーバを介して、それぞれ関連付けられた前記ネットワークアドレスのリスト内の各ネットワークアドレスに前記ディスカバリコマンドを送信し、
前記1つまたは複数のプロキシサーバを介して、送信された前記ディスカバリコマンドの各々にそれぞれ対応するディスカバリ結果を受信し、前記ディスカバリ結果が、前記ディスカバリコマンドの成功または失敗のいずれかを示し、
前記ディスカバリ結果を前記永続ストレージに書き込む、
ように構成される、システム。
【請求項2】
前記ディスカバリ検証アプリケーションが、前記システムによって実行されるようにスケジュールされたディスカバリ手順に関係なく実行される、請求項1に記載のシステム。
【請求項3】
前記ネットワークアドレスのリストが、前記ディスカバリコマンドの各々に関連付けられたネットワークアドレスの共通のリストとして指定される、請求項1に記載のシステム。
【請求項4】
前記ディスカバリコマンドの各々が、コマンドラインインターフェースコマンド、SNMP(simple network management protocol)コマンド、ウェブベースのインターフェースを介して送達可能なコマンド、またはWMI(Windows Management Instrumentation)コマンドのうちの1つである、請求項1に記載のシステム。
【請求項5】
前記ディスカバリコマンドおよび前記ネットワークアドレスが、前記永続ストレージ内の第1のデータベーステーブルに記憶され、前記ディスカバリ結果が、前記永続ストレージ内の第2のデータベーステーブルに記憶される、請求項1に記載のシステム。
【請求項6】
前記第1のデータベーステーブルの各エントリが、特定のディスカバリコマンドが実行されるオペレーティングシステムのクラス、前記特定のディスカバリコマンドを送達するために使用されるネットワークプロトコルを指定する前記特定のディスカバリコマンドのタイプ、前記特定のディスカバリコマンドが送信される前記プロキシサーバの1つ、または前記特定のディスカバリコマンドで使用するための認証資格情報の指示を含む、請求項5に記載のシステム。
【請求項7】
前記第2のデータベーステーブル内の前記ディスカバリ結果の各エントリが、実行された特定のディスカバリコマンドの仕様、前記特定のディスカバリコマンドが送信された前記ネットワークアドレス、または前記特定のディスカバリコマンドが送信されたプロキシサーバを含む、請求項5に記載のシステム。
【請求項8】
前記ディスカバリ検証アプリケーションが、前記ディスカバリコマンドを連続バッチで送信するように構成される、請求項5に記載のシステム。
【請求項9】
前記ディスカバリコマンドのリストが順序付けを有し、前記ディスカバリ検証アプリケーションが、前記順序付けに従って、関連のネットワークアドレスごとに前記ディスカバリコマンドを送信するように構成される、請求項5に記載のシステム。
【請求項10】
前記ディスカバリ結果の成功の指示が、特定のネットワークアドレスに関連付けられたコンピューティングデバイス上での特定のディスカバリコマンドの実行からの出力を含む、請求項1に記載のシステム。
【請求項11】
前記ディスカバリ結果における失敗の指示は、特定のディスカバリコマンドが送信された特定のネットワークアドレスが到達不能であること、前記特定のネットワークアドレスに関連付けられたコンピューティングデバイスによって前記特定のディスカバリコマンドがサポートされていないこと、前記コンピューティングデバイスにアクセスするために前記特定のディスカバリコマンドによって使用される資格情報の認証失敗、または前記コンピューティングデバイスが前記特定のディスカバリコマンドの実行を試行したときの前記資格情報の認可失敗、により前記特定のディスカバリコマンドが失敗したかを指定する、請求項1に記載のシステム。
【請求項12】
請求項1から11のいずれか1項に記載の操作を実行する、コンピュータ実施方法。
【請求項13】
プログラム命令が記憶されている非一時的なコンピュータ可読媒体を含む製造品であって、前記プログラム命令が、コンピューティングシステムによる実行時に、請求項1から11のいずれか1項に記載の操作を実行させる、製造品。
【外国語明細書】