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

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

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

特表2025-505374ネスト化リクエスト-応答プロトコルネットワーク通信
<>
  • 特表-ネスト化リクエスト-応答プロトコルネットワーク通信 図1
  • 特表-ネスト化リクエスト-応答プロトコルネットワーク通信 図2
  • 特表-ネスト化リクエスト-応答プロトコルネットワーク通信 図3
  • 特表-ネスト化リクエスト-応答プロトコルネットワーク通信 図4
  • 特表-ネスト化リクエスト-応答プロトコルネットワーク通信 図5A
  • 特表-ネスト化リクエスト-応答プロトコルネットワーク通信 図5B
  • 特表-ネスト化リクエスト-応答プロトコルネットワーク通信 図6
  • 特表-ネスト化リクエスト-応答プロトコルネットワーク通信 図7
  • 特表-ネスト化リクエスト-応答プロトコルネットワーク通信 図8
  • 特表-ネスト化リクエスト-応答プロトコルネットワーク通信 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-02-26
(54)【発明の名称】ネスト化リクエスト-応答プロトコルネットワーク通信
(51)【国際特許分類】
   G06F 8/70 20180101AFI20250218BHJP
   H04L 67/133 20220101ALI20250218BHJP
【FI】
G06F8/70
H04L67/133
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024543128
(86)(22)【出願日】2022-12-09
(85)【翻訳文提出日】2024-09-18
(86)【国際出願番号】 US2022081267
(87)【国際公開番号】W WO2023140988
(87)【国際公開日】2023-07-27
(31)【優先権主張番号】17/579,964
(32)【優先日】2022-01-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.HDMI
2.PYTHON
3.イーサネット
(71)【出願人】
【識別番号】518249328
【氏名又は名称】サービスナウ, インコーポレイテッド
【氏名又は名称原語表記】ServiceNow, Inc.
(74)【代理人】
【識別番号】100103610
【弁理士】
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100119013
【弁理士】
【氏名又は名称】山崎 一夫
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【弁理士】
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100141553
【弁理士】
【氏名又は名称】鈴木 信彦
(72)【発明者】
【氏名】ワプリントン ブライアン ジェイムス
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BC07
5B376BC21
5B376BC38
5B376DA05
5B376DA26
5B376FA13
(57)【要約】
コントローラコンピュータ機器は、1つまたは複数のプロセッサと、コントローラコンピュータ機器の機能を表すコントローラデータを含むメモリと、を備えていてもよい。1つまたは複数のプロセッサは、リクエスト-応答プロトコルの第1のインスタンス上で、コントローラデータを含むコントローラリクエストをエージェントコンピュータ機器に送信するように構成されていてもよい。そして、コントローラコンピュータ機器は、エージェントコンピュータ機器から、リクエスト-応答プロトコルの第2のインスタンス上で、エージェントリクエストを受信するようにしてもよい。エージェントリクエストは、エージェントコンピュータ機器の機能を表すエージェントデータを含んでいてもよい。コントローラコンピュータ機器は、エージェントデータをメモリに格納し、リクエスト-応答プロトコルの第2のインスタンス上で、エージェントリクエストの受信を確認するコントローラ応答をエージェントコンピュータ機器に送信するようにしてもよい。そして、コントローラコンピュータ機器は、エージェントコンピュータ機器から、リクエスト-応答プロトコルの第1のインスタンス上で、コントローラリクエストの受信を確認するエージェント応答を受信するようにしてもよい。
【特許請求の範囲】
【請求項1】
コントローラコンピュータ機器であって、
前記コントローラコンピュータ機器の機能を表すコントローラデータを含むメモリと、
リクエスト-応答プロトコルの第1のインスタンス上でコントローラリクエストをエージェントコンピュータ機器に送信することであり、前記コントローラリクエストは前記コントローラデータを含む、送信することと、
前記コントローラリクエストを送信した後、前記エージェントコンピュータ機器から、前記リクエスト-応答プロトコルの第2のインスタンス上でエージェントリクエストを受信することであり、前記エージェントリクエストは、前記エージェントコンピュータ機器の機能を表すエージェントデータを含む、受信することと、
前記エージェントデータの少なくとも一部を前記メモリに格納することと、
前記リクエスト-応答プロトコルの前記第2のインスタンス上で、前記エージェントリクエストに対するコントローラ応答を前記エージェントコンピュータ機器に送信することであり、前記コントローラ応答が、前記エージェントリクエストの受信を確認する、送信することと、
前記コントローラ応答を送信した後、前記エージェントコンピュータ機器から、前記リクエスト-応答プロトコルの前記第1のインスタンス上で、エージェント応答を受信することであり、前記エージェント応答が、前記コントローラリクエストの受信を確認する、受信することと、
を行うように構成されている1つまたは複数のプロセッサと、
を備える、コントローラコンピュータ機器。
【請求項2】
前記1つまたは複数のプロセッサが、
前記コントローラリクエストの送信および前記エージェント応答の受信に関連する動作の第1の実行スレッドを確立することと、
前記エージェントリクエストの受信および前記コントローラ応答の送信に関連する動作の第2の実行スレッドを確立することと、
を行うようにさらに構成されている、請求項1に記載のコントローラコンピュータ機器。
【請求項3】
前記コントローラリクエストが、前記コントローラデータに関連するエージェント動作の前記エージェントコントローラ機器による実行のインディケーションをさらに含み、
前記エージェントリクエストが、前記エージェント動作のステータスをさらに含む、請求項1に記載のコントローラコンピュータ機器。
【請求項4】
前記コントローラリクエストが、前記コントローラコンピュータ機器の前記機能と互換性があるおよび/または同期する前記エージェントコンピュータ機器の前記機能の部分集合を前記エージェントコントローラ機器に決定させるように構成されている、請求項1に記載のコントローラ機器。
【請求項5】
前記エージェントリクエストが、前記コントローラコンピュータ機器の前記機能と互換性があるおよび/または同期する前記エージェントコンピュータ機器の前記機能の部分集合のインディケーションをさらに含む、請求項1に記載のコントローラコンピュータ機器。
【請求項6】
前記メモリに格納される前記エージェントデータの前記少なくとも一部が、前記エージェントコンピュータ機器の前記機能の前記部分集合と関連付けられているデータを含む、請求項5に記載のコントローラコンピュータ機器。
【請求項7】
前記1つまたは複数のプロセッサが、
前記エージェントリクエストにおける前記インディケーションに基づいて、前記コントローラコンピュータの前記機能の対応する部分集合を前記エージェントコンピュータ機器の前記機能の前記部分集合と同期させるおよび/または互換性があるようにするようにさらに構成されている、請求項5に記載のコントローラ機器。
【請求項8】
エージェントコンピュータ機器であって、
前記エージェントコンピュータ機器の機能を表すエージェントデータを含むメモリと、
コントローラコンピュータ機器から、リクエスト-応答プロトコルの第1のインスタンス上でコントローラリクエストを受信することであり、前記コントローラリクエストは、前記コントローラコンピュータ機器の機能を表すコントローラデータを含む、受信することと、
前記コントローラデータの少なくとも一部を前記メモリに格納することと、
前記コントローラリクエストを受信した後、前記リクエスト-応答プロトコルの第2のインスタンス上でエージェントリクエストを前記コントローラコンピュータ機器に送信することであり、前記エージェントリクエストは前記エージェントデータの少なくとも一部を含む、送信することと、
前記コントローラコンピュータ機器から、前記リクエスト-応答プロトコルの前記第2のインスタンス上で、前記エージェントリクエストに対するコントローラ応答を受信することであり、前記コントローラ応答が、前記エージェントリクエストの受信を確認する、受信することと、
前記コントローラ応答を受信した後、前記リクエスト-応答プロトコルの前記第1のインスタンス上で、エージェント応答を前記コントローラコンピュータ機器に送信することであり、前記エージェント応答が、前記コントローラリクエストの受信を確認する、送信することと、
を行うように構成されている1つまたは複数のプロセッサと、
を備える、エージェントコンピュータ機器。
【請求項9】
前記1つまたは複数のプロセッサが、
前記コントローラリクエストの受信および前記エージェント応答の送信に関連する動作の第1の実行スレッドを確立することと、
前記エージェントリクエストの送信および前記コントローラ応答の受信に関連する動作の第2の実行スレッドを確立することと、
を行うようにさらに構成されている、請求項8に記載のエージェントコンピュータ機器。
【請求項10】
前記コントローラリクエストが、前記コントローラデータに関連するエージェント動作の前記エージェントコントローラ機器による実行の指示をさらに含み、
前記1つまたは複数のプロセッサが、前記エージェント動作を実行するようにさらに構成され、
前記エージェントリクエストが、前記エージェント動作のステータスをさらに含む、請求項8に記載のエージェントコンピュータ機器。
【請求項11】
前記コントローラリクエストが、前記コントローラコンピュータ機器の前記機能と互換性があるおよび/または同期する前記エージェントコンピュータ機器の前記機能の部分集合を前記エージェントコントローラ機器に決定させるように構成されている、請求項8に記載のエージェントコンピュータ機器。
【請求項12】
前記エージェントリクエストが、前記コントローラコンピュータ機器の前記機能と互換性があるおよび/または同期する前記エージェントコンピュータ機器の前記機能の部分集合の指標をさらに含む、請求項8に記載のエージェントコンピュータ機器。
【請求項13】
前記メモリに格納される前記コントローラデータの前記少なくとも一部が、前記エージェントコンピュータ機器の前記機能の前記部分集合に対応する前記コントローラコンピュータ機器の前記機能の部分集合と関連付けられているデータを含む、請求項12に記載のエージェントコンピュータ機器。
【請求項14】
前記エージェントリクエストにおける前記インディケーションが、前記コントローラコンピュータ機器の前記機能の対応する部分集合を前記エージェントコンピュータ機器の前記機能の前記部分集合と同期させるおよび/または互換性があるようにすることを前記コントローラコンピュータ機器にさせるように構成されている、請求項12に記載のエージェントコンピュータ機器。
【請求項15】
コントローラコンピュータ機器から、リクエスト-応答プロトコルの第1のインスタンス上でコントローラリクエストをエージェントコンピュータ機器に送信することであり、前記コントローラリクエストは、前記コントローラコンピュータ機器の機能を表すコントローラデータを含む、送信することと、
前記コントローラリクエストを送信した後、前記エージェントコンピュータ機器から、前記リクエスト-応答プロトコルの第2のインスタンス上でエージェントリクエストを前記コントローラコンピュータ機器で受信することであり、前記エージェントリクエストは、前記エージェントコンピュータ機器の機能を表すエージェントデータを含む、受信することと、
前記エージェントデータの少なくとも一部を前記コントローラコンピュータ機器のメモリに格納することと、
前記コントローラコンピュータ機器から、前記リクエスト-応答プロトコルの前記第2のインスタンス上で、前記エージェントリクエストに対するコントローラ応答を前記エージェントコンピュータ機器に送信することであり、前記コントローラ応答が、前記エージェントリクエストの受信を確認する、送信することと、
前記コントローラ応答を送信した後、前記エージェントコンピュータ機器から、前記リクエスト-応答プロトコルの前記第1のインスタンス上で、エージェント応答を前記コントローラコンピュータ機器で受信することであり、前記エージェント応答が、前記コントローラリクエストの受信を確認する、受信することと、
を含む、方法。
【請求項16】
前記コントローラリクエストを前記エージェントコンピュータ機器で受信することと、
前記コントローラデータの少なくとも一部を前記エージェントコンピュータ機器のメモリに格納することと、
前記コントローラリクエストの受信に応答して、前記エージェントコンピュータ機器が、前記コントローラコンピュータ機器の前記機能と互換性があるおよび/または同期する前記エージェントコンピュータ機器の機能の部分集合を決定することと、
前記エージェントコンピュータ機器から、前記リクエスト-応答プロトコルの前記第2のインスタンス上で、前記エージェントリクエストを前記コントローラコンピュータ機器に送信することと、
をさらに含み、
前記エージェントリクエストが、前記エージェントコンピュータ機器の前記機能の前記決定された部分集合の指標をさらに含む、請求項15に記載の方法。
【請求項17】
前記コントローラコンピュータ機器の前記メモリに格納される前記エージェントデータの前記少なくとも一部が、前記エージェントコンピュータ機器の前記機能の前記決定された部分集合と関連付けられているデータを含み、
前記エージェントコンピュータ機器の前記メモリに格納される前記コントローラデータの前記少なくとも一部が、前記エージェントコンピュータ機器の前記機能の前記部分集合に対応する前記コントローラコンピュータ機器の前記機能の部分集合と関連付けられているデータを含み、
前記方法が、
前記コントローラコンピュータ機器が、前記エージェントリクエストにおける前記インディケーションに基づいて、前記コントローラコンピュータ機器の前記機能の対応する部分集合を前記エージェントコンピュータ機器の前記機能の前記部分集合と同期させることをさらに含む、請求項16に記載の方法。
【請求項18】
前記コントローラ応答を前記エージェントコンピュータ機器で受信することと、
前記コントローラ応答を前記エージェントコンピュータ機器で受信した後、前記エージェントコンピュータ機器から、前記リクエスト-応答プロトコルの前記第1のインスタンス上で、前記エージェント応答を前記コントローラコンピュータ機器に送信することと、
をさらに含む、請求項15に記載の方法。
【請求項19】
前記コントローラコンピュータ機器が、第1のコントローラ実行スレッド上で、前記リクエスト-応答プロトコルの前記第1のインスタンスの動作を実行し、第2のコントローラ実行スレッド上で、前記リクエスト-応答プロトコルの前記第2のインスタンスの動作を実行することと、
前記エージェントコンピュータ機器が、第1のエージェント実行スレッド上で、前記リクエスト-応答プロトコルの前記第1のインスタンスの動作を実行し、第2のエージェント実行スレッド上で、前記リクエスト-応答プロトコルの前記第2のインスタンスの動作を実行することと、
をさらに含む、請求項15に記載の方法。
【請求項20】
前記リクエスト-応答プロトコルが、REST(Representational State Transfer)に準拠する通信プロトコルおよび/またはREST上でモデル化された通信プロトコルを含む、請求項15に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2022年1月20日に出願された米国特許出願第17/579,964号の優先権を主張するものであり、そのすべての内容を本明細書に援用する。
【背景技術】
【0002】
リモートネットワーク管理プラットフォームの形態は、ユーザ、特に、企業等のマネージドネットワークのオペレータにサービス型アプリケーションプラットフォーム(aPaaS)サービスを提供するホストされた環境の形態であってもよい。このようなサービスの形態は、リモートネットワーク管理プラットフォームの演算インスタンスを通じて企業ならびにその内部および外部の両ユーザがアクセスし得るウェブベースのポータルおよび/またはソフトウェアアプリケーションの形態であってもよい。
【0003】
マネージドネットワーク環境において、リモートネットワーク管理プラットフォームのサービスおよびインターフェースの管理には通常、複数のコンピュータ機器およびシステムにまたがるソフトウェアアプリケーションおよび関連するデータの調整および保守を伴う。この調整および保守の一態様は、サービスが実行、提供、および消費されるネットワーク機器間の互換性の促進に役立つバージョン管理および更新に関連する。
【発明の概要】
【0004】
本明細書の例示的な実施形態は、マネージドネットワークの複数のコンピュータ機器およびシステムにまたがるソフトウェアアプリケーションおよびデータのバージョンおよび/または更新情報の調整および保守を強化するためのシステムおよび方法を提供する。より詳細には、2つ以上のネットワーク化コンピュータ機器またはシステム間でアプリケーションまたはサービスが実行される場合に、適正な実行が少なくとも部分的には、ソフトウェアバージョンおよび/または関連するデータの互換性に依存し得る。たとえば、2つ以上のコンピュータ機器間で更新またはアップグレードのスケジュールが異なることにより、非互換性が生じ得る。2つ以上の機器間で同期していないソフトウェアバージョンおよび/または関連するデータの考え得るインスタンスに対応するため、これらの機器は、さまざまな通信によって、互いのバージョンステータスを検出し、互換性を保証および/または調整する措置を講じることができる。このような通信は、互換性のあるアプリケーション機能および/または関連するデータのベースラインを2つ以上の機器が確立できるようにする検出の一形態として機能し得る。通信には、たとえば識別された一組のアプリケーションまたはサービスに関する各機器機能の機能データおよび/または他の指標の交換を伴い得る。ネットワークベースのアプリケーションの通常のシナリオには、クライアントとサーバとの間の通信を含み得るが、たとえば2つ以上のサーバ間またはコントローラとエージェントとの間の通信等、他の構成も可能である。
【0005】
マネージドネットワーク、一般的には、ネットワークベースのアプリケーションの背景においては、ソフトウェアアプリケーションおよび関連するデータのサポートに用いられる通信プロトコルが広く採用および実施されている。ただし、ソフトウェアアプリケーションの実行および/または関連するデータの使用/適用を担うコンピュータ機器およびシステム間の機能の調整を含む動作に対しては、これらの同じプロトコルが制約にもなり得る。より具体的には、ウェブベースおよび他のネットワークベースのアプリケーションは通常、リクエスト-応答プロトコルの個々のインスタンスを使用することにより、命令および/またはデータを非同期で伝達し得る。2つの機器の機能の調整等の動作の場合、機器上のプロセスの非同期性によって、これら2つの機器は、それぞれの機能状態の調節が正しいことおよび/または調節に成功したことを判定するのが困難となり得る。
【0006】
非トランザクションプロトコルの一般的かつ広く採用されているアーキテクチャスタイルが周知の「REST」(「Representational State Transfer」)モデルである。また、RESTに従うプロトコルの非限定的な一例が、広く使用されている「ハイパーテキスト転送プロトコル」(「HTTP」)である。リクエストおよび応答の個々のインスタンスが一般的に、ウェブベースおよびネットワークベースのアプリケーションの動作のサポートに適する(たとえばRESTおよびHTTPの場合は、相当な「組み込み」がなされる)一方、単一インスタンスのリクエスト-応答通信では、機能の調整に関わるトランザクションタスクに適さない可能性がある。これらの欠陥は、機能の検出および調整に動作遅延等の非効率性をもたらし得る。
【0007】
既存の広く採用されているプロトコルの欠陥に対処する一手法としては、2つ以上のネットワーク化コンピュータ機器の機能を調整するトランザクションの性質を具体的に対象とする新たなプロトコルを設計および/または開発することも可能である。ただし、本発明者は、既存のプロトコルの欠陥に対処することを目的としているにも関わらず、既存の広く採用されている業界標準の通信プロトコルを当初未確認の新たなプロトコルで置き換えることの受け入れに対する潜在的に高い障壁によって、置き換えの手法が非現実的あるいは望ましくないものとなり得ることを認識した。代わりに、本発明者は、ネットワーク化機器の機能の調整および/または同期に十分適するトランザクション通信をサポートするように既存のリクエスト-応答プロトコルを適応させることによって互換性のある動作を保証するための新規技術を考案した。したがって、本明細書の例示的な実施形態は、ステートフルなトランザクションを非トランザクション通信に導入するようなリクエスト-応答通信のネスト化のためのシステムおよび方法を提供する。
【0008】
本明細書の例示的な実施形態については、ネットワークまたは通信システムにより通信結合された2つのコンピュータ機器またはシステムによって実行されるネットワークベースのアプリケーションおよびサービスに関して記載する。ネットワークベースのアプリケーションには、ウェブベースのアプリケーションを含み得るが、2つのコンピュータ機器間の調整および/または通信にて実行される他種のアプリケーションを含むことも可能である。通信用コンピュータ機器の非限定的な一例としては、クライアントおよびサーバ、ならびに/または、コントローラコンピュータ機器およびエージェントコンピュータ機器が挙げられる。いくつかのシナリオにおいては、コントローラコンピュータ機器としてサーバも可能であり、エージェントコンピュータ機器としてクライアントも可能である。ただし、2つのサーバもしくはネットワーク機器、2つのクライアント、ならびに他のピアツーピア構成間等、他の構成も同様に可能である。本明細書においては、説明を目的としつつ一例として、ネスト化リクエスト-応答プロトコル通信の例示的な実施形態に含まれる2つのコンピュータ機器をコントローラコンピュータ機器およびエージェントコンピュータ機器とする。これは、2つ以上のコンピュータ機器の他の考え得る構成に関する制限と捉えるべきものではない。
【0009】
したがって、第1の例示的な実施形態は、コントローラコンピュータ機器であって、当該コントローラコンピュータ機器の機能を表すコントローラデータを含むメモリと、リクエスト-応答プロトコルの第1のインスタンス上でコントローラリクエストをエージェントコンピュータ機器に送信することであり、コントローラリクエストはコントローラデータを含む、送信することと、コントローラリクエストを送信した後、エージェントコンピュータ機器から、リクエスト-応答プロトコルの第2のインスタンス上でエージェントリクエストを受信することであり、エージェントリクエストは、エージェントコンピュータ機器の機能を表すエージェントデータを含む、受信することと、エージェントデータの少なくとも一部をメモリに格納することと、リクエスト-応答プロトコルの第2のインスタンス上で、エージェントリクエストに対するコントローラ応答をエージェントコンピュータ機器に送信することであり、コントローラ応答が、エージェントリクエストの受信を確認する、送信することと、コントローラ応答を送信した後、エージェントコンピュータ機器から、リクエスト-応答プロトコルの第1のインスタンス上で、エージェント応答を受信することであり、エージェント応答が、コントローラリクエストの受信を確認する、受信することと、を行うように構成されている1つまたは複数のプロセッサと、を備える、コントローラコンピュータ機器を含んでいてもよい。
【0010】
第2の例示的な実施形態は、エージェントコンピュータ機器であって、当該エージェントコンピュータ機器の機能を表すエージェントデータを含むメモリと、コントローラコンピュータ機器から、リクエスト-応答プロトコルの第1のインスタンス上でコントローラリクエストを受信することであり、コントローラリクエストは、コントローラコンピュータ機器の機能を表すコントローラデータを含む、受信することと、コントローラデータの少なくとも一部をメモリに格納することと、コントローラリクエストを受信した後、リクエスト-応答プロトコルの第2のインスタンス上でエージェントリクエストをコントローラコンピュータ機器に送信することであり、エージェントリクエストはエージェントデータの少なくとも一部を含む、送信することと、コントローラコンピュータ機器から、リクエスト-応答プロトコルの第2のインスタンス上で、エージェントリクエストに対するコントローラ応答を受信することであり、コントローラ応答が、エージェントリクエストの受信を確認する、受信することと、コントローラ応答を受信した後、リクエスト-応答プロトコルの第1のインスタンス上で、エージェント応答をコントローラコンピュータ機器に送信することであり、エージェント応答が、コントローラリクエストの受信を確認する、送信することと、を行うように構成されている1つまたは複数のプロセッサと、を備える、エージェントコンピュータ機器を含んでいてもよい。
【0011】
第3の例示的な実施形態は、コントローラコンピュータ機器から、リクエスト-応答プロトコルの第1のインスタンス上でコントローラリクエストをエージェントコンピュータ機器に送信することであり、コントローラリクエストは、コントローラコンピュータ機器の機能を表すコントローラデータを含む、送信することと、コントローラリクエストを送信した後、エージェントコンピュータ機器から、リクエスト-応答プロトコルの第2のインスタンス上でエージェントリクエストをコントローラコンピュータ機器で受信することであり、エージェントリクエストは、エージェントコンピュータ機器の機能を表すエージェントデータを含む、受信することと、エージェントデータの少なくとも一部をコントローラコンピュータ機器のメモリに格納することと、コントローラコンピュータ機器から、リクエスト-応答プロトコルの第2のインスタンス上で、エージェントリクエストに対するコントローラ応答をエージェントコンピュータ機器に送信することであり、コントローラ応答が、エージェントリクエストの受信を確認する、送信することと、コントローラ応答を送信した後、エージェントコンピュータ機器から、リクエスト-応答プロトコルの第1のインスタンス上で、エージェント応答をコントローラコンピュータ機器で受信することであり、エージェント応答が、コントローラリクエストの受信を確認する、受信することと、を含む方法を含んでいてもよい。
【0012】
第4の例示的な実施形態において、製造品は、コンピュータシステムのコントローラコンピュータ機器による実行によって、第1および/または第2の例示的な実施形態に記載の動作をコンピュータシステムに実行させるプログラム命令が格納された非一時的コンピュータ可読媒体を含んでいてもよい。
【0013】
第4の例示的な実施形態において、コンピュータシステムは、少なくとも1つのプロセッサのほか、メモリおよびプログラム命令を備えていてもよい。プログラム命令は、メモリに格納され、少なくとも1つのプロセッサによる実行の際に、第1および/または第2の例示的な実施形態に記載の動作をコンピュータシステムに実行させるようにしてもよい。
【0014】
第5の例示的な実施形態において、システムは、第1、第2および/または第3の例示的な実施形態の動作それぞれを実行するためのさまざまな手段を備えていてもよい。
【0015】
当業者には、必要に応じて添付の図面を参照しつつ、以下の詳細な説明を読むことにより、上記および他の実施形態、態様、利点、および代替案が明らかとなるであろう。さらに、本概要ならびに本明細書に記載の他の説明および図面は、一例として実施形態を示す意図しかないため、多くの変形例が可能である。たとえば、構造要素およびプロセスステップについて、特許請求の範囲のような実施形態の範囲内に維持しつつ、再配置、結合、分配、除去、あるいは変更を加えることができる。
【図面の簡単な説明】
【0016】
図1】例示的な実施形態に係る、コンピュータ機器の模式図である。
図2】例示的な実施形態に係る、サーバ機器クラスタの模式図である。
図3】例示的な実施形態に係る、リモートネットワーク管理アーキテクチャを示した図である。
図4】例示的な実施形態に係る、リモートネットワーク管理アーキテクチャを含む通信環境を示した図である。
図5A】例示的な実施形態に係る、リモートネットワーク管理アーキテクチャを含む別の通信環境を示した図である。
図5B】例示的な実施形態に係る、フローチャートである。
図6】例示的な実施形態に係る、2つの例示的な機器の例示的な機器機能データおよび互換性構成を示す図である。
図7】2つの例示的な機器間の従来のリクエスト-応答プロトコル通信の一例を示す図である。
図8】例示的な実施形態に係る、2つの例示的な機器間のネスト化リクエスト-応答プロトコル通信の一例を示す図である。
図9】例示的な実施形態に係る、フローチャートである。
【発明を実施するための形態】
【0017】
本明細書には、例示的な方法、機器、およびシステムを記載している。本明細書において、単語「例(example)」および「例示的(exemplary)」は、「一例、事例、または実例として機能する」ことを意味するものとして使用していることが了解されるものとする。「例」または「例示的」として本明細書に記載の任意の実施形態または特徴は、その旨の記載のない限り、他の実施形態または特徴よりも好適または有利であるとは必ずしも解釈されない。このため、本明細書に提示の主題の範囲から逸脱することなく、他の実施形態を利用可能であるとともに、他の変更を加えることができる。
【0018】
したがって、本明細書に記載の例示的な実施形態は、何ら限定を意味するものではない。本明細書の全体に記載するとともに図面に示すような本開示の態様は、多種多様な異なる構成での配置、置換、結合、分離、および設計が可能であることが容易に了解される。たとえば、「クライアント」および「サーバ」コンポーネントへの機能の分離は、多くの方法で実行可能である。
【0019】
さらに、文脈上の別段の示唆のない限り、図面それぞれに示す特徴は、相互に組み合わせて使用可能である。このため、図面は一般的に、1つまたは複数の全体的な実施形態の構成要素の態様として捉えるべきであり、図示の特徴のすべてが各実施形態に必要であるとは限らないことが了解される。
【0020】
また、本明細書または特許請求の範囲における要素、ブロック、またはステップの如何なる列挙も、明瞭化を目的としたものである。したがって、このような列挙は、これらの要素、ブロック、またはステップの特定の配置の順守または特定の順序での実行の要求または暗示を行うものと解釈すべきではない。
【0021】
I.導入
以下の議論は、大企業の背景における一例として提示される。本明細書の例示的な実施形態のアーキテクチャおよび動作のさまざまな原理は、この例示的な背景によって制限されないことが了解されるものとする。また、例示的な実施形態のアーキテクチャおよび動作のさまざまな原理が大企業への適用に制限されることもない。むしろ、例示的な実施形態は、共通および/または調整済みのソフトウェアおよびデータコンポーネントを含むサービスおよびリソースを実施可能なクライアント機器、サーバ機器、および他のコンピュータ機器を伴う如何なる使用シナリオにも適用および/または拡張され得る。
【0022】
大企業は、相互に関連する多くの業務を抱える複雑なエンティティである。これらの中には、人事(HR)、サプライチェーン、情報技術(IT)、および財務等、企業の各所で見られるものもある。ただし、各企業は、必要不可欠な能力の提供および/または競争優位性の構築につながるそれ自体の一意の業務も有する。
【0023】
幅広く実施される業務をサポートするため、企業は通常、顧客関係管理(CRM)および人材管理(HCM)パッケージ等、既製のソフトウェアアプリケーションを使用する。ただし、企業自体の一意の要件を満たすには、カスタムのソフトウェアアプリケーションも必要となる場合がある。大企業では、これらのカスタムソフトウェアアプリケーションを何十または何百と有することが多い。これに対して、本明細書の実施形態が提供する利点は、大企業に限定されず、あらゆる規模の企業または他種の組織に適用可能と考えられる。
【0024】
このような多くのソフトウェアアプリケーションは、企業内の個々の部門により開発される。これらは、単純なスプレッドシートから、特注のソフトウェアツールおよびデータベースにまで及ぶ。ただし、他部門との連携のないカスタムソフトウェアアプリケーションの普及には多くの欠点がある。これは、企業による業務の運営および成長の能力、技術革新、ならびに規制要件への対応に悪影響を及ぼす。企業は、そのサブシステムおよびデータを統合する単一のシステムがないことから、業務の統合、合理化、および強化を困難と感じる場合がある。
【0025】
カスタムアプリケーションを効率的に生成するため、企業は、不要な開発の複雑さを排除するリモートホスト型のアプリケーションプラットフォームから恩恵を受けることになる。このようなプラットフォームの目標は、時間を要する繰り返しのアプリケーション開発タスクを減らして、ソフトウェアエンジニアおよび他の任務の個人が価値の高い一意の機能の開発に専念できるようにすることである。
【0026】
この目標を達成するため、aPaaS(Application Platform as a Service)の概念の導入によって、企業全体のワークフローを知的に自動化する。aPaaSシステムは、企業からリモートでホストされるが、セキュアな接続によって、企業内のデータ、アプリケーション、およびサービスにアクセス可能である。このようなaPaaS一ステムには、多くの有利な機能および特性がある。これらの利点および特性によって、IT、HR、CRM、顧客サービス、アプリケーション開発、およびセキュリティに関して、企業の業務およびワークフローを改善可能と考えられる。
【0027】
aPaaSシステムは、モデル・ビュー・コントローラ(MVC)アプリケーションの開発および実行をサポートし得る。MVCアプリケーションは、それぞれの機能を3つの相互接続部(モデル、ビュー、およびコントローラ)に分割して、情報がユーザに提示される様態から情報の表現を分離することにより、効率的なコードの再利用および並行開発を可能にする。これらのアプリケーションは、ウェブベースで、作成、読み取り、更新、および削除(CRUD)の機能を提供し得る。これにより、共通のアプリケーションインフラ上で新たなアプリケーションを構築可能となる。
【0028】
aPaaSシステムは、グラフィカルユーザインターフェース(GUI)開発のための標準化された一組のウィジェット等、標準化されたアプリケーションコンポーネントをサポートし得る。このように、aPaaSシステムを用いて構築されたアプリケーションは、外観および雰囲気が共通する。他のソフトウェアコンポーネントおよびモジュールについても同様に、標準化されていてもよい。場合によっては、企業のカスタムロゴおよび/または配色によって、この外観および雰囲気をブランディングまたはスキニングすることも可能である。
【0029】
aPaaSシステムは、メタデータを使用してアプリケーションの動作を設定する機能をサポートし得る。これによって、特定のニーズを満たすように、アプリケーションの動作を素早く適応させることができる。このような手法によって、開発時間が短縮されるとともに柔軟性が増す。さらに、aPaaSシステムは、メタデータの作成および管理を容易化してメタデータのエラーを抑えるGUIツールをサポートし得る。
【0030】
aPaaSシステムは、アプリケーション間の明確に規定されたインターフェースをサポートし得るため、ソフトウェア開発者が不要なアプリケーション間依存関係を回避することができる。このため、aPaaSシステムは、永続的な状態情報等のデータが格納されるサービス層を実装することができる。
【0031】
aPaaSシステムが豊富な一組の統合機能をサポートし得るため、システム上のアプリケーションは、レガシーアプリケーションおよびサードパーティアプリケーションと相互作用可能である。たとえば、aPaaSシステムは、レガシーHR、IT、および会計システムと統合されるカスタム従業員研修システムをサポートし得る。
【0032】
aPaaSシステムは、企業レベルのセキュリティをサポートし得る。さらに、aPaaSシステムは、リモートでホストされ得ることから、企業のシステムまたは企業の外側でホストされたサードパーティネットワークおよびサービスと相互作用する場合に、セキュリティ手順も利用すべきである。たとえば、aPaaSシステムは、企業等の当事者間でデータを共有することにより、共通のセキュリティ脅威を検出および識別するように構成されていてもよい。
【0033】
また、aPaaSシステムの他の特徴、昨日、および利点も存在し得る。この説明は、例示を目的としており、何ら限定の意図はない。
【0034】
aPaaS開発プロセスの一例として、ソフトウェア開発者は、aPaaSシステムを使用して新たなアプリケーションを作成するように命じられる場合がある。開発者は最初に、アプリケーションが使用するデータの種類およびそれぞれの間の関係を指定するデータモデルを規定し得る。開発者はその後、aPaaSシステムのGUIを介して、データモデルを入力する(たとえば、アップロードする)。aPaaSシステムは、対応するデータベーステーブル、フィールド、および関係をすべて自動的に作成するが、これらには、オブジェクト指向サービス層を介してアクセス可能となる。
【0035】
また、aPaaSシステムは、クライアント側のインターフェースおよびサーバ側のCRUDロジックを伴う完全に機能的なアプリケーションを構築可能である。この生成アプリケーションは、ユーザの別途開発の基礎として機能し得る。開発者は、アプリケーションの基本機能に多くの時間を費やす必要がないため都合が良い。さらに、アプリケーションは、ウェブベースであってもよいため、任意のインターネット対応クライアント機器からアクセス可能である。この代替または追加として、たとえばインターネットサービスが利用可能ではない場合に、アプリケーションのローカルコピーへのアクセスが可能となっていてもよい。
【0036】
本明細書で一例として論じるMVCアーキテクチャは、例示的な実施形態に関して、何ら限定的なものと捉えるべきではない。単方向データフロー等、他のアーキテクチャパラダイムも同様に可能となり得る。
【0037】
また、aPaaSシステムは、アプリケーションに追加できる豊富な一組の所定の機能をサポートし得る。これらの機能には、検索、電子メール、テンプレート、ワークフロー設計、レポート、分析、ソーシャルメディア、スクリプト記述、モバイル向けの出力、およびカスタマイズGUIのサポートを含む。
【0038】
このようなaPaaSシステムは、さまざまな方法でGUIを表し得る。たとえば、aPaaSシステムのサーバ機器は、HTMLおよびJAVASCRIPT(登録商標)の組み合わせを使用してGUIの表現を生成するようにしてもよい。JAVASCRIPT(登録商標)は、クライアント側の実行可能コード、サーバ側の実行可能コード、または両者を含み得る。サーバ機器がこの表現をクライアント機器に送信あるいは提供することにより、ローカルに規定された外観および雰囲気に従って、クライアント機器が画面に表示するようにしてもよい。あるいは、GUIの表現は、クライアント機器がグラフィック出力を直接生成するのに使用可能な中間形態(たとえば、JAVA(登録商標)バイトコード)等、他の形態であってもよい。それ以外の可能性もある。
【0039】
さらに、ボタン、メニュー、タブ、スライダ、チェックボックス、トグル等のGUI要素とのユーザ相互作用をそれぞれの「選択」、「起動」、または「作動」と称する場合もある。これらの用語は、GUI要素との相互作用がキーボードによるか、ポインティングデバイスによるか、タッチスクリーンによるか、または別の機構によるかに関わらず使用され得る。
【0040】
aPaaSアーキテクチャは、企業のネットワークと統合され、このようなネットワークの管理に用いられる場合に特に効果を発揮する。以下の実施形態では、例示的なaPaaSシステムのアーキテクチャおよび機能的態様のほか、それぞれの特徴および利点を説明する。
【0041】
II.例示的なコンピュータ機器およびクラウドベースのコンピュータ環境
図1は、コンピュータ機器100を例示する簡易ブロック図であって、コンピュータ機器に含まれ、本明細書の実施形態に従って動作するように構成された構成要素の一部を示している。コンピュータ機器100としては、クライアント機器(たとえば、ユーザが能動的に操作する機器)も可能であるし、サーバ機器(たとえば、演算サービスをクライアント機器に提供する機器)も可能であるし、その他何らかの種類の演算プラットフォームも可能である。サーバ機器の中には、特定の操作を実行するために時折クライアント機器として動作するものがあり、クライアント機器の中には、サーバ機能を組み込んだものがある。
【0042】
本例において、コンピュータ機器100は、プロセッサ102、メモリ104、ネットワークインターフェース106、および入力/出力ユニット108を具備しており、これらがすべて、システムバス110または類似の機構により結合されていてもよい。いくつかの実施形態において、コンピュータ機器100は、他の構成要素および/または周辺機器(たとえば、取り外し可能なストレージ、プリンタ等)を具備していてもよい。
【0043】
プロセッサ102は、中央演算処理装置(CPU)、コプロセッサ(たとえば、数学、グラフィックス、または暗号化コプロセッサ)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ならびに/またはプロセッサ動作を実行する集積回路もしくはコントローラの形態等、任意の種類のコンピュータ処理要素のうちの1つまたは複数であってもよい。場合により、プロセッサ102は、1つまたは複数のシングルコアプロセッサであってもよい。他の場合に、プロセッサ102は、複数の独立した処理ユニットを伴う1つまたは複数のマルチコアプロセッサであってもよい。また、プロセッサ102には、実行対象の命令および関連データを一時的に格納するためのレジスタメモリのほか、最近使用された命令およびデータを一時的に格納するためのキャッシュメモリを含み得る。
【0044】
メモリ104は、如何なる形態のコンピュータ使用可能メモリであってもよく、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、ならびに不揮発性メモリ(たとえば、フラッシュメモリ、ハードディスクドライブ、半導体ドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、および/もしくはテープストレージ)が挙げられるが、これらに限定されない。このため、メモリ104は、メインメモリユニットおよび長期ストレージの両者を表す。他種のメモリとしては、生物学的メモリが挙げられる。
【0045】
メモリ104は、プログラム命令および/またはプログラム命令が動作し得るデータを格納していてもよい。一例として、メモリ104は、プロセッサ102による実行によって、本明細書または添付の図面に開示の方法、プロセス、または動作のいずれかを実行可能となるように、これらのプログラム命令非一時的コンピュータ可読媒体に格納するようにしてもよい。
【0046】
図1に示すように、メモリ104は、ファームウェア104A、カーネル104B、および/またはアプリケーション104Cを含んでいてもよい。ファームウェア104Aは、コンピュータ機器100の一部または全部の起動あるいは開始に用いられるプログラムコードであってもよい。カーネル104Bは、メモリ管理、プロセッサのスケジューリングおよび管理、入力/出力、ならびに通信のためのモジュールを含むオペレーティングシステムであってもよい。また、カーネル104Bは、オペレーティングシステムによるコンピュータ機器100のハードウェアモジュール(たとえば、メモリユニット、ネットワークインターフェース、ポート、およびバス)との通信を可能にするデバイスドライバを含んでいてもよい。アプリケーション104Cは、ウェブブラウザまたは電子メールクライアント等の1つまたは複数のユーザ空間ソフトウェアプログラムのほか、これらのプログラムで使用される任意のソフトウェアライブラリであってもよい。また、メモリ104は、上記および他のプログラムおよびアプリケーションで使用されるデータを格納するようにしてもよい。
【0047】
ネットワークインターフェース106は、イーサネット(たとえば、ファーストイーサネット、ギガビットイーサネット)等の1つまたは複数の有線インターフェースの形態であってもよい。また、ネットワークインターフェース106は、同軸ケーブルもしくは電力線等の1つもしくは複数の非イーサネット媒体または同期光ネットワーキング(SONET)もしくはデジタル加入者線(DSL)技術等の広域媒体を介した通信をサポートし得る。また、ネットワークインターフェース106は、IEEE 802.11(Wifi)、BLUETOOTH(登録商標)、全地球測位システム(GPS)、または広域無線インターフェース等の1つまたは複数の無線インターフェースの形態であってもよい。ただし、他の形態の物理層インターフェースならびに他種の標準もしくは専用通信プロトコルがネットワークインターフェース106を介して用いられるようになっていてもよい。さらに、ネットワークインターフェース106には、複数の物理インターフェースを含み得る。たとえば、コンピュータ機器100のいくつかの実施形態には、イーサネット、BLUETOOTH(登録商標)、およびWifiインターフェースを含み得る。
【0048】
入力/出力ユニット108は、ユーザおよび周辺機器のコンピュータ機器100との相互作用を容易化し得る。入力/出力ユニット108には、1つまたは複数の種類の入力装置(キーボード、マウス、タッチスクリーン等)を含み得る。同様に、入力/出力ユニット108には、1つまたは複数の種類の出力装置(画面、モニタ、プリンタ、ならびに/または1つもしくは複数の発光ダイオード(LED)等)を含み得る。この追加または代替として、コンピュータ機器100は、たとえばユニバーサルシリアルバス(USB)または高精細マルチメディアインターフェース(HDMI)ポートインターフェースを使用することにより他の機器と通信することができる。
【0049】
いくつかの実施形態においては、コンピュータ機器100等の1つまたは複数のコンピュータ機器の展開によって、aPaaSアーキテクチャをサポートしていてもよい。これらのコンピュータ機器の厳密な物理的位置、接続性、および設定は、クライアント機器に既知および/または重要ではない場合もある。したがって、コンピュータ機器は、さまざまなリモートデータセンタの場所で収容し得る「クラウドベース」機器と称する場合もある。
【0050】
図2は、例示的な実施形態に係る、クラウドベースのサーバクラスタ200を示している。図2においては、コンピュータ機器(たとえば、コンピュータ機器100)の動作がサーバ機器202、データストレージ204、およびルータ206間に分散していてもよく、これらがすべて、ローカルクラスタネットワーク208により接続されていてもよい。サーバクラスタ200におけるサーバ機器202、データストレージ204、およびルータ206の数は、サーバクラスタ200に割り当てられた演算タスクおよび/またはアプリケーションによって決まり得る。
【0051】
たとえば、サーバ機器202は、コンピュータ機器100のさまざまな演算タスクを実行するように構成可能である。このため、1つまたは複数のサーバ機器202に演算タスクを分配可能である。これらの演算タスクを並列実行可能な限りにおいて、このようなタスクの分配により、これらのタスクを完了して結果を返すまでの合計時間が短縮され得る。簡素化のため、サーバクラスタ200および個々のサーバ機器202の両者を「サーバ機器」と称する場合もある。この命名は、1つまたは複数の異なるサーバ機器、データ記憶装置、およびクラスタルータがサーバ機器の動作に関与し得ることの暗示として了解されるものとする。
【0052】
データストレージ204は、複数群のハードディスクドライブおよび/または半導体ドライブに対する読み書きアクセスを管理するように構成されたドライブアレイコントローラを含むデータストレージアレイであってもよい。また、ドライブアレイコントローラは、1つまたは複数のサーバ機器202がデータストレージ204のユニットにアクセスできなくなるドライブ故障または他種の故障に対する保護のため、単独またはサーバ機器202と併せて、データストレージ204に格納されたデータのバックアップまたは冗長コピーを管理するように構成されていてもよい。ドライブ以外の他種のメモリが用いられるようになっていてもよい。
【0053】
ルータ206は、内部および外部通信をサーバクラスタ200に提供するように構成されたネットワーク設備を含み得る。たとえば、ルータ206には、(i)ローカルクラスタネットワーク208を介したサーバ機器202とデータストレージ204との間のネットワーク通信、および/または、(ii)ネットワーク212への通信リンク210を介したサーバクラスタ200と他の機器との間のネットワーク通信を提供するように構成された1つまたは複数のパケットスイッチングおよび/またはルーティング機器(スイッチおよび/またはゲートウェイを含む)を含み得る。
【0054】
また、ルータ206の構成は、サーバ機器202およびデータストレージ204のデータ通信要件、ローカルクラスタネットワーク208のレイテンシおよびスループット、通信リンク210のレイテンシ、スループット、およびコスト、ならびに/またはシステムアーキテクチャのコスト、速度、耐障害性、回復力、効率、および/もしくは他の設計目標に寄与し得る他の要因に少なくとも部分的に基づき得る。
【0055】
考え得る一例として、データストレージ204には、構造化照会言語(SQL)データベース等の任意の形態のデータベースを含み得る。このようなデータベースにおいては、さまざまな種類のデータ構造が情報を格納可能であり、テーブル、アレイ、リスト、ツリー、およびタプルが挙げられるが、これらに限定されない。さらに、データストレージ204の任意のデータベースがモノリシックであってもよいし、複数の物理的機器に分散していてもよい。
【0056】
サーバ機器202は、データストレージ204へのデータの送信および/またはデータストレージ204からのデータの受信を行うように構成されていてもよい。この送信および読み出しはそれぞれ、SQLクエリもしくは他種のデータベースクエリの形態ならびにこのようなクエリの出力の形態であってもよい。同様に、テキスト、イメージ、ビデオ、および/またはオーディオが追加で含まれていてもよい。さらに、サーバ機器202は、受信データをウェブページまたはウェブアプリケーションの表現として編成するようにしてもよい。このような表現は、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)等のマークアップ言語、または他の何らかの標準化フォーマットもしくは専用フォーマットの形態であってもよい。さらに、サーバ機器202は、さまざまな種類のコンピュータ化スクリプト言語を実行可能であってもよく、Perl、Python、PHP Hypertext Preprocessor(PHP)、Active Server Pages(ASP)、JAVASCRIPT(登録商標)等が挙げられるが、これらに限定されない。これらの言語で書かれたコンピュータプログラムコードは、クライアント機器へのウェブページの提供のほか、クライアント機器のウェブページとの相互作用を容易化し得る。この代替または追加として、ウェブページの生成の容易化および/またはウェブアプリケーション機能の提供のため、JAVA(登録商標)が用いられるようになっていてもよい。
【0057】
III.例示的なリモートネットワーク管理アーキテクチャ
図3は、例示的な実施形態に係る、リモートネットワーク管理アーキテクチャを示している。このアーキテクチャには、マネージドネットワーク300、リモートネットワーク管理プラットフォーム320、およびパブリッククラウドネットワーク340という3つの主要な構成要素を含み、すべてがインターネット350により接続されている。
【0058】
A.マネージドネットワーク
マネージドネットワーク300は、たとえば演算および通信タスクのほか、データのストレージのためのエンティティが使用する企業ネットワークであってもよい。このため、マネージドネットワーク300は、クライアント機器302、サーバ機器304、ルータ306、仮想マシン308、ファイアウォール310、および/またはプロキシサーバ312を具備していてもよい。クライアント機器302は、コンピュータ機器100により具現化されていてもよく、サーバ機器304は、コンピュータ機器100またはサーバクラスタ200により具現化されていてもよく、ルータ306は、如何なる種類のルータ、スイッチ、またはゲートウェイであってもよい。
【0059】
仮想マシン308は、コンピュータ機器100およびサーバクラスタ200のうちの1つまたは複数により具現化されていてもよい。一般的に、仮想マシンは、コンピュータシステムのエミュレーションであり、物理的なコンピュータの機能(たとえば、プロセッサ、メモリ、および通信リソース)を模倣する。サーバクラスタ200等の1つの物理的なコンピュータシステムが最大で数千もの個々の仮想マシンをサポート可能である。いくつかの実施形態において、仮想マシン308は、個々の仮想マシンに対する物理的な演算リソースの割り当てのほか、性能およびエラー報告を容易化する集中サーバ機器またはアプリケーションにより管理されるようになっていてもよい。企業は、仮想マシンを採用することにより、必要に応じて演算リソースを効率的に割り当てることが多い。仮想化コンピュータシステムのプロバイダには、VMWARE(登録商標)およびMICROSOFT(登録商標)を含む。
【0060】
ファイアウォール310は、マネージドネットワーク300を起点とする正規の通信を許可しつつ、内部の機器、アプリケーション、およびサービスへの不正なアクセス試行からマネージドネットワーク300を保護する1つまたは複数の専用ルータまたはサーバ機器であってもよい。また、ファイアウォール310は、侵入検出、ウェブフィルタリング、ウイルススキャン、アプリケーション層ゲートウェイ、ならびに他のアプリケーションもしくはサービスを提供し得る。図3には示していないいくつかの実施形態において、マネージドネットワーク300は、リモートネットワーク管理プラットフォーム320(以下参照)と通信するための1つまたは複数の仮想プライベートネットワーク(VPN)ゲートウェイを具備していてもよい。
【0061】
また、マネージドネットワーク300は、1つまたは複数プロキシサーバ312を具備していてもよい。プロキシサーバ312の一実施形態は、マネージドネットワーク300、リモートネットワーク管理プラットフォーム320、およびパブリッククラウドネットワーク340間のデータの通信および移動を容易化するサーバアプリケーションであってもよい。特に、プロキシサーバ312は、リモートネットワーク管理プラットフォーム320の1つまたは複数の演算インスタンスとのセキュアな通信セッションを構築および維持可能であってもよい。このようなセッションにより、リモートネットワーク管理プラットフォーム320は、マネージドネットワーク300およびその構成要素のアーキテクチャおよび設定の態様を検出および管理可能となり得る。場合によっては、プロキシサーバ312の補助により、リモートネットワーク管理プラットフォーム320は、マネージドネットワーク300が使用するパブリッククラウドネットワーク340の態様を検出および管理することも可能となり得る。
【0062】
ファイアウォール310等のファイアウォールは通常、上記のようなセッションが最終的にファイアウォールの背後(すなわち、マネージドネットワーク300上の機器)を起点とするわけでもなく、当該ファイアウォールがセッションをサポートするように明示的に構成されているわけでもない限り、インターネット350を経由して着信するすべての通信セッションを拒否する。プロキシサーバ312をファイアウォール310の背後に配置することにより(たとえば、マネージドネットワーク300内に配置してファイアウォール310で保護することにより)、ファイアウォール310を通じて、プロキシサーバ312がこれらの通信セッションを開始可能となり得る。これにより、ファイアウォール310は、リモートネットワーク管理プラットフォーム320からの着信セッションをサポートするように特別な構成とする必要がなくなる可能性もあるため、マネージドネットワーク300に対する潜在的なセキュリティリスクを回避することができる。
【0063】
場合により、マネージドネットワーク300は、少数の機器および少数のネットワークから成っていてもよい。他の展開において、マネージドネットワーク300は、複数の物理的な場所に及び、数百のネットワークおよび数十万の機器を含んでいてもよい。このため、図3に示すアーキテクチャは、桁違いの規模の拡大または縮小が可能である。
【0064】
さらに、マネージドネットワーク300のサイズ、アーキテクチャ、および接続性に応じて、内部に展開するプロキシサーバ312の数を変えることができる。たとえば、プロキシサーバ312はそれぞれ、マネージドネットワーク300の一部に関してリモートネットワーク管理プラットフォーム320との通信を担うようにしてもよい。この代替または追加として、このようなマネージドネットワーク300の部分に対する複数組の2つ以上のプロキシサーバの割り当てによって、負荷分散、冗長性、および/または可用性の向上を図るようにしてもよい。
【0065】
B.リモートネットワーク管理プラットフォーム
リモートネットワーク管理プラットフォーム320は、ユーザ、特に、マネージドネットワーク300のオペレータにaPaaSサービスを提供するホストされた環境である。これらのサービスは、たとえば前述のウェブベースの技術を使用するウェブベースのポータルの形態であってもよい。このため、ユーザは、たとえばクライアント機器302または可能性としてマネージドネットワーク300の外側のクライアント機器から、リモートネットワーク管理プラットフォーム320へのセキュアなアクセスが可能である。ウェブベースのポータルにより、ユーザは、アプリケーションの設計、テスト、および展開、レポートの生成、分析の確認、ならびに他のタスクの実行が可能となる。また、リモートネットワーク管理プラットフォーム320は、マルチアプリケーションプラットフォームと称する場合もある。
【0066】
図3に示すように、リモートネットワーク管理プラットフォーム320は、4つの演算インスタンス322、324、326、および328を含む。これらの演算インスタンスはそれぞれ、aPaaSソフトウェアの専用コピーを運用する1つもしくは複数のノードならびに/または1つもしくは複数のデータベースノードを表し得る。物理的なサーバ機器および/または仮想マシン上では、サーバおよびデータベースの柔軟な配置が可能であり、企業のニーズに基づいて変更するようにしてもよい。組み合わせにより、これらのノードは、特定の企業が利用可能な一組のウェブポータル、サービス、およびアプリケーション(たとえば、完全に機能するaPaaSシステム)を提供することができる。場合によっては、単一の企業が複数の演算インスタンスを使用するようにしてもよい。
【0067】
たとえば、マネージドネットワーク300は、リモートネットワーク管理プラットフォーム320の企業顧客であってもよく、また、演算インスタンス322、324、および326を使用するようにしてもよい。1つの顧客に複数の演算インスタンスを提供する理由として、顧客は、そのアプリケーションおよびサービスの独立した開発、テスト、および展開を望む場合がある。このため、演算インスタンス322がマネージドネットワーク300と関連するアプリケーション開発専用であってもよく、演算インスタンス324がこれらのアプリケーションのテスト専用であってもよく、演算インスタンス326がテスト済みアプリケーションおよびサービスのライブ運用専用であってもよい。また、演算インスタンスは、ホストされたインスタンス、リモートインスタンス、顧客インスタンスと称する場合もあるし、他の何らかの呼称となる場合もある。演算インスタンスに展開された如何なるアプリケーションも、演算インスタンス内のデータベースへのアクセスが内部の特定の要素(たとえば、1つもしくは複数の特定のデータベーステーブルまたは1つもしくは複数のデータベーステーブル内の特定の行)に制限され得る点において、スコープアプリケーション(scoped Application)と考えられる。
【0068】
簡素化のため、本明細書の開示では、アプリケーションノード、データベースノード、これらの上で実行されるaPaaSソフトウェア、および基礎となるハードウェアの構成を「演算インスタンス」と称する。なお、ユーザは口語的に、上記により提供されるグラフィカルユーザインターフェースを「インスタンス」と称する場合がある。ただし、本明細書における別段の定義のない限り、「演算インスタンス」は、リモートネットワーク管理プラットフォーム320内に配設されたコンピュータシステムである。
【0069】
リモートネットワーク管理プラットフォーム320のマルチインスタンスアーキテクチャは、従来のマルチテナントアーキテクチャとは対照的に、複数の利点を奏する。マルチテナントアーキテクチャにおいては、異なる顧客(たとえば、企業)からのデータが単一のデータベースにおいて混合される。これらの顧客のデータは相互に分離されているが、この分離は、単一のデータベースを運用するソフトウェアによって強制されている。結果として、このシステムにおけるセキュリティ侵害が顧客のすべてのデータに影響を及ぼし、特に政府、医療、および/または金融の規制を受けるエンティティにとっては、付加的なリスクとなる。さらに、1つの顧客に影響を及ぼす任意のデータベース運用は、当該データベースを共有するすべての顧客に影響を及ぼす可能性がある。このため、ハードウェアまたはソフトウェアのエラーに起因する停止の場合、この停止は、このようなすべての顧客に影響を及ぼす。同様に、データベースは、1つの顧客のニーズを満たすようにアップグレードされる場合、アップグレードプロセスにおいて、すべての顧客が利用不可能となる。このような保守時間枠は、共有データベースのサイズに起因して長くなることが多い。
【0070】
これに対して、マルチインスタンスアーキテクチャは、専用の演算インスタンスにおいて、各顧客にそれ自体のデータベースを提供する。これにより、顧客データの混合が防止され、各インスタンスの独立管理が可能となる。たとえば、ある顧客のインスタンスがエラーまたはアップグレードによって停止となった場合でも、他の演算インスタンスは影響を受けない。データベースに1つの顧客のデータしか含まないため、保守のダウンタイムは限られる。さらに、マルチインスタンスアーキテクチャのより簡素な設計によって、各顧客データベースおよびインスタンスの冗長コピーが地理的に多様に展開され得る。これにより、高い可用性が促進され、障害の検出または保守の実行時に、顧客のインスタンスのライブバージョンを移動可能となる。
【0071】
いくつかの実施形態において、リモートネットワーク管理プラットフォーム320は、このプラットフォームを動作させるエンティティにより制御される1つまたは複数の中央インスタンスを含んでいてもよい。演算インスタンスと同様に、中央インスタンスは、いくつかの物理的サーバ機器または仮想マシン上に配設されたいくつかのアプリケーションおよびデータベースノードを含み得る。このような中央インスタンスは、演算インスタンスのほか、演算インスタンスの少なくとも一部で共有され得るデータの特定の構成に対するレポジトリとして機能し得る。たとえば、演算インスタンス上で発生し得る一般的なセキュリティ脅威の定義、演算インスタンス上で一般的に検出されるソフトウェアパッケージ、および/または演算インスタンスに展開可能なアプリケーション用のアプリケーションストアが中央インスタンスに存在していてもよい。演算インスタンスは、このデータを得るために明確に規定されたインターフェースによって、中央インスタンスと通信するようにしてもよい。
【0072】
複数の演算インスタンスを効率的にサポートするため、リモートネットワーク管理プラットフォーム320は、複数のこれらインスタンスを単一のハードウェアプラットフォーム上で実行するようにしてもよい。たとえば、aPaaSシステムは、サーバクラスタ200等のサーバクラスタ上で実行されている場合、さまざまな量の演算、ストレージ、および通信リソースをインスタンスに割り当てる仮想マシンを動作させるようにしてもよい。ただし、サーバクラスタ200の完全な仮想化は必要とされず、他のメカニズムによって、インスタンスを分離するようにしてもよい。いくつかの例において、各インスタンスは、サーバクラスタ200上に専用アカウントならびに1つもしくは複数の専用データベースを有していてもよい。あるいは、演算インスタンス322等の演算インスタンスが複数の物理的機器に及んでいてもよい。
【0073】
場合によっては、リモートネットワーク管理プラットフォーム320の単一のサーバクラスタが複数の独立した企業をサポートし得る。さらに、後述の通り、リモートネットワーク管理プラットフォーム320は、負荷分散、冗長性、および/または高い可用性を促進するため、地理的に多様なデータセンタに展開された複数のサーバクラスタを具備していてもよい。
【0074】
C.パブリッククラウドネットワーク
パブリッククラウドネットワーク340は、外部委託演算、データストレージ、通信、およびサービスホスティング業務に使用可能なリモートサーバ機器(たとえば、サーバクラスタ200等の複数のサーバクラスタ)であってもよい。これらのサーバは、仮想化されていてもよい(すなわち、仮想マシンであってもよい)。パブリッククラウドネットワーク340の例としては、AMAZON WEB SERVICES(登録商標)およびMICROSOFT(登録商標) AZURE(登録商標)が挙げられる。リモートネットワーク管理プラットフォーム320と同様に、負荷分散、冗長性、および/または高い可用性を目的として、パブリッククラウドネットワーク340をサポートする複数のサーバクラスタが地理的に多様な場所に展開されていてもよい。
【0075】
マネージドネットワーク300は、1つまたは複数のパブリッククラウドネットワーク340を使用して、アプリケーションおよびサービスをそのクライアントおよび顧客に展開するようにしてもよい。たとえば、マネージドネットワーク300がオンライン楽曲ストリーミングサービスを提供している場合、パブリッククラウドネットワーク340は、楽曲ファイルを格納するとともに、ウェブインターフェースおよびストリーミングの機能を提供するようにしてもよい。このように、マネージドネットワーク300の企業は、これらの業務に対して、それ自体のサーバを構築および保守する必要がない。
【0076】
リモートネットワーク管理プラットフォーム320は、パブリッククラウドネットワーク340との統合によって、内部の仮想マシンおよびマネージドサービスをマネージドネットワーク300に公開するモジュールを具備していてもよい。これらのモジュールによれば、ユーザは、仮想リソースの要求、割り当てられたリソースの検出、およびパブリッククラウドネットワーク340への柔軟な報告が可能となり得る。この機能を確立するため、マネージドネットワーク300のユーザは、最初にパブリッククラウドネットワーク340でアカウントを開設し、一組の関連するリソースを要求する可能性もある。その後、ユーザは、アカウント情報をリモートネットワーク管理プラットフォーム320の適当なモジュールに入力するようにしてもよい。その後、これらのモジュールが自動的に、アカウントの管理可能なリソースを検出するとともに、使用、性能、および課金と関連するレポートを提供するようにしてもよい。
【0077】
D.通信サポートおよび他のオペレーション
インターネット350は、グローバルなインターネットの一部を表し得る。ただし、インターネット350は代替として、プライベートワイドエリアまたはローカルエリアパケット交換ネットワーク等、異なる種類のネットワークを表し得る。
【0078】
図4は、マネージドネットワーク300と演算インスタンス322との間の通信環境をさらに示しており、付加的な特徴および代替実施形態を紹介するものである。図4においては、演算インスタンス322の全部または一部がデータセンタ400Aおよび400Bの両者で複製されている。これらのデータセンタは、地理的に相互に離れていてもよく、おそらくは異なる都市または異なる国にある。各データセンタは、マネージドネットワーク300のほか、リモートユーザとの通信を容易化するサポート設備を具備する。
【0079】
データセンタ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を含んでいてもよい。
【0080】
データセンタ400Bは、データセンタ400Aの構成要素に関するそれ自体のバージョンを具備していてもよい。このため、VPNゲートウェイ402B、ファイアウォール404B、および負荷分散器406Bがそれぞれ、VPNゲートウェイ402A、ファイアウォール404A、および負荷分散器406Aと同一または同様の動作を実行するようにしてもよい。さらに、リアルタイムまたは準リアルタイムのデータベース複製および/または他の動作によって、演算インスタンス322がデータセンタ400Aおよび400Bにおいて同時に存在していてもよい。
【0081】
図4に示すようなデータセンタ400Aおよび400Bは、冗長性および高い可用性を促進し得る。図4の構成においては、データセンタ400Aがアクティブで、データセンタ400Bがパッシブである。このため、データセンタ400Aがマネージドネットワーク300に対するすべてのトラフィックをサーブする一方、データセンタ400Bの演算インスタンス322のバージョンは、準リアルタイムに更新される。両データセンタがアクティブである構成等、他の構成がサポートされていてもよい。
【0082】
データセンタ400Aが何らかの故障を起こしたり、ユーザが利用できなくなったりした場合は、データセンタ400Bがアクティブなデータセンタとして引き継ぐことができる。たとえば、演算インスタンス322のドメイン名をデータセンタ400Aの1つまたは複数のインターネットプロトコル(IP)アドレスと関連付けるドメインネームシステム(DNS)サーバは、ドメイン名をデータセンタ400Bの1つまたは複数のIPアドレスと再度関連付けるようにしてもよい。この再関連付けが完了した後(1秒または数秒未満と考えられる)、ユーザは、データセンタ400Bによって演算インスタンス322にアクセス可能となる。
【0083】
また、図4は、マネージドネットワーク300の考え得る構成を示している。上述の通り、プロキシサーバ312およびユーザ414は、ファイアウォール310を通じて演算インスタンス322にアクセス可能である。また、プロキシサーバ312は、設定項目410にもアクセス可能である。図4において、設定項目410は、クライアント機器302、サーバ機器304、ルータ306、および仮想マシン308のいずれかまたはすべて、そこで実行される任意のアプリケーションまたはサービスのほか、機器、アプリケーション、およびサービス間の関係を表し得る。このため、用語「設定項目(configuration item)」は、任意の物理的もしくは仮想的機器、演算インスタンス322によるリモート検出または管理が可能な任意のアプリケーションもしくはサービス、または検出された機器、アプリケーション、およびサービス間の関係を表す略記であってもよい。設定項目は、演算インスタンス322の設定管理データベース(CMDB)において表され得る。
【0084】
上述の通り、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として略記される)が割り当てられ得る。
【0085】
IV.例示的な機器、アプリケーション、およびサービスの検出
リモートネットワーク管理プラットフォーム320は、マネージドネットワーク300の機器、アプリケーション、およびサービスを管理するため、マネージドネットワーク300に存在する機器、これらの機器の構成および動作状態、ならびに機器が提供するアプリケーションおよびサービスのほか、検出された機器、アプリケーション、およびサービス間の関係を最初に決定するようにしてもよい。上述の通り、各機器、アプリケーション、サービス、および関係を設定項目と称する場合がある。マネージドネットワーク300内の設定項目を規定するプロセスを検出と称するが、これは、プロキシサーバ312によって少なくとも部分的に容易化され得る。
【0086】
本明細書の実施形態のため、「アプリケーション」は、1つもしくは複数のプロセス、スレッド、プログラム、クライアントモジュール、サーバモジュール、または機器もしくは機器群上で実行されるその他任意のソフトウェアを表し得る。「サービス」は、相互に連携して作用する1つまたは複数の機器上で実行される複数のアプリケーションが提供する高度な機能を表し得る。たとえば、高度なウェブサービスには、ある機器上で実行され、別の機器上で実行されるデータベースアプリケーションからの情報にアクセスする複数のウェブアプリケーションサーバスレッドを含み得る。
【0087】
図5Aは、設定項目が検出され得る様子のほか、検出された設定項目と関連する情報が格納され得る様子の論理的な描写である。簡素化のため、リモートネットワーク管理プラットフォーム320、パブリッククラウドネットワーク340、およびインターネット350は示していない。
【0088】
図5Aにおいては、CMDB500およびタスクリスト502が演算インスタンス322に格納されている。演算インスタンス322は、検出コマンドをプロキシサーバ312に送信するようにしてもよい。これに応答して、プロキシサーバ312は、マネージドネットワーク300中のさまざまな機器、アプリケーション、およびサービスにプローブを送信するようにしてもよい。これらの機器、アプリケーション、およびサービスは、応答をプロキシサーバ312に送信するようにしてもよく、プロキシサーバ312はその後、検出された設定項目に関する情報を格納のためCMDB500に与えるようにしてもよい。CMDB500に格納された設定項目は、マネージドネットワーク300の環境を表す。
【0089】
タスクリスト502は、演算インスタンス322に代わってプロキシサーバ312が実行することになる行為のリストを表す。検出が行われると、タスクリスト502への入力が行われる。プロキシサーバ312は、タスクリスト502を繰り返し問い合わせ、その中の次のタスクを取得し、タスクリスト502が空になるか、または、別の停止条件が達成されるまで、このタスクを実行する。
【0090】
検出を容易化するため、プロキシサーバ312には、当該プロキシサーバ312により到達可能なマネージドネットワーク300中の1つまたは複数のサブネットに関する情報が設定されていてもよい。たとえば、プロキシサーバ312には、サブネットとしてIPアドレス範囲192.168.0/24が与えられていてもよい。そして、演算インスタンス322は、この情報をCMDB500に格納し、これらのアドレスそれぞれにおけるデバイスの検出のため、タスクをタスクリスト502に配置するようにしてもよい。
【0091】
また、図5Aは、マネージドネットワーク300中の機器、アプリケーション、およびサービスを設定項目504、506、508、510、および512として示している。上述の通り、これらの設定項目は、一組の物理および/または仮想機器(たとえば、クライアント機器、サーバ機器、ルータ、または仮想マシン)、これら(たとえば、ウェブサーバ、電子メールサーバ、データベース、またはストレージアレイ)の上で実行されるアプリケーション、これらの間の関係のほか、複数の個々の設定項目を含むサービスを表す。
【0092】
タスクをタスクリスト502に配置することは、プロキシサーバ312が検出を開始することのトリガあるいはきっかけとなり得る。この代替または追加として、検出がトリガイベントに基づいて手動または自動でトリガされるようになっていてもよい(たとえば、1日に1回、特定の時間に、検出が自動的に開始となってもよい)。
【0093】
一般的に、検出は、スキャン、分類、識別、および探索という4つの論理的な段階を踏むことができる。検出の各段階には、マネージドネットワーク300中の1つまたは複数の機器にプロキシサーバ312が送信しているさまざまな種類のプローブメッセージを含む。これらのプローブに対する応答がプロキシサーバ312により受信および処理されてもよく、それぞれの表現がCMDB500へと送信されるようになっていてもよい。このように、各段階によって、より多くの設定項目が検出され、CMDB500に格納され得る。
【0094】
スキャン段階において、プロキシサーバ312は、オープンな伝送制御プロトコル(TCP)および/またはユーザデータグラムプロトコル(UDP)ポートについて、IPアドレスの指定された範囲内の各IPアドレスをプローブすることにより、機器の一般的な種類を決定するようにしてもよい。このようなオープンポートがIPアドレスに存在することは、当該IPアドレスが割り当てられた機器上で特定のアプリケーションが動作していることを示し、これによって、当該機器が使用するオペレーティングシステムを識別可能である。たとえば、TCPポート135がオープンな場合、この機器は、WINDOWS(登録商標)オペレーティングシステムを実行している可能性が高い。同様に、TCPポート22がオープンな場合、この機器は、LINUX(登録商標)等のUNIX(登録商標)オペレーティングシステムを実行している可能性が高い。UDPポート161がオープンな場合、この機器は、簡易ネットワーク管理プロトコル(SNMP)を通じて別途識別可能となり得る。それ以外の可能性もある。特定のIPアドレスにおける機器およびそのオープンなポートの存在が検出されると、これらの設定項目がCMDB500に保存される。
【0095】
分類段階において、プロキシサーバ312は、各検出機器をさらにプローブして、そのオペレーティングシステムのバージョンを決定するようにしてもよい。特定の機器に使用されるプローブは、スキャン段階に当該機器に関して収集された情報に基づく。たとえば、TCPポート22がオープンな機器が見つかった場合は、一組のUNIX(登録商標)固有のプローブが用いられるようになっていてもよい。同様に、TCPポート135がオープンな機器が見つかった場合は、一組のWINDOWS(登録商標)固有のプローブが用いられるようになっていてもよい。いずれの場合も、適当な一組のタスクがタスクリスト502に配置され、プロキシサーバ312がこれを実行するようになっていてもよい。これらのタスクにより、プロキシサーバ312は、特定の機器からの情報にログオンあるいはアクセス可能となる。たとえば、TCPポート22がオープンな場合、プロキシサーバ312は、特定の機器に対するセキュアシェル(SSH)接続を開始し、ファイルシステムの特定の場所から、機器上のオペレーティングシステムに関する情報を取得するように指示され得る。この情報に基づいて、オペレーティングシステムが決定されるようになっていてもよい。一例として、TCPポート22がオープンなUNIX(登録商標)機器は、AIX(登録商標)、HPUX、LINUX(登録商標)、MACOS(登録商標)、またはSOLARIS(登録商標)として分類される。この分類情報は、1つまたは複数の設定項目としてCMDB500に格納されていてもよい。
【0096】
識別段階において、プロキシサーバ312は、分類された機器に関する具体的詳細を決定するようにしてもよい。この段階において使用されるプローブは、分類段階に特定の機器に関して収集された情報に基づいていてもよい。たとえば、機器がLINUX(登録商標)として分類された場合は、一組のLINUX(登録商標)固有のプローブが用いられるようになっていてもよい。同様に、機器がWINDOWS(登録商標)2012として分類された場合は、一組のWINDOWS(登録商標)2012固有のプローブが用いられるようになっていてもよい。分類段階の場合と同様に、適当な一組のタスクがタスクリスト502に配置され、プロキシサーバ312がこれを実行するようになっていてもよい。これらのタスクにより、プロキシサーバ312は、特定の機器から、基本入力/出力システム(BIOS)情報、シリアル番号、ネットワークインターフェース情報、これらのネットワークインターフェースに割り当てられた媒体アクセス制御アドレス、特定の機器が使用するIPアドレス等の情報を世読み出し可能となる。この識別情報は、1つまたは複数の設定項目として、CMDB500に格納されていてもよい。
【0097】
探索段階において、プロキシサーバ312は、分類された機器の動作状態に関する別途詳細を決定するようにしてもよい。この段階において使用されるプローブは、分類段階および/または識別段階に特定の機器に関して収集された情報に基づいていてもよい。この場合も、適当な一組のタスクがタスクリスト502に配置され、プロキシサーバ312がこれを実行するようになっていてもよい。これらのタスクにより、プロキシサーバ312は、特定の機器から、プロセッサ情報、メモリ情報、実行プロセス(アプリケーション)のリスト等の付加的な情報を読み出し可能となる。ここで再度、検出情報は、1つまたは複数の設定項目として、CMDB500に格納されていてもよい。
【0098】
ルータ等のネットワーク機器上で検出を実行する場合は、SNMPを利用するようにしてもよい。実行プロセスまたは他のアプリケーション関連情報のリストの決定の代替または追加として、検出では、ルータが既知の付加的なサブネットおよびルータのネットワークインターフェースの動作状態(たとえば、アクティブ、非アクティブ、キュー長、脱落パケット数等)を決定するようにしてもよい。付加的なサブネットのIPアドレスは、他の検出手順の候補となり得る。このため、検出は、反復的または再帰的に進行し得る。
【0099】
検出が完了となったら、CMDB500において、各検出機器、アプリケーション、および/またはサービスのスナップショット表現が利用可能となる。たとえば、検出後は、マネージドネットワーク300中のクライアント機器、サーバ機器、およびルータのオペレーティングシステムバージョン、ハードウェア構成、およびネットワーク構成詳細のほか、それらの上で実行されるアプリケーションが格納されるようになっていてもよい。これらの収集情報は、さまざまな方法でユーザに提示されることにより、機器のハードウェア構成および動作状態のほか、複数の機器およびアプリケーションに及ぶサービスの特性をユーザが確認可能となり得る。
【0100】
さらに、CMDB500は、設定項目間の依存および関係に関するエントリを含んでいてもよい。より具体的には、特定のサーバ機器上で実行されているアプリケーションのほか、このアプリケーションに依拠するサービスがCMDB500においてこのように表され得る。たとえば、データベースアプリケーションがサーバ機器上で実行されており、また、このデータベースアプリケーションが新たな従業員研修サービスのほか、給与計算サービスで使用されるものとする。このため、サーバ機器が保守のため稼働を停止した場合は、従業員研修サービスおよび給与計算サービスが明らかに影響を受けることになる。同様に、設定項目間の依存および関係は、特定のルータが故障した場合に影響を受けるサービスを表し得ると考えられる。
【0101】
一般的に、設定項目間の依存および関係は、ウェブベースのインターフェースに表示され、階層として表され得る。したがって、このような依存および関係の追加、変更、または削除は、このインターフェースにより達成され得る。
【0102】
さらに、マネージドネットワーク300のユーザは、検出された複数の機器にわたる特定の調整済み行為の実行を可能にするワークフローを開発することができる。たとえば、ITワークフローによって、ユーザは、検出されたすべてのLINUX(登録商標)機器の共通管理者パスワードを単一の操作で変更可能となる可能性もある。
【0103】
上述のような検出が行われるように、プロキシサーバ312、CMDB500、ならびに/または1つもしくは複数の認証情報ストアには、検出対象の機器のうちの1つまたは複数の認証情報が設定されていてもよい。認証情報には、機器へのアクセスに必要な任意の種類の情報を含み得る。これらには、ユーザID/パスワードのペア、証明書等を含み得る。いくつかの実施形態において、これらの認証情報は、CMDB500の暗号化フィールドに格納されていてもよい。プロキシサーバ312は、認証情報を用いた検出対象の機器へのログオンあるいはアクセスが可能となるように、これらの認証情報の復号キーを含んでいてもよい。
【0104】
図5Bには、検出プロセスをフローチャートとして示している。ブロック520において、演算インスタンスにおけるタスクリストには、たとえばさまざまなIPアドレスが入力される。ブロック522においては、スキャン段階が発生する。これにより、プロキシサーバは、IPアドレスを使用する機器についてこれらのIPアドレスをプローブし、これらの機器で実行されているオペレーティングシステムの決定を試みる。ブロック524においては、分類段階が発生する。プロキシサーバは、検出された機器のオペレーティングシステムのバージョンの決定を試みる。ブロック526においては、識別段階が発生する。プロキシサーバは、検出された機器のハードウェアおよび/またはソフトウェア構成の決定を試みる。ブロック526においては、探索段階が発生する。プロキシサーバは、動作状態および検出された機器で実行されているアプリケーションの決定を試みる。ブロック530においては、検出された機器およびアプリケーションを表す設定項目の別途編集が発生し得る。この編集は、本質的に自動化および/または手動実行が可能である。
【0105】
図5Bにおいて表されるブロックは例である。検出は、高度に設定可能な手順であってもよく、段階の増減いずれかが可能であり、また、各段階の動作が異なっていてもよい。場合によっては、1つまたは複数の段階がカスタマイズされていてもよいし、上記の例示的な説明から逸脱していてもよい。
【0106】
このように、リモートネットワーク管理プラットフォームは、マネージドネットワーク上で展開されて提供されるハードウェア、ソフトウェア、およびサービスを検出して一覧化することができる。上述の通り、このデータは、関連する演算インスタンスのCMDBにおいて、設定項目として格納されていてもよい。たとえば、個々のハードウェアコンポーネント(たとえば、コンピュータ機器、仮想サーバ、データベース、ルータ等)がハードウェア設定項目として表され得る一方、その上でインストールおよび/または実行されるアプリケーションがソフトウェア設定項目として表されるようになっていてもよい。
【0107】
ハードウェア設定項目においてインストールまたは実行されるソフトウェア設定項目の関係は、ホスティング、実行、または依存等のさまざまな形態であってもよい。このため、サーバ機器にインストールされたデータベースアプリケーションは、サーバ機器と「ホスティング」の関係を有することにより、当該データベースアプリケーションがサーバ機器にホストされていることを示し得る。いくつかの実施形態において、サーバ機器は、データベースアプリケーションと「使用」の相互関係を有することにより、当該サーバ機器がデータベースアプリケーションにより使用されることを示し得る。これらの関係は、上述の検出手順を使用して自動的に見つけられるようになっていてもよいが、関係を手動で設定することも可能である。
【0108】
また、サービスと1つまたは複数のソフトウェア設定項目との間の関係は、さまざまな形態であってもよい。一例として、ウェブサービスは、それぞれが異なるハードウェア設定項目にインストールされたウェブサーバソフトウェア設定項目およびデータベースアプリケーションソフトウェア設定項目を含み得る。ウェブサービスがこれらのソフトウェア設定項目の両方との「依存」関係を有し得る一方、ソフトウェア設定項目は、ウェブサービスと「使用」の相互関係を有する。サービスは、検出手順によって完全に決定され得るわけではなく、代わりに、サービスマッピング(たとえば、設定ファイルのプローブおよび/または設定項目間のサービスレベル関係を決定するためのネットワークトラフィック分析の実行)および場合によりある程度の手動設定に依拠していてもよい。
【0109】
関係情報は、取得方法に関わらず、マネージドネットワークの運用に有益となり得る。とりわけ、IT担当者は、特定のソフトウェアアプリケーションが展開されている場所およびサービスを構成する設定項目を迅速に決定することができる。これにより、サービスの停止または劣化の根本原因を迅速に突き止めることができる。たとえば、2つの異なるサービスの応答時間が遅い場合は、(可能性として数ある行為の中でもとりわけ)CMDBへの問い合わせによって、両サービスが使用するデータベースアプリケーションのプロセッサ利用率が高いことが根本原因であるものと判定することができる。このため、IT担当者は、サービスを構成する他の設定項目の健全性および性能の検討に時間を浪費することなく、データベースアプリケーションに対処することができる。
【0110】
V.リクエスト-応答プロトコル通信のネスト化
ネットワークベースのアプリケーションは、2つ以上のコンピュータ機器にまたがって動作するプログラムの例である。たとえば、マネージドネットワークの背景において、通常の構成には、2つ(以上)のサーバにまたがって分散し得るコントローラ-エージェントアプリケーションを含み得る。他の例としては、ウェブベースのアプリケーション等、クライアント-サーバプログラムが挙げられる。2つ以上のサーバにまたがって分散するアプリケーションプログラムが通信可能となる前に、従属するアプリケーションコンポーネントとサーバとの間の接続を確立する必要がまずあり得、これには、アプリケーションの特徴および/または機能の調整を含む。これには、たとえば所定のネゴシエーション済みのプロトコルを使用して継続的なセキュア通信チャネルを確立する2つのサーバまたは他のコンピュータ機器を必然的に伴い得る。
【0111】
より一般的に、分散アプリケーションの適正な動作は、通信接続されているさまざまなコンピュータ機器へのインストールおよび/またはコンピュータ機器上での動作がなされているアプリケーションプログラムバージョンの同期および/または調整に少なくとも部分的に依存し得る。同期および調整によれば、ソフトウェア機能および/または関連するアプリケーション関連データの同一および/または互換性のあるバージョンは、分散プログラム実行に関与する2つ以上のコンピュータ機器上で動作および/または常駐することができる。分散ソフトウェアに関して同期していないプログラムバージョンおよび/または互換性のない機能は、たとえばあるコンピュータ機器もしくはシステムのアップグレードまたは異なる時間における共通アップグレードの適用によって生じる可能性もある。
【0112】
本明細書においては、一例としてコントローラコンピュータ機器およびエージェントコンピュータ機器の構成の背景にて例示的な実施形態を記載する。コントローラコンピュータ機器としては、サーバも可能であり、エージェントコンピュータ機器としては、クライアントも可能である。ただし、他の構成も可能である。たとえば、コントローラコンピュータ機器およびエージェントコンピュータ機器は両方とも、サーバ等のネットワークコンピュータ機器またはシステムであり得、または両方とも、アプリケーションプログラムのコントローラコンポーネントおよびエージェントコンポーネントを実行するクライアント機器であり得る。いずれの場合も、コントローラ-エージェント構成を考慮することにより、例示的な実施形態に関する一般性は失われないことが了解されるものとする。
【0113】
通常の使用事例または他の動作シナリオにおいては、コントローラコンピュータ機器がエージェントコンピュータ機器と機能検出手順の形式を開始することにより、両機器が1つまたは複数のアプリケーションプログラムに関して動作互換性があること、または、動作互換性があるようにし得ることを保証するようにしてもよい。互換性は、プログラムの特徴および機能、ならびに/または関連するデータに関連し得る。特徴および機能の互換性は、たとえばバージョン番号の調整に従って決定され得、関連するデータの互換性は、たとえば両機器におけるデータ定義の何らかの形態の最小共通性に従って決定され得る。互換性の調整には、たとえば機器の一方または両方における設定初期化動作の実行等、他の動作が含まれ得る。機器機能の互換性のいくつかの実例については以下に論じる。
【0114】
2つ以上の機器の機能の同期および/もしくは調整ならびに機能の互換性の決定に関する本明細書の議論において、用語「検出(discovery)」および関連するプロセスは、リモートマネージドネットワークおよび演算インスタンスの背景において上述した検出よりもいくらか具体的に適用される。より詳細には、機器、アプリケーション、およびサービス等のリモートで管理可能なネットワークリソースの背景において、検出には、ネットワークリソースの可用性、場所、および設定について学習するためのプロセスをより広く含む。機器機能の背景において、検出には、分散アプリケーションプログラムおよび関連するデータの機器間の互換性について学習するためのプロセスを含む。また、機能の検出は、ネスト化リクエスト-応答プロトコルの例示的な実施形態が使用され得る1つの例示的な背景に過ぎないことに留意するものとする。
【0115】
通常の使用事例または他の動作シナリオの別の実例として、ネットワークのサーバ間でソフトウェアアプリケーションが異なる時間にアップグレードされ、コントローラおよびエージェントがそれぞれの時点で異なる機能を有するようになっていてもよい。結果として、既存の接続は、再ネゴシエーションが必要となり得る。新たな(たとえば、アップグレードされた)機能を使用するには、コントローラおよびエージェントの両者がそれぞれの接続を更新し、過去にサポートされていなかった機能をサポートし得ることを確認できることが必要となる。従来の非同期の処理およびネットワーク通信では、ローカルのコントローラコンピュータ機器(または単に、サーバ)がネットワークを介してリクエストをリモートのエージェントコンピュータ機器(または単に、別のサーバ)に送る非同期プロセスを開始し、後者が別の非同期プロセスを開始することができる。ローカルおよびリモートのプロセスはそれぞれ、完了まで実行できる結果、たとえば成功またはエラーの終端状態となる。ただし、非同期処理の性質から、一方のプロセスが他方の前に完了となる場合もあるし、一方のプロセスの結果が他方のプロセスの結果によって決まる場合もある。場合によっては、プロセスの耐障害性が非常に低くなる可能性もある。サーバがそれぞれ独立して、接続の生成および有効化または接続で使用する機能の選定および有効化を委ねられている場合は、一方のサーバが当該プロセスを正常に完了する一方、他方のサーバがエラー状態または不完全な情報で終端する可能性もある。この結果、一方のサーバが特定の一組の特徴または機能をサポートし得るアクティブな接続を有し得る一方、他方のサーバは、エラー状態の接続を示す。そして、この状態の不整合により、分散アプリケーションの不適正な動作ならびに/または他の誤った機能もしくは望ましくない機能がもたらされ得る。
【0116】
機能を調整する従来の手法では、リモートサーバのポーリングによって、リモート非同期プロセスのステータスまたは進行を確認することができる。ただし、この手法では、リモートで検出可能な成功またはエラーの終端ステータスを示さないエラーを考慮できない可能性もあり、ポーリングが無限に続く可能性もある。他の例において、非同期リモートプロセスは、接続を初期化および確立しつつ接続状態をアクティブに切り替える最終ステップを含み得る。非同期で調整なしに実行される場合は、一方のシステムが初期化プロセスを実行して状態をアクティブに切り替え、他方のシステムが初期化を完了して接続経由でコマンドを受け入れる準備ができる前に使用を開始することができる。これらは、マネージドネットワークの背景における従来技術の欠陥の数例に過ぎない。この問題は、2つのコンピュータ機器間のトランザクション動作に適用されるステートレスなリクエスト-応答通信プロトコルに関してより一般的に理解され得る。
【0117】
A.分散アプリケーション用の例示的なネットワーク通信プロトコル
現在の多くの、そしておそらくはほとんどの、ネットワークベースのアプリケーション(たとえば、ウェブベースのアプリケーション)では一般的に、異なる機器にまたがって分散するアプリケーションインスタンスまたはコンポーネント間の通信がステートレスなリクエスト-応答通信プロトコルの個々のインスタンスによりサポートされる。周知の例がHTTPであって、その大部分がRESTモデルに従う。これらのプロトコルは、成熟して広く採用されており、多くのアプリケーションおよび/または分散ソフトウェアアプリケーションを実行する多くのマネージドネットワークに対して、業界標準ではないにしても事実上の標準となっている可能性がある。RESTに従うプロトコルまたはRESTに準拠するプロトコルは、「RESTful」プロトコルと称する場合もある。
【0118】
説明を目的として、RESTアーキテクチャモデルは、以下のように、クライアント-サーバモデルに対して理解され得る。RESTサーバは、(ウェブ)リソースへのアクセスを提供可能であり、RESTクライアントは、得られたリソースへのアクセスおよび修正が可能である。クライアントとサーバとの間の通信は、通常はクライアントからサーバへのリクエストとして発行される「方法」によりサポートされ得る。リクエスト(たとえば、方法)に対する動作によって、サーバは、JSONおよび/またはXML等の表現形式で提供されるリソースを含み得る応答を送ることができる。
【0119】
クライアント-サーバの背景において、クライアントおよびサーバの役割は、リクエストを送るエンティティおよびリクエストに対する応答を送るエンティティと関連付けられている。ただし、クライアントおよびサーバの役割は、このような役割を通常想定し得る特定種類の機器に限定する必要のないことが了解されるものとする。たとえば、エンドユーザ機器(デスクトップコンピュータ、スマートフォン等)のように通例的な2つのクライアント機器がある特定の分散アプリケーションプログラムのためのRESTfulプロトコルに関与することによって、一方のエンドユーザ機器がクライアントとして動作し、他方がサーバとして動作するようになっていてもよい。同様に、他の何らかの分散アプリケーションプログラムの背景においては、リモートネットワーク管理システムの2つのサーバのように通例的な2つのサーバ機器が同じように、一方がクライアントとして、他方がサーバとして動作するようになっていてもよい。また、他の構成も同様に可能である。
【0120】
RESTは、標準的なアプリケーションプログラミングインターフェース(API)を使用して実施され得るが、おそらくはHTTPが最も一般的である(ただし、唯一の可能性ではない)。いくつかの実施態様において、RESTでは、以下に表形式で挙げるHTTPの4つの方法のみを使用し得る。
【表1】

【0121】
いくつかの実施態様において、RESTは、PATCHおよび/またはOPTIONS等の付加的な方法を使用し得る。他の実施態様では、使用する方法がここに挙げる4つよりさらに少ない場合もある。
【0122】
第1のコンピュータ機器(たとえば、コントローラコンピュータ機器)から第2のコンピュータ機器(たとえば、エージェントコンピュータ機器)に方法がHTTPリクエストとして送られると、第2のコンピュータ機器は、HTTP応答を第1のコンピュータ機器に送ることで応答するようにしてもよい。各リクエスト-応答対は、別個のインスタンスとして実行される。上述の通り、RESTfulプロトコルは、クライアント-クライアントまたはサーバ-サーバ等、さまざまな種類の機器対で実施され得るが、これは、本明細書の例示的な実施形態において考慮されるコントローラ-エージェント構成の例に対応し得る。上記クライアント-サーバの実例は、リクエスト-応答プロトコルにおける要求側および応答側の役割の一例であり、何らの限定も意図されない。
【0123】
機能検出手順には、コントローラコンピュータ機器とエージェントコンピュータ機器との間のステートフルなトランザクション通信を必然的に伴い得るが、トランザクション通信に対して、REST、HTTP、ならびに他の類似するモデルおよびプロトコルのリクエスト-応答の性質は十分に適さない。結果として、ほとんどまたはすべてではないにしても、多くのウェブベース(および、ネットワークベース)のアプリケーションに関して、機能検出手順は、遅延ならびに/または他の性能および/もしくは運用上の非効率性をもたらす制約を受ける可能性がある。したがって、本明細書の例示的な実施形態は、リクエスト-応答プロトコルのネスト化によって、トランザクション通信におけるそれぞれの制約に対処するためのシステムおよび方法を提供する。より詳細には、一例として本明細書に記載のリクエスト-応答通信プロトコルのネスト化によって、ステートフルなトランザクション通信が未保有のプロトコルに導入される。これにより、置換および/またはゼロからのやり直しの必要なく、広く使用されているリクエスト-応答通信プロトコルの欠陥に対処できるため都合が良い。
【0124】
本明細書の例示的な実施形態は、機能検出手順に対するリクエスト-応答通信プロトコルの欠点に対処する観点で示すが、リクエスト-応答通信をネスト化する新規かつ有利な技術は、ステートフルなトランザクション通信による優れたサポートまたは利益が期待できる手順またはプロセスにステートレスなリクエスト-応答通信プロトコルが制約を課す任意のシナリオまたは状況に対して、より一般的に適用され得ることが了解されるものとする。このため、本明細書の例示的な実施形態は、リクエスト-応答通信のネスト化の他のアプリケーションに関する制限と捉えるべきものではない。
【0125】
リクエスト-応答プロトコル通信の個々のインスタンスは、単方向または半二重通信として記述される場合があることに留意されたい。この記述は、リクエストとそれに続く応答の双方向性を否定するものではない。むしろ、2つの非同期プロセス間の通信に用いられるプロトコルのステートレス性に焦点を当てている。2つの演算インスタンス(たとえば、2つのコンピュータ機器)間のリクエスト-応答プロトコル通信の背景における半二重通信の別の特性として、インスタンスのうちの1つだけが所与のリクエスト-応答インスタンスにリクエストデータを与えることができる。
【0126】
リクエスト-応答通信の別個のインスタンスを伴う従来の動作の例およびリクエスト-応答通信のネストインスタンスの例を記述する前に、2つの機器の機能の互換性の調整および同期について簡単な実例を提示する。
【0127】
B.機能の調整および互換性
図6は、例示的な実施形態に係る、2つの例示的な機器の例示的な機器機能データおよび互換性構成を示している。図示のように、コントローラコンピュータ機器602が関連するコントローラ機能データ601を有していてもよく、エージェントコンピュータ機器604が関連するエージェント機能データ603を有していてもよい。機器ごとに示される機能データは、主に概念的な実例となり、機能は文字通りの意味で表される。実際のところ、機能データは、格納および/または転送に際して、より抽象的な形式となる可能性もある。図6における機能データの文字表現は、例示的な実施形態に関する制限の意図ではない。一例として、両機器の機能データは、少なくとも1つのデータバージョン番号を含むユーザおよび機器データのリストのほか、アプリケーションバージョン番号を含むサポート対象アプリケーションのリストを含む。
【0128】
互換性のある機能の規定は、コントローラ機能データ601およびエージェント機能データ603の共通部分と考えられる。この共通部分は、重畳および/または同期する機能607として示される一種のベン図として表される。図示のように、重畳または共通部分は、互換性機能データ605を生成する一方、共通部分から除外された機能データは、コントローラ機能非互換性データ601-Xおよびエージェント機能非互換性データ603-Xとして示される。
【0129】
図6の特定の説明例において、互換性ユーザデータは、「姓、名」を含む一方、エージェント機能データ603の一部であるミドルイニシャル(「MI」)および「レポート先」は、除外される。互換性機器データは、「OS」および「Config バージョン 9.001」を含む一方、コントローラ機能データ601の「Config バージョン 9.104」および「ID」は、除外される。互換性アプリケーションは、「UserSetUp バージョン 3.959」、「DeviceSetUp バージョン 5.700」、および「WebDocLib バージョン 3.2.15」である一方、コントローラ機能データ601の「UserSetUp バージョン 4.002」ならびにエージェント機能データの「DeviceSetUp バージョン 5.741」および「WebDocLib バージョン 3.2.18」は、除外される。本例の場合、ソフトウェアアプリケーションおよびデータ構成の後のバージョンは、前のバージョンを使用する2つ以上のコンピュータ機器が互換性があるように、前のバージョンと後方互換性があるものと仮定する。
【0130】
図6の例示的な互換性機能データ605は、コントローラコンピュータ機器602およびエージェントコンピュータ機器604の同期機能状態を表すものと考えられる。例示的な実施形態によれば、同期機能状態は、機能の調整のための手順により実現され得る。前述の通り、従来のようなリクエスト-応答通信プロトコルの単一インスタンスの使用は、非効率的であり、場合によっては、適正な同期機能状態を実現できない可能性もある。次に、従来の手法の一例を記載した後、ネスト化リクエスト-応答通信の例示的な実施形態を記載する。
【0131】
C.従来の動作
機能の調整のためのリクエスト-応答通信プロトコルの従来の使用例をコントローラコンピュータ機器702とエージェントコンピュータ機器704との間のメッセージフロー図の形態で図7に示す。メッセージフローは、一般的なリクエスト-応答プロトコルとして示され、たとえば、HTTPまたは別のREST様プロトコルの使用による実施も可能である。メッセージフロー図においては、コントローラコンピュータ機器702および704間の水平矢印によりメッセージが表され、時間は図中の下方に流れる。具体的な時間スケールは示唆されていないが、リクエストと関連する応答との間の通常の時間は、たとえば1~2秒オーダであってもよい。より長い時間および/またはより短い時間も同様に可能である。
【0132】
通信の基本フローには、リクエスト-応答メッセージ対の個々のインスタンスを含む。図7においては、個々のインスタンスが破線矩形721、723、725、および727により識別される。また、リクエスト-応答メッセージ対の個々のインスタンスは、2つのコンピュータ機器上の実行のスレッドそれぞれにより実行されるようになっていてもよい。実行スレッドは、コントローラコンピュータ機器702およびエージェントコンピュータ機器704の下側の垂直タイムライン上の短い矩形セグメントにより表される。具体的に、インスタンス721は、コントローラコンピュータ機器702上のスレッドC7-1およびエージェントコンピュータ機器704上のスレッドA7-1により実行されるものとして示している。同様に、インスタンス723は、コントローラコンピュータ機器702上のスレッドC7-2およびエージェントコンピュータ機器704上のスレッドA7-2により実行されるものとして示しており、インスタンス725は、コントローラコンピュータ機器702上のスレッドC7-3およびエージェントコンピュータ機器704上のスレッドA7-3により実行されるものとして示しており、インスタンス727は、コントローラコンピュータ機器702上のスレッドC7-4およびエージェントコンピュータ機器704上のスレッドA7-4により実行されるものとして示している。他の構成においては、各機器上の単一のスレッドがすべてのインスタンスを実行することも可能である。
【0133】
図示の例において、インスタンス721では、コントローラコンピュータ機器702が、コントローラ機能データの少なくとも一部を含むコントローラリクエストであるコントローラリクエストメッセージS-701-rqstをエージェントコンピュータ機器704に送る。エージェントコンピュータ機器704は、S-701-rqstを受信したら、スレッドA7-1を呼び出すようにしてもよい。このスレッドでは、コントローラリクエストメッセージS-701-rqstを確認するエージェント応答であるエージェント応答メッセージS-107-rspを生成して送るようにしてもよい。
【0134】
また、エージェントコンピュータ機器704は、コントローラリクエストメッセージS-701-rqstを受信したら、一例として上述した通り、共通部分の機能の決定に関連する1つまたは複数の動作のほか、互換性のある機能の選択および接続の状態の設定等、1つまたは複数の初期化動作を実行するようにしてもよい。また、同じく上述の通り、コントローラコンピュータ機器702は、当該コントローラコンピュータ機器上で動作している可能性もある他のアプリケーションプログラムへの機能の通知等、1つまたは複数の初期化および/または状態設定動作を実行するようにしてもよい。同様のプロセスがエージェントコンピュータ機器上で実行されるようになっていてもよいし、従来の動作においては、少なくともコントローラコンピュータ機器がそれらの実行を仮定するようにしてもよい。ただし、コントローラコンピュータ機器702は、単一のリクエスト-応答インスタンス721だけではそれ自体およびエージェントコンピュータ機器の機能同期状態を必ずしも決定できない可能性がある。
【0135】
図7の例の続きとして、次に、コントローラコンピュータ機器702は、連続的なポーリングの試行によって、エージェントコンピュータ機器704が互換性のある機能の決定に成功したか、また、対応する状態への遷移に成功したかを判定する。このため、インスタンス723において、ポーリングにはステータスのコントローラリクエストであるコントローラリクエストメッセージS-703-rqstを含み得るが、これには、たとえばリクエストに応答する動作が未完了である旨の指標のみでコントローラリクエストメッセージS-703-rqstを確認するエージェント応答であるエージェント応答メッセージS-703-rspが後続する。第2のポーリングにはステータスの別のコントローラリクエストであるコントローラリクエストメッセージS-705-rqstを含み得るが、これには、コントローラリクエストメッセージS-705-rqstを確認する別のエージェント応答であるが、同じくリクエストに応答する動作が未完了であることしか示し得ないエージェント応答メッセージS-705-rspが後続する。本例において、ステータスをポーリングする最終のコントローラリクエストメッセージS-707-rqstの後、エージェントコンピュータ機器は、動作が完了した旨の指標および/またはステータス更新情報でエージェントリクエストメッセージS-707-rqstを確認するエージェント応答メッセージS-707-rspで応答する。
【0136】
このポーリング手法は、非効率となる可能性および/または大幅な遅延が発生する可能性がある。また、場合によっては、ポーリングが無限に継続したり、数サイクル以上継続したりする可能性がある。このことは、図7において、ポーリングインスタンス間の垂直な省略記号により示される。従来の手法の欠点の主な原因の1つとして、リクエスト-応答通信プロトコルの個々のインスタンスのステートレス性と、本質的にトランザクションである手順への適用と、がある。リクエスト-応答インスタンスをネスト化することによって、ステートフル性がリクエスト-応答プロトコルに導入され得るため、機能調整のトランザクションが自然かつ効率的にサポートされると同時に、分散アプリケーションの機器間通信に対して適用済みの既存の通信プロトコルが保存される。
【0137】
D.ネスト化による動作の強化
図8は、例示的な実施形態に係る、2つの例示的な機器間のネスト化リクエスト-応答プロトコル通信の一例を示している。図7の実例と同様に、図8の例示的な動作は、コントローラコンピュータ機器802とエージェントコンピュータ機器804との間のメッセージフロー図を示している。図8の基本フォーマットは図7と同じであり、コントローラコンピュータ機器802および804間の水平矢印によりメッセージが表され、時間は図中の下方に流れる。
【0138】
図8に示す例において、通信の基本フローには、リクエスト-応答メッセージ対の2つのインスタンスのみを含み、一方のインスタンス対823が別のインスタンス対821にネスト化されている。リクエスト-応答メッセージ対の2つのインスタンスは、2つのコンピュータ機器上の実行のスレッドそれぞれによって、大部分は同時に実行されるようになっていてもよい。具体的に、インスタンス821は、コントローラコンピュータ機器802上のスレッドC8-1およびエージェントコンピュータ機器804上のスレッドA8-1により実行されるものとして示している。ネスト化動作において、インスタンス823は、コントローラコンピュータ機器702上のスレッドC8-2およびエージェントコンピュータ機器804上のスレッドA8-2によりインスタンス821内で実行されるものとして示している。
【0139】
図示の例において、インスタンス821では、コントローラコンピュータ機器802が、コントローラ機能データの少なくとも一部を含むコントローラリクエストであるコントローラリクエストメッセージS-801-rqstをエージェントコンピュータ機器804に送る。エージェントコンピュータ機器804は、S-801-rqstを受信したら、スレッドA8-1を呼び出すようにしてもよい。このスレッドでは、一例として上述した通り、共通部分の機能の決定に関連する1つまたは複数の動作のほか、互換性のある機能の選択および接続の状態の設定等、1つまたは複数の初期化動作を実行するようにしてもよい。また、コントローラコンピュータ機器802上でのスレッドC8-1の実行によって、1つまたは複数の初期化および/または状態設定動作を実行するようにしてもよい。
【0140】
従来の動作とは対照的に、エージェントコンピュータ機器804は、コントローラリクエストメッセージS-801-rqstに対する応答を直ちに送るのではなく、スレッドA8-1と同時にスレッドA8-2を呼び出す(たとえば、並列実行する)。そして、スレッドA8-2は、ステップS-803において、図6に示す互換性機能データ605等の互換性データを決定するようにしてもよい。次に、スレッドA8-2は、エージェントリクエストメッセージS-805-rqstを送る。例示的な実施形態によれば、コントローラリクエストメッセージS-801-rqstに対する応答が保留中の間にエージェントリクエストメッセージS-805-rqstが送られると、エージェントリクエストメッセージS-805-rqstが効果的にネスト化され、これが最終的に、コントローラリクエストメッセージS-801-rqstにより開始されるリクエスト-応答対となる。このように、当該継続期間にわたって、コントローラコンピュータ機器802およびエージェントコンピュータ機器804の両者で状態が維持される。
【0141】
エージェントリクエストメッセージS-805-rqstによる第2のリクエスト-応答対の開始は、インスタンス対823の確立にも対応し、上述の通り、これがインスタンス対821にネスト化される。
【0142】
コントローラコンピュータ機器802は、エージェントリクエストメッセージS-805-rqstを受信したら、スレッドC8-2を呼び出すようにしてもよい。このスレッドは、1つまたは複数の動作S-807を実行することにより、その機能を、エージェントリクエストメッセージS-805-rqstにおいて報告されたエージェントコンピュータ機器804の機能と同期させるようにしてもよい。そして、スレッドC8-2は、コントローラ応答メッセージS-805-rspをエージェントコンピュータ機器804に送ることにより、エージェントリクエストメッセージS-805-rqstを確認するようにしてもよい。これにより、コントローラコンピュータ機器802による同期を確認して、インスタンス823と、エージェントコンピュータ機器804およびコントローラコンピュータ機器802それぞれのスレッドA8-2およびC8-2と、を終端させるようにしてもよい。
【0143】
コントローラ応答メッセージS-805-rspを受信したエージェントコンピュータ機器はその後、コントローラリクエストメッセージS-801-rqstに対する確認としてエージェント応答メッセージS-801-rspを送信するようにしてもよい。これにより、エージェントコンピュータ機器804による同期を確認して、インスタンス821と、エージェントコンピュータ機器804およびコントローラコンピュータ機器802それぞれのスレッドA8-1およびC8-1と、を終端させるようにしてもよい。
【0144】
コントローラコンピュータ機器802およびエージェントコンピュータ機器804それぞれの2つのスレッドによる実施は、1つの考え得る例であって、何ら限定の意図はなく、他の実施態様(たとえば、単一スレッド)も同様に可能である。図示の例において、スレッドA8-1は、たとえばコントローラリクエストメッセージS-801-rqstに対する応答を返す動作および/または他の初期化動作を実行する動作等をブロックすることも可能である。他の実施態様において、スレッドA8-1およびA8-2の動作は、単一のスレッドによる実行も可能である。
【0145】
例示的な実施形態によれば、このネスト化手法によって、インスタンス823により確立された第2の接続が開放されている限りは、インスタンス821によってコントローラコンピュータ機器802とエージェントコンピュータ機器804と間に確立された第1の接続も開放状態に保たれる。これにより、両インスタンスの継続期間全体でステートフル性が効果的に導入され、単一の完全なトランザクションにおいて、機能の調整が実行され得る。なお、調整の結果は、必ずしも同期の成功および/または互換性機能の実現である必要はない。たとえば、コントローラコンピュータ機器802およびエージェントコンピュータ機器804の一方もしくは他方(または、両方)が何らかの理由で機能同期状態を実現できない可能性もある。ただし、手順全体がステートフルなトランザクション内で実行されることから、このような如何なるエラー状態も完了したトランザクションの一部として検出されてもよく、この時点で、失敗またはエラー状態に関連する動作が呼び出されるようになっていてもよい。ただし、エラーが発生しなかったかのように進めようとするコンピュータ機器による試みは、回避または防止されるようになっていてもよい。
【0146】
2つ以上のコンピュータ機器にまたがって動作するように構成されている分散アプリケーションプログラムおよび/または他の形態のマルチコンポーネントアプリケーションプログラムを実行するため、リクエスト-応答プロトコルを使用して通信を行うコンピュータ機器またはシステムの場合、一例として本明細書に記載のネスト化技術によれば、必要とする動作にステートフルなトランザクションが可能となる。本明細書に示す機能の調整がこのような動作の一例である。分散アプリケーションをサポートする機器間通信のためのRESTfulプロトコル(たとえば、HTTP)のほぼユビキタスな使用と併せて、分散アプリケーションプログラムおよびシステムの広範な展開を考慮すると、ステートフルなトランザクションの取り扱いに対するこれら通信プロトコルの適応によって、機能の汎用性および柔軟性ならびに実行および展開の実用性および実現可能性の両観点で利益および利点がもたらされる。
【0147】
VI.例示的なオペレーション
図9は、例示的な一実施形態を示したフローチャートである。図9により示されるプロセスは、コンピュータ機器100等の1つまたは複数のコンピュータ機器および/またはサーバクラスタ200等のコンピュータ機器のクラスタにより実行されるようになっていてもよい。ただし、このプロセスは、他種の機器または機器サブシステムによっても実行可能である。たとえば、このプロセスは、リモートネットワーク管理プラットフォームまたはラップトップもしくはタブレット機器等の携帯型コンピュータの演算インスタンスにより実行することも可能である。
【0148】
例示的な実施形態によれば、例示的な方法は、半導体メモリ、光学および/もしくは磁気ディスク、または他の有形製品等のコンピュータ可読媒体に格納されるコンピュータ可読命令として実現されるようになっていてもよい。いくつかの事例および/または実施形態において、コンピュータ可読媒体は、非一時的であってもよい。コンピュータ可読媒体は、1つまたは複数のコンピュータ機器への移送および導入に適する様態でコンピュータ可読命令の格納に用いられるようになっていてもよい。この追加または代替として、コンピュータ可読媒体は、1つまたは複数のコンピュータ機器の1つまたは複数のプロセッサが(たとえば、内部メモリとして)アクセスすることにより、命令にアクセスするとともに、これに応じて動作を実行し得るようになっていてもよい。コンピュータ可読命令は、1つまたは複数のコンピュータ機器の1つまたは複数のプロセッサにより実行された場合、1つまたは複数のコンピュータ機器に例示的な方法の動作を実行させるようにしてもよい。このため、1つまたは複数のコンピュータ機器が例示的な方法を実行するように構成されているものと考えられる。
【0149】
図9の実施形態は、そこに示される特徴のいずれか1つまたは複数を除去することによって簡略化することができる。さらに、これらの実施形態は、それ以前の図面のいずれかあるいは本明細書に記載の特徴、態様、および/または実施態様と組み合わされるようになっていてもよい。
【0150】
例示的な実施形態によれば、図9に示す例示的な方法では、コントローラコンピュータ機器がエージェントコンピュータ機器と通信接続されていてもよい。この接続は、たとえばネットワークまたは他の通信システムを介してであってもよい。
【0151】
ブロック902において、例示的な方法は、コントローラコンピュータ機器から、リクエスト-応答プロトコルの第1のインスタンス上で、コントローラリクエストをエージェントコンピュータ機器に送信することを含んでいてもよい。コントローラリクエストは、コントローラコンピュータ機器の機能を表すコントローラデータを含んでいてもよい。コントローラデータの例示的かつ非限定的な一例は、図6に示すコントローラ機能データ601である。
【0152】
ブロック904において、例示的な方法は、コントローラリクエストを送信した後、エージェントコンピュータ機器から、リクエスト-応答プロトコルの第2のインスタンス上で、エージェントリクエストをコントローラコンピュータ機器で受信することを含んでいてもよい。エージェントリクエストは、エージェントコンピュータ機器の機能を表すエージェントデータを含んでいてもよい。
【0153】
ブロック906において、例示的な方法は、エージェントデータの少なくとも一部をコントローラコンピュータ機器のメモリに格納することを含んでいてもよい。エージェントデータの例示的かつ非限定的な一例は、同じく図6に示すエージェント機能データ603である。
【0154】
ブロック908において、例示的な方法は、コントローラコンピュータ機器から、リクエスト-応答プロトコルの第2のインスタンス上で、エージェントリクエストに対するコントローラ応答をエージェントコンピュータ機器に送信することを含んでいてもよい。コントローラ応答は、エージェントリクエストの受信の確認と考えられるため、リクエスト-応答プロトコルに従い得る。
【0155】
最後に、ブロック910において、例示的な方法は、コントローラ応答を送信した後、エージェントコンピュータ機器から、リクエスト-応答プロトコルの第1のインスタンス上で、エージェント応答をコントローラコンピュータ機器で受信することを含んでいてもよい。エージェント応答は、コントローラリクエストの受信の確認と考えられるため、同じくリクエスト-応答プロトコルに従い得る。
【0156】
例示的な実施形態によれば、例示的な方法は、コントローラリクエストをエージェントコンピュータ機器で受信することと、コントローラデータの少なくとも一部をエージェントコンピュータ機器のメモリに格納することと、をさらに含んでいてもよい。また、例示的な方法の別の動作では、コントローラリクエストの受信に応答して、エージェントコンピュータ機器が、コントローラコンピュータ機器の機能と互換性があるおよび/または同期するエージェントコンピュータ機器の機能の部分集合を決定することと、エージェントコンピュータ機器から、リクエスト-応答プロトコルの第2のインスタンス上で、エージェントリクエストをコントローラコンピュータ機器に送信することと、をさらに含んでいてもよい。エージェントリクエストは、エージェントコンピュータ機器の機能の決定された部分集合のインディケーションをさらに含んでいてもよい。コントローラコンピュータ機器の機能と互換性があるおよび/または同期するエージェントコンピュータ機器の機能の部分集合の例示的かつ非限定的な一例は、図6に示す互換性機能データ605中のエージェント機能データの部分集合である。
【0157】
さらに、例示的な実施形態によれば、コントローラコンピュータ機器のメモリに格納されるエージェントデータの少なくとも一部は、エージェントコンピュータ機器の機能の決定された部分集合と関連付けられているデータを含んでいてもよい。同様に、エージェントコンピュータ機器のメモリに格納されるコントローラデータの少なくとも一部は、エージェントコンピュータ機器の機能の部分集合に対応するコントローラコンピュータ機器の機能の部分集合と関連付けられているデータを含んでいてもよい。エージェントコンピュータ機器の機能の部分集合に対応するコントローラコンピュータ機器の機能の部分集合の例示的かつ非限定的な一例は、図6に示す互換性機能データ605中のコントローラ機能データの部分集合である。
【0158】
例示的な実施形態によれば、例示的な方法は、コントローラコンピュータ機器が、当該コントローラコンピュータ機器の機能の対応する部分集合をエージェントコンピュータ機器の機能の部分集合と同期させることをさらに含んでいてもよい。同期は、エージェントリクエストにおけるインディケーションに基づいていてもよい。
【0159】
例示的な実施形態によれば、例示的な方法は、コントローラ応答をエージェントコンピュータ機器で受信することと、コントローラ応答をエージェントコンピュータ機器で受信した後、エージェントコンピュータ機器から、リクエスト-応答プロトコルの第1のインスタンス上で、エージェント応答をコントローラコンピュータ機器に送信することと、をさらに含んでいてもよい。
【0160】
例示的な実施形態によれば、例示的な方法は、コントローラコンピュータ機器が、第1のコントローラ実行スレッド上で、リクエスト-応答プロトコルの第1のインスタンスの動作を実行し、第2のコントローラ実行スレッド上で、リクエスト-応答プロトコルの第2のインスタンスの動作を実行することをさらに含んでいてもよい。同様に、例示的な方法は、エージェントコンピュータ機器が、第1のエージェント実行スレッド上で、リクエスト-応答プロトコルの第1のインスタンスの動作を実行し、第2のエージェント実行スレッド上で、リクエスト-応答プロトコルの第2のインスタンスの動作を実行することをさらに含んでいてもよい。
【0161】
例示的な実施形態によれば、リクエスト-応答プロトコルは、REST(Representational State Transfer)に準拠する通信プロトコルおよび/またはREST上でモデル化された通信プロトコルであってもよい。このようなプロトコルの非限定的な一例がHTTPである。
【0162】
VII.結論
本開示は、種々態様の説明を意図した本願に記載の特定の実施形態の観点で限定されるものではない。当業者には明らかなように、その範囲から逸脱することなく、多くの改良および変形が可能である。以上の説明から、本明細書に記載したもののほか、本開示の範囲内の機能的に同等な方法および装置が当業者には明らかとなるであろう。このような改良および変形についても、添付の特許請求の範囲に含まれることになる。
【0163】
上記詳細な説明では、添付の図面を参照しつつ、開示のシステム、機器、および方法のさまざまな特徴および動作を記述している。本明細書および図面に記載の例示的な実施形態は、何ら限定を意味するものではない。本明細書に提示の主題の範囲から逸脱することなく、他の実施形態を利用可能であるとともに、他の変更を加えることができる。本明細書の全体に記載するとともに図面に示すような本開示の態様は、多種多様な異なる構成での配置、置換、結合、分離、および設計が可能であることが容易に了解される。
【0164】
図中のメッセージフロー図、シナリオ、およびフローチャートのいずれかまたはすべてに関して、本明細書に論じる通り、各ステップ、ブロック、および/または通信は、例示的な実施形態に係る情報の処理および/または情報の伝送を表し得る。これらの例示的な実施形態の範囲には、代替実施形態が含まれる。これらの代替実施形態において、たとえば、ステップ、ブロック、伝送、通信、リクエスト、応答、および/またはメッセージとして記述された動作は、関与する機能に応じて、図示または説明の順序から外れて実行可能である(実質的に同時または逆順を含む)。さらに、本明細書に論じるメッセージフロー図、シナリオ、およびフローチャートのいずれにおいても、使用するブロックおよび/または動作の数を増やすことも減らすことも可能であり、これらのメッセージフロー図、シナリオ、およびフローチャートの一部または全部を相互に結合可能である。
【0165】
情報の処理を表すステップまたはブロックは、本明細書に記載の方法または技術の特定の論理的機能を実行するように構成され得る回路に対応可能である。この代替または追加として、情報の処理を表すステップまたはブロックは、プログラムコード(関連データを含む)のモジュール、セグメント、または一部に対応可能である。プログラムコードは、上記方法または技術における特定の論理的操作または動作を実行するためにプロセッサによって実行可能な1つまたは複数の命令を含み得る。プログラムコードおよび/または関連データは、RAM、ディスクドライブ、半導体ドライブ、または別の記憶媒体を含む記憶装置等の如何なる種類のコンピュータ可読媒体にも格納可能である。
【0166】
また、コンピュータ可読媒体には、レジスタメモリおよびプロセッサキャッシュ等、データを短期間にわたって格納する非一時的コンピュータ可読媒体等の非一時的コンピュータ可読媒体を含み得る。非一時的コンピュータ可読媒体には、プログラムコードおよび/またはデータを長期間にわたって格納する非一時的コンピュータ可読媒体をさらに含み得る。したがって、非一時的コンピュータ可読媒体には、たとえばROM、光もしくは磁気ディスク、半導体ドライブ、またはコンパクトディスクリードオンリーメモリ(CD-ROM)等の二次的または永続的な長期ストレージを含み得る。また、非一時的コンピュータ可読媒体としては、その他任意の揮発性または不揮発性記憶システムも可能である。非一時的コンピュータ可読媒体は、たとえばコンピュータ可読記憶媒体または有形の記憶装置と考えられる。
【0167】
さらに、1つまたは複数の情報伝送を表すステップまたはブロックは、同じ物理的機器におけるソフトウェアおよび/またはハードウェアモジュール間の情報伝送に対応し得る。ただし、他の情報伝送としては、異なる物理的機器におけるソフトウェアモジュールおよび/またはハードウェアモジュール間も可能である。
【0168】
図面に示す特定の配置は、何ら限定的なものと捉えるべきではない。他の実施形態では、所与の図面に示す各要素の数を増やすことも減らすことも可能であることが了解されるものとする。さらに、図示の要素の一部の結合も可能であるし、省略も可能である。さらには、図面に示していない要素を例示的な一実施形態が含むことも可能である。
【0169】
本明細書においては、種々態様および実施形態を開示しているが、当業者には他の態様および実施形態も明らかとなるであろう。本明細書に開示の種々態様および実施形態は、例示を目的としたものであって、何ら限定を意図せず、真の範囲は以下の特許請求の範囲により示される。
図1
図2
図3
図4
図5A
図5B
図6
図7
図8
図9
【国際調査報告】