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

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

▶ サービスナウ, インコーポレイテッドの特許一覧

特開2024-82272コンピュータプラットフォームの集中設定および変更追跡
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024082272
(43)【公開日】2024-06-19
(54)【発明の名称】コンピュータプラットフォームの集中設定および変更追跡
(51)【国際特許分類】
   G06F 8/60 20180101AFI20240612BHJP
【FI】
G06F8/60
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023206692
(22)【出願日】2023-12-07
(31)【優先権主張番号】18/076,736
(32)【優先日】2022-12-07
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.HDMI
2.PYTHON
3.MySQL
4.HPUX
(71)【出願人】
【識別番号】518249328
【氏名又は名称】サービスナウ, インコーポレイテッド
【氏名又は名称原語表記】ServiceNow, Inc.
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【弁理士】
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【弁理士】
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100141553
【弁理士】
【氏名又は名称】鈴木 信彦
(72)【発明者】
【氏名】ブライアン ジェームス ワプリントン
(72)【発明者】
【氏名】ヒュン キム
(72)【発明者】
【氏名】マイケル スティーブン ルドウィグ
(72)【発明者】
【氏名】ラヴィンドラ バンサル
(72)【発明者】
【氏名】ベニー ファン デ ソンペレ
(72)【発明者】
【氏名】スワプネシュ パテル
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA11
5B376AA35
5B376AA37
5B376AA39
(57)【要約】
【課題】設定データを集中させ、このデータの変更を追跡するための技術を提供する。
【解決手段】一実施形態は、ソフトウェアサービスが劣化基準を満たす旨の判定に応答して、ソフトウェアサービスと、ソフトウェアサービスにより用いられる設定データが当該設定データの現行スナップショットにおいて変更された旨を指定する変更リクエストと、を示すアラートを生成することと、変更リクエストに基づいて、設定データの現行スナップショットと先行スナップショットとの間の一組の設定変更を決定することと、現行スナップショットにおいて変更された1つまたは複数のパラメータと、現行スナップショットにおいて変更された1つまたは複数のパラメータにつながる設定データのツリーベースの配置における1つまたは複数のパスと、を示す一組の設定変更の表現を提供することと、を含んでいてもよい。
【選択図】図8
【特許請求の範囲】
【請求項1】
ソフトウェアサービスが劣化基準を満たす旨の判定に応答して、前記ソフトウェアサービスと、前記ソフトウェアサービスにより用いられる設定データが前記設定データの現行スナップショットにおいて変更された旨を指定する変更リクエストと、を示すアラートを生成することと、
前記変更リクエストに基づいて、前記設定データの前記現行スナップショットと先行スナップショットとの間の一組の設定変更を決定することと、
前記現行スナップショットにおいて変更された1つまたは複数のパラメータと、前記現行スナップショットにおいて変更された前記1つまたは複数のパラメータにつながる前記設定データのツリーベースの配置における1つまたは複数のパスと、を示す前記一組の設定変更の表現を提供することと、
を含む、方法。
【請求項2】
前記設定データの前記現行スナップショットと前記先行スナップショットとの間の前記一組の設定変更を決定することが、前記現行スナップショットおよび前記先行スナップショットの選択を受信することに応答したものである、請求項1に記載の方法。
【請求項3】
前記ソフトウェアサービスが、1つまたは複数のソフトウェアアプリケーションによりサポートされ、前記設定データの前記現行スナップショットにおいて変更された前記1つまたは複数のパラメータが、前記1つまたは複数のソフトウェアアプリケーションにより用いられる、請求項1に記載の方法。
【請求項4】
前記ソフトウェアサービスが前記劣化基準を満たす旨の判定が、前記ソフトウェアサービスに影響を及ぼす停止、前記ソフトウェアサービスの性能低下、または閾値を超えるプロセッサもしくはメモリの利用のうちの1つまたは複数を検出することを含む、請求項1に記載の方法。
【請求項5】
前記アラートが、アラートデータベースに格納され、複数のソフトウェアサービスのうちの1つまたは複数に影響を及ぼす検出された技術的問題と関連する複数のアラートのうちの1つである、請求項1に記載の方法。
【請求項6】
前記ソフトウェアサービスおよび前記変更リクエストを指定する前記アラートの表現をグラフィカルユーザインターフェースによってクライアント機器に提供することをさらに含む、請求項1に記載の方法。
【請求項7】
前記一組の設定変更を決定することが、
前記設定データの前記現行スナップショットおよび前記先行スナップショットを含む複数のスナップショットの調整可能タイムラインを前記クライアント機器に提供することと、
前記クライアント機器から、前記現行スナップショットおよび前記先行スナップショットの別の選択を受信することと、
前記先行スナップショットと前記現行スナップショットとの間で変更されたものを前記1つまたは複数のパラメータとして決定することと、
を含む、請求項6に記載の方法。
【請求項8】
前記設定データの前記現行スナップショットにおいて変更された前記1つまたは複数のパラメータがそれぞれ、各パラメータおよび前記各パラメータの値を一意に識別するキーを含むキー値ペアとして表される、請求項1に記載の方法。
【請求項9】
前記設定データの前記現行スナップショットにおいて変更された前記1つまたは複数のパラメータがそれぞれ、前記設定データへの新規追加、前記設定データからの削除、または前記設定データ内の編集としてマークされている、請求項1に記載の方法。
【請求項10】
前記一組の設定変更の前記表現が、前記設定データの前記現行スナップショットにおいて変更されていない付加的なパラメータも示す、請求項1に記載の方法。
【請求項11】
前記設定データの前記現行スナップショットが、プロダクション環境において展開され、前記先行スナップショットが、前記現行スナップショットの展開に先立って、前記プロダクション環境において最も新しく展開された前記設定データのスナップショットである、請求項1に記載の方法。
【請求項12】
コンピュータシステムの1つまたは複数のプロセッサにより実行された場合に、
ソフトウェアサービスが劣化基準を満たす旨の判定に応答して、前記ソフトウェアサービスと、前記ソフトウェアサービスにより用いられる設定データが前記設定データの現行スナップショットにおいて変更された旨を指定する変更リクエストと、を示すアラートを生成することと、
前記変更リクエストに基づいて、前記設定データの前記現行スナップショットと先行スナップショットとの間の一組の設定変更を決定することと、
前記現行スナップショットにおいて変更された1つまたは複数のパラメータと、前記現行スナップショットにおいて変更された前記1つまたは複数のパラメータにつながる前記設定データのツリーベースの配置における1つまたは複数のパスと、を示す前記一組の設定変更の表現を提供することと、
を含む動作を前記コンピュータシステムに実行させるプログラム命令を格納する非一時的コンピュータ可読媒体。
【請求項13】
前記設定データの前記現行スナップショットと前記先行スナップショットとの間の前記一組の設定変更を決定することが、前記現行スナップショットおよび前記先行スナップショットの選択を受信することに応答したものである、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項14】
前記ソフトウェアサービスが、1つまたは複数のソフトウェアアプリケーションによりサポートされ、前記設定データの前記現行スナップショットにおいて変更された前記1つまたは複数のパラメータが、前記1つまたは複数のソフトウェアアプリケーションにより用いられる、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項15】
前記ソフトウェアサービスが前記劣化基準を満たす旨の判定が、前記ソフトウェアサービスに影響を及ぼす停止、前記ソフトウェアサービスの性能低下、または閾値を超えるプロセッサもしくはメモリの利用のうちの1つまたは複数を検出することを含む、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項16】
前記アラートが、アラートデータベースに格納され、複数のソフトウェアサービスのうちの1つまたは複数に影響を及ぼす検出された技術的問題と関連する複数のアラートのうちの1つである、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項17】
前記動作が、前記ソフトウェアサービスおよび前記変更リクエストを指定する前記アラートの表現をグラフィカルユーザインターフェースによってクライアント機器に提供することをさらに含み、
前記一組の設定変更を決定することが、
前記設定データの前記現行スナップショットおよび前記先行スナップショットを含む複数のスナップショットの調整可能タイムラインを前記クライアント機器に提供することと、
前記クライアント機器から、前記現行スナップショットおよび前記先行スナップショットの別の選択を受信することと、
前記先行スナップショットと前記現行スナップショットとの間で変更されたものを前記1つまたは複数のパラメータとして決定することと、
を含む、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項18】
前記設定データの前記現行スナップショットにおいて変更された前記1つまたは複数のパラメータがそれぞれ、各パラメータおよび前記各パラメータの値を一意に識別するキーを含むキー値ペアとして表される、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項19】
前記設定データの前記現行スナップショットにおいて変更された前記1つまたは複数のパラメータがそれぞれ、前記設定データへの新規追加、前記設定データからの削除、または前記設定データ内の編集としてマークされている、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項20】
コンピュータシステムであって、
1つまたは複数のプロセッサと、
メモリと、
前記メモリに格納され、前記1つまたは複数のプロセッサによる実行の際に、
ソフトウェアサービスが劣化基準を満たす旨の判定に応答して、前記ソフトウェアサービスと、前記ソフトウェアサービスにより用いられる設定データが前記設定データの現行スナップショットにおいて変更された旨を指定する変更リクエストと、を示すアラートを生成することと、
前記変更リクエストに基づいて、前記設定データの前記現行スナップショットと先行スナップショットとの間の一組の設定変更を決定することと、
前記現行スナップショットにおいて変更された1つまたは複数のパラメータと、前記現行スナップショットにおいて変更された前記1つまたは複数のパラメータにつながる前記設定データのツリーベースの配置における1つまたは複数のパスと、を示す前記一組の設定変更の表現を提供することと、
を含む動作を前記コンピュータシステムに実行させるプログラム命令と、
を備える、コンピュータシステム。
【発明の詳細な説明】
【背景技術】
【0001】
現代のコンピュータプラットフォームは、大規模かつ複雑になり、数百または数千ものソフトウェアアプリケーションを同時にサポートするほか、相互に連携して動作するソフトウェアアプリケーション群によって、より高度なサービスも容易となっている。結果として、これらのコンピュータプラットフォームは、プラットフォーム、ソフトウェアアプリケーション、および/またはサービスの動作を制御する数万から数百万の範囲の個別設定可能なパラメータを有し得る。これらのパラメータを設定データと総称する。
【発明の概要】
【0002】
多くの現実的なシナリオにおいては、設定データが頻繁に変化し得る。たとえば、アジャイルソフトウェア開発またはラピッドソフトウェア開発の手順では、プラットフォーム全体にわたって、1日に何千回もこれらのパラメータを更新することがある。いくつかの特定のパラメータは、ソフトウェアアプリケーションおよび/またはそれぞれの使用の進化に伴って、1日または1週間に複数回変更となる場合がある。さらに、設定データは、コンピュータプラットフォーム内の複数の場所あるいはプラットフォームの外部に格納されている場合があり、特定のパラメータの位置特定あるいは識別が困難かつ時間を要するものとなっている。
【0003】
上記の結果、設定データの変更の追跡および管理が難しくなる。結果として、設定エラー(たとえば、1つまたは複数のパラメータが正しくない値となること)が現在、ソフトウェアのコーディングエラーよりも、システムダウンタイム、欠陥、および障害の原因になっているものと考えられる。
【0004】
本明細書の実施形態は、設定データを集中させ、このデータの変更を追跡するための技術を提供することにより、上記および考え得る他の制限を最新技術で克服する。設定データの各バージョンは、スナップショットと称する場合もある。設定データの修正は、各変更の影響を受けるファイル、データベースエントリ、および/または他の構造を指定する変更リクエスト(change request)が起点となり得る。これにより、スナップショットから変更のタイムラインが生成され、変更リクエストに基づいてスナップショットのパラメータ間の差分が決定され得る。このような差分は、あるスナップショットから別のスナップショットへの追加、削除、修正(編集)が明確に示されたツリー状の階層において表示され得る。多くの場所で何千ものパラメータを調べることなく、設定障害を迅速に識別および選別可能となるため都合が良い。
【0005】
これらの変更の表現に関して、既存の多くのシステムでは、データベーステーブルの行にパラメータ(または、パラメータの変更)を格納することによって表現を行う。上述の通り、コンピュータプラットフォームでは、1日に何千もの変更を示す場合がある。したがって、スナップショット間の変更の識別では、数千ものこのような行をテーブルに書き込んだ後、これらの行を読み出して変更をユーザに表示する場合がある。
【0006】
このようなプロセスでは、1行の書き込みまたは読み出しごとに1ミリ秒オーダの時間を要するため、レイテンシが大きくなる可能性がある。このため、大きな変更テーブルの操作および確認には、少なくとも数秒、場合によっては数分を要する場合もある。このようなユーザ側の遅延を回避するため、本明細書の実施形態では、仮想テーブルを採用することができる。この技術によれば、データベースインターフェースの使用によって、コンピュータプラットフォームのファイルシステムに格納された1つまたは複数のファイルの一部にアクセス可能となる。したがって、データベーステーブルの代わりに、ファイルへの変更の書き込みおよびファイルからの変更の読み出しが可能となって、10~100倍の高速化が可能である。さらに、ユーザに表示される出力のページネーションによって、ファイル中の変更のわずかな部分だけが一度に表示されるようにすることができる。組み合わせにより、この手法では、メインメモリの利用が抑えられるほか、この情報をユーザに提示する際のコンピュータプラットフォームの応答時間が劇的に改善される。
【0007】
したがって、第1の例示的な実施形態は、ソフトウェアサービスが劣化基準(degradation criterion)を満たす旨の判定に応答して、ソフトウェアサービスと、ソフトウェアサービスにより用いられる設定データが当該設定データの現行スナップショット(current snapshot)において変更された旨を指定する変更リクエストと、を示すアラートを生成することを含んでいてもよい。また、第1の例示的な実施形態は、変更リクエストに基づいて、設定データの現行スナップショットと先行スナップショットとの間の一組の設定変更(configuration change)を決定することを含んでいてもよい。また、第1の例示的な実施形態は、現行スナップショットにおいて変更された1つまたは複数のパラメータと、現行スナップショットにおいて変更された1つまたは複数のパラメータにつながる設定データのツリーベースの配置における1つまたは複数のパスと、を示す一組の設定変更の表現を提供することを含んでいてもよい。
【0008】
第2の例示的な実施形態は、ウェブサーバアプリケーションにおいて、ファイル、ファイル内のデータブロックのブロック数、およびブロックサイズを指定するクエリを受信することであり、ファイルが、設定データのスナップショット間の差分を表すエントリを含む、ことと、ブロックサイズに基づいて、ファイル内のデータブロックを識別することと、ウェブサーバアプリケーションにアクセス可能な非一時的メモリにブロックを格納することと、クエリに応答して、ウェブサーバアプリケーションにより、グラフィカルユーザインターフェースのリストコンポーネントにおける表示用にフォーマットされたブロック内の一組のエントリを送信することと、を含んでいてもよい。
【0009】
第3の例示的な実施形態は、コンピュータシステムによる実行によって、第1および/または第2の例示的な実施形態に記載の動作をコンピュータシステムに実行させるプログラム命令が格納された非一時的コンピュータ可読媒体を含んでいてもよい。
【0010】
第4の例示的な実施形態において、コンピュータシステムは、少なくとも1つのプロセッサのほか、メモリおよびプログラム命令を備えていてもよい。プログラム命令は、メモリに格納され、少なくとも1つのプロセッサによる実行の際に、第1および/または第2の例示的な実施形態に記載の動作をコンピュータシステムに実行させるようにしてもよい。
【0011】
第5の例示的な実施形態において、システムは、第1および/または第2の例示的な実施形態の動作それぞれを実行するためのさまざまな手段を備えていてもよい。
【0012】
当業者には、必要に応じて添付の図面を参照しつつ、以下の詳細な説明を読むことにより、上記および他の実施形態、態様、利点、および代替案が明らかとなるであろう。さらに、本概要ならびに本明細書に記載の他の説明および図面は、一例として実施形態を示す意図しかないため、多くの変形例が可能である。たとえば、構造要素およびプロセスステップについて、特許請求の範囲のような実施形態の範囲内に維持しつつ、再配置、結合、分配、除去、あるいは変更を加えることができる。
【図面の簡単な説明】
【0013】
図1】例示的な実施形態に係る、コンピュータ機器の模式図である。
図2】例示的な実施形態に係る、サーバ機器クラスタの模式図である。
図3】例示的な実施形態に係る、リモートネットワーク管理アーキテクチャを示した図である。
図4】例示的な実施形態に係る、リモートネットワーク管理アーキテクチャを含む通信環境を示した図である。
図5】例示的な実施形態に係る、リモートネットワーク管理アーキテクチャを含む別の通信環境を示した図である。
図6A】例示的な実施形態に係る、設定データの種類、設定データの格納方法、および設定データを格納可能な場所を示した図である。
図6B】例示的な実施形態に係る、ソフトウェアサービス用の簡素化された一組の設定データを示した図である。
図6C】例示的な実施形態に係る、設定データの集中格納を示した図である。
図7A】例示的な実施形態に係る、スナップショットのリストを表示するユーザインターフェースを示した図である。
図7B】例示的な実施形態に係る、アラートを表示するユーザインターフェースを示した図である。
図7C】例示的な実施形態に係る、変更リクエストに関するスナップショットのタイムラインを表示するユーザインターフェースを示した図である。
図7D】例示的な実施形態に係る、設定データの変更を表示するユーザインターフェースを示した図である。
図7E】例示的な実施形態に係る、設定データの他の変更を表示するユーザインターフェースを示した図である。
図7F】例示的な実施形態に係る、設定データの変更の代替ビューを表示するユーザインターフェースを示した図である。
図8】例示的な実施形態に係る、フローチャートである。
図9】例示的な実施形態に係る、部分的差分比較ファイルを示した図である。
図10】例示的な実施形態に係る、データベースまたは仮想テーブルからのデータをグラフィカルユーザインターフェースに入力するためのメッセージフロー図である。
図11】例示的な実施形態に係る、ファイルからブロックを読み出す仮想データベースドライバを示した図である。
図12】例示的な実施形態に係る、カスタムページネーション制御を有するウェブサーババックエンドを示した図である。
図13】例示的な実施形態に係る、フローチャートである。
【発明を実施するための形態】
【0014】
本明細書には、例示的な方法、機器、およびシステムを記載している。本明細書において、単語「例(example)」および「例示的(exemplary)」は、「一例、事例、または実例として機能する」ことを意味するものとして使用していることが了解されるものとする。「例」または「例示的」として本明細書に記載の任意の実施形態または特徴は、その旨の記載のない限り、他の実施形態または特徴よりも好適または有利であるとは必ずしも解釈されない。このため、本明細書に提示の主題の範囲から逸脱することなく、他の実施形態を利用可能であるとともに、他の変更を加えることができる。
【0015】
したがって、本明細書に記載の例示的な実施形態は、何ら限定を意味するものではない。本明細書の全体に記載するとともに図面に示すような本開示の態様は、多種多様な異なる構成での配置、置換、結合、分離、および設計が可能であることが容易に了解される。たとえば、「クライアント」および「サーバ」コンポーネントへの機能の分離は、多くの方法で実行可能である。
【0016】
さらに、文脈上の別段の示唆のない限り、図面それぞれに示す特徴は、相互に組み合わせて使用可能である。このため、図面は一般的に、1つまたは複数の全体的な実施形態の構成要素の態様として捉えるべきであり、図示の特徴のすべてが各実施形態に必要であるとは限らないことが了解される。
【0017】
また、本明細書または特許請求の範囲における要素、ブロック、またはステップの如何なる列挙も、明瞭化を目的としたものである。したがって、このような列挙は、これらの要素、ブロック、またはステップの特定の配置の順守または特定の順序での実行の要求または暗示を行うものと解釈すべきではない。
【0018】
I.導入
大企業は、相互に関連する多くの業務を抱える複雑なエンティティである。これらの中には、人事(HR)、サプライチェーン、情報技術(IT)、および財務等、企業の各所で見られるものもある。ただし、各企業は、必要不可欠な能力の提供および/または競争優位性の構築につながるそれ自体の一意の業務も有する。
【0019】
幅広く実施される業務をサポートするため、企業は通常、顧客関係管理(CRM)および人材管理(HCM)パッケージ等、既製のソフトウェアアプリケーションを使用する。ただし、企業自体の一意の要件を満たすには、カスタムのソフトウェアアプリケーションも必要となる場合がある。大企業では、これらのカスタムソフトウェアアプリケーションを何十または何百と有することが多い。これに対して、本明細書の実施形態が提供する利点は、大企業に限定されず、あらゆる規模の企業または他種の組織に適用可能と考えられる。
【0020】
このような多くのソフトウェアアプリケーションは、企業内の個々の部門により開発される。これらは、単純なスプレッドシートから、特注のソフトウェアツールおよびデータベースにまで及ぶ。ただし、他部門との連携のないカスタムソフトウェアアプリケーションの普及には多くの欠点がある。これは、企業による業務の運営および成長の能力、技術革新、ならびに規制要件への対応に悪影響を及ぼす。企業は、そのサブシステムおよびデータを統合する単一のシステムがないことから、業務の統合、合理化、および強化を困難と感じる場合がある。
【0021】
カスタムアプリケーションを効率的に生成するため、企業は、不要な開発の複雑さを排除するリモートホスト型のアプリケーションプラットフォームから恩恵を受けることになる。このようなプラットフォームの目標は、時間を要する繰り返しのアプリケーション開発タスクを減らして、ソフトウェアエンジニアおよび他の任務の個人が価値の高い一意の機能の開発に専念できるようにすることである。
【0022】
この目標を達成するため、aPaaS(Application Platform as a Service)の概念の導入によって、企業全体のワークフローを知的に自動化する。aPaaSシステムは、企業からリモートでホストされるが、セキュアな接続によって、企業内のデータ、アプリケーション、およびサービスにアクセス可能である。このようなaPaaS一ステムには、多くの有利な機能および特性がある。これらの利点および特性によって、IT、HR、CRM、顧客サービス、アプリケーション開発、およびセキュリティに関して、企業の業務およびワークフローを改善可能と考えられる。これに対して、本明細書の実施形態は、企業の用途または環境に限定されず、より広く適用可能である。
【0023】
aPaaSシステムは、モデル・ビュー・コントローラ(MVC)アプリケーションの開発および実行をサポートし得る。MVCアプリケーションは、それぞれの機能を3つの相互接続部(モデル、ビュー、およびコントローラ)に分割して、情報がユーザに提示される様態から情報の表現を分離することにより、効率的なコードの再利用および並行開発を可能にする。これらのアプリケーションは、ウェブベースで、作成、読み取り、更新、および削除(CRUD)の機能を提供し得る。これにより、共通のアプリケーションインフラ上で新たなアプリケーションを構築可能となる。場合によっては、単方向データフローを使用するもの等、MVCとは異なる構造のアプリケーションが採用され得る。
【0024】
aPaaSシステムは、グラフィカルユーザインターフェース(GUI)開発のための標準化された一組のウィジェット等、標準化されたアプリケーションコンポーネントをサポートし得る。このように、aPaaSシステムを用いて構築されたアプリケーションは、外観および雰囲気が共通する。他のソフトウェアコンポーネントおよびモジュールについても同様に、標準化されていてもよい。場合によっては、企業のカスタムロゴおよび/または配色によって、この外観および雰囲気をブランディングまたはスキニングすることも可能である。
【0025】
aPaaSシステムは、メタデータを使用してアプリケーションの動作を設定する機能をサポートし得る。これによって、特定のニーズを満たすように、アプリケーションの動作を素早く適応させることができる。このような手法によって、開発時間が短縮されるとともに柔軟性が増す。さらに、aPaaSシステムは、メタデータの作成および管理を容易化してメタデータのエラーを抑えるGUIツールをサポートし得る。
【0026】
aPaaSシステムは、アプリケーション間の明確に規定されたインターフェースをサポートし得るため、ソフトウェア開発者が不要なアプリケーション間依存関係を回避することができる。このため、aPaaSシステムは、永続的な状態情報等のデータが格納されるサービス層を実装することができる。
【0027】
aPaaSシステムが豊富な一組の統合機能をサポートし得るため、システム上のアプリケーションは、レガシーアプリケーションおよびサードパーティアプリケーションと相互作用可能である。たとえば、aPaaSシステムは、レガシーHR、IT、および会計システムと統合されるカスタム従業員研修システムをサポートし得る。
【0028】
aPaaSシステムは、企業レベルのセキュリティをサポートし得る。さらに、aPaaSシステムは、リモートでホストされ得ることから、企業のシステムまたは企業の外側でホストされたサードパーティネットワークおよびサービスと相互作用する場合に、セキュリティ手順も利用すべきである。たとえば、aPaaSシステムは、企業等の当事者間でデータを共有することにより、共通のセキュリティ脅威を検出および識別するように構成されていてもよい。
【0029】
また、aPaaSシステムの他の特徴、昨日、および利点も存在し得る。この説明は、例示を目的としており、何ら限定の意図はない。
【0030】
aPaaS開発プロセスの一例として、ソフトウェア開発者は、aPaaSシステムを使用して新たなアプリケーションを作成するように命じられる場合がある。開発者は最初に、アプリケーションが使用するデータの種類およびそれぞれの間の関係を指定するデータモデルを規定し得る。開発者はその後、aPaaSシステムのGUIを介して、データモデルを入力する(たとえば、アップロードする)。aPaaSシステムは、対応するデータベーステーブル、フィールド、および関係をすべて自動的に作成するが、これらには、オブジェクト指向サービス層を介してアクセス可能となる。
【0031】
また、aPaaSシステムは、クライアント側のインターフェースおよびサーバ側のCRUDロジックを伴う完全に機能的なアプリケーションを構築可能である。この生成アプリケーションは、ユーザの別途開発の基礎として機能し得る。開発者は、アプリケーションの基本機能に多くの時間を費やす必要がないため都合が良い。さらに、アプリケーションは、ウェブベースであってもよいため、任意のインターネット対応クライアント機器からアクセス可能である。この代替または追加として、たとえばインターネットサービスが利用可能ではない場合に、アプリケーションのローカルコピーへのアクセスが可能となっていてもよい。
【0032】
また、aPaaSシステムは、アプリケーションに追加できる豊富な一組の所定の機能をサポートし得る。これらの機能には、検索、電子メール、テンプレート、ワークフロー設計、レポート、分析、ソーシャルメディア、スクリプト記述、モバイル向けの出力、およびカスタマイズGUIのサポートを含む。
【0033】
このようなaPaaSシステムは、さまざまな方法でGUIを表し得る。たとえば、aPaaSシステムのサーバ機器は、ハイパーテキストマークアップ言語(HTML)およびJAVASCRIPT(登録商標)の組み合わせを使用してGUIの表現を生成するようにしてもよい。JAVASCRIPT(登録商標)は、クライアント側の実行可能コード、サーバ側の実行可能コード、または両者を含み得る。サーバ機器がこの表現をクライアント機器に送信あるいは提供することにより、ローカルに規定された外観および雰囲気に従って、クライアント機器が画面に表示するようにしてもよい。あるいは、GUIの表現は、クライアント機器がグラフィック出力を直接生成するのに使用可能な中間形態(たとえば、JAVA(登録商標)バイトコード)等、他の形態であってもよい。それ以外の可能性もある。
【0034】
さらに、ボタン、メニュー、タブ、スライダ、チェックボックス、トグル等のGUI要素とのユーザ相互作用をそれぞれの「選択」、「起動」、または「作動」と称する場合もある。これらの用語は、GUI要素との相互作用がキーボードによるか、ポインティングデバイスによるか、タッチスクリーンによるか、または別の機構によるかに関わらず使用され得る。
【0035】
aPaaSアーキテクチャは、企業のネットワークと統合され、このようなネットワークの管理に用いられる場合に特に効果を発揮する。以下の実施形態では、例示的なaPaaSシステムのアーキテクチャおよび機能的態様のほか、それぞれの特徴および利点を説明する。
【0036】
II.例示的なコンピュータ機器およびクラウドベースのコンピュータ環境
図1は、コンピュータ機器100を例示する簡易ブロック図であって、コンピュータ機器に含まれ、本明細書の実施形態に従って動作するように構成された構成要素の一部を示している。コンピュータ機器100としては、クライアント機器(たとえば、ユーザが能動的に操作する機器)も可能であるし、サーバ機器(たとえば、演算サービスをクライアント機器に提供する機器)も可能であるし、その他何らかの種類の演算プラットフォームも可能である。サーバ機器の中には、特定の操作を実行するために時折クライアント機器として動作するものがあり、クライアント機器の中には、サーバ機能を組み込んだものがある。
【0037】
本例において、コンピュータ機器100は、プロセッサ102、メモリ104、ネットワークインターフェース106、および入力/出力ユニット108を具備しており、これらがすべて、システムバス110または類似の機構により結合されていてもよい。いくつかの実施形態において、コンピュータ機器100は、他の構成要素および/または周辺機器(たとえば、取り外し可能なストレージ、プリンタ等)を具備していてもよい。
【0038】
プロセッサ102は、中央演算処理装置(CPU)、コプロセッサ(たとえば、数学、グラフィックス、または暗号化コプロセッサ)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ならびに/またはプロセッサ動作を実行する集積回路もしくはコントローラの形態等、任意の種類のコンピュータ処理要素のうちの1つまたは複数であってもよい。場合により、プロセッサ102は、1つまたは複数のシングルコアプロセッサであってもよい。他の場合に、プロセッサ102は、複数の独立した処理ユニットを伴う1つまたは複数のマルチコアプロセッサであってもよい。また、プロセッサ102には、実行対象の命令および関連データを一時的に格納するためのレジスタメモリのほか、最近使用された命令およびデータを一時的に格納するためのキャッシュメモリを含み得る。
【0039】
メモリ104は、如何なる形態のコンピュータ使用可能メモリであってもよく、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、ならびに不揮発性メモリ(たとえば、フラッシュメモリ、ハードディスクドライブ、半導体ドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、および/もしくはテープストレージ)が挙げられるが、これらに限定されない。このため、メモリ104は、メインメモリユニットおよび長期ストレージの両者を表す。他種のメモリとしては、生物学的メモリが挙げられる。
【0040】
メモリ104は、プログラム命令および/またはプログラム命令が動作し得るデータを格納していてもよい。一例として、メモリ104は、プロセッサ102による実行によって、本明細書または添付の図面に開示の方法、プロセス、または動作のいずれかを実行可能となるように、これらのプログラム命令非一時的コンピュータ可読媒体に格納するようにしてもよい。
【0041】
図1に示すように、メモリ104は、ファームウェア104A、カーネル104B、および/またはアプリケーション104Cを含んでいてもよい。ファームウェア104Aは、コンピュータ機器100の一部または全部の起動あるいは開始に用いられるプログラムコードであってもよい。カーネル104Bは、メモリ管理、プロセッサのスケジューリングおよび管理、入力/出力、ならびに通信のためのモジュールを含むオペレーティングシステムであってもよい。また、カーネル104Bは、オペレーティングシステムによるコンピュータ機器100のハードウェアモジュール(たとえば、メモリユニット、ネットワークインターフェース、ポート、およびバス)との通信を可能にするデバイスドライバを含んでいてもよい。アプリケーション104Cは、ウェブブラウザまたは電子メールクライアント等の1つまたは複数のユーザ空間ソフトウェアプログラムのほか、これらのプログラムで使用される任意のソフトウェアライブラリであってもよい。また、メモリ104は、上記および他のプログラムおよびアプリケーションで使用されるデータを格納するようにしてもよい。
【0042】
ネットワークインターフェース106は、イーサネット(たとえば、ファーストイーサネット、ギガビットイーサネット)等の1つまたは複数の有線インターフェースの形態であってもよい。また、ネットワークインターフェース106は、同軸ケーブルもしくは電力線等の1つもしくは複数の非イーサネット媒体または同期光ネットワーキング(SONET)もしくはデジタル加入者線(DSL)技術等の広域媒体を介した通信をサポートし得る。また、ネットワークインターフェース106は、IEEE 802.11(Wifi)、BLUETOOTH(登録商標)、全地球測位システム(GPS)、または広域無線インターフェース等の1つまたは複数の無線インターフェースの形態であってもよい。ただし、他の形態の物理層インターフェースならびに他種の標準もしくは専用通信プロトコルがネットワークインターフェース106を介して用いられるようになっていてもよい。さらに、ネットワークインターフェース106には、複数の物理インターフェースを含み得る。たとえば、コンピュータ機器100のいくつかの実施形態には、イーサネット、BLUETOOTH(登録商標)、およびWifiインターフェースを含み得る。
【0043】
入力/出力ユニット108は、ユーザおよび周辺機器のコンピュータ機器100との相互作用を容易化し得る。入力/出力ユニット108には、1つまたは複数の種類の入力装置(キーボード、マウス、タッチスクリーン等)を含み得る。同様に、入力/出力ユニット108には、1つまたは複数の種類の出力装置(画面、モニタ、プリンタ、ならびに/または1つもしくは複数の発光ダイオード(LED)等)を含み得る。この追加または代替として、コンピュータ機器100は、たとえばユニバーサルシリアルバス(USB)または高精細マルチメディアインターフェース(HDMI)ポートインターフェースを使用することにより他の機器と通信することができる。
【0044】
いくつかの実施形態においては、コンピュータ機器100等の1つまたは複数のコンピュータ機器の展開によって、aPaaSアーキテクチャをサポートしていてもよい。これらのコンピュータ機器の厳密な物理的位置、接続性、および設定は、クライアント機器に既知および/または重要ではない場合もある。したがって、コンピュータ機器は、さまざまなリモートデータセンタの場所で収容し得る「クラウドベース」機器と称する場合もある。
【0045】
図2は、例示的な実施形態に係る、クラウドベースのサーバクラスタ200を示している。図2においては、コンピュータ機器(たとえば、コンピュータ機器100)の動作がサーバ機器202、データストレージ204、およびルータ206間に分散していてもよく、これらがすべて、ローカルクラスタネットワーク208により接続されていてもよい。サーバクラスタ200におけるサーバ機器202、データストレージ204、およびルータ206の数は、サーバクラスタ200に割り当てられた演算タスクおよび/またはアプリケーションによって決まり得る。
【0046】
たとえば、サーバ機器202は、コンピュータ機器100のさまざまな演算タスクを実行するように構成可能である。このため、1つまたは複数のサーバ機器202に演算タスクを分配可能である。これらの演算タスクを並列実行可能な限りにおいて、このようなタスクの分配により、これらのタスクを完了して結果を返すまでの合計時間が短縮され得る。簡素化のため、サーバクラスタ200および個々のサーバ機器202の両者を「サーバ機器」と称する場合もある。この命名は、1つまたは複数の異なるサーバ機器、データ記憶装置、およびクラスタルータがサーバ機器の動作に関与し得ることの暗示として了解されるものとする。
【0047】
データストレージ204は、複数群のハードディスクドライブおよび/または半導体ドライブに対する読み書きアクセスを管理するように構成されたドライブアレイコントローラを含むデータストレージアレイであってもよい。また、ドライブアレイコントローラは、1つまたは複数のサーバ機器202がデータストレージ204のユニットにアクセスできなくなるドライブ故障または他種の故障に対する保護のため、単独またはサーバ機器202と併せて、データストレージ204に格納されたデータのバックアップまたは冗長コピーを管理するように構成されていてもよい。ドライブ以外の他種のメモリが用いられるようになっていてもよい。
【0048】
ルータ206は、内部および外部通信をサーバクラスタ200に提供するように構成されたネットワーク設備を含み得る。たとえば、ルータ206には、(i)ローカルクラスタネットワーク208を介したサーバ機器202とデータストレージ204との間のネットワーク通信、および/または、(ii)ネットワーク212への通信リンク210を介したサーバクラスタ200と他の機器との間のネットワーク通信を提供するように構成された1つまたは複数のパケットスイッチングおよび/またはルーティング機器(スイッチおよび/またはゲートウェイを含む)を含み得る。
【0049】
また、ルータ206の構成は、サーバ機器202およびデータストレージ204のデータ通信要件、ローカルクラスタネットワーク208のレイテンシおよびスループット、通信リンク210のレイテンシ、スループット、およびコスト、ならびに/またはシステムアーキテクチャのコスト、速度、耐障害性、回復力、効率、および/もしくは他の設計目標に寄与し得る他の要因に少なくとも部分的に基づき得る。
【0050】
考え得る一例として、データストレージ204には、構造化照会言語(SQL)データベース等の任意の形態のデータベースを含み得る。このようなデータベースにおいては、さまざまな種類のデータ構造が情報を格納可能であり、テーブル、アレイ、リスト、ツリー、およびタプルが挙げられるが、これらに限定されない。さらに、データストレージ204の任意のデータベースがモノリシックであってもよいし、複数の物理的機器に分散していてもよい。
【0051】
サーバ機器202は、データストレージ204へのデータの送信および/またはデータストレージ204からのデータの受信を行うように構成されていてもよい。この送信および読み出しはそれぞれ、SQLクエリもしくは他種のデータベースクエリの形態ならびにこのようなクエリの出力の形態であってもよい。同様に、テキスト、イメージ、ビデオ、および/またはオーディオが追加で含まれていてもよい。さらに、サーバ機器202は、受信データをウェブページまたはウェブアプリケーションの表現として編成するようにしてもよい。このような表現は、HTML、拡張マークアップ言語(XML)等のマークアップ言語、または他の何らかの標準化フォーマットもしくは専用フォーマットの形態であってもよい。さらに、サーバ機器202は、さまざまな種類のコンピュータ化スクリプト言語を実行可能であってもよく、Perl、Python、PHP Hypertext Preprocessor(PHP)、Active Server Pages(ASP)、JAVASCRIPT(登録商標)等が挙げられるが、これらに限定されない。これらの言語で書かれたコンピュータプログラムコードは、クライアント機器へのウェブページの提供のほか、クライアント機器のウェブページとの相互作用を容易化し得る。この代替または追加として、ウェブページの生成の容易化および/またはウェブアプリケーション機能の提供のため、JAVA(登録商標)が用いられるようになっていてもよい。
【0052】
III.例示的なリモートネットワーク管理アーキテクチャ
図3は、例示的な実施形態に係る、リモートネットワーク管理アーキテクチャを示している。このアーキテクチャには、マネージドネットワーク300、リモートネットワーク管理プラットフォーム320、およびパブリッククラウドネットワーク340という3つの主要な構成要素を含み、すべてがインターネット350により接続されている。
【0053】
A.マネージドネットワーク
マネージドネットワーク300は、たとえば演算および通信タスクのほか、データのストレージのためのエンティティが使用する企業ネットワークであってもよい。このため、マネージドネットワーク300は、クライアント機器302、サーバ機器304、ルータ306、仮想マシン308、ファイアウォール310、および/またはプロキシサーバ312を具備していてもよい。クライアント機器302は、コンピュータ機器100により具現化されていてもよく、サーバ機器304は、コンピュータ機器100またはサーバクラスタ200により具現化されていてもよく、ルータ306は、如何なる種類のルータ、スイッチ、またはゲートウェイであってもよい。
【0054】
仮想マシン308は、コンピュータ機器100およびサーバクラスタ200のうちの1つまたは複数により具現化されていてもよい。一般的に、仮想マシンは、コンピュータシステムのエミュレーションであり、物理的なコンピュータの機能(たとえば、プロセッサ、メモリ、および通信リソース)を模倣する。サーバクラスタ200等の1つの物理的なコンピュータシステムが最大で数千もの個々の仮想マシンをサポート可能である。いくつかの実施形態において、仮想マシン308は、個々の仮想マシンに対する物理的な演算リソースの割り当てのほか、性能およびエラー報告を容易化する集中サーバ機器またはアプリケーションにより管理されるようになっていてもよい。企業は、仮想マシンを採用することにより、必要に応じて演算リソースを効率的に割り当てることが多い。仮想化コンピュータシステムのプロバイダには、VMWARE(登録商標)およびMICROSOFT(登録商標)を含む。
【0055】
ファイアウォール310は、マネージドネットワーク300を起点とする正規の通信を許可しつつ、内部の機器、アプリケーション、およびサービスへの不正なアクセス試行からマネージドネットワーク300を保護する1つまたは複数の専用ルータまたはサーバ機器であってもよい。また、ファイアウォール310は、侵入検出、ウェブフィルタリング、ウイルススキャン、アプリケーション層ゲートウェイ、ならびに他のアプリケーションもしくはサービスを提供し得る。図3には示していないいくつかの実施形態において、マネージドネットワーク300は、リモートネットワーク管理プラットフォーム320(以下参照)と通信するための1つまたは複数の仮想プライベートネットワーク(VPN)ゲートウェイを具備していてもよい。
【0056】
また、マネージドネットワーク300は、1つまたは複数プロキシサーバ312を具備していてもよい。プロキシサーバ312の一実施形態は、マネージドネットワーク300、リモートネットワーク管理プラットフォーム320、およびパブリッククラウドネットワーク340間のデータの通信および移動を容易化するサーバアプリケーションであってもよい。特に、プロキシサーバ312は、リモートネットワーク管理プラットフォーム320の1つまたは複数の演算インスタンスとのセキュアな通信セッションを構築および維持可能であってもよい。このようなセッションにより、リモートネットワーク管理プラットフォーム320は、マネージドネットワーク300およびその構成要素のアーキテクチャおよび設定の態様を検出および管理可能となり得る。
【0057】
場合によっては、プロキシサーバ312の補助により、リモートネットワーク管理プラットフォーム320は、マネージドネットワーク300が使用するパブリッククラウドネットワーク340の態様を検出および管理することも可能となり得る。図3には示していないものの、パブリッククラウドネットワーク340のいずれに1つまたは複数のプロキシサーバ312を配置することによって、この検出および管理を容易化するようにしてもよい。
【0058】
ファイアウォール310等のファイアウォールは通常、上記のようなセッションが最終的にファイアウォールの背後(すなわち、マネージドネットワーク300上の機器)を起点とするわけでもなく、当該ファイアウォールがセッションをサポートするように明示的に構成されているわけでもない限り、インターネット350を経由して着信するすべての通信セッションを拒否する。プロキシサーバ312をファイアウォール310の背後に配置することにより(たとえば、マネージドネットワーク300内に配置してファイアウォール310で保護することにより)、ファイアウォール310を通じて、プロキシサーバ312がこれらの通信セッションを開始可能となり得る。これにより、ファイアウォール310は、リモートネットワーク管理プラットフォーム320からの着信セッションをサポートするように特別な構成とする必要がなくなる可能性もあるため、マネージドネットワーク300に対する潜在的なセキュリティリスクを回避することができる。
【0059】
場合により、マネージドネットワーク300は、少数の機器および少数のネットワークから成っていてもよい。他の展開において、マネージドネットワーク300は、複数の物理的な場所におよび、数百のネットワークおよび数十万の機器を含んでいてもよい。このため、図3に示すアーキテクチャは、桁違いの規模の拡大または縮小が可能である。
【0060】
さらに、マネージドネットワーク300のサイズ、アーキテクチャ、および接続性に応じて、内部に展開するプロキシサーバ312の数を変えることができる。たとえば、プロキシサーバ312はそれぞれ、マネージドネットワーク300の一部に関してリモートネットワーク管理プラットフォーム320との通信を担うようにしてもよい。この代替または追加として、このようなマネージドネットワーク300の部分に対する複数組の2つ以上のプロキシサーバの割り当てによって、負荷分散、冗長性、および/または可用性の向上を図るようにしてもよい。
【0061】
B.リモートネットワーク管理プラットフォーム
リモートネットワーク管理プラットフォーム320は、ユーザ、特に、マネージドネットワーク300のオペレータにaPaaSサービスを提供するホストされた環境である。これらのサービスは、たとえば前述のウェブベースの技術を使用するウェブベースのポータルの形態であってもよい。このため、ユーザは、たとえばクライアント機器302または可能性としてマネージドネットワーク300の外側のクライアント機器から、リモートネットワーク管理プラットフォーム320へのセキュアなアクセスが可能である。ウェブベースのポータルにより、ユーザは、アプリケーションの設計、テスト、および展開、レポートの生成、分析の確認、ならびに他のタスクの実行が可能となる。また、リモートネットワーク管理プラットフォーム320は、マルチアプリケーションプラットフォームと称する場合もある。
【0062】
図3に示すように、リモートネットワーク管理プラットフォーム320は、4つの演算インスタンス322、324、326、および328を含む。これらの演算インスタンスはそれぞれ、aPaaSソフトウェアの専用コピーを運用する1つもしくは複数のノードならびに/または1つもしくは複数のデータベースノードを表し得る。物理的なサーバ機器および/または仮想マシン上では、サーバおよびデータベースの柔軟な配置が可能であり、企業のニーズに基づいて変更するようにしてもよい。組み合わせにより、これらのノードは、特定の企業が利用可能な一組のウェブポータル、サービス、およびアプリケーション(たとえば、完全に機能するaPaaSシステム)を提供することができる。場合によっては、単一の企業が複数の演算インスタンスを使用するようにしてもよい。
【0063】
たとえば、マネージドネットワーク300は、リモートネットワーク管理プラットフォーム320の企業顧客であってもよく、また、演算インスタンス322、324、および326を使用するようにしてもよい。1つの顧客に複数の演算インスタンスを提供する理由として、顧客は、そのアプリケーションおよびサービスの独立した開発、テスト、および展開を望む場合がある。このため、演算インスタンス322がマネージドネットワーク300と関連するアプリケーション開発専用であってもよく、演算インスタンス324がこれらのアプリケーションのテスト専用であってもよく、演算インスタンス326がテスト済みアプリケーションおよびサービスのライブ運用専用であってもよい。また、演算インスタンスは、ホストされたインスタンス、リモートインスタンス、顧客インスタンスと称する場合もあるし、他の何らかの呼称となる場合もある。演算インスタンスに展開された如何なるアプリケーションも、演算インスタンス内のデータベースへのアクセスが内部の特定の要素(たとえば、1つもしくは複数の特定のデータベーステーブルまたは1つもしくは複数のデータベーステーブル内の特定の行)に制限され得る点において、スコープアプリケーション(scoped Application)と考えられる。
【0064】
簡素化のため、本明細書の開示では、アプリケーションノード、データベースノード、これらの上で実行されるaPaaSソフトウェア、および基礎となるハードウェアの構成を「演算インスタンス」と称する。なお、ユーザは口語的に、上記により提供されるグラフィカルユーザインターフェースを「インスタンス」と称する場合がある。ただし、本明細書における別段の定義のない限り、「演算インスタンス」は、リモートネットワーク管理プラットフォーム320内に配設されたコンピュータシステムである。
【0065】
リモートネットワーク管理プラットフォーム320のマルチインスタンスアーキテクチャは、従来のマルチテナントアーキテクチャとは対照的に、複数の利点を奏する。マルチテナントアーキテクチャにおいては、異なる顧客(たとえば、企業)からのデータが単一のデータベースにおいて混合される。これらの顧客のデータは相互に分離されているが、この分離は、単一のデータベースを運用するソフトウェアによって強制されている。結果として、このシステムにおけるセキュリティ侵害が顧客のすべてのデータに影響を及ぼし、特に政府、医療、および/または金融の規制を受けるエンティティにとっては、付加的なリスクとなる。さらに、1つの顧客に影響を及ぼす任意のデータベース運用は、当該データベースを共有するすべての顧客に影響を及ぼす可能性がある。このため、ハードウェアまたはソフトウェアのエラーに起因する停止の場合、この停止は、このようなすべての顧客に影響を及ぼす。同様に、データベースは、1つの顧客のニーズを満たすようにアップグレードされる場合、アップグレードプロセスにおいて、すべての顧客が利用不可能となる。このような保守時間枠は、共有データベースのサイズに起因して長くなることが多い。
【0066】
これに対して、マルチインスタンスアーキテクチャは、専用の演算インスタンスにおいて、各顧客にそれ自体のデータベースを提供する。これにより、顧客データの混合が防止され、各インスタンスの独立管理が可能となる。たとえば、ある顧客のインスタンスがエラーまたはアップグレードによって停止となった場合でも、他の演算インスタンスは影響を受けない。データベースに1つの顧客のデータしか含まないため、保守のダウンタイムは限られる。さらに、マルチインスタンスアーキテクチャのより簡素な設計によって、各顧客データベースおよびインスタンスの冗長コピーが地理的に多様に展開され得る。これにより、高い可用性が促進され、障害の検出または保守の実行時に、顧客のインスタンスのライブバージョンを移動可能となる。
【0067】
いくつかの実施形態において、リモートネットワーク管理プラットフォーム320は、このプラットフォームを動作させるエンティティにより制御される1つまたは複数の中央インスタンスを含んでいてもよい。演算インスタンスと同様に、中央インスタンスは、いくつかの物理的サーバ機器または仮想マシン上に配設されたいくつかのアプリケーションおよびデータベースノードを含み得る。このような中央インスタンスは、演算インスタンスのほか、演算インスタンスの少なくとも一部で共有され得るデータの特定の構成に対するレポジトリとして機能し得る。たとえば、演算インスタンス上で発生し得る一般的なセキュリティ脅威の定義、演算インスタンス上で一般的に検出されるソフトウェアパッケージ、および/または演算インスタンスに展開可能なアプリケーション用のアプリケーションストアが中央インスタンスに存在していてもよい。演算インスタンスは、このデータを得るために明確に規定されたインターフェースによって、中央インスタンスと通信するようにしてもよい。
【0068】
複数の演算インスタンスを効率的にサポートするため、リモートネットワーク管理プラットフォーム320は、複数のこれらインスタンスを単一のハードウェアプラットフォーム上で実行するようにしてもよい。たとえば、aPaaSシステムは、サーバクラスタ200等のサーバクラスタ上で実行されている場合、さまざまな量の演算、ストレージ、および通信リソースをインスタンスに割り当てる仮想マシンを動作させるようにしてもよい。ただし、サーバクラスタ200の完全な仮想化は必要とされず、他のメカニズムによって、インスタンスを分離するようにしてもよい。いくつかの例において、各インスタンスは、サーバクラスタ200上に専用アカウントならびに1つもしくは複数の専用データベースを有していてもよい。あるいは、演算インスタンス322等の演算インスタンスが複数の物理的機器に及んでいてもよい。
【0069】
場合によっては、リモートネットワーク管理プラットフォーム320の単一のサーバクラスタが複数の独立した企業をサポートし得る。さらに、後述の通り、リモートネットワーク管理プラットフォーム320は、負荷分散、冗長性、および/または高い可用性を促進するため、地理的に多様なデータセンタに展開された複数のサーバクラスタを具備していてもよい。
【0070】
C.パブリッククラウドネットワーク
パブリッククラウドネットワーク340は、外部委託演算、データストレージ、通信、およびサービスホスティング業務に使用可能なリモートサーバ機器(たとえば、サーバクラスタ200等の複数のサーバクラスタ)であってもよい。これらのサーバは、仮想化されていてもよい(すなわち、仮想マシンであってもよい)。パブリッククラウドネットワーク340の例としては、AMAZON WEB SERVICES(登録商標)およびMICROSOFT(登録商標) AZURE(登録商標)が挙げられる。リモートネットワーク管理プラットフォーム320と同様に、負荷分散、冗長性、および/または高い可用性を目的として、パブリッククラウドネットワーク340をサポートする複数のサーバクラスタが地理的に多様な場所に展開されていてもよい。
【0071】
マネージドネットワーク300は、1つまたは複数のパブリッククラウドネットワーク340を使用して、アプリケーションおよびサービスをそのクライアントおよび顧客に展開するようにしてもよい。たとえば、マネージドネットワーク300がオンライン楽曲ストリーミングサービスを提供している場合、パブリッククラウドネットワーク340は、楽曲ファイルを格納するとともに、ウェブインターフェースおよびストリーミングの機能を提供するようにしてもよい。このように、マネージドネットワーク300の企業は、これらの業務に対して、それ自体のサーバを構築および保守する必要がない。
【0072】
リモートネットワーク管理プラットフォーム320は、パブリッククラウドネットワーク340との統合によって、内部の仮想マシンおよびマネージドサービスをマネージドネットワーク300に公開するモジュールを具備していてもよい。これらのモジュールによれば、ユーザは、仮想リソースの要求、割り当てられたリソースの検出、およびパブリッククラウドネットワーク340への柔軟な報告が可能となり得る。この機能を確立するため、マネージドネットワーク300のユーザは、最初にパブリッククラウドネットワーク340でアカウントを開設し、一組の関連するリソースを要求する可能性もある。その後、ユーザは、アカウント情報をリモートネットワーク管理プラットフォーム320の適当なモジュールに入力するようにしてもよい。その後、これらのモジュールが自動的に、アカウントの管理可能なリソースを検出するとともに、使用、性能、および課金と関連するレポートを提供するようにしてもよい。
【0073】
D.通信サポートおよび他のオペレーション
インターネット350は、グローバルなインターネットの一部を表し得る。ただし、インターネット350は代替として、プライベートワイドエリアまたはローカルエリアパケット交換ネットワーク等、異なる種類のネットワークを表し得る。
【0074】
図4は、マネージドネットワーク300と演算インスタンス322との間の通信環境をさらに示しており、付加的な特徴および代替実施形態を紹介するものである。図4においては、演算インスタンス322の全部または一部がデータセンタ400Aおよび400Bの両者で複製されている。これらのデータセンタは、地理的に相互に離れていてもよく、おそらくは異なる都市または異なる国にある。各データセンタは、マネージドネットワーク300のほか、リモートユーザとの通信を容易化するサポート設備を具備する。
【0075】
データセンタ400Aにおいては、外部機器に対するネットワークトラフィックがVPNゲートウェイ402Aまたはファイアウォール404Aを通じて流れる。VPNゲートウェイ402Aは、インターネットプロトコルセキュリティ(IPSEC)またはトランスポート層セキュリティ(TLS)等のセキュリティプロトコルによって、マネージドネットワーク300のVPNゲートウェイ412とピアリングされていてもよい。ファイアウォール404Aは、ユーザ414およびリモートユーザ416等の正規のユーザからのアクセスを許可するとともに、不正なユーザのアクセスを拒否するように構成されていてもよい。ファイアウォール404Aによって、これらのユーザは、演算インスタンス322および場合により他の演算インスタンスにアクセスすることができる。負荷分散器406Aは、演算インスタンス322をホストする1つまたは複数の物理または仮想サーバ機器間でのトラフィックの分配に用いられるようになっていてもよい。負荷分散器406Aは、クライアント機器からデータセンタ400Aの内部構成(たとえば、演算インスタンス322)を隠すことにより、ユーザアクセスを簡素化することができる。たとえば、複数のデータベースへのアクセスを共有する複数の物理または仮想コンピュータ機器を演算インスタンス322が含む場合、負荷分散器406Aは、あるコンピュータ機器またはデータベースがその他よりも著しく忙しい、ということがないように、これらのコンピュータ機器およびデータベース間でネットワークトラフィックおよび処理タスクを分配するようにしてもよい。いくつかの実施形態において、演算インスタンス322は、VPNゲートウェイ402A、ファイアウォール404A、および負荷分散器406Aを含んでいてもよい。
【0076】
データセンタ400Bは、データセンタ400Aの構成要素に関するそれ自体のバージョンを具備していてもよい。このため、VPNゲートウェイ402B、ファイアウォール404B、および負荷分散器406Bがそれぞれ、VPNゲートウェイ402A、ファイアウォール404A、および負荷分散器406Aと同一または同様の動作を実行するようにしてもよい。さらに、リアルタイムまたは準リアルタイムのデータベース複製および/または他の動作によって、演算インスタンス322がデータセンタ400Aおよび400Bにおいて同時に存在していてもよい。
【0077】
図4に示すようなデータセンタ400Aおよび400Bは、冗長性および高い可用性を促進し得る。図4の構成においては、データセンタ400Aがアクティブで、データセンタ400Bがパッシブである。このため、データセンタ400Aがマネージドネットワーク300に対するすべてのトラフィックをサーブする一方、データセンタ400Bの演算インスタンス322のバージョンは、準リアルタイムに更新される。両データセンタがアクティブである構成等、他の構成がサポートされていてもよい。
【0078】
データセンタ400Aが何らかの故障を起こしたり、ユーザが利用できなくなったりした場合は、データセンタ400Bがアクティブなデータセンタとして引き継ぐことができる。たとえば、演算インスタンス322のドメイン名をデータセンタ400Aの1つまたは複数のインターネットプロトコル(IP)アドレスと関連付けるドメインネームシステム(DNS)サーバは、ドメイン名をデータセンタ400Bの1つまたは複数のIPアドレスと再度関連付けるようにしてもよい。この再関連付けが完了した後(1秒または数秒未満と考えられる)、ユーザは、データセンタ400Bによって演算インスタンス322にアクセス可能となる。
【0079】
また、図4は、マネージドネットワーク300の考え得る構成を示している。上述の通り、プロキシサーバ312およびユーザ414は、ファイアウォール310を通じて演算インスタンス322にアクセス可能である。また、プロキシサーバ312は、設定項目410にもアクセス可能である。図4において、設定項目410は、クライアント機器302、サーバ機器304、ルータ306、および仮想マシン308のいずれかまたはすべて、これらの任意の構成要素、そこで実行される任意のアプリケーションまたはサービスのほか、機器、構成要素、アプリケーション、およびサービス間の関係を表し得る。このため、用語「設定項目(configuration item)」は、任意の物理的もしくは仮想的機器、演算インスタンス322によるリモート検出または管理が可能な任意のアプリケーションもしくはサービス、または検出された機器、アプリケーション、およびサービス間の関係の一部または全部を表す略記であってもよい。設定項目は、演算インスタンス322の設定管理データベース(CMDB)において表され得る。
【0080】
格納または送信に際して、設定項目は、当該設定項目が表すハードウェアまたはソフトウェアを特性化する属性のリストであってもよい。これらの属性には、製造者、ベンダー、場所、所有者、一意の識別子、説明、ネットワークアドレス、動作状態、シリアル番号、最終更新時間等を含み得る。設定項目のクラスは、設定項目に対して存在する属性の部分集合を決定し得る(たとえば、ソフトウェアおよびハードウェアの設定項目は、異なる属性リストを有し得る)。
【0081】
上述の通り、VPNゲートウェイ412は、専用のVPNをVPNゲートウェイ402Aに提供し得る。このようなVPNは、マネージドネットワーク300と演算インスタンス322との間に大量のトラフィックが存在する場合、あるいは、セキュリティポリシーがこれらのサイト間でのVPNの使用を示唆または要求する場合に役立ち得る。いくつかの実施形態において、VPNを介して直接通信するマネージドネットワーク300および/または演算インスタンス322の任意の機器には、パブリックIPアドレスが割り当てられる。マネージドネットワーク300および/または演算インスタンス322の他の機器には、プライベートIPアドレス(たとえば、10.0.0.0~10.255.255.255または192.168.0.0~192.168.255.255の範囲から選択されたIPアドレスであって、それぞれがサブネット10.0.0.0/8および192.168.0.0/16として略記される)が割り当てられ得る。種々代替案において、プロキシサーバ312等のマネージドネットワーク300の機器は、セキュアなプロトコル(たとえば、TLS)を使用して、1つまたは複数のデータセンタと直接通信するようにしてもよい。
【0082】
IV.例示的な検出
リモートネットワーク管理プラットフォーム320は、マネージドネットワーク300の機器、アプリケーション、およびサービスを管理するため、マネージドネットワーク300に存在する機器、これらの機器の構成、構成要素、および動作状態、ならびに機器が提供するアプリケーションおよびサービスを最初に決定するようにしてもよい。また、リモートネットワーク管理プラットフォーム320は、検出された機器、それぞれの構成要素、アプリケーション、およびサービス間の関係を決定するようにしてもよい。各機器、構成要素、アプリケーション、およびサービスの表現を設定項目と称する場合がある。マネージドネットワーク300内の設定項目および関係を決定するプロセスを検出と称するが、これは、プロキシサーバ312によって少なくとも部分的に容易化され得る。設定項目および関係の表現は、CMDBに格納される。
【0083】
本項では、マネージドネットワーク300に実行される検出を記載するが、パブリッククラウドネットワーク340上でも同一または同様の検出手順が用いられるようになっていてもよい。このため、いくつかの環境において、「検出」は、マネージドネットワークならびに/または1つもしくは複数のパブリッククラウドネットワーク上での設定項目および関係の検出を表し得る。
【0084】
本明細書の実施形態のため、「アプリケーション」は、1つもしくは複数のプロセス、スレッド、プログラム、クライアントソフトウェアモジュール、サーバソフトウェアモジュール、または機器もしくは機器群上で実行されるその他任意のソフトウェアを表し得る。「サービス」は、相互に連携して作用する1つまたは複数の機器上で実行される1つまたは複数のアプリケーションが提供する高度な機能を表し得る。たとえば、ウェブサービスには、ある機器上で実行され、別の機器上で実行されるデータベースアプリケーションからの情報にアクセスする複数のウェブアプリケーションサーバスレッドを含み得る。
【0085】
図5は、設定項目および関係が検出され得る様子のほか、これらと関連する情報が格納され得る様子の論理的な描写である。簡素化のため、リモートネットワーク管理プラットフォーム320、パブリッククラウドネットワーク340、およびインターネット350は示していない。
【0086】
図5においては、CMDB500、タスクリスト502、および識別・調停エンジン(IRE)514の配設および/または動作が演算インスタンス322内で行われる。タスクリスト502は、演算インスタンス322とプロキシサーバ312との間の接続点を表す。タスクリスト502は、キューと称する場合もあるし、より詳細には、外部通信チャネル(ECC)キューと称する場合もある。タスクリスト502は、キュー自体のみならず、キューの情報の追加、削除、および/または操作等、任意の関連する処理も表し得る。
【0087】
検出が行われると、演算インスタンス322は、プロキシサーバ312が1つまたは複数のバッチでこれらのタスクを要求するまで、プロキシサーバ312が実行すべき検出タスク(ジョブ)をタスクリスト502に格納するようにしてもよい。タスクをタスクリスト502に配置することは、プロキシサーバ312がそれぞれの検出動作を開始することのトリガあるいはきっかけとなり得る。たとえば、プロキシサーバ312がタスクリスト502を定期的または随時ポーリングするようにしてもよいし、その他何らかの方法でタスクリスト502の検出コマンドをプロキシサーバ312に通知するようにしてもよい。この代替または追加として、検出がトリガイベントに基づいて手動または自動でトリガされるようになっていてもよい(たとえば、1日に1回、特定の時間に、検出が自動的に開始となってもよい)。
【0088】
それにも関わらず、演算インスタンス322は、要求に応じて、これらの検出コマンドをプロキシサーバ312に送信するようにしてもよい。たとえば、プロキシサーバ312は、タスクリスト502を繰り返し問い合わせ、その中の次のタスクを取得し、タスクリスト502が空になるか、または、別の停止条件が達成されるまで、このタスクを実行するようにしてもよい。検出コマンドの受信に応答して、プロキシサーバ312は、マネージドネットワーク300中のさまざまな機器、構成要素、アプリケーション、および/またはサービス(簡略化のため、図5においては機器504、506、508、510、および512で表される)への問い合わせを行うようにしてもよい。これらの機器、構成要素、アプリケーション、および/またはサービスは、それぞれの構成、動作、および/または状態に関する応答をプロキシサーバ312に与えるようにしてもよい。これに対して、プロキシサーバ312はその後、この検出情報をタスクリスト502に提供するようにしてもよい(すなわち、タスクリスト502は、プロキシサーバ312により要求されるまで検出コマンドを保持するための送信キューと、検出情報を読み出されるまで保持するための受信キューと、を有し得る)。
【0089】
IRE514は、タスクリスト502から検出情報を取り出し、この検出情報を(たとえば、マネージドネットワーク300上で検出された機器、構成要素、アプリケーション、および/またはサービスを表す)設定項目およびそれぞれの間の関係として編成するソフトウェアモジュールであってもよい。そして、IRE514は、これらの設定項目および関係を格納のためCMDB500に与えるようにしてもよい。IRE514の動作については、以下により詳しく説明する。
【0090】
このように、CMDB500に格納された設定項目は、マネージドネットワーク300の環境を表す。一例として、これらの設定項目は、一組の物理および/または仮想機器(たとえば、クライアント機器、サーバ機器、ルータ、または仮想マシン)、これら(たとえば、ウェブサーバ、電子メールサーバ、データベース、またはストレージアレイ)の上で実行されるアプリケーションのほか、複数の個々の設定項目を含むサービスを表し得る。関係は、設定項目間の配置または依存関係のペア定義であってもよい。
【0091】
上述のような検出が行われるように、プロキシサーバ312、CMDB500、ならびに/または1つもしくは複数の認証情報ストアには、検出対象の機器の認証情報が設定されていてもよい。認証情報には、機器へのアクセスに必要な任意の種類の情報を含み得る。これらには、ユーザID/パスワードのペア、証明書等を含み得る。いくつかの実施形態において、これらの認証情報は、CMDB500の暗号化フィールドに格納されていてもよい。プロキシサーバ312は、認証情報を用いた検出対象の機器へのログオンあるいはアクセスが可能となるように、これらの認証情報の復号キーを含んでいてもよい。
【0092】
検出には、水平および垂直(トップダウン)という2つの一般的な種類が存在する。それぞれを以下に論じる。
【0093】
A.水平検出
水平検出は、マネージドネットワーク300をスキャンし、機器、構成要素、および/またはアプリケーションを探索した後、これらの機器、構成要素、および/またはアプリケーションを表す設定項目をCMDB500に入力するのに用いられる。また、水平検出では、設定項目間の関係を生成する。たとえば、ソフトウェアアプリケーションを表す設定項目とそれが実行されるサーバ機器を表す設定項目との間の「実行」関係が可能である。通常、水平検出ではサービスを認識しておらず、動作するサービスに基づいて設定項目間の関係を生成することはない。
【0094】
水平検出には2つのバージョンが存在する。一方がプローブおよびセンサに依拠する一方、他方はパターンも採用する。プローブおよびセンサは、機器上で検出情報を収集および処理した後、これに応じてCMDB500を更新する(たとえば、JAVASCRIPT(登録商標)で書かれた)スクリプトであってもよい。より具体的には、プローブがマネージドネットワーク300上の機器を探索または調査し、センサがプローブから返された検出情報を分析する。
【0095】
パターンもスクリプトであって、1つまたは複数の機器上のデータを収集および処理して、CMDBを更新する。パターンは、特定の検出プログラミング言語で書かれており、より一般的なプローブおよびセンサでは確実な検出が不可能である(または、一切検出できない)ことが多い特定の機器、構成要素、および/またはアプリケーション上で詳細な検出手順を実行するのに用いられる点において、プローブおよびセンサと異なる。特に、パターンは、特定の配置の機器、構成要素、および/またはアプリケーションの検出方法と、使用する認証情報と、この検証の結果としての設定項目を入力するCMDBテーブルと、を規定する一連の動作を指定することができる。
【0096】
いずれのバージョンも、スキャン、分類、識別、および探索という4つの論理的な段階を踏むことができる。また、いずれのバージョンも、検出が行われるマネージドネットワーク300上のIPアドレスの1つまたは複数の範囲の指定を要する場合がある。各段階には、マネージドネットワーク300上の機器とプロキシサーバ312との間のほか、プロキシサーバ312とタスクリスト502との間の通信を含み得る。いくつかの段階では、一部または予備の設定項目をCMDB500に格納し得るが、これは、後の段階で更新され得る。
【0097】
スキャン段階において、プロキシサーバ312は、オープンな伝送制御プロトコル(TCP)および/またはユーザデータグラムプロトコル(UDP)ポートについて、IPアドレスの指定された範囲内の各IPアドレスをプローブすることにより、機器の一般的な種類およびそのオペレーティングシステムを決定するようにしてもよい。このようなオープンポートがIPアドレスに存在することは、当該IPアドレスが割り当てられた機器上で特定のアプリケーションが動作していることを示し、これによって、当該機器が使用するオペレーティングシステムを識別可能である。たとえば、TCPポート135がオープンな場合、この機器は、WINDOWS(登録商標)オペレーティングシステムを実行している可能性が高い。同様に、TCPポート22がオープンな場合、この機器は、LINUX(登録商標)等のUNIX(登録商標)オペレーティングシステムを実行している可能性が高い。UDPポート161がオープンな場合、この機器は、簡易ネットワーク管理プロトコル(SNMP)を通じて別途識別可能となり得る。それ以外の可能性もある。
【0098】
分類段階において、プロキシサーバ312は、各検出機器をさらにプローブして、そのオペレーティングシステムの種類を決定するようにしてもよい。特定の機器に使用されるプローブは、スキャン段階に当該機器に関して収集された情報に基づく。たとえば、TCPポート22がオープンな機器が見つかった場合は、一組のUNIX(登録商標)固有のプローブが用いられるようになっていてもよい。同様に、TCPポート135がオープンな機器が見つかった場合は、一組のWINDOWS(登録商標)固有のプローブが用いられるようになっていてもよい。いずれの場合も、適当な一組のタスクがタスクリスト502に配置され、プロキシサーバ312がこれを実行するようになっていてもよい。これらのタスクにより、プロキシサーバ312は、特定の機器からの情報にログオンあるいはアクセス可能となる。たとえば、TCPポート22がオープンな場合、プロキシサーバ312は、特定の機器に対するセキュアシェル(SSH)接続を開始し、ファイルシステムの特定の場所から、機器上のオペレーティングシステムの特定の種類に関する情報を取得するように指示され得る。この情報に基づいて、オペレーティングシステムが決定されるようになっていてもよい。一例として、TCPポート22がオープンなUNIX(登録商標)機器は、AIX(登録商標)、HPUX、LINUX(登録商標)、MACOS(登録商標)、またはSOLARIS(登録商標)として分類される。この分類情報は、1つまたは複数の設定項目としてCMDB500に格納されていてもよい。
【0099】
識別段階において、プロキシサーバ312は、分類された機器に関する具体的詳細を決定するようにしてもよい。この段階において使用されるプローブは、分類段階に特定の機器に関して収集された情報に基づいていてもよい。たとえば、機器がLINUX(登録商標)として分類された場合は、一組のLINUX(登録商標)固有のプローブが用いられるようになっていてもよい。同様に、機器がWINDOWS(登録商標)10として分類された場合は、一組のWINDOWS(登録商標)10固有のプローブが用いられるようになっていてもよい。分類段階の場合と同様に、適当な一組のタスクがタスクリスト502に配置され、プロキシサーバ312がこれを実行するようになっていてもよい。これらのタスクにより、プロキシサーバ312は、特定の機器から、基本入力/出力システム(BIOS)情報、シリアル番号、ネットワークインターフェース情報、これらのネットワークインターフェースに割り当てられた媒体アクセス制御アドレス、特定の機器が使用するIPアドレス等の情報を世読み出し可能となる。この識別情報は、1つまたは複数の設定項目として、両者間の任意の関連する関係と併せてCMDB500に格納されていてもよい。この際、IRE514を通じて識別情報を受け渡すことにより、曖昧性解消を目的とした重複設定項目の生成の回避および/または検出情報を書き込むべきCMDB500のテーブルの決定を行うようにしてもよい。
【0100】
探索段階において、プロキシサーバ312は、分類された機器の動作状態に関する別途詳細を決定するようにしてもよい。この段階において使用されるプローブは、分類段階および/または識別段階に特定の機器に関して収集された情報に基づいていてもよい。この場合も、適当な一組のタスクがタスクリスト502に配置され、プロキシサーバ312がこれを実行するようになっていてもよい。これらのタスクにより、プロキシサーバ312は、特定の機器から、プロセッサ情報、メモリ情報、実行プロセス(ソフトウェアアプリケーション)のリスト等の付加的な情報を読み出し可能となる。ここで再度、検出情報は、1つまたは複数の設定項目および関係として、CMDB500に格納されていてもよい。
【0101】
スイッチおよびルータ等の特定の機器上で水平検出を実行する場合は、SNMPを利用するようにしてもよい。実行プロセスまたは他のアプリケーション関連情報のリストの決定の代替または追加として、検出では、ルータが既知の付加的なサブネットおよびルータのネットワークインターフェースの動作状態(たとえば、アクティブ、非アクティブ、キュー長、脱落パケット数等)を決定するようにしてもよい。付加的なサブネットのIPアドレスは、他の検出手順の候補となり得る。このため、水平検出は、反復的または再帰的に進行し得る。
【0102】
パターンは、識別段階および探索段階においてのみ使用される。パターンベースの検出では、プローブおよびセンサが使用される場合のようにスキャン段階および分類段階が作用する。分類段階の完了後は、識別に使用するプローブとしてパターンプローブが指定される。その後、パターンプローブおよびそれが指定するパターンが起動される。
【0103】
パターンは、検出プログラミング言語によって、プローブおよびセンサを使用する検出では利用不可能または実現困難な多くの機能をサポートする。たとえば、パターンベースの検出を使用することにより、パブリッククラウドネットワークにおける機器、構成要素、および/またはアプリケーションの検出のほか、設定ファイルの追跡の実現がはるかに容易となる。さらに、これらのパターンは、プローブおよびセンサよりも容易に、ユーザがカスタマイズ可能である。また、パターンは、特定の機器、構成要素、および/またはアプリケーションにより焦点を合わせているため、プローブおよびセンサが使用するより一般的な手法よりも高速に実行可能である。
【0104】
水平検出が完了となったら、CMDB500において、各検出機器、構成要素、および/またはアプリケーションの設定項目表現が利用可能となる。たとえば、検出後は、マネージドネットワーク300中のクライアント機器、サーバ機器、およびルータのオペレーティングシステムバージョン、ハードウェア構成、およびネットワーク構成詳細のほか、それらの上で実行されるアプリケーションが設定項目として格納されるようになっていてもよい。これらの収集情報は、さまざまな方法でユーザに提示されることにより、機器のハードウェア構成および動作状態をユーザが確認可能となり得る。
【0105】
さらに、CMDB500は、設定項目間の関係に関するエントリを含んでいてもよい。より具体的には、サーバ機器が多くのハードウェアコンポーネント(たとえば、プロセッサ、メモリ、ネットワークインターフェース、ストレージ、およびファイルシステム)を含み、これらにおいて複数のソフトウェアアプリケーションがインストールまたは実行されるものとする。構成要素とサーバ機器との間の関係(たとえば、「包含」関係)およびソフトウェアアプリケーションとサーバ機器との間の関係(たとえば、「実行」関係)は、CMDB500においてそのように表され得る。
【0106】
より一般的に、ハードウェア設定項目においてインストールまたは実行されるソフトウェア設定項目の関係は、ホスティング、実行、または依存等のさまざまな形態であってもよい。このため、サーバ機器にインストールされたデータベースアプリケーションは、サーバ機器と「ホスティング」の関係を有することにより、当該データベースアプリケーションがサーバ機器にホストされていることを示し得る。いくつかの実施形態において、サーバ機器は、データベースアプリケーションと「使用」の相互関係を有することにより、当該サーバ機器がデータベースアプリケーションにより使用されることを示し得る。これらの関係は、上述の検出手順を使用して自動的に見つけられるようになっていてもよいが、関係を手動で設定することも可能である。
【0107】
このように、リモートネットワーク管理プラットフォーム320は、マネージドネットワーク300上で展開されて提供されるハードウェアおよびソフトウェアを検出して一覧化することができる。
【0108】
B.垂直検出
垂直検出は、ウェブサービス等の全体サービスの一部である設定項目の探索およびマッピングに用いられる技術である。たとえば、垂直検出では、ウェブサーバアプリケーション、LINUX(登録商標)サーバ機器、およびウェブサービス用のデータを格納するデータベース間の関係を示すことによって、ウェブサービスをマッピングすることができる。通常は、設定項目およびそれらの間の基本的関係を見出すために水平検出が最初に実行された後、サービスを構成する設定項目間の関係を確立するために垂直検出が実行される。
【0109】
パターンの使用によって、特定の種類のサービスを検出することができる。これらのパターンは、サービスの展開の様子に関する記述に適合するハードウェアおよびソフトウェアの特定の配置を探索するようにプログラム可能なためである。この代替または追加として、トラフィック分析(たとえば、機器間のネットワークトラフィックの調査)の使用により、垂直検出を容易化することも可能である。場合によっては、垂直検出の補助となるように、サービスのパラメータを手動で設定することも可能である。
【0110】
一般的に、垂直検出では、機器、構成要素、および/またはアプリケーション間の特定の種類の関係を見つけようとする。これらの関係のうちのいくつかは、設定ファイルから推測され得る。たとえば、ウェブサーバアプリケーションの設定ファイルは、それが依拠するデータベースのIPアドレスおよびポート番号を表し得る。垂直検出パターンは、このような参照の探索およびそれによる関係の推測を行うようにプログラム可能である。また、機器間のトラフィックから関係を推測することも可能である。たとえば、負荷分散器とウェブサーバをホストする機器との間で大量のウェブトラフィック(たとえば、TCPポート80または8080)が往来している場合は、負荷分散器およびウェブサーバが何らかの関係を有すると考えられる。
【0111】
垂直検出により見出される関係は、さまざまな形態であってもよい。一例として、電子メールサービスは、それぞれが異なるハードウェア機器設定項目にインストールされた電子メールサーバソフトウェア設定項目およびデータベースアプリケーションソフトウェア設定項目を含み得る。電子メールサービスがこれらのソフトウェア設定項目との「依存」関係を有し得る一方、ソフトウェア設定項目は、電子メールサービスと「使用」の相互関係を有する。このようなサービスは、水平検出手順では完全に決定できない可能性もあるため、代わりに、垂直検出および場合によりある程度の手動設定に依拠していてもよい。
【0112】
C.検出の利点
検出情報は、取得方法に関わらず、マネージドネットワークの運用に有益となり得る。とりわけ、IT担当者は、特定のソフトウェアアプリケーションが展開されている場所およびサービスを構成する設定項目を迅速に決定することができる。これにより、サービスの停止または劣化の根本原因を迅速に突き止めることができる。たとえば、2つの異なるサービスの応答時間が遅い場合は、(可能性として数ある行為の中でもとりわけ)CMDBへの問い合わせによって、両サービスが使用するデータベースアプリケーションのプロセッサ利用率が高いことが根本原因であるものと判定することができる。このため、IT担当者は、サービスを構成する他の設定項目の健全性および性能の検討に時間を浪費することなく、データベースアプリケーションに対処することができる。
【0113】
別の例においては、データベースアプリケーションがサーバ機器上で実行されており、また、このデータベースアプリケーションが従業員研修サービスのほか、給与計算サービスで使用されるものとする。このため、サーバ機器が保守のため稼働を停止した場合は、従業員研修サービスおよび給与計算サービスが明らかに影響を受けることになる。同様に、設定項目間の依存および関係は、特定のハードウェア機器が故障した場合に影響を受けるサービスを表し得ると考えられる。
【0114】
一般的に、設定項目および/または設定項目間の関係は、ウェブベースのインターフェースに表示され、階層として表され得る。このインターフェースによって、CMDBにおける上記のような設定項目および/または関係の修正が達成され得る。
【0115】
さらに、マネージドネットワーク300のユーザは、検出された複数の機器にわたる特定の調整済み行為の実行を可能にするワークフローを開発することができる。たとえば、ITワークフローによって、ユーザは、検出されたすべてのLINUX(登録商標)機器の共通管理者パスワードを単一の操作で変更可能となる可能性もある。
【0116】
V.CMDB識別ルールおよび調停
CMDB500等のCMDBは、設定項目および関係のレポジトリを提供する。適正に規定された場合は、演算インスタンス内で展開されたより高位のアプリケーションまたは演算インスタンスを含むより高位のアプリケーションにおいて、重要な役割を担うことができる。これらのアプリケーションは、企業のITサービス管理、業務管理、資産管理、設定管理、法令順守等に関連し得る。
【0117】
たとえば、ITサービス管理アプリケーションは、CMDBの情報を使用して、機能不全、機能停止、または高負荷の構成要素(たとえば、サーバ機器)の影響を受ける可能性があるアプリケーションおよびサービスを決定するようにしてもよい。同様に、資産管理アプリケーションは、CMDBの情報を使用して、特定の企業アプリケーションのサポートに使用されるハードウェアおよび/またはソフトウェアコンポーネントを決定するようにしてもよい。CMDBの重要性の結果として、そこに格納される情報は、正確で一貫性があり、最新であることが望ましい。
【0118】
CMDBへの入力は、さまざまな方法で行うことができる。上述の通り、検出手順では、設定項目および関係を含む情報をCMDBに自動的に格納するようにしてもよい。ただし、CMDBへの入力の全部または一部は、手動入力、設定ファイル、およびサードパーティデータソースにより行うことも可能である。複数のデータソースがいつでもCMDBを更新可能となり得る点を所与として、あるデータソースが別のデータソースのエントリを上書き可能である。また、2つのデータソースがそれぞれ、同じ設定項目に対してわずかに異なるエントリを生成するようにしてもよく、その結果、CMDBが重複データを含むことになる。これらのいずれかが発生すると、CMDBの健全性および有用性が低下し得る。
【0119】
この状況を緩和するため、これらのデータソースは、設定項目を直接はCMDBに書き込まない可能性もある。代わりに、IRE514の識別・調停アプリケーションプログラミングインターフェース(API)に書き込むようにしてもよい。その後、IRE514が一組の設定可能な識別ルールを使用することにより、設定項目を一意に識別するとともに、CMDBへの書き込みの有無およびその方法を判定するようにしてもよい。
【0120】
一般的に、識別ルールは、この一意の識別に使用可能な一組の設定項目属性を指定する。また、識別ルールには優先順位があり、優先順位の高いルールが優先順位の低いルールの前に考慮されるようになっていてもよい。また、ルールは、設定項目を他の設定項目とは独立に識別する点において、独立したものと考えられる。あるいは、ルールは、最初にメタデータルールを使用して依存する設定項目を識別する点において、依存したものと考えられる。
【0121】
メタデータルールは、特定の設定項目に含まれる他の設定項目または特定の設定項目が展開されるホストを記述する。たとえば、ネットワークディレクトリサービス設定項目がドメインコントローラ設定項目を含み得る一方、ウェブサーバアプリケーション設定項目は、サーバ機器設定項目にホストされていてもよい。
【0122】
各識別ルールの目標は、設定項目を他のすべての設定項目から明確に区別することができ、設定項目の存続期間に変化しないと予想される属性の組み合わせを使用することである。例示的なサーバ機器に対して考え得る属性としては、シリアル番号、場所、オペレーティングシステム、オペレーティングシステムバージョン、メモリ容量等が挙げられる。設定項目を一意に識別しない属性をルールが指定する場合は、CMDBにおいて、複数の構成要素が同じ設定項目として表される可能性もある。また、特定の設定項目に対して変化する属性をルールが指定する場合は、重複設定項目が生成される可能性もある。
【0123】
したがって、データソースが設定項目に関する情報をIRE514に提供する場合、IRE514は、この情報を1つまたは複数のルールと照合しようとする可能性がある。一致が見られる場合は、設定項目がCMDBに書き込まれるか、CMDBに既存の場合は更新される。一致が見られない場合は、設定項目が別途分析のため保持され得る。
【0124】
権限のあるデータソースのみがCMDBの設定項目データの上書きを許可されるように、設定項目調停手順が用いられるようになっていてもよい。この調停についても、ルールベースであってもよい。たとえば、特定の設定項目種別および一組の属性に対して特定のデータソースが権限を有するように調停ルールが指定してもよい。そして、この権限のあるデータソースによる特定の設定項目への書き込みのみをIRE514が許可する可能性もあり、不正なデータソースによる書き込みが防止され得る。このように、正規のデータソースは、特定の設定項目に関する唯一の真実の情報源となる。場合によっては、不正なデータソースが設定項目を生成している場合、または、書き込んでいる属性が空である場合に、設定項目への書き込みを許可される可能性がある。
【0125】
また、複数のデータソースが同じ設定項目またはその属性に対する権限を有する場合もある。明瞭化のため、これらのデータソースには、設定項目の書き込み時に考慮される優先権が割り当てられていてもよい。たとえば、第1位の権限を有するデータソースが設定項目の属性に書き込むまで、第2位の権限を有するデータソースがこの属性に書き込み可能となっていてもよい。その後は、第2位の権限を有するデータソースによる属性へのさらなる書き込みが阻止されるようになっていてもよい。
【0126】
場合によっては、重複設定項目のIRE514による自動検出または別の方法での検出が可能である。これらの設定項目は、手動での重複排除のため消去されるようになっていてもよいし、フラグ付けされるようになっていてもよい。
【0127】
VI.設定データの変更の判定
上述の通り、リモートネットワーク管理プラットフォーム(リモートネットワーク管理プラットフォーム320等)は、膨大な数のソフトウェアアプリケーションおよびサービスをサポート可能である。これらはそれぞれ、それ自体の設定データを有し得るが、デフォルトでは、プラットフォーム内またはフラットフォーム外の1つまたは複数のファイルまたはデータベースエントリに存在する可能性もある。
【0128】
設定データは複数組のパラメータで構成され得るが、そのパラメータは、キー値ペア、1つもしくは複数の値、ファイル、またはその他何らかの種類の内容であってもよい。本明細書における議論を目的として、パラメータはキー値ペアの形態であるものと仮定するが、他のパラメータ形態が採用されるようになっていてもよい。キー値ペアの一例は、「IPアドレス:10.0.177.15」であって、キーがテキスト「IPアドレス」、値がIPアドレス「10.0.177.15」である。キー値ペアは、さまざまな種類の構造化または非構造化テキストファイル、データベーステーブル等に格納可能である。
【0129】
A.設定データの配置
図6Aは、設定データの種類のほか、格納の方法および場所の一例を示している。アプリケーション/サービス設定600は、特定のソフトウェアアプリケーションおよび/またはサービスの設定データを含んでいてもよい。これらは、1つもしくは複数のユーザ名およびパスワード、暗号化設定、アプリケーションプログラミングインターフェース(API)キー、またはデータベースへの接続であってもよい。ミドルウェア設定602は、ソフトウェアアプリケーションおよび/またはサービスにより採用され得るリモートネットワーク管理プラットフォームに組み込まれた特徴の設定データを含んでいてもよい。これらは、データベース設定、メッセージキュー設定、コンテンツデリバリネットワーク(CDN)設定、および/またはヒープサイズのうちの1つまたは複数であってもよい。クラウドベースリソース設定604は、ソフトウェアアプリケーションおよび/またはサービスが使用する1つまたは複数のパブリッククラウドネットワークサービスに関する設定データを含んでいてもよい。これらは、ストレージ設定、スケーリングルール(たとえば、処理、ストレージ、およびネットワーク容量等)、クラウドベースリソースが配置される地理的領域、および/またはこれらのリソースに関連するホスト名のうちの1つまたは複数であってもよい。インフラ設定606は、リモートネットワーク管理プラットフォーム内のコンピュータ機器の動作を対象とする設定データを含んでいてもよい。これらは、サーバ機器設定、ネットワーク設定、ファイアウォール設定等のうちの1つまたは複数であってもよい。たとえば、これらの設定には、IPアドレス割り当て、ドメイン名割り当て、ワークグループ割り当て等を含み得る。
【0130】
この設定データはすべて、リモートネットワーク管理プラットフォーム、1つもしくは複数のパブリッククラウドネットワーク、ならびに/または他の場所に分散して異なる方法で格納されていてもよい。たとえば、この設定データの一部は、非構造化テキスト、構造化テキスト、または他種のファイル(たとえば、.properties、.conf、XML、JavaScript Object Notation(JSON)、カンマ区切り値(CSV)、および/もしくはYet Another Markup Language(YAML))ファイルを含み得るファイル608に格納されていてもよい。この代替または追加として、この設定データの一部(パラメータおよび/またはファイル)は、データベース(たとえば、特定のデータベーステーブル)、ネットワークフォルダ、ソースコード管理システム、および/またはアーチファクトストレージを含み得るレポジトリ610に格納されていてもよい。
【0131】
場合によっては、階層ツリー状の構造に設定データが格納されていてもよい。たとえば、JSONおよびXMLファイルは、ツリーに直接類似するように階層構造となっている。これらの種類のファイルにおいて、オブジェクトは、要素(たとえば、ツリーのリーフのようなキー値ペア)または他のオブジェクトのコンテナ(たとえば、ツリーのルートノードまたは中間ノードのような要素のブロック)のいずれかである。
【0132】
具体例として、航空券予約ウェブサイトには、カスタムチケット予約アプリケーション、ユーザ関係管理コンポーネント、支払いゲートウェイサービス、ユーザインターフェース、ユーザインターフェースにコンテンツを提供する一連のウェブサーバ、認証マイクロサービス、データベースサーバ、負荷分散器、内部ネットワークルーティングポリシー等、アプリケーションおよびサービス設定データの多くのノードを含むことができ、これらはすべて、航空券予約アプリケーションサービスとしてのシームレスな結合および運用のため、適正に設定する必要がある。このため、ソフトウェアサービスの設定データは、数万の設定キー値ペアをツリー状の階層に格納する数千のノードに及ぶ可能性がある。このようなソフトウェアサービスについて、簡素化された例示的な一組のJSON設定を図6Bに示す。
【0133】
このような設定データを維持する上での課題は、データが複雑である(数万~数百万のパラメータ)のみならず、変更の頻度が高いことである。たとえば、リモートネットワーク管理プラットフォームは、数百または数千のソフトウェアアプリケーションおよびサービスをサポート可能であり、その一部は、さまざまな種類のアジャイルプログラミングモデル等の継続的な開発プロセスの下にあり得る。このため、数日ごとあるいは1日に数回、これらのアプリケーションの新たなバージョンがプロダクション環境に展開されるようになっていてもよい。
【0134】
これらのアプリケーションを開発およびテストするソフトウェアエンジニアのチームは、アプリケーションの設定データを変更する場合がある一方、他のアプリケーションの設定データのほか、ミドルウェアおよび/またはインフラの設定データを変更する場合もある。したがって、ソフトウェアの欠陥の修正または複数機能の展開のため、ソフトウェアエンジニアのあるチームが他の一部または全部のチームのソフトウェアアプリケーションに影響を及ぼす設定データを変更する場合がある。このような変更は、これら他のソフトウェアアプリケーションの少なくとも一部が挙動を変えたり、さまざまに失敗を重ねたりする原因となり得る。
【0135】
さらに、各組の設定データは、多くの場所全体に配設されたファイル608および/またはレポジトリ610に配置され得る。このため、設定データのアクセス制限が弱くなり、変更の調整が不可能ではないにしても困難となる。その結果、変更が制御不可能となり、追跡が不可能となって、容易に監査できなくなる。
【0136】
結果として、ソフトウェアアプリケーションおよびサービスの停止の主な根本原因は、現時点では設定データのエラーである。いくつかの推定において、これらのエラーは、ソフトウェアアプリケーションのコーディングエラーよりもはるかに一般的で影響が大きい。いくつかの顕著な設定関連の停止では、ウェブサイト全体がオフラインになったり、数時間から数日にわたって使用できなくなったりしている。前述の制限により、これらの停止のトラブルシューティングは困難である。停止の原因と考えられる設定変更を絞り込むことは、複数のファイルおよびレポジトリにまたがって、干し草の山から針を探すようなものだからである。
【0137】
したがって、停止の発生の可能性が低くなるとともに解決が迅速となるような設定データの管理、提示、表示、および操作方法の改良が有益となる。
【0138】
本明細書の実施形態は、このような改良を提供する。図6Cに示すように、これらの実施形態は、単一の場所に格納され得る集中設定データモデル612に設定データを統合することを含んでいてもよい。これにより、設定データの集中可視化が促進される(これにより、ソフトウェアエンジニアおよび運用エンジニアは、関連するファイルまたはレポジトリを見つけるためだけに膨大な時間を費やす必要がなくなる)。また、これによって、ルールベースアクセス制御も促進され、複数組のアクセス制御リスト(ACL)または他のメカニズムにより、特定のパラメータに対してどのユーザがどの時点でどのような変更を加えられるかが規定される。これによって、自動化プロセスが設定データをスキャンして考え得るエラー、設定ミス、または一貫性のないパラメータグループを識別する継続的検証がさらに促進される。このような検証は、有効および/または無効なパラメータまたはパラメータの組み合わせを規定するルールに基づいていてもよいし、より複雑なロジックに基づいていてもよい。
【0139】
また、1つまたは複数のこのようなACLがノード、キー、または値の可視性をユーザ単位またはユーザグループ単位で制御するようにしてもよい。結果として、一部のユーザは、ツリーの特定の分岐の確認または特定のマスク値(パスワード等)の観察が不可能となり得る一方、マスク値が追加、編集、消去されたこと、または未変更であることを把握し続けられる。
【0140】
上述の通り、スナップショットは、設定データのバージョンを表す。場合により、スナップショットは、設定データの全体を表し得るが、他の場合には、設定データの部分集合(たとえば、1つまたは複数の特定のソフトウェアアプリケーションが使用する設定データの部分)しか表し得ない。
【0141】
一例として、ユーザの検索要求に対して採用される検索エンジンを決定する設定データのパラメータを特定のソフトウェアアプリケーションが含むものとする。複数の検索エンジンをサポートし、ソフトウェアアプリケーションがこれらのいずれかを使用または切り替え可能であることが望ましいと考えられる。
【0142】
考え得る実施形態において、パラメータは、新たな検索エンジンを含むように更新され得る。たとえば、Google検索エンジンを指定するパラメータには、「googleSearch:無効」、「googleSearchURL:www.google.com」、および「googleRefIdNumber:grefID123113」といったキー値ペアを含み得る。
【0143】
最初に、新たな検索エンジンの追加を要求する変更リクエストがなされるようになっていてもよい。この変更リクエストは、ユーザまたはアプリケーションが起点となっていてもよく、また、リモートネットワーク管理プラットフォームにより格納された変更リクエストのデータベースに追加されるようになっていてもよい。この変更リクエストに基づいて、ソフトウェア開発者は、新たなパラメータをソフトウェアアプリケーションの設定ファイルに追加するようにしてもよい。次に、ソフトウェアアプリケーションの新たなバージョンが構築され、その設定ファイルには、これらパラメータのほか、新たな検索エンジンの使用を容易化するソフトウェアアプリケーションのコードの任意の変更が組み込まれる。そして、このパッケージ(たとえば、アプリケーションの新たなバージョンおよびその設定データ)は、自動化テスト手順を受けるようになっていてもよい。このようなテストでは、設定ファイルが構文的に正しく、適正にフォーマットされていることを保証するようにしてもよい。
【0144】
これらのテストに合格するものと仮定して、設定ファイルは、集中設定データモデル612にアップロードされるようになっていてもよい。設定ファイルのスナップショットが構成されるが、このスナップショットは、設定ファイルの現行バージョンである。スナップショットは、検証プロセスを経て、集中設定データモデル612のウェブインターフェースにより公開される(利用可能となる)。
【0145】
スナップショットが利用可能となった後は、変更制御プロセスの実行によって、変更リクエスト(および、関連するスナップショット)の精査ならびに承認または拒否がなされる。変更制御プロセスには、ソフトウェア開発者による手動精査または自動精査を含んでいてもよい。たとえば、検証プロセスの結果の精査によって、検証の成功を保証するようにしてもよい。変更リクエストが承認されたら、パッケージの環境への展開(たとえば、リモートネットワーク管理プラットフォームのエンドユーザによるプロダクション環境での使用、ソフトウェアテスタによるテスト環境での使用、またはソフトウェア開発者による開発環境での使用)が可能となる。
【0146】
B.例示的なグラフィカルユーザインターフェース
さらなる説明を目的として、図7Aは、環境により編成された設定データの利用可能なスナップショットのリスト700を示しており、「prod」がプロダクションを、「test」がテストを、「dev」が開発を示す。このリストは、集中設定データモデル612のウェブインターフェース等、リモートネットワーク管理プラットフォームのウェブインターフェースにより取得されるようになっていてもよい。
【0147】
ここで、スナップショットprod-v8.dpl 702は、Google検索エンジンを指定するパラメータを追加した新たなスナップショットであるものと仮定する。とりわけ、ウェブインターフェースは、各スナップショットが公開されたか、展開可能な環境、検証済みであるか、ならびにその生成および最新の検証のタイムスタンプを指定する。図示のように、prod-v8.dpl 702が最新のプロダクションスナップショットである。
【0148】
このシナリオの続きとして、スナップショットprod-v8.dpl 702と関連付けられたパッケージがプロダクション環境において展開されるものとする。この環境は、さまざまな種類の問題または潜在的な問題が検出された場合にアラートを生成するように構成されていてもよい。たとえば、環境は、過去15分間にわたって検索が実行されなかった場合(数千人のユーザが検索サービスを使用していると予想されることを所与として、このようなイベントは非常にまれであると予想される)、アラートを生成するようにしてもよい。
【0149】
結果として、リモートネットワーク管理プラットフォームは、アラートを生成し得る。このアラートは、プラットフォームならびにそのアプリケーションおよびサービスの正しい動作の維持を任務とする1人または複数人のシステム信頼性エンジニアに送られるようになっていてもよい。一例として、図7Bは、リモートネットワーク管理プラットフォームのアラート管理アプリケーションのウェブインターフェース710を示している。識別された問題712(「過去15分間に処理された検索はありません」)、影響を受ける設定項目714(「Search engine service-production」)、および考え得る根本原因716(変更リクエストCHG0030040と関連)を含むアラート0010223を示している。ここで、変更リクエストCHG0030040は、(i)Google検索エンジンを含むように設定ファイルを変更するためのであり、(ii)影響を受ける設定項目714と関連していたものと仮定する。
【0150】
多くの現実的なシナリオにおいては、考え得る根本原因716の下に一覧化された複数の変更リクエストが存在し得る。さらに、これら変更リクエストの内容からは、変更された設定データのパラメータが明確とはならない可能性がある。このため、根本原因分析プロセスでは、システム信頼性エンジニアが各変更リクエストを手動で精査した後、ソフトウェア開発者との協働で、関連する設定スナップショットを最初に識別し、これらのスナップショット間の変更を識別し、これらの変更が明らかなサービス停止につながったかを判定することが必要となり得る。最も単純な場合を除くすべての状況において、このプロセスは複雑であり、数時間から数日を要する可能性がある。
【0151】
本明細書の実施形態は、変更リクエストとスナップショットとの間の関連性に起因する上記のような欠点を克服する。とりわけ、変更リクエストCHG0030040によって、スナップショットprod-v8.dpl 702が展開されている。したがって、スナップショットprod-v8.dpl 702に導入された新たな設定パラメータを迅速かつ容易に識別可能である。
【0152】
この点について、図7Cは、複数のスナップショットが示され、それぞれが選択可能となり得るスナップショット展開タイムライン722を示すユーザインターフェース720を示している。図7Cは、(最新の先行展開スナップショットを表す)基準スナップショット724および(現行展開スナップショットprod-v8.dpl 702を表す)対象スナップショット726が選択されていることを示している。一般的には、タイムライン722に示される時間の範囲を拡大または縮小可能であり、その上のいずれか1つまたは2つのスナップショットを選択可能である。さらに、ウェブインターフェースは、最終的な複数の展開スナップショット(たとえば、2つ、3つ、5つ、または10個のスナップショット)を自動的に表示するようにしてもよい。
【0153】
図7Dは、2つの選択スナップショット(たとえば、基準スナップショット724および対象スナップショット726)間の差分を表示している。この図において、ユーザインターフェース730は、ユーザインターフェース720(たとえば、ユーザインターフェース720からスクロールダウンすることでユーザインターフェース730に達する)または別個のユーザインターフェースの一部であってもよい。
【0154】
それにも関わらず、ペイン732は、これらのスナップショット間の変更のツリーベースの配置を表示しており、各ノードが選択可能である。このようなノードを選択することにより、ペイン734は、当該ノード内またはノード下の2つのスナップショット間の如何なる変更をも表示可能となる。たとえば、ペイン732においては、ノード「Prod」が選択されている。このため、ペイン734には、当該ノード下のすべての変更が示される。これらの変更には、ツリーを通って当該変更が存在するノードに至るパスがラベル付けされている。たとえば、「/Prod/release-1.0/searchService-V1.0/javaConfig/json/settings」と表示されているパスは、2つのスナップショット間に3つの変更が存在することと、これらの変更が設定ノード(すなわち、Google検索エンジンを追加するように編集された設定ファイル)に現れていることと、を示している。
【0155】
ペイン734は、変更されたパラメータごとに、関連する動作736(たとえば、追加、編集、削除、未変更)、パラメータのキー(名称)738、基準スナップショットからの値740、および対象スナップショットからの値742をテーブル形式で示している。基準スナップショットも対象スナップショットもパラメータを含まない場合は、関連するエントリが空白となり得る。たとえば、図7Dにおいては、3つのパラメータが対象スナップショットに追加されているため、これらは基準スナップショットに示されていない。
【0156】
図示のように、ペイン734は、グラフィカルユーザインターフェースのリストコンポーネントを使用して、動作、パラメータキー(名称)、およびパラメータ値の行を表示している。一方で、このような情報の表示には、他種のユーザインターフェースコンポーネントが用いられるようになっていてもよい。
【0157】
このユーザインターフェースから、システム信頼性エンジニアまたはソフトウェア開発者は、関連するスナップショット間で変更されたパラメータを容易に識別可能である。これにより、このような個人が停止の根本原因の探索に要する検索の量が大幅に削減される。2つのファイルの内容の差分を見出すことは、特に難しいことではない。根本原因分析の難しい部分は、比較する2つのファイルを識別することである。本明細書の実施形態では、このようなプロセスの実行に数時間から数日ではなく、数秒から数分しか必要としない。
【0158】
この点について、追加パラメータ「googleSearch」の値は、図7Dの「無効化」である。これは、Google検索エンジンがプロダクション環境において有効化されていないことを示しており、アラートが生成された理由を説明するものである。ソフトウェア開発者は、パラメータ「googleSearch」の値が「有効化」である新たなスナップショットを作成して展開することにより、Google検索エンジンの使用を許可することができる。
【0159】
たとえば、図7Eは、ユーザインターフェース730の変形であるユーザインターフェース750を示している。ただし、ユーザインターフェース750は、ツリーベースの配置の複数のノードに複数のパラメータ変更を含む。さらに、これらの変更には、パラメータおよびノードの両者の追加、消去、および編集を含む。また、ユーザインターフェース730および750は、変更がなされていないパラメータを表示する機能をサポートし得る。これは、パラメータの変更が予想されるものの、何らかの理由で変更がなされなかった場合に役立つ可能性もある。さらに、これらのユーザインターフェースは、表示パラメータの検索およびソートをサポートし得る。
【0160】
図7Fは、パラメータに加えられた変更の代替ビューである別途任意選択としてのユーザインターフェース760を示している。2つの隣り合うテキストボックスに示されるファイル間の差分の従来ビューの代わりに、ここでは、各パラメータ名(キー)が(必要に応じて)その先行値および新たな値とともに示される。したがって、たとえば、図7Fは、キー「com.glide.csp.self_script_src_svg」が基準スナップショットにおいて「真」という値を有し、対象スナップショットにおいて「偽」という値を有することを示している。逆に、キー「com.glide.decision.table.max_inputs」の値は、1つの値しか示されないため、これらのスナップショット間では変化していない。また、追加、消去、および編集がなされたパラメータは、ユーザの注意を引くように、さまざまな方法(たとえば、特殊なフォント、色、または関連する文字もしくはアイコン)で強調されていてもよい。
【0161】
このビューは、ここでの変更の大部分がキーではなく値であるため、従来の隣り合うテキストボックスよりも優れている可能性がある。したがって、ユーザは、隣り合うテキストボックスでは変更を識別するのが困難な一方、このレイアウトでは容易である。
【0162】
C.例示的なオペレーション
図8は、例示的な一実施形態を示したフローチャートである。図8により示されるプロセスは、コンピュータ機器100等のコンピュータ機器および/またはサーバクラスタ200等のコンピュータ機器のクラスタにより実行されるようになっていてもよい。ただし、このプロセスは、他種の機器または機器サブシステムによっても実行可能である。たとえば、このプロセスは、リモートネットワーク管理プラットフォームまたはラップトップもしくはタブレット機器等の携帯型コンピュータの演算インスタンスにより実行することも可能である。
【0163】
図8の実施形態は、そこに示される特徴のいずれか1つまたは複数を除去することによって簡略化することができる。さらに、これらの実施形態は、その他の特徴のいずれかあるいは本明細書に記載の特徴、態様、および/または実施態様と組み合わされるようになっていてもよい。
【0164】
ブロック800は、ソフトウェアサービスが劣化基準を満たす旨の判定に応答して、ソフトウェアサービスと、ソフトウェアサービスにより用いられる設定データが当該設定データの現行スナップショットにおいて変更された旨を指定する変更リクエストと、を示すアラートを生成することを含んでいてもよい。
【0165】
ブロック802は、変更リクエストに基づいて、設定データの現行スナップショットと先行スナップショット(previous snapshot)との間の一組の設定変更を決定することを含んでいてもよい。
【0166】
ブロック804は、現行スナップショットにおいて変更された1つまたは複数のパラメータと、現行スナップショットにおいて変更された1つまたは複数のパラメータにつながる設定データのツリーベースの配置における1つまたは複数のパスと、を示す一組の設定変更の表現を提供することを含んでいてもよい。
【0167】
いくつかの実施形態において、設定データの現行スナップショットと先行スナップショットとの間の一組の設定変更を決定することは、現行スナップショットおよび先行スナップショットの選択を受信することに応答したものである。
【0168】
いくつかの実施形態において、ソフトウェアサービスは、1つまたは複数のソフトウェアアプリケーションによりサポートされ、設定データの現行スナップショットにおいて変更された1つまたは複数のパラメータは、1つまたは複数のソフトウェアアプリケーションにより用いられる。
【0169】
いくつかの実施形態において、ソフトウェアサービスが劣化基準を満たす旨の判定は、ソフトウェアサービスに影響を及ぼす停止、ソフトウェアサービスの性能低下、または閾値を超えるプロセッサもしくはメモリの利用のうちの1つまたは複数を検出することを含む。
【0170】
いくつかの実施形態において、アラートは、アラートデータベースに格納され、複数のソフトウェアサービスのうちの1つまたは複数に影響を及ぼす検出された技術的問題と関連する複数のアラートのうちの1つである。
【0171】
いくつかの実施形態は、ソフトウェアサービスおよび変更リクエストを指定するアラートの表現をグラフィカルユーザインターフェースによってクライアント機器に提供することをさらに含んでいてもよい。
【0172】
いくつかの実施形態において、一組の設定変更を決定することは、設定データの現行スナップショットおよび先行スナップショットを含む複数のスナップショットの調整可能タイムラインをクライアント機器に提供することと、クライアント機器から、現行スナップショットおよび先行スナップショットの別の選択を受信することと、先行スナップショットと現行スナップショットとの間で変更されたものを1つまたは複数のパラメータとして決定することと、を含む。
【0173】
いくつかの実施形態において、設定データの現行スナップショットにおいて変更された1つまたは複数のパラメータはそれぞれ、各パラメータおよび各パラメータの値を一意に識別するキーを含むキー値ペアとして表される。
【0174】
いくつかの実施形態において、設定データの現行スナップショットにおいて変更された1つまたは複数のパラメータはそれぞれ、設定データへの新規追加、設定データからの削除、または設定データ内の編集としてマークされている。
【0175】
いくつかの実施形態において、一組の設定変更の表現は、設定データの現行スナップショットにおいて変更されていない付加的なパラメータも示す。
【0176】
いくつかの実施形態において、設定データの現行スナップショットは、プロダクション環境において展開され、先行スナップショットは、現行スナップショットの展開に先立って、プロダクション環境において最も新しく展開された設定データのスナップショットである。
【0177】
VII.設定データの変更を表示するページネーション付き仮想テーブルの使用
集中設定データモデル612を使用すると、設定データの変更がGit、Subversion(SVN)、バージョン管理システム(CVS)、およびチームファウンデーションサーバ(TFS)等のソース制御管理システムと同様に追跡および格納される。たとえば、集中設定データモデル612は、変更、各変更に関与したユーザ、およびこのような変更の前後の設定データの状態を再構築する能力を追跡する。ただし、本明細書の実施形態は、設定データに特化される新たな方法でこのような変更を管理および提示することを含む。
【0178】
変更は、デバッグ、追跡、および監査を目的として追跡される。設定データのバージョンは、ファイルからインポート可能であるが、変更リクエストプロセスの一部としてなされた変更からもインポート可能である。これら設定データの変更としては、1つもしくは複数のソフトウェアサービスならびに/またはこのようなサービスにより使用され得る展開可能なモジュールの設定ツリーに関与する変更集合の形態が可能である。
【0179】
関与のあった変更は、集中設定データモデル612に組み込まれる。集中設定データモデル612は、たとえば設定データのツリー状構造のノードを表すデータベーステーブルの行として当該設定データの各要素が表されるように、リレーショナルデータベースに格納されていてもよい。ノードは、当該ノードに対応する変更集合(すなわち、当該ノードの生成の原因となった変更集合)を参照するとともに、ルートからこのノードに至るノードの一意のパスによって到達(アドレス指定)し得る。特に、設定データの新たなリリースは、当該リリースの設定データの有効なスナップショットの決定に使用可能な特定のソース制御変更集合を参照し得る。
【0180】
これらの変更集合の関与は、設定データへの追加である。したがって、これらは非破壊的であり、追加、編集、または消去がなされたエントリがノードの新たなインスタンスになって、ツリー状構造の過去のバージョンのノードに置き換わる。ただし、これがノードの過去のバージョンを変更することはないため、履歴が保存される。たとえば、変更集合によって設定データから消去されたノードが依然として存在し、消去されたノードとして観察可能である。このツリー状構造のノード(消去されたノードおよび消去されていないノード)から、さまざまな時点での設定データのスナップショットを生成可能である。これらのスナップショットのリリースによって、現行スナップショットをソフトウェアサービスの設定項目に適用することができる。
【0181】
さらに、ある時点または特定の変更関与の設定データのスナップショットを監査および/または精査用として再構成することができる。特定の時点のスナップショットを再構成し、当該スナップショットの有効な設定データツリー状構造のノードを決定するには、ツリー状構造の変更関与を識別し、その時点のツリーのノードの有効なバージョンを決定する。
【0182】
上述の通り、設定データの変更は、ソフトウェアサービスの劣化あるいはソフトウェアサービスの機能停止につながる可能性がある。プラットフォーム上の監視ソフトウェアによって、異常に高いプロセッサ利用および/または異常に遅い応答時間等のアラートが発生し得る。このアラートは、監視対象の影響を受ける設定項目、関連するソフトウェアサービス、および/または設定項目と関連する他の構成要素を識別可能である。スナップショットの設定データにはアラートにより識別された設定項目が含まれるため、アラートから、現在の設定スナップショットが推測され得る。現行スナップショットから、ソフトウェアサービスの劣化の原因となった設定変更の特定に使用される設定スナップショットのタイムラインとして、設定変更の履歴ならびに関与および展開のたった設定変更の有効なスナップショットを再構成可能である。
【0183】
2つのバージョンのコード間の差分を可視化することは、ソース制御システムの機能であり、テキストベース、行単位、または文字単位で実行される。これに対して、AおよびBという2つのバージョンの設定データ間の差分は、AおよびBという2つのスナップショットのツリー状構造間のノードの差分を識別することを含む。そして、これらの変更は、追加(ノードのパスは、Aには存在しないがBには存在する)、消去(ノードのパスは、Bには存在しないがAには存在する)、編集(ノードのパスは、AおよびBに存在するが、Bには異なる値がある)、または未変更(同一のノードパスおよび値がAおよびBに存在する)として分類可能である。
【0184】
これは、ツリー状構造の背景に起因して、通常のソース制御コード比較とは異なる。設定データツリー状構造のノードは、複数行のテキストに及ぶ場合があり、ノードを表すテキストのすべての行がテキストベースの差分を有し得るわけではない。実際には、2つのスナップショットのテキストの一部の行が同一であっても、依然として変更されたノードに属する場合がある。Git等のソース制御システムでは、行ベースおよびテキストベースの比較のみを使用して差分を識別し、追加および消去されたテキストの行を強調する場合がある。さらに、ソース制御システムでは、ラインが変更されたノードの一部であっても、当該ラインを未変更と考える場合がある。ソース制御システムの視覚的な差分では、コードファイルの2つのバージョン間で追加および消去されたテキストの行を示し、変更されなかった行を省略する。
【0185】
設定データのスナップショット間の差分は、設定データのノードに関する背景次第である。たとえば、親ノードが変更されていなくても、当該親ノードの子ノードが変更されている場合もある。その結果、親ノードは、編集の差分カテゴリを有することになる。
【0186】
差分カテゴリが未変化の場合も、ソース制御システムより情報が多い。たとえば、ノードの差分カテゴリが未変更の場合は、その子ノードがいずれも変更されていないことになる。このため、ツリー状構造においては、ツリー中のノードの場所に関する背景ならびにノードのきょうだい、子孫、および先祖ノードの差分カテゴリによって、アラートの原因となった設定データの変更を特定するための付加的な洞察が提供される。ソース制御コードのテキスト-行比較を適用しようとすると、この背景が失われ、行の変更が誤ったノードに起因するものとなる可能性さえある。
【0187】
差分比較は、設定データ管理ソフトウェアアプリケーションにより実行可能であるとともに、アラートと関連する設定項目の設定データの2つのスナップショット間で計算可能である。これらのスナップショットには、2つのツリー状階層に数万ものノードを含み得る。差分は、両スナップショットのすべてのノードを含む統合ツリー構造である。パスによって決まる両スナップショットにノードが存在する場合は、統合ツリーにおける同じノードと考えられる。このようなノードにおいては、各キー値ペアの差分比較も実行され、その結果、当該ノードについて、上述の4つの状態(追加、消去、編集、未変更)のうちの1つが決定される。
【0188】
A.差分比較の格納
差分比較は、2つ以上のスナップショットをメインメモリにロードした後、これらのスナップショット間のノードごとの差分を決定することにより実行可能である。ただし、結果は一時的なものであり、通常は1人のユーザ(差分比較を要求するユーザ)および当該ユーザのアクセス許可だけに固有のものである(各ユーザには、アクセス可能なツリーの一部しか見えない)。これらの結果は、ユーザセッション全体の継続時間に関連しない場合さえある。ユーザが比較のため、スナップショットの選択を変更し得るためである。
【0189】
また、結果は、数万ノードに及ぶ場合もある。このため、これらの結果をデータベーステーブルに格納すると、データベースの読み書きが相対的に遅くなって演算コストが非常に高くなるため、禁止されている。これらの結果を応答性高く(たとえば、1~2秒未満で)ユーザインターフェースに表示することは、データの量を考えると不可能である。さらに、差分比較の過渡的な性質により、データベーステーブルに永続的なストレージを採用することも無駄になる。これらの数万もの結果は目的がなく、ユーザが表示を終了したらデータベースからの消去が必要なためである。
【0190】
したがって、短期間の結果をデータベーステーブルに大量に格納すると、性能および効率が低下する。これは、すべてのデータベース操作が二次的データベースに複製される高可用性のデータベース構成においてさらに複雑である。このような大量のデータを短期間に挿入および消去すると、複製がバックアップされ、最終的には複製プロセスの安定性が損なわれる可能性がある。場合によっては、プラットフォーム上で実行されるほとんどまたはすべてのソフトウェアアプリケーションがデータベースにアクセスして複製手順を使用可能であることに依存しているため、演算インスタンスの安定性が損なわれる可能性がある。たとえば、大規模かつ連続的なデータベースの挿入または消去動作によってソフトウェアアプリケーションがブロックされた場合は、演算インスタンスを円滑かつ健全な実行を維持するために必要な他の動作が影響を受け、インスタンス全体のサービス低下を引き起こす可能性がある。
【0191】
したがって、差分比較のストレージは過渡的であるものの、ユーザが同じ結果を再度読み出し、アラートの根本原因と考えられる変更を分離および識別するのに望ましい方法でフィルタリング、検索、および/またはソートを適用可能となるように、永続的なものとする。データベーステーブルは、フィルタリング、検索、およびソートを容易化するものの、上述の通り、データベーステーブルの使用は演算上禁止されている。
【0192】
上記および場合により他の制限を克服するため、統合差分スナップショットを演算インスタンスのファイルシステム中のファイルへとシリアル変換可能である。ファイルシステムI/Oは通常、大規模なデータ集合をデータベースのテーブルに格納する場合よりも数倍高速である。さらに、数メガバイトのテキストファイルの通常のテキスト圧縮によって、70~80%のサイズ縮小が可能である。このような圧縮および格納(たとえば、半導体ドライブへの格納)には、合計で約10ミリ秒を要する場合もあるが、削除はほぼ一瞬である。
【0193】
差分比較は、パスを使用してスナップショットのノードをペアリングすることにより行われるため、ファイルフォーマットの統合結果がツリーパスによってグループ化され、エントリがキーおよび値を含む(両スナップショットからの値のほか、ノードが示す4種類の差分のいずれかのインジケータを含む)。ファイルサイズをさらに抑えるため、編集された差分を有するノードには、各スナップショットから1つずつ、キー値ペアごとに2つの値を含み得る一方、消去、追加、および未変更のノードには、キー値ペアごとに単一の値しか含まない。
【0194】
この一例を図9の部分的差分比較ファイル900に示す。ファイル900の各リーフノードは、キー値ペアを表し、変更(存在する場合)の種類を示すコメント(「//」の後ろのテキスト)で注釈される。リーフノード902および904は、編集を表すため、2つの値を含む。左から右へと考え、最初の値は編集前のもの、2番目の値は編集後のものである。他のすべてのリーフノードは、追加、消去、または未変更のシナリオを表すため、値は1つだけである。
【0195】
それにも関わらず、結果としてのファイルがファイルシステムに格納され、一意の差分識別し(差分ID)と関連付けられる。これにより、ファイルを差分識別子によって読み出し、開くことができるようになる。
【0196】
B.差分比較のユーザインターフェースへの表示
ソフトウェアサービスの劣化の原因を調べるため、ユーザは、アラートの生成に際して展開された設定データのスナップショット(現行スナップショット)の観察が有利であることを見出し得る。上述の差分比較動作のサポートにより、ユーザは、ソフトウェアサービスに劣化が発生していない過去の時点で展開された設定データのスナップショット(先行スナップショット)に対して、このスナップショットを比較することができる。
【0197】
現行スナップショットおよび先行スナップショットのノード間の差分を観察するため、これらの差分を表示するためのグラフィカルユーザインターフェースが生成されるようになっていてもよい。また、異なる比較ファイルから情報が列および行を有するテーブル形式でグラフィカルユーザインターフェースに提示されるようになっていてもよい。列は、ノードのパス、先行スナップショットから現行スナップショットまでのノードが示す変更の種類、ノードのキー値ペアのキー、ノードのキー値ペアの先行値(該当する場合)、およびノードのキー値ペアの新たな値(該当する場合)のうちの1つまたは複数を示すことができる。また、テーブル形式のグラフィカルユーザインターフェースは、その列の内容に基づいて、その行のフィルタリング、検索、ページング、およびソートをサポートし得る。
【0198】
図7Dは、このようなテーブル形式のグラフィカルユーザインターフェースの考え得る一実施形態を示している。ペイン734は、3つのノードのルートパス(/Prod/release-1.0/searchService-V1.0/javaConfig.json/settings)を表示する(このパスは、ペイン732に表示される設定データのツリー状構造からも推測可能である)。各ノードについて、表形式は、動作736(変更の種類)、名称738(ノードのキー値ペアのキー)、基準スナップショット値740(ノードのキー値ペアの先行値)、および対象スナップショット値742(ノードのキー値ペアの新たな値)の列を含む。上述の通り、ペイン734では、リストコンポーネントを使用してこの情報を表示する。
【0199】
行および列を有する表形式のグラフィカルユーザインターフェースは、ユーザが精通するものであり、馴染みのあるナビゲーションおよびデータの提示を伴う馴染みのあるグラフィカルユーザインターフェースは、アラートの根本原因を識別する任務を負うユーザの効率を向上させる。たとえば、ソフトウェアサービスの一部を担うインフラ設定項目でのリクエストのタイムアウトがアラートで詳細に示されている場合、ユーザはまず、当該ソフトウェアサービスを含む設定データのサブツリーを検査して結果をフィルタリングすることにより、設定データと当該ノードおよびその子ノードの変更を調べることができる。ユーザは、馴染みのある選択肢を伴う馴染みのあるテーブル形式のグラフィカルユーザインターフェースでこの分析をより迅速かつ簡単に行うことによって、差分比較結果を検査することができる。
【0200】
C.仮想テーブル
テーブル形式のグラフィカルユーザインターフェースには通常、データベーステーブルに格納されたデータが入力される。ただし、上述の理由により、差分比較データをデータベースに配置するのは望ましくない。したがって、差分比較のデータベースへの格納に関連するレイテンシを回避する効率的な方法でテーブル形式のグラフィカルユーザインターフェースをサーブするため、仮想テーブル構成の使用によって、ファイル中の情報がデータベーステーブルにあるかのように、ファイルシステムに格納されたファイルの表示および応答を構成可能である。
【0201】
従来、データベーステーブルのエントリを表示するためのグラフィカルユーザインターフェースのリストコンポーネントは、ウェブサーバのバックエンドウェブサービスに対するAPI呼び出しを行うことができる。これらのAPI呼び出しでは、テーブル名、表示を要求されたテーブルの列、ソート順序、返されるエントリ数の制限、ページ番号、ならびに可能性として1つもしくは複数の列に表示される値に基づくフィルタを指定可能である。バックエンドウェブサービスでは、オブジェクトリレーショナルマッパー(ORM)等の別のソフトウェア層を呼び出して、データベーステーブルに対するデータベースクエリ(たとえば、SQL)を生成することができる。そして、このクエリは、ウェブサーバのデータベースドライバを通じて送信され得る。
【0202】
このデータベースドライバは、ウェブサーバとデータベースサーバとの間の低位通信を取り扱う別のソフトウェア層であってもよい。したがって、データベースサーバへの接続を生成し、データベースサーバが認識するフォーマットでクエリを提供し、ネットワーク上のデータベースサーバが提供する結果を受信した後、これらの結果をORM層に返すことができる。その後、ウェブサーバは、グラフィカルユーザインターフェースのリストコンポーネントに従って結果をフォーマットし、リストコンポーネントに表示する。これらの層は、規格、規定された通信プロトコル、およびこれらの同じインターフェース、プロトコル、および規格を実装する他のレイヤとの各レイヤの相互運用を可能にするソフトウェアインターフェースによって一体的に作用する。
【0203】
ORMは、2つ以上のデータベースドライバを採用することにより、複数種類のデータベースをサポートし得る。たとえば、MySQLデータベースに対してあるデータベースドライバが存在し、Postgresデータベースに対して別のデータベースドライバが存在していてもよい。各データベースドライバは、その種類のデータベースに対して調整された特定の通信プロトコルおよびクエリフォーマットを使用することができる。一方、ウェブサーバのグラフィカルユーザインターフェースモジュールでは、ウェブサービスが結果を取得した方法を認識しておらず、ウェブサービスでは、ORM層が結果を取得した方法を認識しおらず、ORMでは、データベースドライバが結果を取得した方法を認識しまいない。これらのモジュールそれぞれに重要なのは、規定されたインターフェースに従って他のモジュールと通信および相互運用可能なことである。
【0204】
従来のデータベーステーブルではないテーブルにデータが格納されている場合は、当該テーブルと関連するクエリを取り扱うデータベースが存在しない。一方、ウェブサービスは、グラフィカルユーザインターフェースのリストコンポーネントからのクエリを依然として受け入れ、ORMを呼び出して結果をウェブサービスに戻すことができる。クエリをデータベースドライバに提供する代わりに、ORMは、問い合わされているテーブル名がデータベーステーブルではないことを認識し、代わりに、RAM等の非一時的揮発性メモリの仮想テーブルにドライバを実装するソフトウェアの代替層を呼び出すようにしてもよい。
【0205】
このような構成を図10に示す。クライアント機器グラフィカルユーザインターフェース1002は、ウェブサーバ1004と連通している。クライアント機器は、データベース1006(たとえば、MySQLデータベース)または仮想テーブル1008からのデータの入力を示すリストコンポーネントが提供された場合、ウェブサーバ1004に対応する問い合わせを行うようにしてもよい。とりわけ、クライアント機器およびウェブサーバ1004は、インターネット等のネットワークを介して通信する別個の異なるコンピュータ機器であってもよい。さらに、データベース1006は、ネットワークを介してウェブサーバ1004と通信する別個の異なるコンピュータ機器であってもよい。仮想テーブル1008は、ウェブサーバ1004のRAMまたはさらに別個の異なるコンピュータ機器のRAMに格納されていてもよい。それ以外の可能性もある。上述の通り、クライアント機器グラフィカルユーザインターフェース1002および場合によりウェブサーバ1004の一部は、それらが最終的に、実際のデータベーステーブルの代わりに仮想テーブルに問い合わせているかを認識していない場合もある。
【0206】
ステップ1010~1024は、データベース1006からのデータに対するクエリおよびその対応する応答がウェブサーバ1004のモジュールを流れる様子を示している。ステップ1010において、クライアント機器グラフィカルユーザインターフェース1002は、データベースクエリをバックエンドウェブサービス1004Aに送信するようにしてもよい。ステップ1012において、バックエンドウェブサービス1004Aは、データベースに関連するものとしてこのクエリを識別し、ORM1004Bに提供するようにしてもよい。ステップ1014において、ORM1004Bは、データベース1006に関連するものとしてこのクエリを識別し、データベースドライバ1004Cに提供するようにしてもよい。ステップ1016において、データベースドライバ1004Cは、データベース1006に適合するフォーマットへとクエリを変換した後、データベース1006に送信するようにしてもよい。ステップ1018において、データベース1006は、クエリに対する応答をデータベースドライバ1004Cに送信するようにしてもよい。ステップ1020において、データベースドライバ1004Cは、ORM1004Bに適合するフォーマットへと応答を変換した後、ORM1004Bに提供するようにしてもよい。ステップ1022において、ORM1004Bは、応答をバックエンドウェブサービス1004Aに提供するようにしてもよい。ステップ1024において、バックエンドウェブサービス1004Aは、応答をクライアント機器グラフィカルユーザインターフェース1002に提供するようにしてもよい。その後、図10には示していないものの、クライアント機器グラフィカルユーザインターフェース1002は、この応答を使用して、リストコンポーネントへの入力を行うようにしてもよい。
【0207】
ステップ1026~1040は、仮想テーブル1008からのデータに対するクエリおよびその対応する応答がウェブサーバ1004のモジュールを流れる様子を示している。ステップ1026において、クライアント機器グラフィカルユーザインターフェース1002は、仮想テーブルクエリをバックエンドウェブサービス1004Aに送信するようにしてもよい。ステップ1028において、バックエンドウェブサービス1004Aは、仮想テーブルに関連するものとしてこのクエリを識別し、ORM1004Bに提供するようにしてもよい。ステップ1030において、ORM1004Bは、仮想テーブル1008に関連するものとしてこのクエリを識別し、仮想データベースドライバ1004Dに提供するようにしてもよい。ステップ1032において、仮想データベースドライバ1004Dは、仮想テーブル1008に適合するフォーマットへとクエリを変換した後、仮想テーブル1008に送信するようにしてもよい。ステップ1034において、仮想テーブル1008は、クエリに対する応答を仮想データベースドライバ1004Dに送信するようにしてもよい。ステップ1036において、仮想データベースドライバ1004Dは、ORM1004Bに適合するフォーマットへと応答を変換した後、ORM1004Bに提供するようにしてもよい。ステップ1038において、ORM1004Bは、応答をバックエンドウェブサービス1004Aに提供するようにしてもよい。ステップ1040において、バックエンドウェブサービス1004Aは、応答をクライアント機器グラフィカルユーザインターフェース1002に提供するようにしてもよい。その後、図10には示していないものの、クライアント機器グラフィカルユーザインターフェース1002は、この応答を使用して、リストコンポーネントへの入力を行うようにしてもよい。
【0208】
D.ブロックベースの読み出しおよびユーザインターフェースページネーション
上述の通り、仮想テーブル1008は、RAMに格納されていてもよい。RAMの容量は通常、ハードドライブまたは半導体ドライブ等の永続的なストレージよりも数桁小さい。また、RAMは、ウェブサーバ1004等のコンピュータシステム上で実行される他の仮想テーブル、アプリケーション、プロセス、およびオペレーティングシステムによっても共有され得る。したがって、データベースについては、永続的なストレージに維持して、何十億ものエントリへと成長させることも可能であるが、共有揮発性メモリ中の仮想テーブルについては、アクセスできるメモリの量が相当少なく、限られた数のエントリ(たとえば、1000個のエントリ)にしか対応できない。さらに、仮想テーブルドライバによって、エントリの制限(たとえば、1000)が強制され得る。ここで、仮想テーブルのエントリは、設定データのノード(たとえば、2つのスナップショットの差分比較におけるノード)に対応し、リストコンポーネントの行に表示され得る。
【0209】
設定データの2つのスナップショットの差分比較は、RAMに合理的に格納し得る数の数倍(たとえば、数万)のエントリを有する可能性もある点を所与として、仮想テーブル1008から一度にエントリの「ブロック」をフェッチし、ユーザに表示されている時間の少なくとも一部にわたって、これらのエントリをRAMに格納し得ることが望ましい。たとえば、エントリ制限が1000であり、ファイルシステムに格納された差分比較が10,000個のエントリを含むものとする。この場合は、それぞれが1000個のエントリを含む10個のブロックが存在する。したがって、エントリ0~999が最初のブロック(ブロック0)を構成し、エントリ1000~1999が2番目のブロック(ブロック1)を構成し、以下同様である。種々実施形態においては、所望のブロックを識別するのにブロック番号および/または別の一組の識別子が用いられるようになっていてもよい。
【0210】
これらのエントリをクライアントグラフィカルユーザインターフェースに表示しやすくするために、カスタムブロック読み出しメカニズムが用いられるようになっていてもよい。このため、新たな列を仮想テーブルに追加する。行は、単に仮想テーブルから読み出されたデータを提供するのではなく、仮想テーブルエントリを生成するソフトウェア層への付加的なパラメータとして機能する。仮想テーブル中のこれら付加的な行には、差分ID、ブロック番号、ブロック当たりのエントリ数、および場合により他の情報を含み得る。ソフトウェア層は、これらの付加的な行に基づいて、フィルタ条件を追加するように構成されていてもよい。このようなフィルタ条件は、仮想テーブルにより返されたデータのフィルタリングに使用されるのではなく、代わりに、仮想テーブルに対するクエリの一部として機能する可能性もある。
【0211】
ここで、差分IDは、永続的なストレージにおいて1つまたは複数のファイルに格納された2つのスナップショット間の差分比較を表す。たとえば、差分IDとファイルとの間に1対1のマッピングが存在する場合もあるし、単一の差分IDが複数のファイルにまたがる大規模な差分比較を表す場合もある。後者の場合、Bツリー(バイナリツリー)インデックスは、最初のファイルのヘッダまたは別個のファイルに存在し、リクエストをサーブする正しいファイルの決定に使用される。言い換えると、Bツリーは、ファイルおよび/またはファイル中のブロック領域を識別するインデックスとして機能することになり、結果としてのブロックには、2つ以上のファイルそれぞれからのいくつかのエントリを含み得る。別の可能性として、永続的なストレージにおける同じ差分IDに関連する複数の冗長なファイルが挙げられ、それぞれが異なる内部構造で配置されているか、または、予備グループ化、予備フィルタリング、もしく予備ソートがなされた結果等の特定のデータ走査手順を有する。これにより、特定種類のリクエスト(たとえば、結果の特定のグループ化、フィルタリング、またはソート)をより迅速に提供できるようになる。
【0212】
これらのフィルタ条件により、ORMが提供するクエリは、特定の差分ID、当該差分ID内の特定のブロック番号、および当該差分ID内のブロックの特定のブロックサイズを識別可能となる。この情報により、仮想データベースドライバは、永続的なストレージ内の特定の差分IDを位置特定し、特定のブロックの先頭が見つかるまで、特定のブロックサイズに基づいて差分IDを反復した後、適当な数のエントリを返すことができる。一例として、ブロックサイズが1000エントリで、2番目のブロックが要求されていることをクエリが示す場合、仮想データベースドライバは、指定された差分IDのエントリ1000~1999を返すことができる。とりわけ、読み出されたブロックは、ファイルシステム上のファイルの同じ領域から常に連続してロードされるとは限らない。ブロックに対する異なるリクエストは、当該リクエストに対するブロックの識別のされ方を修正する付加的なフィルタおよび/またはソート条件も含み得るためである。
【0213】
このシナリオを図11に示す。仮想データベースドライバ1004Dがアクセス可能なローカルまたはリモートのファイルシステムにMYFILE1100が存在するものと仮定する。ステップ1102において、仮想データベースドライバ1004Dは、「MYFILE」の差分IDを指定するクエリ、ブロック番号1、およびブロックサイズ1000を受信する。クエリは、たとえばORM1004Bに由来する。場合によっては、ブロックサイズがクエリに含まれない。これは、仮想データベースドライバ1004Dに対して固定された設定の場合もあり得るためである。ステップ1104において、仮想データベースドライバ1004Dは、ファイルシステム(ローカルまたはリモート)においてMYFILEを位置特定し、ブロック番号およびブロックサイズを使用して、MYFILEのブロック1(第2のブロック)を構成するエントリ1000~1999を識別して読み出す。エントリの1つまたは複数の「列」(たとえば、ノードパス、動作、名称、先行値、現行値)にフィルタおよび/またはソートが適用される場合、ファイル中のデータは、エントリの識別に先立って、これに応じたフィルタリングおよび/またはソートがなされる。ステップ1106において、仮想データベースドライバ1004Dは、これらのエントリを受信する。ステップ1108において、仮想データベースドライバ1004Dは、クエリに応答して、これらのエントリを提供する。
【0214】
これらの実施形態において、リストコンポーネント、バックエンドウェブサービス、およびORMのインターフェースは、従来のデータベーステーブルに対するクエリと大きくは変わらない。これらのインターフェースを大きな変更なく維持することは、欠陥を招来するリスクを抑えつつ、後方互換性を促進する。
【0215】
さらに、ユーザの利便性およびシステム性能のため、ユーザインターフェースコンポーネント(リストコンポーネント等)は通常、一度に表示するエントリの数を無制限とはしない。たとえば、リストコンポーネントによるエントリのページネーションによって、クライアント機器グラフィカルユーザインターフェースには、一度にわずかな固定数(たとえば、10、25、50、100個等)しか表示されないようにしてもよい。このため、ブロックサイズが1000の場合、リストコンポーネントは、それぞれが100個のエントリから成る10ページのいずれか1つを表示するようにしてもよい。
【0216】
種々実施形態において、ページネーションは、ブロックにロード可能な数よりも多いエントリが存在する場合に、ロードされたブロックと相互作用する。差分IDにこのような追加エントリが存在する場合は、100ページのうち最初の10ページ以降をページ分割する次のグラフィカルユーザインターフェースリクエストを処理するため、ブロックの最大1000個のエントリ(例)が再ロード/置換されるようになっていてもよい。実際には、ステートフルなトランザクションごとに(ただし、1人または複数人のユーザからの複数のリクエストが同時に混在することはない)、および/または、グラフィカルユーザインターフェースリクエスト要求の必要に応じて、ブロックを仮想テーブルメモリに再ロードすることができる。1ブロック当たりが1000エントリに制限されている場合でも、ページネーション制御は独立して、10,000個等のより多くのエントリが存在することを把握可能であり、グラフィカルユーザインターフェースのページオプションを100ページのうちの最初の10ページだけに制限することはない。このため、11ページを選択すると、仮想テーブルメモリに異なるブロックが再ロードされる。また、仮想テーブルドライバは、グラフィカルユーザインターフェースがその時点でリスト(要求ブロックサイズ)に100エントリしか表示していないことを理解し、最大1000エントリのメモリ制限までメモリを満たし続けるのではなく、当該グラフィカルユーザインターフェースのトランザクションに必要な100エントリだけをロードするようにしてもよい。
【0217】
カスタムページネーション制御により、いくつかの実施形態では、バックエンドウェブサービス1004A/ORM1004B/仮想データベースドライバ1004Dの通常のチャネルを通じたエントリの合計カウントの読み取りを回避することができる。その代わりに、カスタムページネーション制御では、現在のリストフィルタのエントリの総カウントを生成し、ページ数を計算し、ユーザが表示している現在のページを追跡し得る別のウェブサービス(たとえば、ページネーションバックエンドサービス)に問い合わせるようにしてもよい。
【0218】
ページネーションサービスでは、差分ID、リストコンポーネントにおいて現在アクティブの各種フィルタおよびフィルタ値、ならびに/またはリストコンポーネントにおいて現在使用されているリストページサイズを入力として受信するようにしてもよい。これらの入力は、いずれかがグラフィカルユーザインターフェースにおいて変化するたびに更新され、別のページネーションサービスが呼び出される。それと引き換えに、ページネーション制御では、リストのバックエンドへのクエリのため、現在選択されているページをリストコンポーネントに提供するとともに、入力が変化した場合はページ1にリセットする。ページネーションサービスでは、差分IDからファイルを決定して、フィルタを適用することができる。その後、ページネーションサービスでは、エントリを仮想テーブルメモリにロードするのではなく、反復カウントを呼び出すことによって、フィルタリングされたエントリの総カウントを取得するようにしてもよい。その後、ページネーションサービスでは、エントリの総カウントをリストページサイズの入力で除算して切り上げ、(任意のフィルタが適用されている)総カウントおよびこの切り上げられたページ数を返す。
【0219】
一例を図12に示す。クライアントグラフィカルユーザインターフェース1200は、差分比較情報をリストコンポーネントに表示する。この情報は、リストバックエンドサービス1004A-1、ORM1004B、およびウェブサーバ1004の仮想データベースドライバ1004Dによって読み出される。図示のように、仮想データベースドライバ1004Dは、ファイルシステム1202から、関連する差分ID(ファイル)のブロックをメインメモリに読み出す。また、リストコンポーネントがページネーションバックエンドサービス1004A-2と通信する並列チャネルが存在する。ページネーションバックエンドサービス1004A-2では、現在メインメモリにあるブロックおよび/またはファイルシステム1202に格納された差分ID(ファイル)のブロックから、ページ数および/または現在のページ番号を決定し、クライアントグラフィカルユーザインターフェース1200で表示または強調する。
【0220】
E.例示的なオペレーション
図13は、例示的な一実施形態を示したフローチャートである。図13により示されるプロセスは、コンピュータ機器100等のコンピュータ機器および/またはサーバクラスタ200等のコンピュータ機器のクラスタにより実行されるようになっていてもよい。ただし、このプロセスは、他種の機器または機器サブシステムによっても実行可能である。たとえば、このプロセスは、リモートネットワーク管理プラットフォームまたはラップトップもしくはタブレット機器等の携帯型コンピュータの演算インスタンスにより実行することも可能である。
【0221】
図13の実施形態は、そこに示される特徴のいずれか1つまたは複数を除去することによって簡略化することができる。さらに、これらの実施形態は、その他の特徴のいずれかあるいは本明細書に記載の特徴、態様、および/または実施態様と組み合わされるようになっていてもよい。
【0222】
ブロック1300は、ウェブサーバアプリケーションにおいて、ファイル、ファイル内のデータブロックのブロック数、およびブロックサイズを指定するクエリを受信することであり、ファイルが、設定データのスナップショット間の差分を表すエントリを含む、ことを含んでいてもよい。
【0223】
ブロック1302は、ブロックサイズに基づいて、ファイル内のデータブロックを識別することを含んでいてもよい。
【0224】
ブロック1304は、ウェブサーバアプリケーションがアクセス可能な非一時的メモリにブロックを格納することを含んでいてもよい。
【0225】
ブロック1306は、クエリに応答して、ウェブサーバアプリケーションにより、グラフィカルユーザインターフェースのリストコンポーネントにおける表示用にフォーマットされたブロック内の一組のエントリを送信することを含んでいてもよい。
【0226】
いくつかの実施形態において、ファイルは、エントリを含む1つまたは複数のファイルのうちの1つである。
【0227】
いくつかの実施形態において、ファイル内のデータブロックを識別することは、ブロックサイズに基づいて、ブロックが位置特定されるまでファイル内を反復することを含む。
【0228】
いくつかの実施形態において、クエリは、エントリに適用されるフィルタも指定する。これらの実施形態は、ファイル内の反復の前に、フィルタをエントリに適用することをさらに含んでいてもよい。実際には、フィルタが適用されるものの、反復ループの一部として遅延評価される可能性がある。これは、たとえばファイル全体をフィルタリングする前の反復時に初めてブロック制限に達した場合に、ファイル全体を常に反復してファイルの最後までフィルタリングする必要がないようにするためである。このプロセスでは、エントリを読み取り、エントリのフィルタをテストし、エントリを保持または破棄した後、次のエントリを反復することも可能である。この粒度では、各反復ステップの前にフィルタが適用されるものの、反復が開始となる前にすべてのフィルタリングが完了するわけではない。これは、反復の開始前にすべてのソートが完了している必要があるか、または、ソートされていないエントリに対して反復が行われるソートとは対照的である。
【0229】
いくつかの実施形態において、クエリは、エントリに適用されるソート演算も指定する。これらの実施形態は、ファイル内の反復の前に、ソート演算をエントリに適用することをさらに含んでいてもよい。
【0230】
いくつかの実施形態において、一組のエントリには、1つまたは複数のエントリを含む。場合によっては、フィルタが考え得るすべてのエントリを除外した場合、または、スナップショットが空のツリーであり、比較によって空のファイルが生成された場合に、空の一組を返すことも可能である。
【0231】
いくつかの実施形態において、ファイルは、設定データの2つの特定のスナップショット間の差分と関連付けられた一意の識別子により指定される。
【0232】
いくつかの実施形態において、リストコンポーネントは、他の複数組のエントリをブロック内にロードして表示するページネーションボタンを備えたテーブル形式で一組のエントリを表示する。
【0233】
これらの実施形態は、ウェブサーバアプリケーションにおいて、別の一組のエントリをリストコンポーネントにロードする別のクエリを受信することと、別の一組のエントリが、ファイルの別のブロック内のエントリを含むものと判定することと、ブロックサイズに基づいて、ファイル内の別のブロックを識別することと、別のブロックを非一時的メモリに格納することと、別のクエリに応答して、ウェブサーバアプリケーションにより、リストコンポーネントにおける表示用にフォーマットされた別のブロック内のエントリを送信することと、をさらに含んでいてもよい。
【0234】
いくつかの実施形態において、別のブロックを非一時的メモリに格納することは、ブロックを別のブロックで置き換えることを含む。
【0235】
いくつかの実施形態において、エントリはそれぞれ、設定データ内の設定可能な設定に関連しており、パス、動作、名称、ならびにスナップショットのうちの先行スナップショットからの設定の先行値およびスナップショットのうちの現行スナップショットからの設定の現行値の一方もしくは両方を含む。
【0236】
いくつかの実施形態において、リストコンポーネントにおける表示用にフォーマットされたブロック内の一組のエントリを送信することは、エントリごとに、リストコンポーネントの行において、各パス、各動作、各名称、ならびに先行値および現行値の一方もしくは両方への入力を行うことを含む。
【0237】
いくつかの実施形態において、エントリのうちの特定の1つは、設定可能な設定が追加されたことを示す特定の動作を含み、先行値がヌルであり、現行値がヌルではない。
【0238】
いくつかの実施形態において、エントリのうちの特定の1つは、設定可能な設定が削除されたことを示す特定の動作を含み、先行値がヌルではなく、現行値がヌルである。
【0239】
いくつかの実施形態において、エントリのうちの特定の1つは、設定可能な設定が編集されたことを示す特定の動作を含み、先行値がヌルではなく、現行値もヌルではない。
【0240】
いくつかの実施形態において、ファイルは、エントリをデータベース構造に格納する代わりに使用される。
【0241】
いくつかの実施形態において、非一時的メモリは、揮発性メインメモリである。
【0242】
いくつかの実施形態において、ブロックサイズは、エントリの100~5000個の範囲である。
【0243】
VIII.結論
本開示は、種々態様の説明を意図した本願に記載の特定の実施形態の観点で限定されるものではない。当業者には明らかなように、その範囲から逸脱することなく、多くの改良および変形が可能である。以上の説明から、本明細書に記載したもののほか、本開示の範囲内の機能的に同等な方法および装置が当業者には明らかとなるであろう。このような改良および変形についても、添付の特許請求の範囲に含まれることになる。
【0244】
上記詳細な説明では、添付の図面を参照しつつ、開示のシステム、機器、および方法のさまざまな特徴および動作を記述している。本明細書および図面に記載の例示的な実施形態は、何ら限定を意味するものではない。本明細書に提示の主題の範囲から逸脱することなく、他の実施形態を利用可能であるとともに、他の変更を加えることができる。本明細書の全体に記載するとともに図面に示すような本開示の態様は、多種多様な異なる構成での配置、置換、結合、分離、および設計が可能であることが容易に了解される。
【0245】
図中のメッセージフロー図、シナリオ、およびフローチャートのいずれかまたはすべてに関して、本明細書に論じる通り、各ステップ、ブロック、および/または通信は、例示的な実施形態に係る情報の処理および/または情報の伝送を表し得る。これらの例示的な実施形態の範囲には、代替実施形態が含まれる。これらの代替実施形態において、たとえば、ステップ、ブロック、伝送、通信、リクエスト、応答、および/またはメッセージとして記述された動作は、関与する機能に応じて、図示または説明の順序から外れて実行可能である(実質的に同時または逆順を含む)。さらに、本明細書に論じるメッセージフロー図、シナリオ、およびフローチャートのいずれにおいても、使用するブロックおよび/または動作の数を増やすことも減らすことも可能であり、これらのメッセージフロー図、シナリオ、およびフローチャートの一部または全部を相互に結合可能である。
【0246】
情報の処理を表すステップまたはブロックは、本明細書に記載の方法または技術の特定の論理的機能を実行するように構成され得る回路に対応可能である。この代替または追加として、情報の処理を表すステップまたはブロックは、プログラムコード(関連データを含む)のモジュール、セグメント、または一部に対応可能である。プログラムコードは、上記方法または技術における特定の論理的操作または動作を実行するためにプロセッサによって実行可能な1つまたは複数の命令を含み得る。プログラムコードおよび/または関連データは、RAM、ディスクドライブ、半導体ドライブ、または別の記憶媒体を含む記憶装置等の如何なる種類のコンピュータ可読媒体にも格納可能である。
【0247】
また、コンピュータ可読媒体には、レジスタメモリおよびプロセッサキャッシュ等、データを短期間にわたって格納する非一時的コンピュータ可読媒体等の非一時的コンピュータ可読媒体を含み得る。非一時的コンピュータ可読媒体には、プログラムコードおよび/またはデータを長期間にわたって格納する非一時的コンピュータ可読媒体をさらに含み得る。したがって、非一時的コンピュータ可読媒体には、たとえばROM、光もしくは磁気ディスク、半導体ドライブ、またはコンパクトディスクリードオンリーメモリ(CD-ROM)等の二次的または永続的な長期ストレージを含み得る。また、非一時的コンピュータ可読媒体としては、その他任意の揮発性または不揮発性記憶システムも可能である。非一時的コンピュータ可読媒体は、たとえばコンピュータ可読記憶媒体または有形の記憶装置と考えられる。
【0248】
さらに、1つまたは複数の情報伝送を表すステップまたはブロックは、同じ物理的機器におけるソフトウェアおよび/またはハードウェアモジュール間の情報伝送に対応し得る。ただし、他の情報伝送としては、異なる物理的機器におけるソフトウェアモジュールおよび/またはハードウェアモジュール間も可能である。
【0249】
図面に示す特定の配置は、何ら限定的なものと捉えるべきではない。他の実施形態では、所与の図面に示す各要素の数を増やすことも減らすことも可能であることが了解されるものとする。さらに、図示の要素の一部の結合も可能であるし、省略も可能である。さらには、図面に示していない要素を例示的な一実施形態が含むことも可能である。
【0250】
本明細書においては、種々態様および実施形態を開示しているが、当業者には他の態様および実施形態も明らかとなるであろう。本明細書に開示の種々態様および実施形態は、例示を目的としたものであって、何ら限定を意図せず、真の範囲は以下の特許請求の範囲により示される。
【符号の説明】
【0251】
101 コンピュータ機器
102 プロセッサ
104 メモリ
104A ファームウェア
104B カーネル
104C アプリケーション
106 ネットワークインターフェース
108 入力/出力ユニット
110 システムバス
200 サーバクラスタ
202 サーバ機器
204 データストレージ
206 ルータ
208 ローカルクラスタネットワーク
210 通信リンク
212 ネットワーク
300 マネージドネットワーク
302 クライアント機器
304 サーバ機器
306 ルータ
308 仮想マシン
310 ファイアウォール
312 プロキシサーバ
320 リモートネットワーク管理プラットフォーム
322 演算インスタンス
324 演算インスタンス
326 演算インスタンス
328 演算インスタンス
340 パブリッククラウドネットワーク
350 インターネット
400A データセンタ
400B データセンタ
402A VPNゲートウェイ
402B VPNゲートウェイ
404A ファイアウォール
404B ファイアウォール
406A 負荷分散器
406B 負荷分散器
410 設定項目
412 VPNゲートウェイ
414 ユーザ
416 リモートユーザ
500 CMDB
502 タスクリスト
504 機器
506 機器
508 機器
510 機器
512 機器
514 IRE
600 アプリケーション/サービス設定
602 ミドルウェア設定
604 クラウドベースリソース設定
606 インフラ設定
608 ファイル
610 レポジトリ
612 集中設定データモデル
700 リスト
702 スナップショット
710 ウェブインターフェース
712 識別された問題
714 設定項目
716 根本原因
720 ユーザインターフェース
722 スナップショット展開タイムライン
724 基準スナップショット
726 対象スナップショット
730 ユーザインターフェース
732 ペイン
734 ペイン
736 動作
738 名称
740 基準スナップショット値
742 対象スナップショット値
750 ユーザインターフェース
760 ユーザインターフェース
900 部分的差分比較ファイル
902 リーフノード
904 リーフノード
1002 クライアント機器グラフィカルユーザインターフェース
1004 ウェブサーバ
1004A バックエンドウェブサービス
1004A-1 リストバックエンドサービス
1004A-2 ページネーションバックエンドサービス
1004B ORM
1004C データベースドライバ
1004D 仮想データベースドライバ
1006 データベース
1008 仮想テーブル
1010 データベースクエリ
1012 データベースクエリ
1014 データベースクエリ
1016 データベースクエリ
1018 データベース応答
1020 データベース応答
1022 データベース応答
1024 データベース応答
1026 仮想テーブルクエリ
1028 仮想テーブルクエリ
1030 仮想テーブルクエリ
1032 仮想テーブルクエリ
1034 仮想テーブル応答
1036 仮想テーブル応答
1038 仮想テーブル応答
1040 仮想テーブル応答
1100 MYFILE
1200 クライアントグラフィカルユーザインターフェース
1202 ファイルシステム
図1
図2
図3
図4
図5
図6A
図6B
図6C
図7A
図7B
図7C
図7D
図7E
図7F
図8
図9
図10
図11
図12
図13
【外国語明細書】