(57)【特許請求の範囲】
【請求項１】
第一の情報処理システムに含まれる第一の情報処理資源が更新前のソフトウェアを実行することによって出力した更新前出力情報を、第二の情報処理システムが処理する場合において、更新後の前記ソフトウェアを、前記第二の情報処理システムに含まれる第二の情報処理資源が実行するように制御する第一の実行制御手段と、
前記第二の情報処理資源が前記更新後のソフトウェアを実行することによって出力した情報を、前記第二の情報処理システムが処理する試行動作を検証する検証手段と、
前記検証手段による前記試行動作に対する検証結果が正常であることを示す場合に、前記更新前出力情報を出力する状態を、前記第二の情報処理システムに含まれる第三の情報処理資源が前記第一の情報処理資源から引き継ぎ、前記第三の情報処理資源から出力された前記更新前出力情報を、前記第二の情報処理システムが処理できるように制御する引継ぎ制御手段と、
前記引継ぎ制御手段による処理が行われたのち、前記第一の情報処理資源が、前記更新後のソフトウェアを実行することによって更新後出力情報を出力するように制御する第二の実行制御手段と、
前記第二の情報処理システムが処理対象とする処理対象情報を、前記第一あるいは第三の情報処理資源から出力された前記更新前出力情報から、前記第一あるいは第二の情報処理資源から出力された前記更新後出力情報に切り替える切り替え手段と、
を備えるソフトウェア更新制御装置。
【請求項２】
前記第一の情報処理資源が、前記第一の情報処理システムに含まれるデータ受信部が外部から受信した処理対象データを処理する場合において、前記第一の実行制御手段によって、前記第二の情報処理資源が前記更新後のソフトウェアを実行するときに、前記データ受信部が、前記処理対象データを複製し、複製した前記処理対象データを前記第二の情報処理資源に入力するように制御するデータ受信部制御手段
をさらに備える請求項１に記載のソフトウェア更新制御装置。
【請求項３】
前記切り替え手段は、前記処理対象情報を切り替えたのち、前記第二の情報処理システムが、前記第三の情報処理資源から出力された前記更新前出力情報を処理するとともに、その処理結果を前記第二の情報処理システムに含まれる記憶部に格納するように制御する、
請求項１または２に記載のソフトウェア更新制御装置。
【請求項４】
前記検証手段は、前記第一の情報処理資源から出力された前記更新後出力情報を、前記第二の情報処理システムが処理する更新後動作を検証しており、
前記切り替え手段は、前記検証手段による前記更新後動作に対する検証結果が異常であることを示す場合に、前記処理対象情報を、前記更新後動作により得られた情報から、前記記憶部に格納された情報に切り替えるように制御する、
請求項３に記載のソフトウェア更新制御装置。
【請求項５】
前記引継ぎ制御手段は、前記第一の情報処理システムに含まれる第四の情報処理資源が、基準より優先度が低い処理を行う場合に、前記第三の情報処理資源が、前記第四の情報処理資源が行う処理を引き継ぐように制御し、
前記第二の実行制御手段は、前記引継ぎ制御手段による処理が行われたのち、前記第四の情報処理資源が、前記更新後のソフトウェアを実行することによって更新後出力情報を出力するように制御し
前記切り替え手段は、前記処理対象情報を、前記第一の情報処理資源から出力された前記更新前出力情報から、前記第四の情報処理資源から出力された前記更新後出力情報に切り替える、
請求項１乃至４のいずれか一項に記載のソフトウェア更新制御装置。
【請求項６】
前記第一の実行制御手段は、前記更新後のソフトウェアを、第三の情報処理システムに含まれる第五の情報処理資源が実行するように制御し、
前記検証手段は、前記第五の情報処理資源から出力された前記更新後出力情報を、前記第二の情報処理システムが処理する前記試行動作を検証し、
前記切り替え手段は、前記処理対象情報を、前記第一あるいは第三の情報処理資源から出力された前記更新前出力情報から、前記第一あるいは第五の情報処理資源から出力された前記更新後出力情報に切り替える、
請求項１乃至５のいずれか一項に記載のソフトウェア更新制御装置。
【請求項７】
複数の前記第一の情報処理システムの個々に対して、前記ソフトウェアを更新する処理が行われるスケジュールを示す情報、あるいは外部から入力された情報に基づいて、特定の前記第一の情報処理システムにおける前記ソフトウェアの更新を指示する指示情報を出力する更新指示手段をさらに備え、
前記第一の実行制御手段、前記検証手段、前記引継ぎ制御手段、前記第二の実行制御手段、及び、前記切り替え手段は、前記指示情報に基づいて、前記特定の第一の情報処理システムに関する処理を実行する、
請求項１乃至６のいずれか一項に記載のソフトウェア更新制御装置。
【請求項８】
請求項１乃至７のいずれか一項に記載のソフトウェア更新制御装置と、
前記第一及び第二の情報処理システムと、
を有するソフトウェア更新制御システム。
【請求項９】
情報処理装置によって、
第一の情報処理システムに含まれる第一の情報処理資源が更新前のソフトウェアを実行することによって出力した更新前出力情報を、第二の情報処理システムが処理する場合において、更新後の前記ソフトウェアを、前記第二の情報処理システムに含まれる第二の情報処理資源が実行するように制御し、
前記第二の情報処理資源が前記更新後のソフトウェアを実行することによって出力した情報を、前記第二の情報処理システムが処理する試行動作を検証し、
前記試行動作に対する検証結果が正常であることを示す場合に、前記更新前出力情報を出力する状態を、前記第二の情報処理システムに含まれる第三の情報処理資源が前記第一の情報処理資源から引き継ぎ、前記第三の情報処理資源から出力された前記更新前出力情報を、前記第二の情報処理システムが処理できるように制御し、
前記第三の情報処理資源から出力された前記更新前出力情報を、前記第二の情報処理システムが処理できる状態になったのち、前記第一の情報処理資源が、前記更新後のソフトウェアを実行することによって更新後出力情報を出力するように制御し、
前記第二の情報処理システムが処理対象とする処理対象情報を、前記第一あるいは第三の情報処理資源から出力された前記更新前出力情報から、前記第一あるいは第二の情報処理資源から出力された前記更新後出力情報に切り替える、
ソフトウェア更新制御方法。
【請求項１０】
第一の情報処理システムに含まれる第一の情報処理資源が更新前のソフトウェアを実行することによって出力した更新前出力情報を、第二の情報処理システムが処理する場合において、更新後の前記ソフトウェアを、前記第二の情報処理システムに含まれる第二の情報処理資源が実行するように制御する第一の実行制御処理と、
前記第二の情報処理資源が前記更新後のソフトウェアを実行することによって出力した情報を、前記第二の情報処理システムが処理する試行動作を検証する検証処理と、
前記検証処理による前記試行動作に対する検証結果が正常であることを示す場合に、前記更新前出力情報を出力する状態を、前記第二の情報処理システムに含まれる第三の情報処理資源が前記第一の情報処理資源から引き継ぎ、前記第三の情報処理資源から出力された前記更新前出力情報を、前記第二の情報処理システムが処理できるように制御する引継ぎ制御処理と、
前記引継ぎ制御処理による処理が行われたのち、前記第一の情報処理資源が、前記更新後のソフトウェアを実行することによって更新後出力情報を出力するように制御する第二の実行制御処理と、
前記第二の情報処理システムが処理対象とする処理対象情報を、前記第一あるいは第三の情報処理資源から出力された前記更新前出力情報から、前記第一あるいは第二の情報処理資源から出力された前記更新後出力情報に切り替える切り替え処理と、
をコンピュータに実行させるためのソフトウェア更新制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、情報処理装置がソフトウェアを実行する動作を停止することなく、当該ソフトウェアを更新する技術に関する。
【背景技術】
【０００２】
高度情報化社会である現代社会においては、社会インフラの基盤として、様々なコンピュータシステムが稼動している。このようなコンピュータシステムでは、機能の向上、あるいは、セキュリティ対策等を目的としたソフトウェアの更新が行われる。高いレベルの可用性が求められるコンピュータシステムは、ソフトウェアの更新に伴い動作を一時停止した場合、社会に大きな影響を与える虞がある。したがって、コンピュータシステムの動作を停止させずに、ソフトウェアを更新する技術が期待されている。【０００３】
このような技術に関連する技術として、特許文献１には、ソフトウェアを動作させる仮想ハードウェアを冗長化構成した仮想計算機システムが開示されている。このシステムは、冗長化構成において動作するソフトウェアを更新する場合、待機系仮想ハードウェアにおいて動作するソフトウェアを更新した後、稼動系による処理を待機系が引継ぐように制御する。【０００４】
また、特許文献２には、ロードバランサにより負荷分散されるサーバのクラスタを多段、多階層有する複数の系統からなる情報処理システムにおいて、無停止でソフトウェアのバージョンアップ等のメンテナンスを行うソフトウェア更新方法が開示されている。【０００５】
また、特許文献３には、ハイパーバイザ型の仮想マシンモニターと、その仮想マシンモニターの上で業務を行う第１仮想マシンと、ソフトウェアのインストールまたはアップグレードを行う第２仮想マシンと、を備えた分散型情報処理システムが開示されている。このシステムでは、第２仮想マシンは、自己に対して更新後のソフトウェアをインストールした後、第１仮想マシンにおいて動的に更新されるデータ格納場所の情報が保存されているインデックステーブルを段階的に自己に移行する。そして、このシステムは、その移行が完了したときに、第１仮想マシンから第２仮想マシンへ処理を切り替える。【０００６】
また、特許文献４には、マルチコアシステムにおいて、運用中のファームウェアが稼働しているコアとは別のコアを利用することによって、別のコアの占有メモリ領域に更新ファームウェアをロードする制御装置が開示されている。この装置は、更新ファームウェアが正常に動作するか否かを検査したのちに、ファームウェアに対する処理を運用中のコアから当該別のコアに切り替える。【０００７】
また、特許文献５には、ロードバランサによって、ソフトウェアが更新される前の旧クラスタと、ソフトウェアが更新された後の新クラスタとを管理するクラスタシステムが開示されている。このシステムは、既に受付済みの処理を旧クラスタへ、新たな処理要求を新クラスタへ振り分ける制御を行う。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開2007-304845号公報
【特許文献２】特開2015-197838号公報
【特許文献３】特開2011-170528号公報
【特許文献４】特許第5293752号公報
【特許文献５】特許第5667506号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
センサーやカメラなどのデバイスから生成されるデジタルデータを、ネットワークを介して集約し、集約したデータに対して、分析あるいは状況の可視化を行うことによって、予測や制御等を行うＩｏＴ（Internet of Things）システムの活用が広まってきている。このようなＩｏＴシステムは、多数のデバイスを統合管理するので、データセンター等のクラウドシステム側にデータを集めることによって、集中的に計算処理を行う形態が一般的である。しかしながら、ネットワークに接続されるデバイスの数が増えることにより、扱うデータ量が膨大になるにつれて、クラウドシステム側が全ての処理を行うことは非効率となる。【００１０】
このような問題に対して、データの生成源であるデバイスに近い場所にエッジサーバ（以降、「エッジ」と称する）と呼ばれる計算機サーバが設置され、そのエッジがデータ処理の一部を実行するエッジ型システムが利用されるようになってきている。例えば、エッジが多数のデバイスから集めたデータを集計し、その集計結果のみをクラウドシステムに転送することによって、クラウドシステムへのデータ転送量を削減することができる。また、収集したデータに基づいてリアルタイムな制御を行う必要があるシステム等では、エッジによる制御判断を実施した方が、制御における遅延を抑えることができるので、精度が高い制御を実現することができる。【００１１】
このようなエッジ型ＩｏＴシステムでは、エッジによって実行されるソフトウェアを更新する場合がある。可用性に対する要件が厳しいＩｏＴシステムでは、このような場合、エッジによって実行される更新後のソフトウェアがクラウドシステムと連携して正常に動作することを確認したのち、ＩｏＴシステムの動作を停止させることなく、ソフトウェアの更新処理を行うことが課題である。上述した特許文献には、例えば、二重化等の多重化したシステムを利用することによってソフトウェア更新時の無停止性を実現した技術が示されている。しかしながら、エッジ型ＩｏＴシステムでは、通常、エッジが備える計算機資源（情報処理資源）が限られているので、エッジによって実行されるソフトウェアの更新に対して、多重化に基づく無停止更新技術を適用することが困難であるという問題がある。特許文献１乃至５は、この問題について言及していない。本願発明の主たる目的は、この問題を解決するソフトウェア更新制御装置等を提供することである。
【課題を解決するための手段】
【００１２】
本願発明の一態様に係るソフトウェア更新制御装置は、第一の情報処理システムに含まれる第一の情報処理資源が更新前のソフトウェアを実行することによって出力した更新前出力情報を、第二の情報処理システムが処理する場合において、更新後の前記ソフトウェアを、前記第二の情報処理システムに含まれる第二の情報処理資源が実行するように制御する第一の実行制御手段と、前記第二の情報処理資源が前記更新後のソフトウェアを実行することによって出力した情報を、前記第二の情報処理システムが処理する試行動作を検証する検証手段と、前記検証手段による前記試行動作に対する検証結果が正常であることを示す場合に、前記更新前出力情報を出力する状態を、前記第二の情報処理システムに含まれる第三の情報処理資源が前記第一の情報処理資源から引き継ぎ、前記第三の情報処理資源から出力された前記更新前出力情報を、前記第二の情報処理システムが処理できるように制御する引継ぎ制御手段と、前記引継ぎ制御手段による処理が行われたのち、前記第一の情報処理資源が、前記更新後のソフトウェアを実行することによって更新後出力情報を出力するように制御する第二の実行制御手段と、前記第二の情報処理システムが処理対象とする処理対象情報を、前記第一あるいは第三の情報処理資源から出力された前記更新前出力情報から、前記第一あるいは第二の情報処理資源から出力された前記更新後出力情報に切り替える切り替え手段と、を備える。【００１３】
上記目的を達成する他の見地において、本願発明の一態様に係るソフトウェア更新制御方法は、情報処理装置によって、第一の情報処理システムに含まれる第一の情報処理資源が更新前のソフトウェアを実行することによって出力した更新前出力情報を、第二の情報処理システムが処理する場合において、更新後の前記ソフトウェアを、前記第二の情報処理システムに含まれる第二の情報処理資源が実行するように制御し、前記第二の情報処理資源が前記更新後のソフトウェアを実行することによって出力した情報を、前記第二の情報処理システムが処理する試行動作を検証し、前記試行動作に対する検証結果が正常であることを示す場合に、前記更新前出力情報を出力する状態を、前記第二の情報処理システムに含まれる第三の情報処理資源が前記第一の情報処理資源から引き継ぎ、前記第三の情報処理資源から出力された前記更新前出力情報を、前記第二の情報処理システムが処理できるように制御し、前記第三の情報処理資源から出力された前記更新前出力情報を、前記第二の情報処理システムが処理できる状態になったのち、前記第一の情報処理資源が、前記更新後のソフトウェアを実行することによって更新後出力情報を出力するように制御し、前記第二の情報処理システムが処理対象とする処理対象情報を、前記第一あるいは第三の情報処理資源から出力された前記更新前出力情報から、前記第一あるいは第二の情報処理資源から出力された前記更新後出力情報に切り替える。【００１４】
また、上記目的を達成する更なる見地において、本願発明の一態様に係るソフトウェア更新制御プログラムは、第一の情報処理システムに含まれる第一の情報処理資源が更新前のソフトウェアを実行することによって出力した更新前出力情報を、第二の情報処理システムが処理する場合において、更新後の前記ソフトウェアを、前記第二の情報処理システムに含まれる第二の情報処理資源が実行するように制御する第一の実行制御処理と、前記第二の情報処理資源が前記更新後のソフトウェアを実行することによって出力した情報を、前記第二の情報処理システムが処理する試行動作を検証する検証処理と、前記検証処理による前記試行動作に対する検証結果が正常であることを示す場合に、前記更新前出力情報を出力する状態を、前記第二の情報処理システムに含まれる第三の情報処理資源が前記第一の情報処理資源から引き継ぎ、前記第三の情報処理資源から出力された前記更新前出力情報を、前記第二の情報処理システムが処理できるように制御する引継ぎ制御処理と、前記引継ぎ制御処理による処理が行われたのち、前記第一の情報処理資源が、前記更新後のソフトウェアを実行することによって更新後出力情報を出力するように制御する第二の実行制御処理と、前記第二の情報処理システムが処理対象とする処理対象情報を、前記第一あるいは第三の情報処理資源から出力された前記更新前出力情報から、前記第一あるいは第二の情報処理資源から出力された前記更新後出力情報に切り替える切り替え処理と、をコンピュータに実行させるためのプログラムである。【００１５】
更に、本願発明は、係るソフトウェア更新制御プログラム（コンピュータプログラム）が格納された、コンピュータ読み取り可能な、不揮発性の記録媒体によっても実現可能である。
【発明の効果】
【００１６】
本願発明は、ＩｏＴシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことを可能とする。
【図面の簡単な説明】
【００１７】
【図１】本願発明の第１の実施形態に係るソフトウェア更新制御システム１の構成を示すブロック図である。
【図２】本願発明の第１の実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新される前の、各システムの状態を例示する図である。
【図３】本願発明の第１の実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新される途中の、各システムの状態を例示する図である。
【図４】本願発明の第１の実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新された後の、各システムの状態を例示する図である。
【図５Ａ】本願発明の第１の実施形態に係るソフトウェア更新制御装置１０の動作を示すフローチャート（１／２）である。
【図５Ｂ】本願発明の第１の実施形態に係るソフトウェア更新制御装置１０の動作を示すフローチャート（２／２）である。
【図６Ａ】本願発明の第２の実施形態に係るソフトウェア更新制御装置１０の動作を示すフローチャート（１／２）である。
【図６Ｂ】本願発明の第２の実施形態に係るソフトウェア更新制御装置１０の動作を示すフローチャート（２／２）である。
【図７】本願発明の第３の実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新される前の、各システムの状態を例示する図である。
【図８】本願発明の第３の実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新される途中の、各システムの状態を例示する図である。
【図９】本願発明の第３の実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新された後の、各システムの状態を例示する図である。
【図１０Ａ】本願発明の第３の実施形態に係るソフトウェア更新制御装置１０の動作を示すフローチャート（１／２）である。
【図１０Ｂ】本願発明の第３の実施形態に係るソフトウェア更新制御装置１０の動作を示すフローチャート（２／２）である。
【図１１】本願発明の第４の実施形態に係るソフトウェア更新制御システム２の構成を示すブロック図である。
【図１２】本願発明の第４の実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新される途中の、各システムの状態を例示する図である。
【図１３Ａ】本願発明の第４の実施形態に係るソフトウェア更新制御装置１０の動作を示すフローチャート（１／２）である。
【図１３Ｂ】本願発明の第４の実施形態に係るソフトウェア更新制御装置１０の動作を示すフローチャート（２／２）である。
【図１４】本願発明の第５の実施形態に係るソフトウェア更新制御システム３の構成を示すブロック図である。
【図１５】本願発明の第５の実施形態に係るエッジ側システム２０−１乃至２０−ｎ及びクラウド側システム３０によって実行されるソフトウェアが更新される途中の、各システムの状態を例示する図である。
【図１６】本願発明の第６の実施形態に係るソフトウェア更新制御装置６０の構成を示すブロック図である。
【図１７】本願発明の各実施形態に係るソフトウェア更新制御装置を実行可能な情報処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１８】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【００１９】
＜第１の実施形態＞
図１は、本願発明の第１の実施の形態に係るソフトウェア更新制御システム１の構成を概念的に示すブロック図である。ソフトウェア更新制御システム１は、例えば、ＩｏＴシステムにおけるエッジによって実行されるソフトウェアを更新するシステムである。ソフトウェア更新制御システム１は、大別して、ソフトウェア更新制御装置１０、エッジ側システム２０、クラウド側システム３０、及び、デバイス群４０を有する。
【００２０】
デバイス群４０は、例えばセンサーやカメラなどを含むデバイス群であり、観測対象を観測した結果を表す観測データを生成して出力する。
【００２１】
エッジ側システム２０（第１の情報処理システム）は、エッジサーバ等の情報処理装置であり、エッジ側仮想サーバ基盤２１と、エッジハブ２２とを備えている。エッジハブ２２は、デバイス群４０と通信可能に接続されており、デバイス群４０から出力された観測データを受信する。エッジ側仮想サーバ基盤２１は、仮想サーバ２１０を実行可能な基盤であり、プロセッサやメモリ等のハードウェア（例えば図１７を参照して後述するような構成）と、ハイパーバイザ（仮想サーバの実行を制御するソフトウェア）等のソフトウェア（不図示）とを含んでいる。仮想サーバ２１０は、エッジハブ２２が受信した観測データを、処理対象データとして処理したのち、当該処理対象データを、通信可能に接続されているクラウド側システム３０に送信する。尚、エッジ側システム２０が備えるプロセッサやメモリ等のハードウェアの量は少ないので、エッジ側仮想サーバ基盤２１が実行可能な仮想サーバの数は、限定的であることとする。
【００２２】
クラウド側システム３０（第２の情報処理システム）は、例えばデータセンターとして設置された、多数の情報処理装置を含むシステムであり、クラウド側仮想サーバ基盤３１と、アプリケーションハブ３２と、メッセージバッファ３３とを備えている。クラウド側仮想サーバ基盤３１は、仮想サーバ３１０−１乃至３１０−ｍ（ｍは任意の自然数）を実行可能な基盤であり、プロセッサやメモリ等のハードウェア（例えば図１７を参照して後述するような構成）と、ハイパーバイザ等のソフトウェア（不図示）とを含んでいる。仮想サーバ３１０−１乃至３１０−ｍは、エッジ側システム２０から送信された処理対象データに対して所定の処理を行う。
【００２３】
クラウド側システム３０は、アプリケーション３４を実行する。アプリケーション３４は、仮想サーバ３１０−１乃至３１０−ｍによって処理された処理対象データを使用したサービスを提供する。アプリケーション３４は、例えば、当該処理対象データに基づく情報分析あるいはシステム制御等を行う。当該処理対象データは、アプリケーションハブ３２を介して、アプリケーション３４に入力される。アプリケーションハブ３２は、メッセージバッファ３３とも接続されている。メッセージバッファ３３は、仮想サーバ３１０−１乃至３１０−ｍから出力されたデータを一時的に記憶可能な電子メモリ等のデバイスである。アプリケーションハブ３２は、外部からの制御に従って、仮想サーバ３１０−１乃至３１０−ｍから出力されたデータ、あるいは、メッセージバッファ３３に記憶されたデータのいずれかを選択して、アプリケーション３４に入力する。
【００２４】
ソフトウェア更新制御装置１０は、仮想サーバ２１０によって実行されるソフトウェアと、仮想サーバ３１０−１乃至３１０−ｍによって実行されるソフトウェアとに対する更新処理を制御する装置である。ソフトウェア更新制御装置１０は、エッジ側システム２０及びクラウド側システム３０と、通信可能に接続されている。
【００２５】
ソフトウェア更新制御装置１０は、第１仮想サーバ制御部１１、検証部１２、引継ぎ制御部１３、第２仮想サーバ制御部１４、切り替え部１５、エッジハブ制御部１６、及び、ソフトウェア記憶部１７を備えている。
【００２６】
ソフトウェア記憶部１７は、クラウド側更新前ソフトウェア１７０、クラウド側更新後ソフトウェア１７１、エッジ側更新前ソフトウェア１７２、及び、エッジ側更新後ソフトウェア１７３を記憶している。クラウド側更新前ソフトウェア１７０は、仮想サーバ３１０−１乃至３１０−ｍによって実行される更新前のソフトウェアである。クラウド側更新後ソフトウェア１７１は、仮想サーバ３１０−１乃至３１０−ｍによって実行される更新後のソフトウェアである。エッジ側更新前ソフトウェア１７２は、仮想サーバ２１０によって実行される更新前のソフトウェアである。エッジ側更新後ソフトウェア１７３は、仮想サーバ２１０によって実行される更新後のソフトウェアである。
【００２７】
図２は、本実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新される前の、各システムの状態を例示する図である。図２に例示する通り、仮想サーバ２１０（第１の情報処理資源）は、エッジ側更新前ソフトウェア１７２を実行することによって、エッジハブ２２（データ受信部）から入力された観測データを処理し、処理結果である処理対象データを仮想サーバ３１０−１に入力する。仮想サーバ３１０−１は、クラウド側更新前ソフトウェア１７０を実行することによって、仮想サーバ２１０から入力された処理対象データを処理し、処理結果である処理対象データをアプリケーションハブ３２に入力する。
【００２８】
図１に示すソフトウェア更新制御装置１０は、図２に示す状態において、エッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアを、エッジ側更新後ソフトウェア１７３及びクラウド側更新後ソフトウェア１７１に更新する処理を開始する。
【００２９】
図３は、本実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新される途中の、各システムの状態を例示する図である。図１に示す第１仮想サーバ制御部１１（第１の実行制御部）は、図３に示す通り、クラウド側仮想サーバ基盤３１を制御することによって、仮想サーバ３１０−２、及び、仮想サーバ３１０−３（第２の情報処理資源）を新たに立ち上げる。第１仮想サーバ制御部１１は、ソフトウェア記憶部１７からクラウド側更新後ソフトウェア１７１及びエッジ側更新後ソフトウェア１７３を読み出して、読み出したこれらのソフトウェアを、順に、仮想サーバ３１０−２及び３１０−３が実行するように制御する。
【００３０】
図１に示すエッジハブ制御部１６（データ受信部制御部）は、第１仮想サーバ制御部１１が上述した処理を行う際に、エッジハブ２２が、デバイス群４０から受信した観測データを複製し、複製した観測データを仮想サーバ３１０−３に入力するように制御する。これにより、図３に示す通り、更新後のソフトウェアによって観測データを処理する（試行動作を行う）環境が、クラウド側仮想サーバ基盤３１の中に構築される。
【００３１】
図１に示す検証部１２は、仮想サーバ３１０−３が観測データを処理することによって出力した処理対象データを仮想サーバ３１０−２が処理する試行動作が正常であるか否かを検証する。検証部１２には、例えば、この検証に必要な判定基準がシステム管理者等によって事前に与えられており、検証部１２は、当該判定基準に基づいて上述した検証を行うこととする。検証部１２は、ソフトウェアの更新処理が完了し、エッジ側システム２０及びクラウド側システム３０が、更新後のソフトウェアを実行することによって観測データを処理することを開始したのちも、エッジ側システム２０及びクラウド側システム３０による処理を検証することを継続する。検証部１２は、検証結果が異常であることを示す場合、ソフトウェア更新制御システム１における障害発生状況等を管理するシステム管理部（不図示）に、異常が発生したことを通知する。
【００３２】
図４は、本実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新された後の、各システムの状態を例示する図である。図１に示す引継ぎ制御部１３は、検証部１２による検証結果が正常であることを示す場合、図３及び図４に示す通り、エッジ側仮想サーバ基盤２１及びクラウド側仮想サーバ基盤３１を制御することによって、仮想サーバ２１０を、クラウド側仮想サーバ基盤３１に、仮想サーバ３１０−４（第３の情報処理資源）としてライブマイグレーションを行う。ライブマイグレーションは、仮想サーバの動作を停止させずに、当該仮想サーバの動作環境を異なる物理システムに移動させる既存の技術であり、エッジ側仮想サーバ基盤２１及びクラウド側仮想サーバ基盤３１は、このライブマイグレーションの機能を実装していることとする。このライブマイグレーションによって、仮想サーバ３１０−４から出力された処理対象データは、仮想サーバ３１０−１に入力されるので、ライブマイグレーションが行われた後も、更新前のソフトウェアによって観測データを処理する環境は、クラウド側仮想サーバ基盤３１の中に維持される。
【００３３】
図１に示す第２仮想サーバ制御部１４は、引継ぎ制御部１３による処理が行われたのち、図３及び図４に示す通り、エッジ側仮想サーバ基盤２１及びクラウド側仮想サーバ基盤３１を制御することによって、仮想サーバ３１０−３を、エッジ側仮想サーバ基盤２１に、新たな仮想サーバ２１０としてライブマイグレーションを行う。このライブマイグレーションによって、仮想サーバ２１０から出力された処理対象データは、仮想サーバ３１０−２に入力される。したがって、ライブマイグレーションが行われた後も、更新後のソフトウェアによって観測データを処理する環境は、エッジ側仮想サーバ基盤２１及びクラウド側仮想サーバ基盤３１の中に維持される。
【００３４】
図１に示す切り替え部１５は、クラウド側仮想サーバ基盤３１を制御することによって、図３及び図４に例示する通り、アプリケーションハブ３２へ入力される情報を、仮想サーバ３１０−１から出力された情報から、仮想サーバ３１０−２から出力された情報に切り替える。これによって、アプリケーションハブ３２に入力される情報は、更新前のソフトウェアによって観測データが処理された情報（更新前出力情報）から、更新後のソフトウェアによって観測データが処理された情報（更新後出力情報）に切り替わる。
【００３５】
切り替え部１５は、図３及び図４に例示する通り、上述したアプリケーションハブ３２への入力の切り替えに伴い、メッセージバッファ３３に、仮想サーバ３１０−１から出力された情報（更新前出力情報）を入力する。すなわち、メッセージバッファ３３は、ソフトウェアの更新処理が完了し、エッジ側システム２０及びクラウド側システム３０が、更新後のソフトウェアを実行することによって観測データを処理することを開始したのち、仮想サーバ３１０−１及び３１０−４によって生成される更新前出力情報を記憶する。  
【００３６】
切り替え部１５は、ソフトウェアの更新処理が完了したのち、検証部１２による検証結果が異常であることを示す場合、アプリケーションハブ３２を制御することによって、アプリケーション３４へ入力される情報を、仮想サーバ３１０−２から出力された更新後出力情報から、メッセージバッファ３３に記憶されている更新前出力情報に切り替える。これにより、エッジ側システム２０及びクラウド側システム３０による、観測データを処理する環境は、ソフトウェアの更新が行われる前の環境に戻る。
【００３７】
図４に示す仮想サーバ３１０−１及び３１０−４（すなわち、更新前のソフトウェアを実行する環境）は、ソフトウェアの更新処理が完了したのち、例えば検証部１２による検証結果が所定の時間に亘って正常であることをもって、第１仮想サーバ制御部１１によって動作を停止する。
【００３８】
次に図５Ａ及び５Ｂのフローチャートを参照して、本実施形態に係るソフトウェア更新制御装置１０の動作（処理）について詳細に説明する。
【００３９】
第１仮想サーバ制御部１１は、仮想サーバ３１０−２及び３１０−３を起動し、順に、クラウド側更新後ソフトウェア１７１及びエッジ側更新後ソフトウェア１７３を実行させる（ステップＳ１０１）。エッジハブ制御部１６は、エッジハブ２２が、デバイス群４０から受信した観測データを複製し、複製した観測データを仮想サーバ３１０−３に入力するように制御する（ステップＳ１０２）。検証部１２は、仮想サーバ３１０−２及び３１０−３が行う試行動作を検証する（ステップＳ１０３）。
【００４０】
検証部１２による検証結果が異常である場合（ステップＳ１０４でＮｏ）、ソフトウェア更新制御装置１０は、エッジ側システム２０及びクラウド側システム３０を、ソフトウェア更新処理を開始する前の状態に戻す（ステップＳ１１４）。検証部１２は、異常が発生したことをシステム管理部に通知して、全体の処理は終了する。
【００４１】
検証部１２による検証結果が正常である場合（ステップＳ１０４でＹｅｓ）、切り替え部１５は、仮想サーバ３１０−１からの出力をメッセージバッファ３３に切り替え、仮想サーバ３１０−２からの出力をアプリケーションハブ３２に接続する（ステップＳ１０５）。検証部１２は、仮想サーバ３１０−２及び３１０−３が行う動作を検証する（ステップＳ１０６）。
【００４２】
検証部１２による検証結果が異常である場合（ステップＳ１０７でＮｏ）、処理は、ステップＳ１１４へ進む。検証部１２による検証結果が正常である場合（ステップＳ１０７でＹｅｓ）、引継ぎ制御部１３は、仮想サーバ２１０を、仮想サーバ３１０−４としてライブマイグレーションする（ステップＳ１０８）。第２仮想サーバ制御部１４は、仮想サーバ３１０−３を、新たな仮想サーバ２１０としてライブマイグレーションする（ステップＳ１０９）。検証部１２は、仮想サーバ２１０及び３１０−２が行う動作を検証する（ステップＳ１１０）。
【００４３】
検証部１２による検証結果が異常である場合（ステップＳ１１１でＮｏ）、処理は、ステップＳ１１４へ進む。検証部１２による検証結果が正常である場合（ステップＳ１１１でＹｅｓ）、エッジハブ制御部１６は、エッジハブ２２から仮想サーバ３１０−４に対する観測データの入力を停止する（ステップＳ１１２）。第１仮想サーバ制御部１１は、仮想サーバ３１０−１及び３１０−４の動作を停止して（ステップＳ１１３）、全体の処理は終了する。
【００４４】
本実施形態に係るソフトウェア更新制御装置１０は、ＩｏＴシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことができる。その理由は、ソフトウェア更新制御装置１０が、ソフトウェア更新後の全体の動作環境をクラウド側システム３０の中に構築してその動作を検証したのち、エッジ側システム２０におけるソフトウェア更新前の動作環境をクラウド側システム３０に移動させるとともに、エッジ側システム２０が更新後のソフトウェアを実行するように制御するからである。
【００４５】
以下に、本実施形態に係るソフトウェア更新制御装置１０によって実現される効果について、詳細に説明する。
【００４６】
可用性に対する要件が厳しいＩｏＴシステム等において、エッジによって実行されるソフトウェアを更新する場合、ＩｏＴシステムの動作を停止させることなく、ソフトウェアの更新処理を行うことが課題である。そして、その際、エッジによって実行される更新後のソフトウェアがクラウドシステムと連携して正常に動作することが確認できていることが望ましい。既存の技術として、例えば、二重化等の多重化したシステムを利用することによってソフトウェア更新時の無停止性を実現した技術が存在する。しかしながら、エッジ型ＩｏＴシステム等では、通常、エッジが備える計算機資源が限られているので、エッジによって実行されるソフトウェアの更新に対して、多重化に基づく無停止更新技術を適用することが困難であるという問題がある。
【００４７】
このような問題に対して、本実施形態に係るソフトウェア更新制御装置１０では、第１仮想サーバ制御部１１は、仮想サーバ２１０がエッジ側更新前ソフトウェア１７２を実行することによって出力した更新前出力情報を、クラウド側システム３０が処理する場合において、エッジ側更新後ソフトウェア１７３を、仮想サーバ３１０−３が実行するように制御する。検証部１２は、仮想サーバ３１０−３がエッジ側更新後ソフトウェア１７３を実行することによって出力した更新後出力情報を、クラウド側システム３０が処理する試行動作を検証する。引継ぎ制御部１３は、検証部１２による検証結果が正常であることを示す場合に、エッジ側更新前ソフトウェア１７２を実行する仮想サーバ２１０の状態を仮想サーバ３１０−４が引き継ぎ、仮想サーバ３１０−４から出力された更新前出力情報をクラウド側システム３０が処理できるように制御する。第２仮想サーバ制御部１４は、引継ぎ制御部１３による処理が行われたのち、仮想サーバ２１０がエッジ側更新後ソフトウェア１７３を実行することによって更新後出力情報を出力するように制御する。切り替え部１５は、クラウド側システム３０が処理対象とする処理対象情報を、仮想サーバ２１０から出力された更新前出力情報から、仮想サーバ３１０−３から出力された更新後出力情報に切り替える。
【００４８】
すなわち、本実施形態に係るソフトウェア更新制御装置１０は、大量の情報処理資源を備えるクラウド側システム３０を利用して、更新後のソフトウェアを検証する。そして、ソフトウェア更新制御装置１０は、更新前のソフトウェアの実行環境をクラウド側システム３０に移動することと、エッジ側システム２０が更新後のソフトウェアの実行を開始することとを、各システムが動作を停止することなく行うように制御する。これにより、本実施形態に係るソフトウェア更新制御装置１０は、ＩｏＴシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことができる。
【００４９】
また、本実施形態に係るソフトウェア更新制御装置１０は、ソフトウェアの更新が行われた後も、少なくとも所定の期間は、更新前のソフトウェアの実行環境をクラウド側システム３０に残し、更新前のソフトウェアの実行環境によって得られた結果がメッセージバッファ３３に記憶されるように制御する。ソフトウェア更新制御装置１０は、更新後のソフトウェアによる処理において異常が発生した場合、クラウド側システム３０が、処理対象情報として、メッセージバッファ３３に記憶された情報を使用するように制御することによって、システムをソフトウェアが更新される前の状態に戻すことができる。したがって、本実施形態に係るソフトウェア更新制御装置１０は、システムの可用性を向上することができる。
【００５０】
尚、本実施形態に係るソフトウェア更新制御装置１０が制御を行う対象は、仮想サーバに限定されない。ソフトウェア更新制御装置１０は、例えば、物理サーバ同士でマイグレーションを行う技術を利用することによって、エッジ側システム２０及びクラウド側システム３０に含まれる物理サーバに対して、上述した処理を行ってもよい。
【００５１】
また、本実施形態に係るソフトウェア更新制御装置１０が制御を行う対象は、デバイス群によって生成された観測データを処理するエッジ側システムとクラウド側システムとから構成されるＩｏＴシステムに限定されない。ソフトウェア更新制御装置１０は、例えば、特定のアプリケーションを分散処理する複数の小規模サーバと、それらの小規模サーバを制御する大規模サーバを含むシステムにおけるソフトウェアを更新する際に、上述した処理を行ってもよい。
【００５２】
＜第２の実施形態＞
次に、本願発明の第２の実施形態に係るソフトウェア更新制御システム１について説明する。本実施形態に係るソフトウェア更新制御システム１の構成は、図１に示す第１の実施形態に係るソフトウェア更新制御システム１と同様である。本実施形態に係るソフトウェア更新制御装置１０は、その動作フローが第１の実施形態とは異なる構成を有する。本実施形態に係るソフトウェア更新制御装置１０の動作（処理）について、図６Ａ及び６Ｂのフローチャートを参照して詳細に説明する。
【００５３】
ソフトウェア更新制御装置１０は、図５Ａに示すステップＳ１０１乃至Ｓ１０３の処理を実行する（ステップＳ２０１）。検証部１２による検証結果が異常である場合（ステップＳ２０２でＮｏ）、ソフトウェア更新制御装置１０は、図５Ａに示すステップＳ１１４及びＳ１１５の処理を実行し（ステップＳ２１１）、全体の処理は終了する。
【００５４】
検証部１２による検証結果が正常である場合（ステップＳ２０２でＹｅｓ）、引継ぎ制御部１３は、仮想サーバ２１０を、仮想サーバ３１０−４としてライブマイグレーションする（ステップＳ２０３）。第２仮想サーバ制御部１４は、仮想サーバ３１０−３を、新たな仮想サーバ２１０としてライブマイグレーションする（ステップＳ２０４）。検証部１２は、仮想サーバ２１０及び３１０−２が行う動作を検証する（ステップＳ２０５）。
【００５５】
検証部１２による検証結果が異常である場合（ステップＳ２０６でＮｏ）、処理はステップＳ２１１へ進む。検証部１２による検証結果が正常である場合（ステップＳ２０６でＹｅｓ）、切り替え部１５は、仮想サーバ３１０−１からの出力をメッセージバッファ３３に切り替え、仮想サーバ３１０−２からの出力をアプリケーションハブ３２に接続する（ステップＳ２０７）。検証部１２は、仮想サーバ２１０及び３１０−２が行う動作を検証する（ステップＳ２０８）。
【００５６】
検証部１２による検証結果が異常である場合（ステップＳ２０９でＮｏ）、処理はステップＳ２１１へ進む。検証部１２による検証結果が正常である場合（ステップＳ２０９でＹｅｓ）、ソフトウェア更新制御装置１０は、図５Ｂに示すステップＳ１１２及びＳ１１３の処理を実行し（ステップＳ２１０）、全体の処理は終了する。
【００５７】
本実施形態に係るソフトウェア更新制御装置１０は、ＩｏＴシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことができる。その理由は、第１の実施形態について説明した通りである。
【００５８】
また、本実施形態に係るソフトウェア更新制御装置１０は、第１の実施形態とは異なり、仮想サーバ２１０から仮想サーバ３１０−４へのマイグレーション、及び、仮想サーバ３１０−３から仮想サーバ２１０へのマイグレーションを行ったのちに、クラウド側システム３０の処理対象情報を、更新前出力情報から更新後出力情報に切り替える。したがって、本実施形態に係るソフトウェア更新制御装置１０は、更新後のソフトウェアを実際の動作環境により近い状態において検証したのちに、更新後のソフトウェアに切り替えるので、システムの可用性をさらに向上することができる。
【００５９】
＜第３の実施形態＞
次に、本願発明の第３の実施形態に係るソフトウェア更新制御システム１について説明する。本実施形態に係るソフトウェア更新制御システム１の構成は、図１に示す第１の実施形態に係るソフトウェア更新制御システム１と同様である。本実施形態に係るソフトウェア更新制御装置１０は、エッジ側システム２０及びクラウド側システム３０に対して、第１及び第２の実施形態とは異なる制御を行う。
【００６０】
図７は、本実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新される前の、各システムの状態を例示する図である。図７に例示する通り、本実施形態に係るエッジ側仮想サーバ基盤２１には、図２に示す第１の実施形態のときとは異なり、仮想サーバ２１０に加えて仮想サーバ２１１（第４の情報処理資源）が存在する。仮想サーバ２１１は、基準よりも優先度が低い低優先度処理２１２を行っている。
【００６１】
本実施形態に係るソフトウェア更新制御装置１０は、図７に示す状態において、エッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアを、エッジ側更新後ソフトウェア１７３及びクラウド側更新後ソフトウェア１７１に更新する処理を開始する。
【００６２】
図８は、本実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新される途中の、各システムの状態を例示する図である。引継ぎ制御部１３は、図７及び図８に示す通り、エッジ側仮想サーバ基盤２１及びクラウド側仮想サーバ基盤３１を制御することによって、仮想サーバ２１１を、クラウド側仮想サーバ基盤３１に、仮想サーバ３１０−４としてライブマイグレーションを行う。
【００６３】
図９は、本実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新された後の、各システムの状態を例示する図である。第２仮想サーバ制御部１４は、引継ぎ制御部１３による処理が行われたのち、図８及び図９に示す通り、エッジ側仮想サーバ基盤２１及びクラウド側仮想サーバ基盤３１を制御することによって、仮想サーバ３１０−３を、エッジ側仮想サーバ基盤２１に、新たな仮想サーバ２１１としてライブマイグレーションを行う。このライブマイグレーションによって、仮想サーバ２１１から出力された処理対象データは、仮想サーバ３１０−２に入力されるので、ライブマイグレーションが行われた後も、更新後のソフトウェアによって観測データを処理する環境は、エッジ側仮想サーバ基盤２１及びクラウド側仮想サーバ基盤３１の中に維持される。
【００６４】
図９に示す仮想サーバ２１０及び３１０−１（すなわち、更新前のソフトウェアを実行する環境）は、ソフトウェアの更新処理が完了したのち、例えば検証部１２による検証結果が所定の時間に亘って正常であることをもって、第１仮想サーバ制御部１１及び第２仮想サーバ制御部１４によって動作を停止する。引継ぎ制御部１３は、仮想サーバ２１０によるエッジ側更新前ソフトウェア１７２を実行する動作が停止したのち、低優先度処理２１２を実行する仮想サーバ３１０−４を、エッジ側仮想サーバ基盤２１に、新たな仮想サーバ２１０としてライブマイグレーションを行う。これにより、低優先度処理２１２は、ソフトウェアの更新処理が行われる前と同様に、エッジ側システム２０により実行される状態に戻る。
【００６５】
次に図１０Ａ及び１０Ｂのフローチャートを参照して、本実施形態に係るソフトウェア更新制御装置１０の動作（処理）について詳細に説明する。
【００６６】
ソフトウェア更新制御装置１０は、図５Ａに示すＳ１０１乃至Ｓ１０３の処理を実行する（ステップＳ３０１）。検証部１２による検証結果が異常である場合（ステップＳ３０２でＮｏ）、ソフトウェア更新制御装置１０は、図５Ａに示すステップＳ１１４及びＳ１１５の処理を実行し（ステップＳ３１３）、全体の処理は終了する。
【００６７】
検証部１２による検証結果が正常である場合（ステップＳ３０２でＹｅｓ）、引継ぎ制御部１３は、仮想サーバ２１１を、仮想サーバ３１０−４としてライブマイグレーションする（ステップＳ３０３）。第２仮想サーバ制御部１４は、仮想サーバ３１０−３を、仮想サーバ２１１としてライブマイグレーションする（ステップＳ３０４）。検証部１２は、仮想サーバ２１１及び３１０−２が行う動作を検証する（ステップＳ３０５）。
【００６８】
検証部１２による検証結果が異常である場合（ステップＳ３０６でＮｏ）、処理はステップＳ３１３へ進む。検証部１２による検証結果が正常である場合（ステップＳ３０６でＹｅｓ）、切り替え部１５は、仮想サーバ３１０−１からの出力をメッセージバッファ３３に切り替え、仮想サーバ３１０−２からの出力をアプリケーションハブ３２に接続する（ステップＳ３０７）。検証部１２は、仮想サーバ２１１及び３１０−２が行う動作を検証する（ステップＳ３０７）。
【００６９】
検証部１２による検証結果が異常である場合（ステップＳ３０９でＮｏ）、処理はステップＳ３１３へ進む。検証部１２による検証結果が正常である場合（ステップＳ３０９でＹｅｓ）、エッジハブ制御部１６は、エッジハブ２２から仮想サーバ２１０に対する観測データの入力を停止する（ステップＳ３１１）。引継ぎ制御部１３は、仮想サーバ３１０−４を、仮想サーバ２１０としてライブマイグレーションし（ステップＳ３１２）、全体の処理は終了する。
【００７０】
本実施形態に係るソフトウェア更新制御装置１０は、ＩｏＴシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことができる。その理由は、第１の実施形態について説明した通りである。
【００７１】
また、本実施形態に係るソフトウェア更新制御装置１０は、エッジ側更新前ソフトウェア１７２を実行する仮想サーバ２１０を、クラウド側システム３０にマイグレーションしないで、ソフトウェアの更新処理を行うように制御する。この処理は、エッジ側システム２０において優先度が低い処理を行う仮想サーバ２１１を、一時的にクラウド側システム３０にマイグレーションした結果として、エッジ側システム２０の負荷が低減することにより実現できる。仮想サーバ２１１は優先度が低い処理を行っているので、仮想サーバ２１１をクラウド側システム３０にマイグレーションすることによる影響は小さい。ソフトウェア更新制御装置１０は、上述した制御を行うことによって、ソフトウェアの更新処理にともなう、更新前のソフトウェアを実行する環境への影響を小さくすることができる。
【００７２】
また、本実施形態に係るソフトウェア更新制御装置１０は、ソフトウェアの更新処理を行った後も、クラウド側システム３０ではなくエッジ側システム２０において、仮想サーバ２１０がエッジ側更新前ソフトウェア１７２を実行するように制御する。したがって、ソフトウェア更新制御装置１０は、更新後ソフトウェアによる処理において異常が発生した場合に、より安全かつ迅速に、システムをソフトウェアが更新される前の状態に戻すことができる。
【００７３】
＜第４の実施形態＞
図１１は、本願発明の第４の実施形態に係るソフトウェア更新制御システム２の構成を概念的に示すブロック図である。ソフトウェア更新制御システム２は、エッジ側システム２０に加えてエッジ側システム２０Ａ（第３の情報処理システム）を有することを除いては、図１に示す第１の実施形態に係るソフトウェア更新制御システム１と同様の構成を有する。本実施形態に係るエッジ側システム２０Ａは、エッジ側システム２０と同様に、エッジ側仮想サーバ基盤２１Ａ、及び、エッジハブ２２Ａを備える。エッジ側システム２０Ａの機能は、エッジ側システム２０と同様である。
【００７４】
本実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新される前の、これらシステムの状態は、第１の実施形態と同様に図２に示す通りである。
【００７５】
本実施形態に係るソフトウェア更新制御装置１０は、図２に示す状態において、エッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアを、エッジ側更新後ソフトウェア１７３及びクラウド側更新後ソフトウェア１７１に更新する処理を開始する。
【００７６】
図１２は、本実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが更新される途中の、各システムの状態を例示する図である。
【００７７】
図１１に示す第１仮想サーバ制御部１１は、図１２に示す通り、エッジ側仮想サーバ基盤２１Ａを制御することによって、仮想サーバ２１０Ａ（第５の情報処理資源）を新たに立ち上げる。第１仮想サーバ制御部１１は、ソフトウェア記憶部１７からエッジ側更新後ソフトウェア１７３を読み出して、読み出したエッジ側更新後ソフトウェア１７３を仮想サーバ２１０Ａが実行するように制御する。第１仮想サーバ制御部１１がクラウド側仮想サーバ基盤３１を制御することによって仮想サーバ３１０−２を立ち上げ、仮想サーバ３１０−２がクラウド側更新後ソフトウェア１７１を実行するように制御することは、第１の実施形態と同様である。
【００７８】
すなわち、本実施形態に係る第１仮想サーバ制御部１１は、第１の実施形態において行った、クラウド側システム３０に仮想サーバ３１０−３を立ち上げる代わりに、エッジ側システム２０Ａに仮想サーバ２１０Ａを立ち上げる。本実施形態に係るソフトウェア更新制御装置１０は、第１の実施形態において仮想サーバ３１０−３に対して行った処理と同様の処理を、仮想サーバ２１０Ａに対して行う。本実施形態に係るエッジ側システム２０及びクラウド側システム３０によって実行されるソフトウェアが、ソフトウェア更新制御装置１０による制御によって更新された後のこれらシステムの状態は、第１の実施形態と同様に、図４に示す通りである。
【００７９】
次に図１３Ａ及び１３Ｂのフローチャートを参照して、本実施形態に係るソフトウェア更新制御装置１０の動作（処理）について詳細に説明する。
【００８０】
第１仮想サーバ制御部１１は、仮想サーバ３１０−２及び２１０Ａを起動し、順に、クラウド側更新後ソフトウェア１７１及びエッジ側更新後ソフトウェア１７３を実行させる（ステップＳ４０１）。エッジハブ制御部１６は、エッジハブ２２に、デバイス群４０から受信した観測データを、仮想サーバ２１０Ａに入力させる（ステップＳ４０２）。検証部１２は、仮想サーバ２１０Ａ及び３１０−２が行う試行動作を検証する（ステップＳ４０３）。
【００８１】
検証部１２による検証結果が異常である場合（ステップＳ４０４でＮｏ）、ソフトウェア更新制御装置１０は、図５Ａに示すステップＳ１１４及びＳ１１５の処理を実行し（ステップＳ４１３）、全体の処理は終了する。
【００８２】
検証部１２による検証結果が正常である場合（ステップＳ４０４でＹｅｓ）、切り替え部１５は、仮想サーバ３１０−１からの出力をメッセージバッファ３３に切り替え、仮想サーバ３１０−２からの出力をアプリケーションハブ３２に接続する（ステップＳ４０５）。検証部１２は、仮想サーバ２１０Ａ及び３１０−２が行う動作を検証する（ステップＳ４０６）。
【００８３】
検証部１２による検証結果が異常である場合（ステップＳ４０７でＮｏ）、処理はステップＳ４１３へ進む。検証部１２による検証結果が正常である場合（ステップＳ４０７でＹｅｓ）、引継ぎ制御部１３は、仮想サーバ２１０を、仮想サーバ３１０−４としてライブマイグレーションする（ステップＳ４０８）。第２仮想サーバ制御部１４は、仮想サーバ２１０Ａを、仮想サーバ２１０としてライブマイグレーションする（ステップＳ４０９）。検証部１２は、仮想サーバ２１０及び３１０−２が行う動作を検証する（ステップＳ４１０）。
【００８４】
検証部１２による検証結果が異常である場合（ステップＳ４１１でＮｏ）、処理はステップＳ４１３へ進む。検証部１２による検証結果が正常である場合（ステップＳ４１１でＹｅｓ）、ソフトウェア更新制御装置１０は、図５Ｂに示すステップＳ１１２及びＳ１１３の処理を実行し（ステップＳ４１２）、全体の処理は終了する。
【００８５】
本実施形態に係るソフトウェア更新制御装置１０は、ＩｏＴシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことができる。その理由は、第１の実施形態について説明した通りである。
【００８６】
また、本実施形態に係るソフトウェア更新制御装置１０は、エッジ側更新後ソフトウェア１７３を使用して試行動作を行う仮想サーバを、クラウド側システム３０ではなく、別のエッジ側システム２０Ａに構築する。これにより、ソフトウェア更新制御装置１０は、当該試行動作を行う仮想サーバをクラウド側システム３０に構築することに伴う、コストの増加あるいは性能問題等を回避して、ソフトウェアの更新処理を行うことができる。
【００８７】
＜第５の実施形態＞
図１４は、本願発明の第５の実施形態に係るソフトウェア更新制御システム３の構成を概念的に示すブロック図である。ソフトウェア更新制御システム３は、大別して、ソフトウェア更新制御装置５０、ｎ個（ｎは２以上の任意の自然数）のエッジ側システム２０−１乃至２０−ｎ、クラウド側システム３０、及び、デバイス群４０−１乃至４０−ｎを有する。
【００８８】
エッジ側システム２０−１乃至２０−ｎの個々の構成は、図１に示す第１の実施形態に係るエッジ側システム２０と同様である。すなわち、エッジ側システム２０−１乃至２０−ｎは、エッジ側仮想サーバ基盤２１−１乃至２１−ｎ、及び、エッジハブ２２−１乃至２２−ｎを備える。エッジ側システム２０−１乃至２０−ｎは、デバイス群４０−１乃至４０−ｎと通信可能に接続されており、デバイス群４０−１乃至４０−ｎから出力された観測データを受信する。エッジ側システム２０−１乃至２０−ｎは、受信した観測データに対して、第１の実施形態に係るエッジ側システム２０と同様な処理を行う。
【００８９】
本実施形態に係るクラウド側システム３０は、エッジ側システム２０−１乃至２０−ｎと通信可能に接続され、エッジ側システム２０−１乃至２０−ｎから出力された処置対象データに対して、第１の実施形態と同様な処理を行う。
【００９０】
ソフトウェア更新制御装置５０は、エッジ側システム２０−１乃至２０−ｎ、及び、クラウド側システム３０における仮想サーバが実行するソフトウェアに対する更新処理を、第１の実施形態に係るソフトウェア更新制御装置１０と同様に制御する装置である。
【００９１】
ソフトウェア更新制御装置５０は、図１４に示す通り、第１の実施形態に係るソフトウェア更新制御装置１０の構成に追加して、更新指示部５８を備える。更新指示部５８は、更新スケジュール情報５８０を、内部の電子メモリ等に記憶している。更新スケジュール情報５８０は、エッジ側システム２０−１乃至２０−ｎの個々について、ソフトウェアを更新するスケジュール（実施日時等）を示す情報である。
【００９２】
更新指示部５８は、更新スケジュール情報５８０に基づいて、エッジ側システム２０−１乃至２０−ｎのうちの特定のエッジ側システムについて、ソフトウェアを更新する日時になったことを検知する。更新指示部５８は、あるいは、特定のエッジシステムについてソフトウェアの更新を行うことを指示する、システム管理者等によって入力された情報を受け付ける。
【００９３】
更新指示部５８は、このとき、その特定のエッジ側システムについて、ソフトウェアの更新処理を行うことを指示する指示情報を出力する。ソフトウェア更新制御装置５０は、当該指示情報が出力されたことを契機として、ソフトウェアの更新処理を開始する。更新指示部５８は、複数のエッジ側システムについてソフトウェアの更新処理を行う場合、同じタイミングに複数の更新処理を開始するように指示してもよい。更新指示部５８は、あるいは、クラウド側システム３０に関するメモリの空き領域の状態、あるいは、通信ネットワークの帯域等を示す情報に基づいて、順次、更新処理を開始するように指示してもよい。
【００９４】
本実施形態に係るソフトウェア記憶部１７は、図１４に示す通り、エッジ側システム２０−１乃至２０−ｎについて、エッジ側更新前ソフトウェア１７２−１乃至１７２−ｎ、及び、エッジ側更新後ソフトウェア１７３−１乃至１７３−ｎを記憶している。
【００９５】
図１５は、本実施形態に係るエッジ側システム２０−１乃至２０−ｎ及びクラウド側システム３０によって実行されるソフトウェアが更新される途中の、各システムの状態を例示する図である。図１５に示す通り、ソフトウェア更新制御装置５０は、ソフトウェアを更新する過程において、エッジ側更新後ソフトウェアを使用して試行動作を行う複数の仮想サーバ３１０−３乃至３１０−ｍ（ｍは３以上の任意の整数）を、クラウド側システム３０が実行するように制御する。ソフトウェア更新制御装置５０は、第１の実施形態に係るソフトウェア更新制御装置１０と同様の手順によって、複数のエッジ側システム２０−１乃至２０−ｎによって実行されるソフトウェアの更新処理を制御する。
【００９６】
本実施形態に係るソフトウェア更新制御装置５０は、ＩｏＴシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことができる。その理由は、第１の実施形態について説明した通りである。
【００９７】
また、本実施形態に係るソフトウェア更新制御装置５０は、複数のエッジ側システムについて、ソフトウェアを更新する場合であっても、上述した処理を行うことができる。
【００９８】
＜第６の実施形態＞
図１６は、本願発明の第６の実施形態に係るソフトウェア更新制御装置６０の構成を概念的に示すブロック図である。
【００９９】
本実施形態に係るソフトウェア更新制御装置６０は、第１の実行制御部６１、検証部６２、引継ぎ制御部６３、第２の実行制御部６４、及び、切り替え部６５を備えている。
【０１００】
図１６に示す第２の情報処理システム８０は、第１の情報処理システム７０に含まれる第１の情報処理資源７１が更新前ソフトウェア７１０を実行することによって出力した更新前出力情報を処理する。第１の実行制御部６１は、この場合において、更新後ソフトウェア７１１を、第２の情報処理システム８０に含まれる第２の情報処理資源８１が実行するように制御する。
【０１０１】
検証部６２は、第２の情報処理資源８１が更新後ソフトウェア７１１を実行することによって出力した情報を、第２の情報処理システム８０が処理する試行動作を検証する。
【０１０２】
引継ぎ制御部６３は、検証部６２による当該試行動作に対する検証結果が正常であることを示す場合に、更新前出力情報を出力する状態を、第２の情報処理システム８０に含まれる第３の情報処理資源８２が第１の情報処理資源７１から引き継ぐように制御する。そして、引継ぎ制御部６３は、第３の情報処理資源８２から出力された更新前出力情報を、第２の情報処理システム８０が処理できるように制御する。
【０１０３】
第２の実行制御部６４は、引継ぎ制御部６３による処理が行われたのち、第１の情報処理資源７１が、更新後ソフトウェア７１１を実行することによって更新後出力情報を出力するように制御する。
【０１０４】
切り替え部６５は、第２の情報処理システム８０が処理対象とする処理対象情報を、第１の情報処理資源７１あるいは第３の情報処理資源８２から出力された更新前出力情報から、第１の情報処理資源７１あるいは第２の情報処理資源８１から出力された更新後出力情報に切り替える。
【０１０５】
本実施形態に係るソフトウェア更新制御装置６０は、ＩｏＴシステムにおけるエッジサーバなどの限られた情報処理資源しか備えない情報処理装置によって実行されるソフトウェアの更新処理を、当該情報処理装置を停止させることなく、確実に行うことができる。その理由は、ソフトウェア更新制御装置６０が、ソフトウェア更新後の全体の動作環境を第２の情報処理システム８０の中に構築してその動作を検証したのち、第１の情報処理システム７０におけるソフトウェア更新前の動作環境を、第２の情報処理システム８０に移動させるとともに、第１の情報処理システム７０が更新後のソフトウェアを実行するように制御するからである。
【０１０６】
＜ハードウェア構成例＞
上述した各実施形態において図１、図１１、図１４、及び、図１６に示したソフトウェア更新制御装置における各部は、専用のＨＷ（ＨａｒｄＷａｒｅ）（電子回路）によって実現することができる。また、図１、図１１、図１４、及び、図１６において、少なくとも、下記構成は、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。
・第１仮想サーバ制御部１１、
・検証部１２及び６２、
・引継ぎ制御部１３及び６３、
・第２仮想サーバ制御部１４、
・切り替え部１５及び６５、
・エッジハブ制御部１６、
・ソフトウェア記憶部１７における記憶制御機能
・更新指示部５８、
・第１の実行制御部６１、
・第２の実行制御部６４。
【０１０７】
但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図１７を参照して説明する。
【０１０８】
図１７は、本願発明の各実施形態に係るソフトウェア更新制御装置を実行可能な情報処理装置９００（コンピュータ）の構成を例示的に説明する図である。即ち、図１７は、図１、図１１、図１４、及び、図１６に示したソフトウェア更新制御装置を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【０１０９】
図１７に示した情報処理装置９００は、構成要素として下記を備えている。
・ＣＰＵ（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ）９０１、
・ＲＯＭ（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）９０２、
・ＲＡＭ（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）９０３、
・ハードディスク（記憶装置）９０４、
・外部装置との通信インタフェース９０５、
・バス９０６（通信線）、
・ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ＿Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）等の記録媒体９０７に格納されたデータを読み書き可能なリーダライタ９０８、
・入出力インタフェース９０９。
【０１１０】
即ち、上記構成要素を備える情報処理装置９００は、これらの構成がバス９０６を介して接続された一般的なコンピュータである。情報処理装置９００は、ＣＰＵ９０１を複数備える場合もあれば、マルチコアにより構成されたＣＰＵ９０１を備える場合もある。
【０１１１】
そして、上述した実施形態を例に説明した本願発明は、図１７に示した情報処理装置９００に対して、次の機能を実現可能なコンピュータプログラムを供給する。その機能とは、その実施形態の説明において参照したブロック構成図（図１、図１１、図１４、及び、図１６）における上述した構成、或いはフローチャート（図５Ａ及び５Ｂ、図６Ａ及び６Ｂ、図１０Ａ及び１０Ｂ、及び、図１３Ａ及び１３Ｂ）の機能である。本願発明は、その後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ９０１に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性のメモリ（ＲＡＭ９０３）、または、ＲＯＭ９０２やハードディスク９０４等の不揮発性の記憶デバイスに格納すれば良い。
【０１１２】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、ＣＤ−ＲＯＭ等の各種記録媒体９０７を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本願発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記録媒体９０７によって構成されると捉えることができる。
【０１１３】
以上、上述した実施形態を模範的な例として本願発明を説明した。しかしながら、本願発明は、上述した実施形態には限定されない。即ち、本願発明は、本願発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【０１１４】
この出願は、２０１６年４月１５日に出願された日本出願特願２０１６−０８１７７３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１１５】
１    ソフトウェア更新制御システム
２    ソフトウェア更新制御システム
３    ソフトウェア更新制御システム
１０    ソフトウェア更新制御装置
１１    第１仮想サーバ制御部
１２    検証部
１３    引継ぎ制御部
１４    第２仮想サーバ制御部
１５    切り替え部
１６    エッジハブ制御部
１７    ソフトウェア記憶部
１７０    クラウド側更新前ソフトウェア
１７１    クラウド側更新後ソフトウェア
１７２    エッジ側更新前ソフトウェア
１７２−１乃至１７２−ｎ    エッジ側更新前ソフトウェア
１７３    エッジ側更新後ソフトウェア
１７３−１乃至１７３−ｎ    エッジ側更新後ソフトウェア
２０    エッジ側システム
２０Ａ    エッジ側システム
２０−１乃至２０−ｎ    エッジ側システム
２１    エッジ側仮想サーバ基盤
２１Ａ    エッジ側仮想サーバ基盤
２１−１乃至２１−ｎ    エッジ側仮想サーバ基盤
２１０    仮想サーバ
２１１    仮想サーバ
２１２    低優先度処理
２２    エッジハブ
２２Ａ    エッジハブ
２２−１乃至２２−ｎ    エッジハブ
３０    クラウド側システム
３１    クラウド側仮想サーバ基盤
３１０−１乃至３１０−ｍ    仮想サーバ
３２    アプリケーションハブ
３３    メッセージバッファ
３４    アプリケーション
４０    デバイス群
４０−１乃至４０−ｎ    デバイス群
５０    ソフトウェア更新制御装置
５８    更新指示部
５８０    更新スケジュール情報
６０    ソフトウェア更新制御装置
６１    第１の実行制御部
６２    検証部
６３    引継ぎ制御部
６４    第２の実行制御部
６５    切り替え部
７０    第１の情報処理システム
７１    第１の情報処理資源
７１０    更新前ソフトウェア
７１１    更新後ソフトウェア
８０    第２の情報処理システム
８１    第２の情報処理資源
８２    第３の情報処理資源
９００    情報処理装置
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４    ハードディスク（記憶装置）
９０５    通信インタフェース
９０６    バス
９０７    記録媒体
９０８    リーダライタ
９０９    入出力インタフェース
【図１】
0006784291.tif 000002
【図２】
0006784291.tif 000003
【図３】
0006784291.tif 000004
【図４】
0006784291.tif 000005
【図５Ａ】
0006784291.tif 000006
【図５Ｂ】
0006784291.tif 000007
【図６Ａ】
0006784291.tif 000008
【図６Ｂ】
0006784291.tif 000009
【図７】
0006784291.tif 000010
【図８】
0006784291.tif 000011
【図９】
0006784291.tif 000012
【図１０Ａ】
0006784291.tif 000013
【図１０Ｂ】
0006784291.tif 000014
【図１１】
0006784291.tif 000015
【図１２】
0006784291.tif 000016
【図１３Ａ】
0006784291.tif 000017
【図１３Ｂ】
0006784291.tif 000018
【図１４】
0006784291.tif 000019
【図１５】
0006784291.tif 000020
【図１６】
0006784291.tif 000021
【図１７】
0006784291.tif 000022