(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024171121
(43)【公開日】2024-12-11
(54)【発明の名称】アプリケーション更新方法及びアプリケーション更新システム
(51)【国際特許分類】
G06F 8/656 20180101AFI20241204BHJP
【FI】
G06F8/656
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023088018
(22)【出願日】2023-05-29
(71)【出願人】
【識別番号】000232955
【氏名又は名称】株式会社日立ビルシステム
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】山下 祐依
(72)【発明者】
【氏名】藤田 悠
(72)【発明者】
【氏名】受田 賢知
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376CA01
(57)【要約】
【課題】更新対象のアプリケーションが提供するサービスを停止することなく、有意のレスポンスを疑似的に送信する。
【解決手段】アプリケーション更新方法では、更新対象のアプリケーションの更新処理中以外にアプリケーションと更新対象のアプリケーションの間で送受信されるリクエスト及びレスポンスをキャプチャし、リクエスト・レスポンスセットをリクエスト・レスポンスセット学習テーブルに保存する。そして更新対象のアプリケーションの更新開始時に、リクエスト・レスポンスセット学習テーブルに基づくリクエスト・レスポンスセットテーブルをリクエスト・レスポンス参照部にダウンロードする。更新対象のアプリケーションの更新中に、キャプチャしたリクエストを基にリクエスト・レスポンスセットテーブルを参照して、リクエストに対応付けられているレスポンスを取得し、アプリケーションに対して送信する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
アプリケーションを更新するアプリケーション更新システムが行うアプリケーション更新方法であって、
前記アプリケーション更新システムは、
リクエスト・レスポンスセット学習テーブルを格納する記憶部と、
更新対象のアプリケーションを実行し機能させる更新対象のアプリケーション機能部と、
更新処理中でない前記更新対象のアプリケーションに対してリクエストを送信し、該更新対象のアプリケーションから受信した該リクエストに対するレスポンスに基づいて処理を行うアプリケーションを実行し機能させるアプリケーション機能部と、
前記リクエスト及び前記レスポンスをキャプチャし、前記更新対象のアプリケーションの更新処理中以外にキャプチャした該リクエスト及び該レスポンスを対応付けたリクエスト・レスポンスセットを前記リクエスト・レスポンスセット学習テーブルに保存するリクエスト・レスポンス参照部と、
リクエスト・レスポンスセット制御部と、
前記更新対象のアプリケーションの更新を管理するアプリケーション更新管理部と、を有し、
前記リクエスト・レスポンスセット制御部が、
前記アプリケーション更新管理部によって前記更新対象のアプリケーションの更新が開始される際に、前記リクエスト・レスポンスセット学習テーブルに基づくリクエスト・レスポンスセットテーブルを前記リクエスト・レスポンス参照部にダウンロードし、
前記リクエスト・レスポンス参照部が、
前記更新対象のアプリケーションの更新中に、前記リクエストをキャプチャした場合に、キャプチャした該リクエストを基に前記リクエスト・レスポンスセットテーブルを参照して、該リクエストに対応付けられているレスポンスを取得し、
取得した前記レスポンスを前記アプリケーションに対して送信する
ことを特徴とするアプリケーション更新方法。
【請求項2】
請求項1に記載のアプリケーション更新方法であって、
前記リクエスト・レスポンスセット制御部が、
前記アプリケーション更新管理部によって前記更新対象のアプリケーションの更新が開始される前に、
前記アプリケーション毎に前記リクエスト・レスポンスセットの重要度を算出し、
前記リクエスト・レスポンスセット学習テーブルのデータ容量が閾値を超過したかを判定し、
前記データ容量が閾値を超過した場合に、該閾値を超過したデータ容量に該当する前記リクエスト・レスポンスセット学習テーブルにおける総必要削減データ容量を計算し、
前記総必要削減データ容量と前記重要度とに基づいて、前記リクエスト・レスポンスセット学習テーブルにおける前記アプリケーション毎の必要削減データ容量を計算し、
前記リクエスト・レスポンスセット学習テーブルにおいて、前記アプリケーション毎に前記必要削減データ容量だけ前記リクエスト・レスポンスセットを削除する
ことを特徴とするアプリケーション更新方法。
【請求項3】
請求項2に記載のアプリケーション更新方法であって、
前記リクエスト・レスポンスセット制御部が、
前記アプリケーションと前記更新対象のアプリケーションとの間で前記リクエスト及び前記レスポンスの何れか又は両方を送受信するか若しくは何れも送受信しないかの前記アプリケーションと前記更新対象のアプリケーションとの依存関係の程度を表すリクエスト・レスポンス依存関係と、
前記アプリケーションと前記更新対象のアプリケーションとの間で送受信される前記リクエスト及び前記レスポンスの単位時間当たりの送信回数の合計を表すリクエスト・レスポンス頻度と、
前記リクエストに対する前記レスポンスが、受信確認応答、値の問合せに対する応答、及びデータの解析結果の応答、の何れであるかに応じて値が決まるレスポンス有意性と、
前記リクエストに対する前記レスポンスの送信が、同期しない非同期通信、同期する同期通信、及び、即時に送信される即時通信、の何れかに応じて値が決まる要求応答時間と、を算出し、
前記リクエスト・レスポンス依存関係、前記リクエスト・レスポンス頻度、前記レスポンス有意性、及び前記要求応答時間の少なくとも1つ又は2つ以上の積を、前記重要度として算出する
ことを特徴とするアプリケーション更新方法。
【請求項4】
請求項1に記載のアプリケーション更新方法であって、
前記リクエスト・レスポンス参照部が、
キャプチャした前記リクエストを基に前記リクエスト・レスポンスセットテーブルを参照した際に、前記リクエスト・レスポンスセットにおいて該リクエストに対応付けられている前記レスポンスが存在しない場合に、前記アプリケーションが前記更新対象のアプリケーションからの前記レスポンスを待合せる待合せ時間を取得し、
前記待合せ時間に所定時間を加算して該待合せ時間を延長する
ことを特徴とするアプリケーション更新方法。
【請求項5】
請求項4に記載のアプリケーション更新方法であって、
前記所定時間は、前記更新対象のアプリケーションの更新に要するとされる時間である
ことを特徴とするアプリケーション更新方法。
【請求項6】
請求項1に記載のアプリケーション更新方法であって、
前記リクエスト・レスポンスセット制御部が、
前記更新対象のアプリケーションの更新中において、前記リクエスト・レスポンスセット学習テーブルに保存されている前記リクエスト・レスポンスセットのうちの前記レスポンスの値を変更させて無効化する可能性がある無効化リクエストが前記アプリケーションから前記更新対象のアプリケーションに送信されたかを監視し、該無効化リクエストが送信されたことを検知すると、該リクエスト・レスポンスセット学習テーブルにおいて該リクエスト・レスポンスセットを削除し、
前記リクエスト・レスポンスセットが削除された前記リクエスト・レスポンスセット学習テーブルに基づく新規の前記リクエスト・レスポンスセットテーブルを前記リクエスト・レスポンス参照部にダウンロードする
ことを特徴とするアプリケーション更新方法。
【請求項7】
請求項1に記載のアプリケーション更新方法であって、
前記リクエスト・レスポンスセット制御部が、
前記更新対象のアプリケーションの更新中以外において、前記リクエスト・レスポンスセット学習テーブルに保存されている前記リクエスト・レスポンスセットのうちの前記レスポンスの値を変化させて無効化する可能性がある無効化リクエストが前記アプリケーションから前記更新対象のアプリケーションに送信されたかを監視し、該無効化リクエストが送信されたことを検知すると、該リクエスト・レスポンスセット学習テーブルにおいて該リクエスト・レスポンスセットを削除し、
前記リクエスト・レスポンス参照部が、
削除された前記リクエスト・レスポンスセットのうちの前記リクエストを偽リクエストとして前記更新対象のアプリケーションに送信し、該偽リクエストに対するレスポンスである新規レスポンスを該更新対象のアプリケーションから受信し、
前記偽リクエスト及び前記新規レスポンスを新たな前記リクエスト・レスポンスセットとして前記リクエスト・レスポンスセット学習テーブルに保存し、
前記リクエスト・レスポンスセット制御部が、
新規の前記リクエスト・レスポンスセットが保存された前記リクエスト・レスポンスセット学習テーブルに基づく新規の前記リクエスト・レスポンスセットテーブルを前記リクエスト・レスポンス参照部にダウンロードする
ことを特徴とするアプリケーション更新方法。
【請求項8】
アプリケーションを更新するアプリケーション更新システムであって、
リクエスト・レスポンスセット学習テーブルを格納する記憶部と、
更新対象のアプリケーションを実行し機能させる更新対象のアプリケーション機能部と、
更新処理中でない前記更新対象のアプリケーションに対してリクエストを送信し、該更新対象のアプリケーションから受信した該リクエストに対するレスポンスに基づいて処理を行うアプリケーションを実行し機能させるアプリケーション機能部と、
前記リクエスト及び前記レスポンスをキャプチャし、前記更新対象のアプリケーションの更新処理中以外にキャプチャした該リクエスト及び該レスポンスを対応付けたリクエスト・レスポンスセットを前記リクエスト・レスポンスセット学習テーブルに保存するリクエスト・レスポンス参照部と、
リクエスト・レスポンスセット制御部と、
前記更新対象のアプリケーションの更新を管理するアプリケーション更新管理部と、を有し、
前記リクエスト・レスポンスセット制御部は、
前記アプリケーション更新管理部によって前記更新対象のアプリケーションの更新が開始される際に、前記リクエスト・レスポンスセット学習テーブルに基づくリクエスト・レスポンスセットテーブルを前記リクエスト・レスポンス参照部にダウンロードし、
前記リクエスト・レスポンス参照部は、
前記更新対象のアプリケーションの更新中に、前記リクエストをキャプチャした場合に、キャプチャした該リクエストを基に前記リクエスト・レスポンスセットテーブルを参照して、該リクエストに対応付けられているレスポンスを取得し、
取得した前記レスポンスを前記アプリケーションに対して送信する
ことを特徴とするアプリケーション更新システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーション更新方法及びアプリケーション更新システムに関する。
【背景技術】
【0002】
例えば特許文献1には、「制御装置101からのパケットデータ107を中継ハブ102を有するネットワークを介して受信して蓄積保存し、必要に応じて監視用モニタ105に表示出力する監視用計算機104と、中継ハブ102に接続され監視用計算機104の更新対象S/W142をバージョンアップする保守装置103と、監視用計算機104の更新対象S/W142をバージョンアップ中に制御装置101から監視用計算機104に送付されたパケットデータ107をキャプチャし、バージョンアップ完了後にキャプチャしたパケットデータ107を監視用計算機104に送付することで、監視用計算機104が蓄積保存しているデータのバージョンアップ実施中の欠落を無くすパケットキャプチャ部131を設ける。」というソフトウエアバージョンアップ方法が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし特許文献1に開示の技術では、コンピュータのメモリ不足等により、ブルーグリーン・デプロイメントのような段階的なアプリケーションの更新手法が利用できない場合に、更新対象のアプリケーションを停止する必要が生じる。すなわち更新対象のアプリケーションが提供するサービスのダウンタイムが発生するという問題があった。
【0005】
また特許文献1に開示の技術では、キャプチャしたパケットを参照して単純な疑似応答を送信しているにすぎず、有意のレスポンスが必要なリクエストに対しては適切な疑似応答を送信できないという問題があった。
【0006】
本発明は、このような背景に鑑みてなされたものであり、更新対象のアプリケーションが提供するサービスを停止することなく、有意のレスポンスを疑似的に送信するアプリケーション更新方法及びアプリケーション更新システムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決する一態様として、アプリケーションを更新するアプリケーション更新システムが行うアプリケーション更新方法であって、前記アプリケーション更新システムは、リクエスト・レスポンスセット学習テーブルを格納する記憶部と、更新対象のアプリケーションを実行し機能させる更新対象のアプリケーション機能部と、更新処理中でない前記更新対象のアプリケーションに対してリクエストを送信し、該更新対象のアプリケーションから受信した該リクエストに対するレスポンスに基づいて処理を行うアプリケーションを実行し機能させるアプリケーション機能部と、前記リクエスト及び前記レスポンスをキャプチャし、前記更新対象のアプリケーションの更新処理中以外にキャプチャした該リクエスト及び該レスポンスを対応付けたリクエスト・レスポンスセットを前記リクエスト・レスポンスセット学習テーブルに保存するリクエスト・レスポンス参照部と、リクエスト・レスポンスセット制御部と、前記更新対象のアプリケーションの更新を管理するアプリケーション更新管理部と、を有し、前記リクエスト・レスポンスセット制御部が、前記アプリケーション更新管理部によって前記更新対象のアプリケーションの更新が開始される際に、前記リクエスト・レスポンスセット学習テーブルに基づくリクエスト・レスポンスセットテーブルを前記リクエスト・レスポンス参照部にダウンロードし、前記リクエスト・レスポンス参照部が、前記更新対象のアプリケーションの更新中に、前記リクエストをキャプチャした場合に、キャプチャした該リクエストを基に前記リクエスト・レスポンスセットテーブルを参照して、該リクエストに対応付けられているレスポンスを取得し、取得した前記レスポンスを前記アプリケーションに対して送信することを特徴とする。
【発明の効果】
【0008】
本発明によれば、更新対象のアプリケーションが提供するサービスを停止することなく、有意のレスポンスを疑似的に送信することができる。
【図面の簡単な説明】
【0009】
【
図1】実施形態1に係るアプリケーション更新システムの構成の一例を示す図。
【
図2】実施形態1に係るリクエスト・レスポンスセット学習テーブル及びリクエスト・レスポンスセットテーブルの構成の一例を示す図。
【
図3】実施形態1に係るリクエスト・レスポンスセット制御処理の一例を示すフローチャート。
【
図4】実施形態1に係るアプリケーション間通信パターン学習処理の一例を示すフローチャート。
【
図5】実施形態1に係るリクエスト・レスポンスセット削減処理の一例を示すフローチャート。
【
図6】実施形態1に係るリクエストタイムアウト延長処理の一例を示すフローチャート。
【
図7】実施形態2に係るリクエスト・レスポンスセットリセット処理の一例を示すフローチャート。
【
図8】実施形態3に係る偽リクエスト発行によるリクエスト・レスポンスセット更新処理の一例を示すフローチャート。
【
図9】コンピュータのハードウェア構成の一例を示す図。
【発明を実施するための形態】
【0010】
以下、本発明の実施形態を図面に基づいて詳細に説明する。本実施形態は、本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。本実施形態において説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0011】
以下の説明では、同一の構成には原則として同一の符号を付け、繰り返しの説明は省略する。以下の説明における各構成要素の数は、注記がない限り、限定されない。以下の説明では、同一の構成要素を、区別して説明する場合には添え字を含んだ符号を用い、区別せず説明する場合には添え字を除外した符号を用いる。例えばアプリケーション実行部11a,11bを区別して説明する場合には添え字a,bを含んだ符号11a,11bを用い、区別せず説明する場合には添え字を除外した符号11を用いる。
【0012】
以下の説明では、プログラムが行う処理について説明する場合がある。コンピュータは、プロセッサ(例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit))により、主記憶装置のメモリ等を用いながら、プログラムで定められた処理を行う。そのため、プログラムを実行して行う処理の主体を、プロセッサとしてもよい。プロセッサがプログラムを実行することで、処理を行う機能部が実現される。
【0013】
同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であればよく、特定の処理を行う専用回路を含んでいてもよい。専用回路は、例えばFPGA(Field-Programmable Gate Array)やASIC(Application Specific Integrated Circuit)等である。
【0014】
以下の説明では、プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読取り可能な非一時的な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源(ストレージ)を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、実施形態において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0015】
以下の説明では、テーブル形式で各種データを説明する。しかしデータ形式はテーブル形式に限られず、キュー、リスト、CSV(Comma Separated Value)といった他のデータ形式であってもよい。
【0016】
[実施形態1]
(実施形態1に係るアプリケーション更新システム1の構成)
図1は、実施形態1に係るアプリケーション更新システム1の構成の一例を示す図である。アプリケーション更新システム1は、複数のアプリケーション実行部11、アプリケーション更新管理部12、リクエスト・レスポンスセット制御部13、リクエスト・レスポンスセットDB(Data Base)14、及びデータベース15を含んで構成される。
【0017】
アプリケーション更新システム1において少なくとも2つのアプリケーション実行部11a,11bが動作している。アプリケーション実行部11は、それぞれ、アプリケーション機能部111、及びリクエスト・レスポンス参照部112を有する。アプリケーション実行部11a,11bは、同様の構成及び処理機能を有する。
図1では、簡単のため1つのアプリケーション実行部11aを記載しているが、アプリケーション実行部11aは複数あってもよい。
【0018】
アプリケーション機能部111は、ユーザに対してサービスを提供するアプリケーションである。以下の説明では、アプリケーション機能部111bが更新対象のアプリケーションであり、リクエスト・レスポンス参照部112aがアプリケーション機能部111aと通信を行うアプリケーション機能部111bの代替としてレスポンスを送信する例を説明する。
【0019】
アプリケーション機能部111aは、ある処理の実行中にアプリケーション機能部111bに対してリクエストを送信する。アプリケーション機能部111bは、該当のリクエストに応答してレスポンスを送信する。アプリケーション機能部111bは、アプリケーション機能部111aからのリクエストに応じて、例えばデータベース15にアクセスして値を取得又は更新し、処理結果をレスポンスとしてアプリケーション機能部111aに送信する。
【0020】
アプリケーション機能部111aは、アプリケーション機能部111bから送信されたレスポンスを受信して処理を継続する。アプリケーション機能部111bも、アプリケーション機能部111aと同様に、他のアプリケーション実行部11のアプリケーション機能部111との間でリクエスト及びレスポンスを送受信する。
【0021】
リクエスト・レスポンス参照部112aは、アプリケーション機能部111aからアプリケーション機能部111bに送信されたリクエストをキャプチャし、リクエスト・レスポンスセット制御部13に送信する。リクエスト・レスポンス参照部112bも、リクエスト・レスポンス参照部112aと同様に、アプリケーション機能部111bから他のアプリケーション機能部111に送信されたリクエストをキャプチャし、リクエスト・レスポンスセット制御部13に送信する。リクエスト・レスポンス参照部112bも、リクエスト・レスポンス参照部112aと同様に、リクエスト・レスポンスセットテーブル112bTを有する。
【0022】
リクエスト・レスポンス参照部112aは、所定契機で、記憶部であるリクエスト・レスポンスセットDB14に格納されているリクエスト・レスポンスセット学習テーブル14T(
図2)からリクエスト・レスポンスセットを抽出する。リクエスト・レスポンス参照部112aは、抽出したリクエスト・レスポンスセットをダウンロードし、リクエスト・レスポンスセットテーブル112aTとして格納する。所定契機は、例えばアプリケーション機能部111bの更新時であるが、リクエスト・レスポンスセット学習テーブル14Tにおけるリクエスト・レスポンスセットの更新や削除のタイミングでもよい。
【0023】
リクエスト・レスポンスセット学習テーブル14Tは、
図2に示すように、「リクエスト」「レスポンス」を対応付けて保存する。リクエスト・レスポンスセットテーブル112Tは、リクエスト・レスポンスセット学習テーブル14Tと同様の構成である。リクエスト・レスポンスセット学習テーブル14Tは、
図2では図示を省略しているが、リクエスト及びレスポンスのタイムスタンプ、レスポンスの種別、リクエストとレスポンスの同期種別等の情報がリクエスト及びレスポンスと共に保存されている。レスポンスの種別とは、後述のレスポンス有意性Xを示すリクエストの受信確認応答、データ、及びデータの解析結果の種別である。リクエストとレスポンスの同期種別とは、リクエストに対するレスポンスの非同期、同期、及び即時通信の種別である。
【0024】
リクエスト・レスポンス参照部112aは、アプリケーション機能部111aからアプリケーション機能部111bに向けて送信されたリクエストをキャプチャし、このリクエストを基にリクエスト・レスポンスセットテーブル112aTを参照する。
【0025】
そしてリクエスト・レスポンス参照部112aは、該当のリクエストに対応付けられているレスポンスをリクエスト・レスポンスセットテーブル112aTから取得する。そしてリクエスト・レスポンス参照部112aは、アプリケーション機能部111aに対して、取得したレスポンスを、アプリケーション機能部111bの代わりに疑似的に応答する。
【0026】
アプリケーション更新管理部12は、アプリケーション機能部111bの更新を管理する。またアプリケーション更新管理部12は、アプリケーション機能部111bの更新開始を、リクエスト・レスポンスセット制御部13に通知する。
【0027】
リクエスト・レスポンスセット制御部13は、後述のリクエスト・レスポンスセット制御処理(
図3)を実行する。
【0028】
(実施形態1に係るリクエスト・レスポンスセット制御処理)
図3は、実施形態1に係るリクエスト・レスポンスセット制御処理の一例を示すフローチャートである。リクエスト・レスポンスセット制御処理は、アプリケーション更新システム1において起動された後は、終了指示があるまで実行が継続される。ステップS11~S13がアプリケーションの更新処理中以外であり、ステップS15~S19がアプリケーションの更新処理中である。
【0029】
先ずステップS11では、リクエスト・レスポンスセット制御部13は、リクエスト・レスポンス参照部112aによってキャプチャされたリクエスト・レスポンスセットをリクエスト・レスポンスセット学習テーブル14Tに保存する。ステップS11でリクエスト・レスポンスセット学習テーブル14Tに保存されるリクエスト・レスポンスセットのうちのリクエストは、アプリケーション機能部111aからアプリケーション機能部111bに送信されたリクエストである。またステップS11でリクエスト・レスポンスセット学習テーブル14Tに保存されるリクエスト・レスポンスセットのうちのレスポンスは、アプリケーション機能部111bからアプリケーション機能部111aにリクエストに対して送信されたレスポンスである。リクエスト・レスポンス参照部112aは、これらのリクエスト及びレスポンスをキャプチャし、リクエスト・レスポンスセット学習テーブル14Tに保存されるようにリクエスト・レスポンスセット制御部13に送信する。
【0030】
次にステップS12では、リクエスト・レスポンスセット制御部13は、アプリケーション間通信パターン学習処理を実行する。アプリケーション間通信パターン学習処理の詳細は、
図4を参照して後述する。
【0031】
次にステップS13では、リクエスト・レスポンスセット制御部13は、リクエスト・レスポンスセット削減処理を実行する。リクエスト・レスポンスセット削減処理の詳細は、
図5を参照して後述する。
【0032】
次にステップS14では、リクエスト・レスポンスセット制御部13は、アプリケーション更新管理部12からアプリケーション機能部111bの更新開始を通知されたかを判定する。リクエスト・レスポンスセット制御部13は、アプリケーション機能部111bの更新開始を通知された場合にステップS15に処理を移し、通知されていない場合にステップS11に処理を戻す。
【0033】
ステップS15では、リクエスト・レスポンスセット制御部13は、リクエスト・レスポンスセット学習テーブル14Tから必要情報を抽出し、リクエスト・レスポンスセットテーブル112aTとしてリクエスト・レスポンス参照部112aにダウンロードする。
【0034】
次にリクエスト・レスポンスセット制御部13は、ステップS16~S19を、ステップS14で更新開始の通知が確認されたアプリケーション更新が終了するまで、繰り返し実行する。
【0035】
ステップS16では、リクエスト・レスポンスセット制御部13は、リクエスト・レスポンス参照部112aを介して、アプリケーション機能部111aから更新対象のアプリケーション機能部111bに送信されたリクエストを監視する。リクエスト・レスポンスセット制御部13は、リクエスト・レスポンス参照部112aを介して、該当のリクエストをキャプチャし、該当のリクエストを基にリクエスト・レスポンスセットテーブル112aTを参照する。
【0036】
ステップS17では、リクエスト・レスポンス参照部112aは、リクエスト・レスポンスセットテーブル112aTに該当のリクエストが存在するかを判定する。リクエスト・レスポンス参照部112aは、リクエスト・レスポンスセットテーブル112aTに該当のリクエストが存在する場合(ステップS17YES)にステップS18に処理を移す。一方リクエスト・レスポンス参照部112aは、リクエスト・レスポンスセットテーブル112aTに該当のリクエストが存在しない場合(ステップS17NO)にステップS19に処理を移す。
【0037】
ステップS18では、リクエスト・レスポンス参照部112aは、リクエスト・レスポンスセットテーブル112aTに存在すると判定されたリクエストに対応付けられたレスポンスをリクエスト・レスポンスセットテーブル112aTから取得する。そしてリクエスト・レスポンス参照部112aは、アプリケーション機能部111aに対して、該当のレスポンスを以って疑似的に応答する。
【0038】
一方ステップS19では、リクエスト・レスポンスセット制御部13は、リクエストタイムアウト延長処理を実行する。リクエストタイムアウト延長処理の詳細は、
図6を参照して後述する。
【0039】
ステップS15~S19のループ処理を終了後、リクエスト・レスポンスセット制御部13は、リクエスト・レスポンスセット制御処理の終了指示を受付けたかを判定する。リクエスト・レスポンスセット制御部13は、リクエスト・レスポンスセット制御処理の終了指示を受付けた場合にリクエスト・レスポンスセット制御処理を終了する。一方リクエスト・レスポンスセット制御部13は、リクエスト・レスポンスセット制御処理の終了指示を受付けなかった場合にステップS11に処理を戻す。
【0040】
(実施形態1に係るアプリケーション間通信パターン学習処理)
図4は、実施形態1に係るアプリケーション間通信パターン学習処理(ステップS12(
図3))の一例を示すフローチャートである。
【0041】
アプリ間通信パターン学習処理では、式(1)で示すパターンパラメータZを算出する。パターンパラメータZは、アプリケーション機能部111aと更新対象のアプリケーション機能部111bの組合せ毎に算出される。パターンパラメータZが、リクエスト・レスポンスセットの重要度を表し、大きいほど該当のアプリケーションのリクエスト・レスポンスセットの削減量が少なく、小さいほど該当のアプリケーションのリクエスト・レスポンスセットの削減量が多くなる。
Z=V×W×X×Y・・・(1)
ただし式(1)において、Vはリクエスト・レスポンス依存関係、Wはリクエスト・レスポンス頻度、Xはレスポンス有意性、Yは要求応答時間を表す。
【0042】
リクエスト・レスポンス依存関係Vは、アプリケーション機能部111aとアプリケーション機能部111bとの間に一切のリクエスト及びレスポンスの送受信がない場合に“0”をとる。またリクエスト・レスポンス依存関係Vは、アプリケーション機能部111aからアプリケーション機能部111bに対してリクエストが送信されるのみの場合に“1”をとる。またリクエスト・レスポンス依存関係Vは、アプリケーション機能部111aからアプリケーション機能部111bにリクエストが送信され、アプリケーション機能部111bからアプリケーション機能部111aにレスポンスが送信される場合に“2”をとる。リクエスト・レスポンス依存関係Vは、アプリケーション機能部111aとアプリケーション機能部111bとの間でのリクエスト及びレスポンスの送信の有無を見ることで判定される。
【0043】
リクエスト・レスポンス頻度Wは、アプリケーション機能部111aからアプリケーション機能部111bへのリクエストと、アプリケーション機能部111bからアプリケーション機能部111aへのレスポンスの単位時間当たりの送信回数の合計である。
【0044】
レスポンス有意性Xは、該当のリクエストに対するレスポンスがリクエストの受信確認応答である場合に“1”をとる。またレスポンス有意性Xは、該当のリクエストがデータ問合せであり、これに対するレスポンスがDB等を参照して取得されたデータの応答である場合に“2”をとる。またレスポンス有意性Xは、該当のリクエストがデータ解析であり、これに対するレスポンスがDB等を参照して取得されたデータの解析結果の応答である場合に“3”をとる。
【0045】
要求応答時間Yは、該当のリクエストに対するレスポンスが非同期通信である場合に“1”、同期通信である場合に“2”、即時通信である場合に“3”をとる。非同期通信では、リクエストに対してレスポンスの送信が同期しない。同期通信では、リクエストに対してレスポンスの送信が同期し、レスポンスが送信されリクエスト元に受信されない限り次のリクエストがリクエスト元から送信されない。即時通信では、リクエスト受信後に直ちにレスポンスが送信される。
【0046】
上述のリクエスト・レスポンス依存関係V、リクエスト・レスポンス頻度W、レスポンス有意性X、及び要求応答時間Yは、アプリケーション機能部111aと更新対象のアプリケーション機能部111bの組合せ毎に算出される。すなわち更新対象のアプリケーション機能部111bに対するアプリケーション機能部111a毎に算出される。
【0047】
先ずステップS12aでは、リクエスト・レスポンスセット制御部13は、リクエスト・レスポンスセット学習テーブル14Tに保存されているリクエスト及びレスポンスについてリクエスト・レスポンス依存関係Vを算出する。
【0048】
次にステップS12bでは、リクエスト・レスポンスセット制御部13は、リクエスト・レスポンスセット学習テーブル14Tに保存されているリクエスト及びレスポンスについて単位時間あたりのリクエスト・レスポンス頻度Wを算出する。
【0049】
次にステップS12cでは、リクエスト・レスポンスセット制御部13は、リクエスト・レスポンスセット学習テーブル14Tに保存されているリクエストについてレスポンス有意性Xを算出する。
【0050】
次にステップS12dでは、リクエスト・レスポンスセット制御部13は、リクエスト・レスポンスセット学習テーブル14Tに保存されているリクエストについて要求応答時間Yを算出する。
【0051】
次にステップS12eでは、リクエスト・レスポンスセット制御部13は、ステップS12a~S12dの結果に基づいて、式(1)から更新対象のアプリケーション機能部111bに対するアプリケーション機能部111a毎のパターンパラメータZを算出する。
【0052】
なおリクエスト・レスポンスセット制御部13は、リクエスト・レスポンス依存関係V、リクエスト・レスポンス頻度W、レスポンス有意性X、及び要求応答時間Yのうちの1つ、又は、2つもしくは3つの積を、パターンパラメータZとして算出してもよい。
【0053】
(実施形態1に係るリクエスト・レスポンスセット削減処理)
図5は、実施形態1に係るリクエスト・レスポンスセット削減処理(ステップS13(
図3))の一例を示すフローチャートである。
【0054】
先ずステップS13aでは、リクエスト・レスポンスセット制御部13は、リクエスト・レスポンスセット学習テーブル14Tの現在のデータ容量を取得する。次にステップS13bでは、リクエスト・レスポンスセット制御部13は、ステップS13aで取得したリクエスト・レスポンスセット学習テーブル14Tの現在のデータ容量が閾値を超過しているかを判定する。リクエスト・レスポンスセット制御部13は、現在のデータ容量が閾値を超過している場合(ステップS13bYES)にステップS13cに処理を移す。一方リクエスト・レスポンスセット制御部13は、現在のデータ容量が閾値以下である場合(ステップS13bNO)にリクエスト・レスポンスセット削減処理を終了する。
【0055】
ステップS13cでは、リクエスト・レスポンスセット制御部13は、閾値との差分に対応するリクエスト・レスポンスセット学習テーブル14Tの総必要削減データ容量を計算する。
【0056】
次にステップS13dでは、リクエスト・レスポンスセット制御部13は、アプリケーション機能部111a毎に削除するリクエスト・レスポンスセット学習テーブル14Tの必要削減データ容量を計算する。
【0057】
具体的には、例えば、更新対象のアプリケーションBに対して、アプリケーションA1のパターンパラメータZが“1”、アプリケーションA2のパターンパラメータZが“2”、総必要削減データ容量が300MBである場合を考える。このとき、個別のアプリケーションの必要削減データ容量は、パターンパラメータZの逆数に比例するように計算される。よって、リクエスト・レスポンスセット学習テーブル14Tにおいて、アプリケーションA1のリクエスト・レスポンスセットを200MB、アプリケーションA2のリクエスト・レスポンスセットを100MBだけ削減されることになる。
【0058】
次にステップS13eでは、リクエスト・レスポンスセット制御部13は、アプリケーション毎の必要削減データ容量だけ、各アプリケーションのリクエスト・レスポンスセットをリクエスト・レスポンスセット学習テーブル14Tから削除する。
【0059】
(実施形態1に係るリクエストタイムアウト延長処理)
図6は、実施形態1に係るリクエストタイムアウト延長処理(ステップS19(
図3))の一例を示すフローチャートである。リクエストタイムアウト延長処理では、該当するリクエスト・レスポンスのセットがリクエスト・レスポンスセットテーブル112aTに存在しない場合、リクエストのタイムアウト情報を書き換えて延長する。これによりアプリケーション機能部111bの更新終了までリクエスト自体を待機させる。
【0060】
先ずステップS19aでは、リクエスト・レスポンスセット制御部13は、リクエスト・レスポンス参照部112aを介して、リクエスト・レスポンス参照部112aが保持する更新対象のアプリケーションからのレスポンスを待合せる待合せ時間Tを取得する。更新対象のアプリケーションは、アプリケーション機能部111bである。更新対象のアプリケーションからレスポンスを待合せるアプリケーションは、アプリケーション機能部111aである。
【0061】
次にステップS19bでは、リクエスト・レスポンスセット制御部13は、ステップS19aで取得した待合せ時間Tに所定時間として平均更新作業時間ΔTを加算して、待合せ時間Tを延長する。平均更新作業時間ΔTは、アプリケーション機能部111b、又はアプリケーション機能部111bと同種のアプリケーション、又は全てのアプリケーションの過去の更新に要した時間の平均値である。なお平均更新作業時間ΔTに代えて、更新対象のアプリケーションの更新に要するとされる時間を表すその他の時間を用いてもよい。
【0062】
(実施形態1の効果)
上述の実施形態1では、更新対象のアプリケーションの更新中に、キャプチャしたリクエストを基にリクエスト・レスポンスセットテーブル112aTを参照し、リクエストに対応付けられているレスポンスを、リクエスト元のアプリケーションに対して送信する。よって実施形態1によれば、リクエスト・レスポンスセットを保持することで、アプリケーション更新システム1を停止させることなく、リクエストに対して単なる受信確認応答ではなく有意なレスポンスが必要であっても疑似的に送信可能となる。またアプリケーション更新システム1のメモリ不足等で新旧二系同時起動による無停止更新が不可能な場合でも、疑似的に無停止でアプリケーション更新が可能になる。
【0063】
また上述の実施形態1では、リクエスト・レスポンスセット学習テーブル14Tに保存されたリクエスト・レスポンスセット等を基にアプリケーション間の依存関係の重要度を評価する。そして重要度に基づいて有用性が低いと判断できるリクエスト・レスポンスセットをアプリケーション毎に削減する。その後、リクエスト・レスポンスセット学習テーブル14Tに基づくリクエスト・レスポンスセットテーブル112aTをリクエスト・レスポンス参照部112aにダウンロードする。よって実施形態1によれば、アプリケーション更新システム1が現場のエッジ端末であるといったメモリ等の記憶リソースの容量が少ない場合でも、有用なリクエスト・レスポンスセットを効率的に学習することができる。
【0064】
また上述の実施形態1では、式(1)によるパターンパラメータZを、アプリケーション間の依存関係の重要度として算出する。よって実施形態1によれば、アプリケーション間の依存関係を、同一基準で定量的に評価することができる。
【0065】
[実施形態2]
アプリケーション機能部111bの更新中において、アプリケーション機能部111aからアプリケーション機能部111bに送信されたリクエストによって、該当のリクエストが処理対象とするデータが書換えられる場合がある。この場合、該当のリクエストに対応するリクエスト・レスポンスセットが無効になる可能性がある。
【0066】
例えばデータベース15のあるデータ項目に対応付けて保存されている特定値をレスポンスとして疑似的に返すリクエスト・レスポンスセットは、あるリクエストに応じてデータベース15においてこの特定値が更新された場合に無効となる。
【0067】
実施形態2では、実施形態1に加え、無効化される可能性があるリクエスト・レスポンスセットに対応するリクエストが検知されると、該当のリクエストに対応するリクエスト・レスポンスセットをリクエスト・レスポンスセット学習テーブル14Tから削除する。
【0068】
(実施形態2に係るリクエスト・レスポンスセットリセット処理)
図7は、実施形態2に係るリクエスト・レスポンスセットリセット処理の一例を示すフローチャートである。リクエスト・レスポンスセットリセット処理は、アプリケーション機能部111bの更新処理中に一定周期で繰返し実行される。
【0069】
先ずステップS21では、リクエスト・レスポンスセット制御部13は、アプリケーション機能部111aからアプリケーション機能部111bに送信されたリクエストを監視する。
【0070】
次にステップS22では、リクエスト・レスポンスセット制御部13は、セット無効化リクエストを検知したかを判定する。セット無効化リクエストとは、上述の無効化される可能性があるリクエスト・レスポンスセットに対応するリクエストである。セット無効化リクエストは、例えばデータベース15における書換えを監視し、書換えを検知した場合に、データベース15の書換えのリクエストをセット無効化リクエストとして検知する。
【0071】
リクエスト・レスポンスセット制御部13は、セット無効化リクエストを検知した場合(ステップS22YES)にステップS23に処理を移し、検知しなかった場合(ステップS22NO)にリクエスト・レスポンスセットリセット処理を終了する。
【0072】
ステップS23では、リクエスト・レスポンスセット制御部13は、ステップS22で検知したセット無効化リクエストに該当するリクエスト・レスポンスセットのエントリを、リクエスト・レスポンスセット学習テーブル14Tから削除する。
【0073】
次にステップS24では、リクエスト・レスポンスセット制御部13は、リクエスト・レスポンス参照部112aを介して、リクエスト・レスポンス参照部112aにリクエスト・レスポンスセットテーブル112aTをダウンロードし更新する。ここでダウンロードされるリクエスト・レスポンスセットテーブル112aTは、ステップS23でエントリを削除したリクエスト・レスポンスセット学習テーブル14Tを基に生成されたテーブルである。
【0074】
(実施形態2の効果)
上述の実施形態2では、無効化される可能性があるリクエスト・レスポンスセットに対応するリクエストが検知されると、該当のリクエストに対応するリクエスト・レスポンスセットをリクエスト・レスポンスセット学習テーブル14Tから削除する。よって実施形態2によれば、レスポンスの内容の変化前の値を疑似レスポンスとして応答する無意味な送信を回避することができ、アプリケーション更新システム1を誤作動させることなく高い信頼性で無停止のアプリケーション更新を実行することができる。
【0075】
[実施形態3]
実施形態2では、アプリケーション機能部111bの更新中においてセット無効化リクエストを検知した場合に、該当のリクエストに対応するリクエスト・レスポンスセットのエントリをリクエスト・レスポンスセット学習テーブル14Tから削除する。
【0076】
これに対して実施形態3では、実施形態2代えて又は加えて、アプリケーション機能部111bの更新中以外においてセット無効化リクエストを検知した場合、該当のリクエストの偽リクエストをアプリケーション機能部111bに送信する。そしてアプリケーション機能部111bから取得した最新のレスポンスに基づいて新たなリクエスト・レスポンスセットを生成してリクエスト・レスポンスセット学習テーブル14Tに登録する。
【0077】
(実施形態3に係る偽リクエスト発行によるリクエスト・レスポンスセット更新処理)
図8は、実施形態3に係る偽リクエスト発行によるリクエスト・レスポンスセット更新処理の一例を示すフローチャートである。偽リクエスト発行によるリクエスト・レスポンスセット更新処理は、アプリケーション機能部111bの更新処理中以外において一定周期で繰返し実行される。
【0078】
偽リクエスト発行によるリクエスト・レスポンスセット更新処理は、リクエスト・レスポンスセットリセット処理(
図7)と比較して、アプリケーション機能部111bの更新中以外で実行される点が異なる。またステップS23とステップS24との間にステップS23a~S23cが実行される点が異なる。
【0079】
ステップS23に続きステップS23aでは、リクエスト・レスポンスセット制御部13は、リクエスト・レスポンス参照部112aに対して、ステップS23で削除したリクエストを疑似的にアプリケーション機能部111bに送信するように要求する。
【0080】
次にステップS23bでは、リクエスト・レスポンス参照部112aは、該当アプリケーションに偽リクエストを送信して新規レスポンスを受信する。
【0081】
次にステップS23cでは、リクエスト・レスポンス参照部112aは、ステップS23aにおける偽リクエストとステップS23bにおける新規レスポンスの新規のリクエスト・レスポンスセットをリクエスト・レスポンスセット学習テーブル14Tに保存する。
【0082】
(実施形態3の効果)
上述の実施形態3では、無効化される可能性があるリクエスト・レスポンスセットに対応するリクエストが検知されると、該当のリクエストに対応するリクエスト・レスポンスセットをリクエスト・レスポンスセット学習テーブル14Tから削除する。そして疑リクエストを発行し新規のリクエスト・レスポンスセットを取得してリクエスト・レスポンスセット学習テーブル14Tに格納する。よって実施形態3によれば、常に最新の値を疑似レスポンスとして応答することができ、アプリケーション更新システム1の動作精度を維持し高い信頼性で無停止のアプリケーション更新を実行することができる。
【0083】
(コンピュータ1000のハードウェア構成)
図9は、コンピュータ1000のハードウェア構成の一例を示す図である。コンピュータ1000は、エレベータを制御するエッジ端末、車載ネットワークに接続された車載コンピュータ、クラウドと現場機器の接続を仲介するエッジ端末、ネットワークを介して外部に対してサービスを提供するサーバ等である。
【0084】
コンピュータ1000は、所定プログラムの実行により、アプリケーション更新システム1の各部を実現する。
【0085】
コンピュータ1000は、バス等の内部通信線1009を介して相互に接続されたCPUをはじめとするプロセッサ1001、主記憶装置1002、補助記憶装置1003、ネットワークインタフェース1004、入力装置1005、及び出力装置1006を有する。
【0086】
プロセッサ1001は、コンピュータ1000全体の動作制御を司る。主記憶装置1002は、例えば揮発性の半導体メモリから構成され、プロセッサ1001のワークメモリとして用いられる。補助記憶装置1003は、ハードディスク装置、SSD(Solid State Drive)、又はフラッシュメモリ等の大容量の不揮発性の記憶装置から構成され、各種プログラムやデータを長期間保持するために利用される。
【0087】
補助記憶装置1003に格納された実行可能プログラム1003aがコンピュータ1000の起動時や必要時に主記憶装置1002にロードされ、プロセッサ1001によって実行されることで、各種処理を実行する各システムが実現される。
【0088】
なお実行可能プログラム1003aは、非一時的記録媒体に記録され、媒体読み取り装置によって非一時的記録媒体から読み出されて、主記憶装置1002にロードされてもよい。または実行可能プログラム1003aは、ネットワークを介して外部のコンピュータから取得されて、主記憶装置1002にロードされてもよい。
【0089】
ネットワークインタフェース1004は、コンピュータ1000をシステム内の各ネットワークに接続する、あるいは他のコンピュータと通信するためのインタフェース装置である。ネットワークインタフェース1004は、例えば、有線LAN(Local Area Network)や無線LAN等のNIC(Network Interface Card)から構成される。
【0090】
入力装置1005は、キーボードや、マウス等のポインティングデバイス等から構成され、ユーザがコンピュータ1000に各種指示や情報を入力するために利用される。出力装置1006は、例えば、液晶ディスプレイ又は有機EL(Electro Luminescence)ディスプレイ等の表示装置や、スピーカ等の音声出力装置から構成され、必要時に必要な情報をユーザに提示するために利用される。
【0091】
本発明は上述の実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、任意の構成要素を用いて実施可能である。以上説明した実施形態や変形例はあくまで一例であり、発明の特徴が損なわれない限り、本発明はこれらの内容に限定されるものではない。また、上記では種々の実施形態や変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【0092】
例えば上述の実施形態の各装置が備える各機能の一部は他の装置に設けてもよいし、別装置が備える機能を同一の装置に設けてもよい。
【0093】
また上述の実施形態で説明したプログラムの構成は一例であり、例えば、プログラムの一部を他のプログラムに組込み、又は複数のプログラムを一つのプログラムとして構成してもよい。
【符号の説明】
【0094】
1:アプリケーション更新システム、11,11a,11b:アプリケーション実行部、12:アプリケーション更新管理部、13:リクエスト・レスポンスセット制御部、14T:リクエスト・レスポンスセット学習テーブル、111,111a,111b:アプリケーション機能部、112,112a,112b:レスポンス参照部、112T,112aT,112bT:レスポンスセットテーブル。