【文献】
田中 裕之,エッジコンピューティングが拓くIoT時代のアプリケーション,電子情報通信学会2016年総合大会講演論文集 通信1,一般社団法人電子情報通信学会,2016年 3月 1日,ISSN 1349-1369,p.SS-18〜SS-19
(58)【調査した分野】(Int.Cl.,DB名)
第一の情報処理システムに含まれる第一の情報処理資源が更新前のソフトウェアを実行することによって出力した更新前出力情報を、第二の情報処理システムが処理する場合において、更新後の前記ソフトウェアを、前記第二の情報処理システムに含まれる第二の情報処理資源が実行するように制御する第一の実行制御手段と、
前記第二の情報処理資源が前記更新後のソフトウェアを実行することによって出力した情報を、前記第二の情報処理システムが処理する試行動作を検証する検証手段と、
前記検証手段による前記試行動作に対する検証結果が正常であることを示す場合に、前記更新前出力情報を出力する状態を、前記第二の情報処理システムに含まれる第三の情報処理資源が前記第一の情報処理資源から引き継ぎ、前記第三の情報処理資源から出力された前記更新前出力情報を、前記第二の情報処理システムが処理できるように制御する引継ぎ制御手段と、
前記引継ぎ制御手段による処理が行われたのち、前記第一の情報処理資源が、前記更新後のソフトウェアを実行することによって更新後出力情報を出力するように制御する第二の実行制御手段と、
前記第二の情報処理システムが処理対象とする処理対象情報を、前記第一あるいは第三の情報処理資源から出力された前記更新前出力情報から、前記第一あるいは第二の情報処理資源から出力された前記更新後出力情報に切り替える切り替え手段と、
を備えるソフトウェア更新制御装置。
前記第一の情報処理資源が、前記第一の情報処理システムに含まれるデータ受信部が外部から受信した処理対象データを処理する場合において、前記第一の実行制御手段によって、前記第二の情報処理資源が前記更新後のソフトウェアを実行するときに、前記データ受信部が、前記処理対象データを複製し、複製した前記処理対象データを前記第二の情報処理資源に入力するように制御するデータ受信部制御手段
をさらに備える請求項1に記載のソフトウェア更新制御装置。
前記切り替え手段は、前記処理対象情報を切り替えたのち、前記第二の情報処理システムが、前記第三の情報処理資源から出力された前記更新前出力情報を処理するとともに、その処理結果を前記第二の情報処理システムに含まれる記憶部に格納するように制御する、
請求項1または2に記載のソフトウェア更新制御装置。
前記引継ぎ制御手段は、前記第一の情報処理システムに含まれる第四の情報処理資源が、基準より優先度が低い処理を行う場合に、前記第三の情報処理資源が、前記第四の情報処理資源が行う処理を引き継ぐように制御し、
前記第二の実行制御手段は、前記引継ぎ制御手段による処理が行われたのち、前記第四の情報処理資源が、前記更新後のソフトウェアを実行することによって更新後出力情報を出力するように制御し
前記切り替え手段は、前記処理対象情報を、前記第一の情報処理資源から出力された前記更新前出力情報から、前記第四の情報処理資源から出力された前記更新後出力情報に切り替える、
請求項1乃至4のいずれか一項に記載のソフトウェア更新制御装置。
複数の前記第一の情報処理システムの個々に対して、前記ソフトウェアを更新する処理が行われるスケジュールを示す情報、あるいは外部から入力された情報に基づいて、特定の前記第一の情報処理システムにおける前記ソフトウェアの更新を指示する指示情報を出力する更新指示手段をさらに備え、
前記第一の実行制御手段、前記検証手段、前記引継ぎ制御手段、前記第二の実行制御手段、及び、前記切り替え手段は、前記指示情報に基づいて、前記特定の第一の情報処理システムに関する処理を実行する、
請求項1乃至6のいずれか一項に記載のソフトウェア更新制御装置。
第一の情報処理システムに含まれる第一の情報処理資源が更新前のソフトウェアを実行することによって出力した更新前出力情報を、第二の情報処理システムが処理する場合において、更新後の前記ソフトウェアを、前記第二の情報処理システムに含まれる第二の情報処理資源が実行するように制御する第一の実行制御処理と、
前記第二の情報処理資源が前記更新後のソフトウェアを実行することによって出力した情報を、前記第二の情報処理システムが処理する試行動作を検証する検証処理と、
前記検証処理による前記試行動作に対する検証結果が正常であることを示す場合に、前記更新前出力情報を出力する状態を、前記第二の情報処理システムに含まれる第三の情報処理資源が前記第一の情報処理資源から引き継ぎ、前記第三の情報処理資源から出力された前記更新前出力情報を、前記第二の情報処理システムが処理できるように制御する引継ぎ制御処理と、
前記引継ぎ制御処理による処理が行われたのち、前記第一の情報処理資源が、前記更新後のソフトウェアを実行することによって更新後出力情報を出力するように制御する第二の実行制御処理と、
前記第二の情報処理システムが処理対象とする処理対象情報を、前記第一あるいは第三の情報処理資源から出力された前記更新前出力情報から、前記第一あるいは第二の情報処理資源から出力された前記更新後出力情報に切り替える切り替え処理と、
をコンピュータに実行させるためのソフトウェア更新制御プログラム。
【発明を実施するための形態】
【0018】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【0019】
<第1の実施形態>
図1は、本願発明の第1の実施の形態に係るソフトウェア更新制御システム1の構成を概念的に示すブロック図である。ソフトウェア更新制御システム1は、例えば、IoTシステムにおけるエッジによって実行されるソフトウェアを更新するシステムである。ソフトウェア更新制御システム1は、大別して、ソフトウェア更新制御装置10、エッジ側システム20、クラウド側システム30、及び、デバイス群40を有する。
【0020】
デバイス群40は、例えばセンサーやカメラなどを含むデバイス群であり、観測対象を観測した結果を表す観測データを生成して出力する。
【0021】
エッジ側システム20(第1の情報処理システム)は、エッジサーバ等の情報処理装置であり、エッジ側仮想サーバ基盤21と、エッジハブ22とを備えている。エッジハブ22は、デバイス群40と通信可能に接続されており、デバイス群40から出力された観測データを受信する。エッジ側仮想サーバ基盤21は、仮想サーバ210を実行可能な基盤であり、プロセッサやメモリ等のハードウェア(例えば
図17を参照して後述するような構成)と、ハイパーバイザ(仮想サーバの実行を制御するソフトウェア)等のソフトウェア(不図示)とを含んでいる。仮想サーバ210は、エッジハブ22が受信した観測データを、処理対象データとして処理したのち、当該処理対象データを、通信可能に接続されているクラウド側システム30に送信する。尚、エッジ側システム20が備えるプロセッサやメモリ等のハードウェアの量は少ないので、エッジ側仮想サーバ基盤21が実行可能な仮想サーバの数は、限定的であることとする。
【0022】
クラウド側システム30(第2の情報処理システム)は、例えばデータセンターとして設置された、多数の情報処理装置を含むシステムであり、クラウド側仮想サーバ基盤31と、アプリケーションハブ32と、メッセージバッファ33とを備えている。クラウド側仮想サーバ基盤31は、仮想サーバ310−1乃至310−m(mは任意の自然数)を実行可能な基盤であり、プロセッサやメモリ等のハードウェア(例えば
図17を参照して後述するような構成)と、ハイパーバイザ等のソフトウェア(不図示)とを含んでいる。仮想サーバ310−1乃至310−mは、エッジ側システム20から送信された処理対象データに対して所定の処理を行う。
【0023】
クラウド側システム30は、アプリケーション34を実行する。アプリケーション34は、仮想サーバ310−1乃至310−mによって処理された処理対象データを使用したサービスを提供する。アプリケーション34は、例えば、当該処理対象データに基づく情報分析あるいはシステム制御等を行う。当該処理対象データは、アプリケーションハブ32を介して、アプリケーション34に入力される。アプリケーションハブ32は、メッセージバッファ33とも接続されている。メッセージバッファ33は、仮想サーバ310−1乃至310−mから出力されたデータを一時的に記憶可能な電子メモリ等のデバイスである。アプリケーションハブ32は、外部からの制御に従って、仮想サーバ310−1乃至310−mから出力されたデータ、あるいは、メッセージバッファ33に記憶されたデータのいずれかを選択して、アプリケーション34に入力する。
【0024】
ソフトウェア更新制御装置10は、仮想サーバ210によって実行されるソフトウェアと、仮想サーバ310−1乃至310−mによって実行されるソフトウェアとに対する更新処理を制御する装置である。ソフトウェア更新制御装置10は、エッジ側システム20及びクラウド側システム30と、通信可能に接続されている。
【0025】
ソフトウェア更新制御装置10は、第1仮想サーバ制御部11、検証部12、引継ぎ制御部13、第2仮想サーバ制御部14、切り替え部15、エッジハブ制御部16、及び、ソフトウェア記憶部17を備えている。
【0026】
ソフトウェア記憶部17は、クラウド側更新前ソフトウェア170、クラウド側更新後ソフトウェア171、エッジ側更新前ソフトウェア172、及び、エッジ側更新後ソフトウェア173を記憶している。クラウド側更新前ソフトウェア170は、仮想サーバ310−1乃至310−mによって実行される更新前のソフトウェアである。クラウド側更新後ソフトウェア171は、仮想サーバ310−1乃至310−mによって実行される更新後のソフトウェアである。エッジ側更新前ソフトウェア172は、仮想サーバ210によって実行される更新前のソフトウェアである。エッジ側更新後ソフトウェア173は、仮想サーバ210によって実行される更新後のソフトウェアである。
【0027】
図2は、本実施形態に係るエッジ側システム20及びクラウド側システム30によって実行されるソフトウェアが更新される前の、各システムの状態を例示する図である。
図2に例示する通り、仮想サーバ210(第1の情報処理資源)は、エッジ側更新前ソフトウェア172を実行することによって、エッジハブ22(データ受信部)から入力された観測データを処理し、処理結果である処理対象データを仮想サーバ310−1に入力する。仮想サーバ310−1は、クラウド側更新前ソフトウェア170を実行することによって、仮想サーバ210から入力された処理対象データを処理し、処理結果である処理対象データをアプリケーションハブ32に入力する。
【0028】
図1に示すソフトウェア更新制御装置10は、
図2に示す状態において、エッジ側システム20及びクラウド側システム30によって実行されるソフトウェアを、エッジ側更新後ソフトウェア173及びクラウド側更新後ソフトウェア171に更新する処理を開始する。
【0029】
図3は、本実施形態に係るエッジ側システム20及びクラウド側システム30によって実行されるソフトウェアが更新される途中の、各システムの状態を例示する図である。
図1に示す第1仮想サーバ制御部11(第1の実行制御部)は、
図3に示す通り、クラウド側仮想サーバ基盤31を制御することによって、仮想サーバ310−2、及び、仮想サーバ310−3(第2の情報処理資源)を新たに立ち上げる。第1仮想サーバ制御部11は、ソフトウェア記憶部17からクラウド側更新後ソフトウェア171及びエッジ側更新後ソフトウェア173を読み出して、読み出したこれらのソフトウェアを、順に、仮想サーバ310−2及び310−3が実行するように制御する。
【0030】
図1に示すエッジハブ制御部16(データ受信部制御部)は、第1仮想サーバ制御部11が上述した処理を行う際に、エッジハブ22が、デバイス群40から受信した観測データを複製し、複製した観測データを仮想サーバ310−3に入力するように制御する。これにより、
図3に示す通り、更新後のソフトウェアによって観測データを処理する(試行動作を行う)環境が、クラウド側仮想サーバ基盤31の中に構築される。
【0031】
図1に示す検証部12は、仮想サーバ310−3が観測データを処理することによって出力した処理対象データを仮想サーバ310−2が処理する試行動作が正常であるか否かを検証する。検証部12には、例えば、この検証に必要な判定基準がシステム管理者等によって事前に与えられており、検証部12は、当該判定基準に基づいて上述した検証を行うこととする。検証部12は、ソフトウェアの更新処理が完了し、エッジ側システム20及びクラウド側システム30が、更新後のソフトウェアを実行することによって観測データを処理することを開始したのちも、エッジ側システム20及びクラウド側システム30による処理を検証することを継続する。検証部12は、検証結果が異常であることを示す場合、ソフトウェア更新制御システム1における障害発生状況等を管理するシステム管理部(不図示)に、異常が発生したことを通知する。
【0032】
図4は、本実施形態に係るエッジ側システム20及びクラウド側システム30によって実行されるソフトウェアが更新された後の、各システムの状態を例示する図である。
図1に示す引継ぎ制御部13は、検証部12による検証結果が正常であることを示す場合、
図3及び
図4に示す通り、エッジ側仮想サーバ基盤21及びクラウド側仮想サーバ基盤31を制御することによって、仮想サーバ210を、クラウド側仮想サーバ基盤31に、仮想サーバ310−4(第3の情報処理資源)としてライブマイグレーションを行う。ライブマイグレーションは、仮想サーバの動作を停止させずに、当該仮想サーバの動作環境を異なる物理システムに移動させる既存の技術であり、エッジ側仮想サーバ基盤21及びクラウド側仮想サーバ基盤31は、このライブマイグレーションの機能を実装していることとする。このライブマイグレーションによって、仮想サーバ310−4から出力された処理対象データは、仮想サーバ310−1に入力されるので、ライブマイグレーションが行われた後も、更新前のソフトウェアによって観測データを処理する環境は、クラウド側仮想サーバ基盤31の中に維持される。
【0033】
図1に示す第2仮想サーバ制御部14は、引継ぎ制御部13による処理が行われたのち、
図3及び
図4に示す通り、エッジ側仮想サーバ基盤21及びクラウド側仮想サーバ基盤31を制御することによって、仮想サーバ310−3を、エッジ側仮想サーバ基盤21に、新たな仮想サーバ210としてライブマイグレーションを行う。このライブマイグレーションによって、仮想サーバ210から出力された処理対象データは、仮想サーバ310−2に入力される。したがって、ライブマイグレーションが行われた後も、更新後のソフトウェアによって観測データを処理する環境は、エッジ側仮想サーバ基盤21及びクラウド側仮想サーバ基盤31の中に維持される。
【0034】
図1に示す切り替え部15は、クラウド側仮想サーバ基盤31を制御することによって、
図3及び
図4に例示する通り、アプリケーションハブ32へ入力される情報を、仮想サーバ310−1から出力された情報から、仮想サーバ310−2から出力された情報に切り替える。これによって、アプリケーションハブ32に入力される情報は、更新前のソフトウェアによって観測データが処理された情報(更新前出力情報)から、更新後のソフトウェアによって観測データが処理された情報(更新後出力情報)に切り替わる。
【0035】
切り替え部15は、
図3及び
図4に例示する通り、上述したアプリケーションハブ32への入力の切り替えに伴い、メッセージバッファ33に、仮想サーバ310−1から出力された情報(更新前出力情報)を入力する。すなわち、メッセージバッファ33は、ソフトウェアの更新処理が完了し、エッジ側システム20及びクラウド側システム30が、更新後のソフトウェアを実行することによって観測データを処理することを開始したのち、仮想サーバ310−1及び310−4によって生成される更新前出力情報を記憶する。
【0036】
切り替え部15は、ソフトウェアの更新処理が完了したのち、検証部12による検証結果が異常であることを示す場合、アプリケーションハブ32を制御することによって、アプリケーション34へ入力される情報を、仮想サーバ310−2から出力された更新後出力情報から、メッセージバッファ33に記憶されている更新前出力情報に切り替える。これにより、エッジ側システム20及びクラウド側システム30による、観測データを処理する環境は、ソフトウェアの更新が行われる前の環境に戻る。
【0037】
図4に示す仮想サーバ310−1及び310−4(すなわち、更新前のソフトウェアを実行する環境)は、ソフトウェアの更新処理が完了したのち、例えば検証部12による検証結果が所定の時間に亘って正常であることをもって、第1仮想サーバ制御部11によって動作を停止する。
【0038】
次に
図5A及び5Bのフローチャートを参照して、本実施形態に係るソフトウェア更新制御装置10の動作(処理)について詳細に説明する。
【0039】
第1仮想サーバ制御部11は、仮想サーバ310−2及び310−3を起動し、順に、クラウド側更新後ソフトウェア171及びエッジ側更新後ソフトウェア173を実行させる(ステップS101)。エッジハブ制御部16は、エッジハブ22が、デバイス群40から受信した観測データを複製し、複製した観測データを仮想サーバ310−3に入力するように制御する(ステップS102)。検証部12は、仮想サーバ310−2及び310−3が行う試行動作を検証する(ステップS103)。
【0040】
検証部12による検証結果が異常である場合(ステップS104でNo)、ソフトウェア更新制御装置10は、エッジ側システム20及びクラウド側システム30を、ソフトウェア更新処理を開始する前の状態に戻す(ステップS114)。検証部12は、異常が発生したことをシステム管理部に通知して、全体の処理は終了する。
【0041】
検証部12による検証結果が正常である場合(ステップS104でYes)、切り替え部15は、仮想サーバ310−1からの出力をメッセージバッファ33に切り替え、仮想サーバ310−2からの出力をアプリケーションハブ32に接続する(ステップS105)。検証部12は、仮想サーバ310−2及び310−3が行う動作を検証する(ステップS106)。
【0042】
検証部12による検証結果が異常である場合(ステップS107でNo)、処理は、ステップS114へ進む。検証部12による検証結果が正常である場合(ステップS107でYes)、引継ぎ制御部13は、仮想サーバ210を、仮想サーバ310−4としてライブマイグレーションする(ステップS108)。第2仮想サーバ制御部14は、仮想サーバ310−3を、新たな仮想サーバ210としてライブマイグレーションする(ステップS109)。検証部12は、仮想サーバ210及び310−2が行う動作を検証する(ステップS110)。
【0043】
検証部12による検証結果が異常である場合(ステップS111でNo)、処理は、ステップS114へ進む。検証部12による検証結果が正常である場合(ステップS111でYes)、エッジハブ制御部16は、エッジハブ22から仮想サーバ310−4に対する観測データの入力を停止する(ステップS112)。第1仮想サーバ制御部11は、仮想サーバ310−1及び310−4の動作を停止して(ステップS113)、全体の処理は終了する。
【0044】
本実施形態に係るソフトウェア更新制御装置10は、IoTシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことができる。その理由は、ソフトウェア更新制御装置10が、ソフトウェア更新後の全体の動作環境をクラウド側システム30の中に構築してその動作を検証したのち、エッジ側システム20におけるソフトウェア更新前の動作環境をクラウド側システム30に移動させるとともに、エッジ側システム20が更新後のソフトウェアを実行するように制御するからである。
【0045】
以下に、本実施形態に係るソフトウェア更新制御装置10によって実現される効果について、詳細に説明する。
【0046】
可用性に対する要件が厳しいIoTシステム等において、エッジによって実行されるソフトウェアを更新する場合、IoTシステムの動作を停止させることなく、ソフトウェアの更新処理を行うことが課題である。そして、その際、エッジによって実行される更新後のソフトウェアがクラウドシステムと連携して正常に動作することが確認できていることが望ましい。既存の技術として、例えば、二重化等の多重化したシステムを利用することによってソフトウェア更新時の無停止性を実現した技術が存在する。しかしながら、エッジ型IoTシステム等では、通常、エッジが備える計算機資源が限られているので、エッジによって実行されるソフトウェアの更新に対して、多重化に基づく無停止更新技術を適用することが困難であるという問題がある。
【0047】
このような問題に対して、本実施形態に係るソフトウェア更新制御装置10では、第1仮想サーバ制御部11は、仮想サーバ210がエッジ側更新前ソフトウェア172を実行することによって出力した更新前出力情報を、クラウド側システム30が処理する場合において、エッジ側更新後ソフトウェア173を、仮想サーバ310−3が実行するように制御する。検証部12は、仮想サーバ310−3がエッジ側更新後ソフトウェア173を実行することによって出力した更新後出力情報を、クラウド側システム30が処理する試行動作を検証する。引継ぎ制御部13は、検証部12による検証結果が正常であることを示す場合に、エッジ側更新前ソフトウェア172を実行する仮想サーバ210の状態を仮想サーバ310−4が引き継ぎ、仮想サーバ310−4から出力された更新前出力情報をクラウド側システム30が処理できるように制御する。第2仮想サーバ制御部14は、引継ぎ制御部13による処理が行われたのち、仮想サーバ210がエッジ側更新後ソフトウェア173を実行することによって更新後出力情報を出力するように制御する。切り替え部15は、クラウド側システム30が処理対象とする処理対象情報を、仮想サーバ210から出力された更新前出力情報から、仮想サーバ310−3から出力された更新後出力情報に切り替える。
【0048】
すなわち、本実施形態に係るソフトウェア更新制御装置10は、大量の情報処理資源を備えるクラウド側システム30を利用して、更新後のソフトウェアを検証する。そして、ソフトウェア更新制御装置10は、更新前のソフトウェアの実行環境をクラウド側システム30に移動することと、エッジ側システム20が更新後のソフトウェアの実行を開始することとを、各システムが動作を停止することなく行うように制御する。これにより、本実施形態に係るソフトウェア更新制御装置10は、IoTシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことができる。
【0049】
また、本実施形態に係るソフトウェア更新制御装置10は、ソフトウェアの更新が行われた後も、少なくとも所定の期間は、更新前のソフトウェアの実行環境をクラウド側システム30に残し、更新前のソフトウェアの実行環境によって得られた結果がメッセージバッファ33に記憶されるように制御する。ソフトウェア更新制御装置10は、更新後のソフトウェアによる処理において異常が発生した場合、クラウド側システム30が、処理対象情報として、メッセージバッファ33に記憶された情報を使用するように制御することによって、システムをソフトウェアが更新される前の状態に戻すことができる。したがって、本実施形態に係るソフトウェア更新制御装置10は、システムの可用性を向上することができる。
【0050】
尚、本実施形態に係るソフトウェア更新制御装置10が制御を行う対象は、仮想サーバに限定されない。ソフトウェア更新制御装置10は、例えば、物理サーバ同士でマイグレーションを行う技術を利用することによって、エッジ側システム20及びクラウド側システム30に含まれる物理サーバに対して、上述した処理を行ってもよい。
【0051】
また、本実施形態に係るソフトウェア更新制御装置10が制御を行う対象は、デバイス群によって生成された観測データを処理するエッジ側システムとクラウド側システムとから構成されるIoTシステムに限定されない。ソフトウェア更新制御装置10は、例えば、特定のアプリケーションを分散処理する複数の小規模サーバと、それらの小規模サーバを制御する大規模サーバを含むシステムにおけるソフトウェアを更新する際に、上述した処理を行ってもよい。
【0052】
<第2の実施形態>
次に、本願発明の第2の実施形態に係るソフトウェア更新制御システム1について説明する。本実施形態に係るソフトウェア更新制御システム1の構成は、
図1に示す第1の実施形態に係るソフトウェア更新制御システム1と同様である。本実施形態に係るソフトウェア更新制御装置10は、その動作フローが第1の実施形態とは異なる構成を有する。本実施形態に係るソフトウェア更新制御装置10の動作(処理)について、
図6A及び6Bのフローチャートを参照して詳細に説明する。
【0053】
ソフトウェア更新制御装置10は、
図5Aに示すステップS101乃至S103の処理を実行する(ステップS201)。検証部12による検証結果が異常である場合(ステップS202でNo)、ソフトウェア更新制御装置10は、
図5Aに示すステップS114及びS115の処理を実行し(ステップS211)、全体の処理は終了する。
【0054】
検証部12による検証結果が正常である場合(ステップS202でYes)、引継ぎ制御部13は、仮想サーバ210を、仮想サーバ310−4としてライブマイグレーションする(ステップS203)。第2仮想サーバ制御部14は、仮想サーバ310−3を、新たな仮想サーバ210としてライブマイグレーションする(ステップS204)。検証部12は、仮想サーバ210及び310−2が行う動作を検証する(ステップS205)。
【0055】
検証部12による検証結果が異常である場合(ステップS206でNo)、処理はステップS211へ進む。検証部12による検証結果が正常である場合(ステップS206でYes)、切り替え部15は、仮想サーバ310−1からの出力をメッセージバッファ33に切り替え、仮想サーバ310−2からの出力をアプリケーションハブ32に接続する(ステップS207)。検証部12は、仮想サーバ210及び310−2が行う動作を検証する(ステップS208)。
【0056】
検証部12による検証結果が異常である場合(ステップS209でNo)、処理はステップS211へ進む。検証部12による検証結果が正常である場合(ステップS209でYes)、ソフトウェア更新制御装置10は、
図5Bに示すステップS112及びS113の処理を実行し(ステップS210)、全体の処理は終了する。
【0057】
本実施形態に係るソフトウェア更新制御装置10は、IoTシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことができる。その理由は、第1の実施形態について説明した通りである。
【0058】
また、本実施形態に係るソフトウェア更新制御装置10は、第1の実施形態とは異なり、仮想サーバ210から仮想サーバ310−4へのマイグレーション、及び、仮想サーバ310−3から仮想サーバ210へのマイグレーションを行ったのちに、クラウド側システム30の処理対象情報を、更新前出力情報から更新後出力情報に切り替える。したがって、本実施形態に係るソフトウェア更新制御装置10は、更新後のソフトウェアを実際の動作環境により近い状態において検証したのちに、更新後のソフトウェアに切り替えるので、システムの可用性をさらに向上することができる。
【0059】
<第3の実施形態>
次に、本願発明の第3の実施形態に係るソフトウェア更新制御システム1について説明する。本実施形態に係るソフトウェア更新制御システム1の構成は、
図1に示す第1の実施形態に係るソフトウェア更新制御システム1と同様である。本実施形態に係るソフトウェア更新制御装置10は、エッジ側システム20及びクラウド側システム30に対して、第1及び第2の実施形態とは異なる制御を行う。
【0060】
図7は、本実施形態に係るエッジ側システム20及びクラウド側システム30によって実行されるソフトウェアが更新される前の、各システムの状態を例示する図である。
図7に例示する通り、本実施形態に係るエッジ側仮想サーバ基盤21には、
図2に示す第1の実施形態のときとは異なり、仮想サーバ210に加えて仮想サーバ211(第4の情報処理資源)が存在する。仮想サーバ211は、基準よりも優先度が低い低優先度処理212を行っている。
【0061】
本実施形態に係るソフトウェア更新制御装置10は、
図7に示す状態において、エッジ側システム20及びクラウド側システム30によって実行されるソフトウェアを、エッジ側更新後ソフトウェア173及びクラウド側更新後ソフトウェア171に更新する処理を開始する。
【0062】
図8は、本実施形態に係るエッジ側システム20及びクラウド側システム30によって実行されるソフトウェアが更新される途中の、各システムの状態を例示する図である。引継ぎ制御部13は、
図7及び
図8に示す通り、エッジ側仮想サーバ基盤21及びクラウド側仮想サーバ基盤31を制御することによって、仮想サーバ211を、クラウド側仮想サーバ基盤31に、仮想サーバ310−4としてライブマイグレーションを行う。
【0063】
図9は、本実施形態に係るエッジ側システム20及びクラウド側システム30によって実行されるソフトウェアが更新された後の、各システムの状態を例示する図である。第2仮想サーバ制御部14は、引継ぎ制御部13による処理が行われたのち、
図8及び
図9に示す通り、エッジ側仮想サーバ基盤21及びクラウド側仮想サーバ基盤31を制御することによって、仮想サーバ310−3を、エッジ側仮想サーバ基盤21に、新たな仮想サーバ211としてライブマイグレーションを行う。このライブマイグレーションによって、仮想サーバ211から出力された処理対象データは、仮想サーバ310−2に入力されるので、ライブマイグレーションが行われた後も、更新後のソフトウェアによって観測データを処理する環境は、エッジ側仮想サーバ基盤21及びクラウド側仮想サーバ基盤31の中に維持される。
【0064】
図9に示す仮想サーバ210及び310−1(すなわち、更新前のソフトウェアを実行する環境)は、ソフトウェアの更新処理が完了したのち、例えば検証部12による検証結果が所定の時間に亘って正常であることをもって、第1仮想サーバ制御部11及び第2仮想サーバ制御部14によって動作を停止する。引継ぎ制御部13は、仮想サーバ210によるエッジ側更新前ソフトウェア172を実行する動作が停止したのち、低優先度処理212を実行する仮想サーバ310−4を、エッジ側仮想サーバ基盤21に、新たな仮想サーバ210としてライブマイグレーションを行う。これにより、低優先度処理212は、ソフトウェアの更新処理が行われる前と同様に、エッジ側システム20により実行される状態に戻る。
【0065】
次に
図10A及び10Bのフローチャートを参照して、本実施形態に係るソフトウェア更新制御装置10の動作(処理)について詳細に説明する。
【0066】
ソフトウェア更新制御装置10は、
図5Aに示すS101乃至S103の処理を実行する(ステップS301)。検証部12による検証結果が異常である場合(ステップS302でNo)、ソフトウェア更新制御装置10は、
図5Aに示すステップS114及びS115の処理を実行し(ステップS313)、全体の処理は終了する。
【0067】
検証部12による検証結果が正常である場合(ステップS302でYes)、引継ぎ制御部13は、仮想サーバ211を、仮想サーバ310−4としてライブマイグレーションする(ステップS303)。第2仮想サーバ制御部14は、仮想サーバ310−3を、仮想サーバ211としてライブマイグレーションする(ステップS304)。検証部12は、仮想サーバ211及び310−2が行う動作を検証する(ステップS305)。
【0068】
検証部12による検証結果が異常である場合(ステップS306でNo)、処理はステップS313へ進む。検証部12による検証結果が正常である場合(ステップS306でYes)、切り替え部15は、仮想サーバ310−1からの出力をメッセージバッファ33に切り替え、仮想サーバ310−2からの出力をアプリケーションハブ32に接続する(ステップS307)。検証部12は、仮想サーバ211及び310−2が行う動作を検証する(ステップS307)。
【0069】
検証部12による検証結果が異常である場合(ステップS309でNo)、処理はステップS313へ進む。検証部12による検証結果が正常である場合(ステップS309でYes)、エッジハブ制御部16は、エッジハブ22から仮想サーバ210に対する観測データの入力を停止する(ステップS311)。引継ぎ制御部13は、仮想サーバ310−4を、仮想サーバ210としてライブマイグレーションし(ステップS312)、全体の処理は終了する。
【0070】
本実施形態に係るソフトウェア更新制御装置10は、IoTシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことができる。その理由は、第1の実施形態について説明した通りである。
【0071】
また、本実施形態に係るソフトウェア更新制御装置10は、エッジ側更新前ソフトウェア172を実行する仮想サーバ210を、クラウド側システム30にマイグレーションしないで、ソフトウェアの更新処理を行うように制御する。この処理は、エッジ側システム20において優先度が低い処理を行う仮想サーバ211を、一時的にクラウド側システム30にマイグレーションした結果として、エッジ側システム20の負荷が低減することにより実現できる。仮想サーバ211は優先度が低い処理を行っているので、仮想サーバ211をクラウド側システム30にマイグレーションすることによる影響は小さい。ソフトウェア更新制御装置10は、上述した制御を行うことによって、ソフトウェアの更新処理にともなう、更新前のソフトウェアを実行する環境への影響を小さくすることができる。
【0072】
また、本実施形態に係るソフトウェア更新制御装置10は、ソフトウェアの更新処理を行った後も、クラウド側システム30ではなくエッジ側システム20において、仮想サーバ210がエッジ側更新前ソフトウェア172を実行するように制御する。したがって、ソフトウェア更新制御装置10は、更新後ソフトウェアによる処理において異常が発生した場合に、より安全かつ迅速に、システムをソフトウェアが更新される前の状態に戻すことができる。
【0073】
<第4の実施形態>
図11は、本願発明の第4の実施形態に係るソフトウェア更新制御システム2の構成を概念的に示すブロック図である。ソフトウェア更新制御システム2は、エッジ側システム20に加えてエッジ側システム20A(第3の情報処理システム)を有することを除いては、
図1に示す第1の実施形態に係るソフトウェア更新制御システム1と同様の構成を有する。本実施形態に係るエッジ側システム20Aは、エッジ側システム20と同様に、エッジ側仮想サーバ基盤21A、及び、エッジハブ22Aを備える。エッジ側システム20Aの機能は、エッジ側システム20と同様である。
【0074】
本実施形態に係るエッジ側システム20及びクラウド側システム30によって実行されるソフトウェアが更新される前の、これらシステムの状態は、第1の実施形態と同様に
図2に示す通りである。
【0075】
本実施形態に係るソフトウェア更新制御装置10は、
図2に示す状態において、エッジ側システム20及びクラウド側システム30によって実行されるソフトウェアを、エッジ側更新後ソフトウェア173及びクラウド側更新後ソフトウェア171に更新する処理を開始する。
【0076】
図12は、本実施形態に係るエッジ側システム20及びクラウド側システム30によって実行されるソフトウェアが更新される途中の、各システムの状態を例示する図である。
【0077】
図11に示す第1仮想サーバ制御部11は、
図12に示す通り、エッジ側仮想サーバ基盤21Aを制御することによって、仮想サーバ210A(第5の情報処理資源)を新たに立ち上げる。第1仮想サーバ制御部11は、ソフトウェア記憶部17からエッジ側更新後ソフトウェア173を読み出して、読み出したエッジ側更新後ソフトウェア173を仮想サーバ210Aが実行するように制御する。第1仮想サーバ制御部11がクラウド側仮想サーバ基盤31を制御することによって仮想サーバ310−2を立ち上げ、仮想サーバ310−2がクラウド側更新後ソフトウェア171を実行するように制御することは、第1の実施形態と同様である。
【0078】
すなわち、本実施形態に係る第1仮想サーバ制御部11は、第1の実施形態において行った、クラウド側システム30に仮想サーバ310−3を立ち上げる代わりに、エッジ側システム20Aに仮想サーバ210Aを立ち上げる。本実施形態に係るソフトウェア更新制御装置10は、第1の実施形態において仮想サーバ310−3に対して行った処理と同様の処理を、仮想サーバ210Aに対して行う。本実施形態に係るエッジ側システム20及びクラウド側システム30によって実行されるソフトウェアが、ソフトウェア更新制御装置10による制御によって更新された後のこれらシステムの状態は、第1の実施形態と同様に、
図4に示す通りである。
【0079】
次に
図13A及び13Bのフローチャートを参照して、本実施形態に係るソフトウェア更新制御装置10の動作(処理)について詳細に説明する。
【0080】
第1仮想サーバ制御部11は、仮想サーバ310−2及び210Aを起動し、順に、クラウド側更新後ソフトウェア171及びエッジ側更新後ソフトウェア173を実行させる(ステップS401)。エッジハブ制御部16は、エッジハブ22に、デバイス群40から受信した観測データを、仮想サーバ210Aに入力させる(ステップS402)。検証部12は、仮想サーバ210A及び310−2が行う試行動作を検証する(ステップS403)。
【0081】
検証部12による検証結果が異常である場合(ステップS404でNo)、ソフトウェア更新制御装置10は、
図5Aに示すステップS114及びS115の処理を実行し(ステップS413)、全体の処理は終了する。
【0082】
検証部12による検証結果が正常である場合(ステップS404でYes)、切り替え部15は、仮想サーバ310−1からの出力をメッセージバッファ33に切り替え、仮想サーバ310−2からの出力をアプリケーションハブ32に接続する(ステップS405)。検証部12は、仮想サーバ210A及び310−2が行う動作を検証する(ステップS406)。
【0083】
検証部12による検証結果が異常である場合(ステップS407でNo)、処理はステップS413へ進む。検証部12による検証結果が正常である場合(ステップS407でYes)、引継ぎ制御部13は、仮想サーバ210を、仮想サーバ310−4としてライブマイグレーションする(ステップS408)。第2仮想サーバ制御部14は、仮想サーバ210Aを、仮想サーバ210としてライブマイグレーションする(ステップS409)。検証部12は、仮想サーバ210及び310−2が行う動作を検証する(ステップS410)。
【0084】
検証部12による検証結果が異常である場合(ステップS411でNo)、処理はステップS413へ進む。検証部12による検証結果が正常である場合(ステップS411でYes)、ソフトウェア更新制御装置10は、
図5Bに示すステップS112及びS113の処理を実行し(ステップS412)、全体の処理は終了する。
【0085】
本実施形態に係るソフトウェア更新制御装置10は、IoTシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことができる。その理由は、第1の実施形態について説明した通りである。
【0086】
また、本実施形態に係るソフトウェア更新制御装置10は、エッジ側更新後ソフトウェア173を使用して試行動作を行う仮想サーバを、クラウド側システム30ではなく、別のエッジ側システム20Aに構築する。これにより、ソフトウェア更新制御装置10は、当該試行動作を行う仮想サーバをクラウド側システム30に構築することに伴う、コストの増加あるいは性能問題等を回避して、ソフトウェアの更新処理を行うことができる。
【0087】
<第5の実施形態>
図14は、本願発明の第5の実施形態に係るソフトウェア更新制御システム3の構成を概念的に示すブロック図である。ソフトウェア更新制御システム3は、大別して、ソフトウェア更新制御装置50、n個(nは2以上の任意の自然数)のエッジ側システム20−1乃至20−n、クラウド側システム30、及び、デバイス群40−1乃至40−nを有する。
【0088】
エッジ側システム20−1乃至20−nの個々の構成は、
図1に示す第1の実施形態に係るエッジ側システム20と同様である。すなわち、エッジ側システム20−1乃至20−nは、エッジ側仮想サーバ基盤21−1乃至21−n、及び、エッジハブ22−1乃至22−nを備える。エッジ側システム20−1乃至20−nは、デバイス群40−1乃至40−nと通信可能に接続されており、デバイス群40−1乃至40−nから出力された観測データを受信する。エッジ側システム20−1乃至20−nは、受信した観測データに対して、第1の実施形態に係るエッジ側システム20と同様な処理を行う。
【0089】
本実施形態に係るクラウド側システム30は、エッジ側システム20−1乃至20−nと通信可能に接続され、エッジ側システム20−1乃至20−nから出力された処置対象データに対して、第1の実施形態と同様な処理を行う。
【0090】
ソフトウェア更新制御装置50は、エッジ側システム20−1乃至20−n、及び、クラウド側システム30における仮想サーバが実行するソフトウェアに対する更新処理を、第1の実施形態に係るソフトウェア更新制御装置10と同様に制御する装置である。
【0091】
ソフトウェア更新制御装置50は、
図14に示す通り、第1の実施形態に係るソフトウェア更新制御装置10の構成に追加して、更新指示部58を備える。更新指示部58は、更新スケジュール情報580を、内部の電子メモリ等に記憶している。更新スケジュール情報580は、エッジ側システム20−1乃至20−nの個々について、ソフトウェアを更新するスケジュール(実施日時等)を示す情報である。
【0092】
更新指示部58は、更新スケジュール情報580に基づいて、エッジ側システム20−1乃至20−nのうちの特定のエッジ側システムについて、ソフトウェアを更新する日時になったことを検知する。更新指示部58は、あるいは、特定のエッジシステムについてソフトウェアの更新を行うことを指示する、システム管理者等によって入力された情報を受け付ける。
【0093】
更新指示部58は、このとき、その特定のエッジ側システムについて、ソフトウェアの更新処理を行うことを指示する指示情報を出力する。ソフトウェア更新制御装置50は、当該指示情報が出力されたことを契機として、ソフトウェアの更新処理を開始する。更新指示部58は、複数のエッジ側システムについてソフトウェアの更新処理を行う場合、同じタイミングに複数の更新処理を開始するように指示してもよい。更新指示部58は、あるいは、クラウド側システム30に関するメモリの空き領域の状態、あるいは、通信ネットワークの帯域等を示す情報に基づいて、順次、更新処理を開始するように指示してもよい。
【0094】
本実施形態に係るソフトウェア記憶部17は、
図14に示す通り、エッジ側システム20−1乃至20−nについて、エッジ側更新前ソフトウェア172−1乃至172−n、及び、エッジ側更新後ソフトウェア173−1乃至173−nを記憶している。
【0095】
図15は、本実施形態に係るエッジ側システム20−1乃至20−n及びクラウド側システム30によって実行されるソフトウェアが更新される途中の、各システムの状態を例示する図である。
図15に示す通り、ソフトウェア更新制御装置50は、ソフトウェアを更新する過程において、エッジ側更新後ソフトウェアを使用して試行動作を行う複数の仮想サーバ310−3乃至310−m(mは3以上の任意の整数)を、クラウド側システム30が実行するように制御する。ソフトウェア更新制御装置50は、第1の実施形態に係るソフトウェア更新制御装置10と同様の手順によって、複数のエッジ側システム20−1乃至20−nによって実行されるソフトウェアの更新処理を制御する。
【0096】
本実施形態に係るソフトウェア更新制御装置50は、IoTシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことができる。その理由は、第1の実施形態について説明した通りである。
【0097】
また、本実施形態に係るソフトウェア更新制御装置50は、複数のエッジ側システムについて、ソフトウェアを更新する場合であっても、上述した処理を行うことができる。
【0098】
<第6の実施形態>
図16は、本願発明の第6の実施形態に係るソフトウェア更新制御装置60の構成を概念的に示すブロック図である。
【0099】
本実施形態に係るソフトウェア更新制御装置60は、第1の実行制御部61、検証部62、引継ぎ制御部63、第2の実行制御部64、及び、切り替え部65を備えている。
【0100】
図16に示す第2の情報処理システム80は、第1の情報処理システム70に含まれる第1の情報処理資源71が更新前ソフトウェア710を実行することによって出力した更新前出力情報を処理する。第1の実行制御部61は、この場合において、更新後ソフトウェア711を、第2の情報処理システム80に含まれる第2の情報処理資源81が実行するように制御する。
【0101】
検証部62は、第2の情報処理資源81が更新後ソフトウェア711を実行することによって出力した情報を、第2の情報処理システム80が処理する試行動作を検証する。
【0102】
引継ぎ制御部63は、検証部62による当該試行動作に対する検証結果が正常であることを示す場合に、更新前出力情報を出力する状態を、第2の情報処理システム80に含まれる第3の情報処理資源82が第1の情報処理資源71から引き継ぐように制御する。そして、引継ぎ制御部63は、第3の情報処理資源82から出力された更新前出力情報を、第2の情報処理システム80が処理できるように制御する。
【0103】
第2の実行制御部64は、引継ぎ制御部63による処理が行われたのち、第1の情報処理資源71が、更新後ソフトウェア711を実行することによって更新後出力情報を出力するように制御する。
【0104】
切り替え部65は、第2の情報処理システム80が処理対象とする処理対象情報を、第1の情報処理資源71あるいは第3の情報処理資源82から出力された更新前出力情報から、第1の情報処理資源71あるいは第2の情報処理資源81から出力された更新後出力情報に切り替える。
【0105】
本実施形態に係るソフトウェア更新制御装置60は、IoTシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことができる。その理由は、ソフトウェア更新制御装置60が、ソフトウェア更新後の全体の動作環境を第2の情報処理システム80の中に構築してその動作を検証したのち、第1の情報処理システム70におけるソフトウェア更新前の動作環境を、第2の情報処理システム80に移動させるとともに、第1の情報処理システム70が更新後のソフトウェアを実行するように制御するからである。
【0106】
<ハードウェア構成例>
上述した各実施形態において
図1、
図11、
図14、及び、
図16に示したソフトウェア更新制御装置における各部は、専用のHW(HardWare)(電子回路)によって実現することができる。また、
図1、
図11、
図14、及び、
図16において、少なくとも、下記構成は、ソフトウェアプログラムの機能(処理)単位(ソフトウェアモジュール)と捉えることができる。
・第1仮想サーバ制御部11、
・検証部12及び62、
・引継ぎ制御部13及び63、
・第2仮想サーバ制御部14、
・切り替え部15及び65、
・エッジハブ制御部16、
・ソフトウェア記憶部17における記憶制御機能
・更新指示部58、
・第1の実行制御部61、
・第2の実行制御部64。
【0107】
但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、
図17を参照して説明する。
【0108】
図17は、本願発明の各実施形態に係るソフトウェア更新制御装置を実行可能な情報処理装置900(コンピュータ)の構成を例示的に説明する図である。即ち、
図17は、
図1、
図11、
図14、及び、
図16に示したソフトウェア更新制御装置を実現可能なコンピュータ(情報処理装置)の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【0109】
図17に示した情報処理装置900は、構成要素として下記を備えている。
・CPU(Central_Processing_Unit)901、
・ROM(Read_Only_Memory)902、
・RAM(Random_Access_Memory)903、
・ハードディスク(記憶装置)904、
・外部装置との通信インタフェース905、
・バス906(通信線)、
・CD−ROM(Compact_Disc_Read_Only_Memory)等の記録媒体907に格納されたデータを読み書き可能なリーダライタ908、
・入出力インタフェース909。
【0110】
即ち、上記構成要素を備える情報処理装置900は、これらの構成がバス906を介して接続された一般的なコンピュータである。情報処理装置900は、CPU901を複数備える場合もあれば、マルチコアにより構成されたCPU901を備える場合もある。
【0111】
そして、上述した実施形態を例に説明した本願発明は、
図17に示した情報処理装置900に対して、次の機能を実現可能なコンピュータプログラムを供給する。その機能とは、その実施形態の説明において参照したブロック構成図(
図1、
図11、
図14、及び、
図16)における上述した構成、或いはフローチャート(
図5A及び5B、
図6A及び6B、
図10A及び10B、及び、
図13A及び13B)の機能である。本願発明は、その後、そのコンピュータプログラムを、当該ハードウェアのCPU901に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性のメモリ(RAM903)、または、ROM902やハードディスク904等の不揮発性の記憶デバイスに格納すれば良い。
【0112】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、CD−ROM等の各種記録媒体907を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本願発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記録媒体907によって構成されると捉えることができる。
【0113】
以上、上述した実施形態を模範的な例として本願発明を説明した。しかしながら、本願発明は、上述した実施形態には限定されない。即ち、本願発明は、本願発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【0114】
この出願は、2016年4月15日に出願された日本出願特願2016−081773を基礎とする優先権を主張し、その開示の全てをここに取り込む。