JP2020149480A - Software distribution program, software distribution method, and information processing device - Google Patents
Software distribution program, software distribution method, and information processing device Download PDFInfo
- Publication number
- JP2020149480A JP2020149480A JP2019047490A JP2019047490A JP2020149480A JP 2020149480 A JP2020149480 A JP 2020149480A JP 2019047490 A JP2019047490 A JP 2019047490A JP 2019047490 A JP2019047490 A JP 2019047490A JP 2020149480 A JP2020149480 A JP 2020149480A
- Authority
- JP
- Japan
- Prior art keywords
- application
- deployment destination
- deployment
- unit
- failure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
Description
本発明は、ソフトウェア配信プログラム、ソフトウェア配信方法、および情報処理装置に関する。 The present invention relates to a software distribution program, a software distribution method, and an information processing device.
現在、ICT(Information and Communication Technology)システムの大きな潮流として、IoT(Internet of Things)が注目を浴びており、様々な分野においてIoT実現に向けた技術開発が行われ、新サービスが立ち上がってきている。IoTとは、従来はインターネットに直接接続されてこなかった機器やモノが、それ自身がインターネットに接続できるようになることである。例えば、従来から、コンピュータやモバイル端末などの人間が操作する情報通信機器はインターネットに接続されている。これらの機器に加え、IoTでは、センサや計測器機器、家電や制御機器、さらにはRFID(Radio Frequency IDentifier)などによってタグ付けされた物品までも、インターネットに接続される。 Currently, IoT (Internet of Things) is attracting attention as a major trend of ICT (Information and Communication Technology) systems, and technological development for IoT realization is being carried out in various fields, and new services are being launched. .. IoT means that devices and things that were not directly connected to the Internet in the past can be connected to the Internet by themselves. For example, conventionally, human-operated information communication devices such as computers and mobile terminals have been connected to the Internet. In addition to these devices, the IoT also connects sensors and measuring instruments, home appliances and control devices, and even articles tagged with RFID (Radio Frequency IDentifier) to the Internet.
IoTを用いたサービスを実現するシステム(IoTシステム)は、様々な機器によって構成される分散処理システムであり、それらの機器が連携動作することでIoTを用いたサービスが実現される。各機器には、その機器に実行させる処理に対応するアプリケーションソフトウェアがインストールされる。以下、アプリケーションソフトウェアを単に「アプリ」と呼ぶこともある。IoTを用いたサービスの提供用のアプリ(IoTアプリ)は、IoTシステムに含まれる機器に、その機器に割り当てられたデータ処理を実行させるためのソフトウェアである。各機器が、その機器に割り当てられたデータ処理を実行することで、複数の機器による連係動作が可能となる。 A system that realizes a service using IoT (IoT system) is a distributed processing system composed of various devices, and the service using IoT is realized by the cooperative operation of these devices. Application software corresponding to the processing to be executed by the device is installed in each device. Hereinafter, application software may be simply referred to as an "application". An application for providing a service using IoT (IoT application) is software for causing a device included in an IoT system to execute data processing assigned to the device. By executing the data processing assigned to each device, the linked operation by a plurality of devices becomes possible.
このような分散処理システムでのソフトウェア開発に有用な技術としては、例えば実行モジュールを実行するノードを動的に決定することでシステム全体として効率的な処理が可能な分散システムがある。またIoTに関する技術として、ネットワーク内のノードが、ネットワーク内の他のノードがスリーピ(スリープモードになり得ること)であることを決定する技術もある。 As a technique useful for software development in such a distributed processing system, for example, there is a distributed system capable of efficient processing as a whole system by dynamically determining a node that executes an execution module. Also, as a technique related to IoT, there is a technique in which a node in the network determines that another node in the network is a sleep mode (which can be in sleep mode).
機器が故障した場合、システムの管理者は、故障した機器で実行しているソフトウェアを代替の機器に導入し、代替の機器でソフトウェアを実行させることとなる。しかし、大規模なシステムにおいて、システム内の多数の機器の中からの代替の機器の選択や、代替の機器へのソフトウェアの導入の作業を人手で行っていたのでは、作業に時間がかかる。そのため、故障した機器で実行していたソフトウェアを用いたサービスの停止時間も長期化してしまう。特にIoTシステムのような分散処理システムでは、一部の機器の故障によりサービス全体が停止する場合があり、故障した機器で実行していたソフトウェアの代替の機器への導入を迅速に行うことは、システムの安定運用のためにも重要である。 When a device fails, the system administrator installs the software running on the failed device into an alternative device and runs the software on the alternative device. However, in a large-scale system, it takes time to manually select an alternative device from a large number of devices in the system and to install software in the alternative device. Therefore, the downtime of the service using the software that was running on the failed device is also prolonged. Especially in a distributed processing system such as an IoT system, the entire service may be stopped due to a failure of some devices, and it is not possible to quickly introduce the software that was running on the failed device to a substitute device. It is also important for stable operation of the system.
1つの側面では、本件は、故障した機器で実行されていたソフトウェアを代替の機器に容易に導入できるようにすることを目的とする。 On the one hand, the purpose of this case is to facilitate the introduction of software running on a failed device to an alternative device.
1つの案では、以下の処理をコンピュータに実行させるソフトウェア配信プログラムが提供される。
コンピュータは、複数の機器が多階層に接続されたシステム内の第1機器の下位の階層の機器として、第1機器に第2機器が接続されたことを検知する。次にコンピュータは、複数の機器間の接続関係を示す接続情報に基づいて、第1機器に接続されている、第2機器と同じ階層の第3機器を検出する。次にコンピュータは、第3機器の監視結果に基づいて、第3機器の障害の有無を判定する。そしてコンピュータは、第3機器に障害が発生している場合、複数の機器それぞれに配信済みのソフトウェアを示すソフトウェア情報に基づいて、第3機器に配信済みのソフトウェアを第2機器に配信する。
One proposal provides a software distribution program that causes a computer to perform the following processes.
The computer detects that the second device is connected to the first device as a device in a lower layer of the first device in the system in which a plurality of devices are connected in multiple layers. Next, the computer detects the third device in the same layer as the second device, which is connected to the first device, based on the connection information indicating the connection relationship between the plurality of devices. Next, the computer determines whether or not there is a failure in the third device based on the monitoring result of the third device. Then, when a failure occurs in the third device, the computer distributes the software delivered to the third device to the second device based on the software information indicating the software delivered to each of the plurality of devices.
1態様によれば、故障した機器で実行されていたソフトウェアを代替の機器に容易に導入可能となる。 According to one aspect, software running on a failed device can be easily introduced into an alternative device.
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るソフトウェア配信方法の一例を示す図である。図1には、ソフトウェア配信方法を情報処理装置10によって実施した場合の例を示している。情報処理装置10は、例えばソフトウェア配信方法の処理手順が記述されたソフトウェア配信プログラムを実行することにより、ソフトウェア配信方法を実施することができる。
Hereinafter, the present embodiment will be described with reference to the drawings. It should be noted that each embodiment can be implemented by combining a plurality of embodiments within a consistent range.
[First Embodiment]
FIG. 1 is a diagram showing an example of a software distribution method according to the first embodiment. FIG. 1 shows an example when the software distribution method is implemented by the
情報処理装置10は、ソフトウェア配信方法を実現するために、記憶部11と処理部12とを有する。記憶部11は、例えば情報処理装置10が有するメモリ、またはストレージ装置である。処理部12は、例えば情報処理装置10が有するプロセッサ、または演算回路である。
The
情報処理装置10は、複数の機器3a〜3eが多階層に接続されたシステムに、ネットワークで接続されている。複数の機器3a〜3eは、例えば情報処理装置10から配信されたソフトウェアを実行することにより、所定の機能を実現するサーバである。図1の例では、情報処理装置10が最上位の階層の機器(マスタ)であり、情報処理装置10の下位の階層に機器3aと機器3bとがある。機器3a,3bの下位の階層には、機器3aに接続された機器3cと機器3bに接続された機器3d,3eとがある。複数の機器3a〜3eそれぞれには、機器名が付与されている。例えば機器3aの機器名は「A」、機器3bの機器名は「B」、機器3cの機器名は「C」、機器3dの機器名は「D」、機器3eの機器名は「E」である。
The
情報処理装置10内の記憶部11は、接続情報1とソフトウェア情報2とを記憶する。接続情報1は、複数の機器3a〜3e間の接続関係を示す情報である。ソフトウェア情報2は、複数の機器3a〜3eそれぞれに配信済みのソフトウェアを示す情報である。
The
情報処理装置10内の処理部12は、複数の機器が多階層に接続されたシステム内の第1機器の下位の階層の機器として、第1機器に第2機器が接続されたことを検知する(ステップS1)。例えば処理部12は、第2機器から第1機器へ出力された接続要求メッセージを、第1機器から取得したとき、第2機器が接続されたと検知する。図1の例では、機器3eが新たに接続された場合を想定している。この場合、処理部12は、機器3eから機器3b宛てに送信した接続要求メッセージを、機器3bから取得する。そして処理部12は、接続要求メッセージに基づいて、機器3bの下位の階層の機器として、機器3eが機器3bに接続されたことを認識する。なお処理部12は、接続要求メッセージに基づいて、第1機器と第2機器との接続関係を接続情報1に追加してもよい。
The
次に処理部12は、接続情報1に基づいて、第1機器に接続されている、第2機器と同じ階層の第3機器を検出する(ステップS2)。例えば処理部12は、接続情報1に基づいて、機器3bの下位の階層として機器3bに接続されている機器3dを、第3機器として検出する。
Next, the
次に処理部12は、第3機器の監視結果に基づいて、第3機器の障害の有無を判定する(ステップS3)。例えば処理部12は、第1機器による第3機器の状態の監視により第1機器が第3機器の障害を検知したときに、第1機器が送出する障害発生通知メッセージを取得したか否かに基づいて、第3機器の障害の有無を判定する。図1の例では、機器3dに障害が発生している。機器3dの状態は、機器3dの上位の階層において機器3dに接続されている機器3bが監視する。機器3bは、機器3dに障害が発生したことを検知すると、機器3dにおける障害発生を示す障害発生通知メッセージを、情報処理装置10に送信する。情報処理装置10の処理部12は、受信した障害発生通知メッセージに基づいて、機器3dにおける障害発生を認識する。
Next, the
処理部12は、第3機器に障害が発生している場合、ソフトウェア情報2に基づいて、第3機器に配信済みのソフトウェアを第2機器に配信する(ステップS4)。図1の例では、ソフトウェア情報2には、第3機器である機器3dの配信済みソフトウェアとして、ソフトウェア「app2」が示されている。そこで処理部12は、ソフトウェア「app2」を、新たに接続された機器3eに送信する。機器3eは、送信されたソフトウェア「app2」を実行することで、そのソフトウェア「app2」に応じた機能を実現する。
When the third device has a failure, the
このような情報処理装置10を利用すれば、障害が発生した機器が接続されている上位の機器に代替の機器が接続されると、障害が発生した機器に配信済みのソフトウェアが、自動で代替の機器に配信される。これにより、故障した機器で実行されていたソフトウェアを代替の機器に容易に導入できる。すなわち、システムの管理者は、障害が発生した機器が接続されている上位の階層の機器に、代替の機器を接続することで、故障した機器が実行していた機能を実現するためのソフトウェアを代替の機器に実行させることができる。その結果、機器の故障により停止していたサービスを、迅速に復旧させることができる。
By using such an
しかも、情報処理装置10は、機器間の階層的な接続関係を考慮して、故障した機器の代替の機器を特定している。そのため代替の機器を適切に判断することができる。すなわち複数の機器を含むシステムでは、一連の処理を分散処理させるために、互いに連係するソフトウェアが異なる機器に配布される場合がある。この場合、機器間のネットワークの位置関係が機器間の通信速度に影響をおよぼす。そのため情報処理装置10は、機器間の接続関係を考慮した適切な機器に、個々の処理を実行するソフトウェアが配布される。このようなソフトウェアの配布が行われているときに一部の機器に障害が発生すると、障害が発生した機器の代替機器は、ネットワーク上での位置が、障害が発生した機器と同等となるように、システムの管理者によってネットワークに接続される。情報処理装置10は、障害が発生した機器とネットワーク上の位置が同等となる機器を、障害が発生した機器の代替の機器と判断して、ソフトウェアを自動配信する。すなわち情報処理装置10は、代替の機器を適切に判断して、ソフトウェアの自動配信を行っている。
Moreover, the
なお機器3a〜3eの多階層の接続関係は、例えばツリー型のネットワークトポロジで表すことができる。ツリー型のネットワークトポロジでは、マスタまでの距離により、各機器の属する階層が表される。各機器のマスタまでの距離は、機器とマスタとの間に存在する他の機器の数である。マスタに近い機器ほど上位層となる。 The multi-layered connection relationship of the devices 3a to 3e can be represented by, for example, a tree-type network topology. In a tree-type network topology, the hierarchy to which each device belongs is represented by the distance to the master. The distance to the master of each device is the number of other devices that exist between the device and the master. The closer the device is to the master, the higher the layer.
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、複数の機器で構成される分散環境上で動作するIoT向けアプリを実行するサーバが故障した場合に、故障したサーバで実行しているアプリを代替サーバに自動で配備(デプロイ)できるようにしたものである。なおIoTアプリを配備するとは、IoTアプリを機器に送信し、IoTアプリを機器にインストールし、機器にIoTアプリの実行を開始させることである。
[Second Embodiment]
Next, the second embodiment will be described. In the second embodiment, when a server that executes an IoT application that operates in a distributed environment composed of a plurality of devices fails, the application that is executed on the failed server is automatically deployed to an alternative server. It is made possible to (deploy). Deploying the IoT application means transmitting the IoT application to the device, installing the IoT application on the device, and causing the device to start executing the IoT application.
例えばIoT向けアプリ開発者がIoTアプリを開発する際に、個別の機器ごとにアプリ開発や配備を行うのは、非常に手間がかかる作業となる。そこで第2の実施の形態では、開発者がアプリ開発用サーバを用いて分散機器全体に渡るアプリを定義した後、アプリ開発用サーバは、個別機器間で一意な経路を持つような通信処理部を備えた、各機器に対応したIoTアプリを自動生成し、配備する。これにより機器毎に対応するアプリを開発する作業を削減することを可能としている。 For example, when an IoT application developer develops an IoT application, it is a very time-consuming task to develop and deploy the application for each individual device. Therefore, in the second embodiment, after the developer defines the application over the entire distributed device using the application development server, the application development server is a communication processing unit having a unique route between the individual devices. The IoT application corresponding to each device is automatically generated and deployed. This makes it possible to reduce the work of developing apps that correspond to each device.
例えばアプリ開発サーバは生成アプリを配備する機器を事前に指定することで、定義した全体アプリから各配備先となる機器ごとの分配アプリを生成する。機器が故障した状況で代わりの機器を接続した場合、アプリ開発サーバは、接続した機器のみに適切な分配アプリ(故障した機器に配備していたアプリ)を配備する。 For example, the application development server generates a distribution application for each device to be deployed from the defined overall application by specifying the device to deploy the generation application in advance. When a substitute device is connected in a situation where the device has failed, the application development server deploys an appropriate distribution application (the application that was deployed to the failed device) only to the connected device.
なお、機器の入れ替え、追加を行う際に、再度全体アプリに対する変換を行い、該当アプリの配備先の機器すべてに対して分配アプリを配備していたのでは、既に動いている機器のアプリも入れ替えることになり、運用中の対応が困難となる。また全体アプリから生成されたすべての分配アプリを再配備すると、その間、サービスを停止することとなり、利用者の利便性の低下を招く。 In addition, when replacing or adding devices, conversion to the entire application is performed again, and if the distribution application is deployed to all the devices to which the corresponding application is deployed, the application of the device that is already running is also replaced. Therefore, it becomes difficult to respond during operation. In addition, if all the distribution apps generated from the entire app are redeployed, the service will be stopped during that time, which will reduce the convenience of the user.
そこで、第2の実施の形態では、アプリ開発サーバは、分配アプリを実行しているサーバが故障した場合、そのサーバで実行している分配アプリを自動で他の代替サーバに配備する。これにより、サーバが故障しても、故障によるサービスへの悪影響を最小限に抑えることができる。 Therefore, in the second embodiment, when the server executing the distribution application fails, the application development server automatically deploys the distribution application executed by the server to another alternative server. As a result, even if the server fails, the adverse effect on the service due to the failure can be minimized.
図2は、IoTシステムの構成の一例を示す図である。IoTシステムは、様々な機器を用いて構築される。例えばIoTシステムには、センサ31,32,・・・、およびセンサ31,32,・・・と接続してセンサデータの送受信を行うセンサノード41,42,・・・が含まれる。また、IoTシステムには、センサノードとクラウドコンピューティングシステムとの間でデータを中継するGW(ゲートウェイ)ノード51が含まれる。GWノード51は、例えばネットワーク20を介してクラウドコンピューティングシステムに接続される。
FIG. 2 is a diagram showing an example of the configuration of the IoT system. The IoT system is constructed using various devices. For example, the IoT system includes
クラウドコンピューティングシステムは、複数のサーバ52,53,・・・を含んでいる。サーバ52,53,・・・には、Webサーバ、アプリケーションサーバ、データベースサーバなどの、各種サーバが含まれる。
The cloud computing system includes a plurality of
さらにネットワーク20には、複数の端末装置61,62,・・・が接続されている。端末装置61,62,・・・は、例えばパーソナルコンピュータ、またはモバイル端末装置である。
Further, a plurality of
ネットワーク20には、さらにアプリ開発サーバ100が接続されている。アプリ開発サーバ100は、IoTシステムに含まれる複数の機器それぞれに実行させる分配アプリを作成し、分配アプリを各機器に配備する。以下、分配アプリの配備先となり得る機器を、配備先機器と呼ぶ。図2の例では、センサノード41,42,・・・、GWノード51、サーバ52,53,・・・、端末装置61,62,・・・それぞれが、配備先機器である。
An
例えばアプリ開発サーバ100は、分散機器環境上で動作するIoTアプリの生成および配備を、フローベースのアプリケーション開発環境を用いて実施する。IoTアプリには、例えばアプリレイヤ上のデータ処理、およびサービス提供処理を、配備先の機器に実行させるための命令が記述されている。フローベースのアプリケーション開発環境により生成されるIoTアプリは、アプリフローで表される。アプリフローでは、機能に対応するノードとノード間を接続する線により、IoTシステムに処理を実行させるための機能と、処理の手順とが表される。ノードは、機能ブロックに対して、その機能ブロックに対応する機能に実行させる処理の定義情報(パラメータなど)を付加したものである。
For example, the
アプリの開発者がアプリフローを作成すると、アプリ開発サーバ100が、アプリフローに示される機能と処理の手順とを実現するプログラム(全体アプリフローデータ)を自動生成する。さらにアプリ開発サーバ100は、機能ごとの分散処理を実現する場合、全体アプリフローデータに基づいて、配備先機器ごとに、該当配備先機器に実施させる機能と処理の手順とを実現するプログラム(分配アプリフローデータ)を生成する。その際、アプリ開発サーバ100は、分配アプリフローデータに基づく機能(分配アプリ)間での通信機能を、分配アプリに含める。
When the developer of the application creates the application flow, the
例えばアプリ開発サーバ100は、通信に高いセキュリティが求められる場合には、高いセキュリティ機能を備えた通信プロトコルによる通信機能を、分配アプリに含める。高いセキュリティ機能を備えた通信プロトコルとしては、例えばHTTPS(Hypertext Transfer Protocol Secure)のような認証や暗号化技術を用いたHTTP(Hypertext Transfer Protocol)がある。またアプリ開発サーバ100は、高い処理効率が求められる場合には、効率的な通信が可能な通信プロトコルによる通信機能を、分配アプリに含める。効率的な通信が可能な通信プロトコルとしては、例えばMQTT(Message Queue Telemetry Transport)がある。MQTTは、HTTPに比べてヘッダサイズが非常に小さく、通信量や送受信する機器の負荷を低く抑えることができる。アプリ開発サーバ100は、分配アプリフローデータを配備先機器に配備することで、IoTアプリを複数の配備先機器により分散処理させることができる。
For example, when high security is required for communication, the
システム内のアプリ開発サーバ100と配備先機器との接続関係は、例えば、アプリ開発サーバ100をルートとする木構造のネットワークトポロジとなっている。
図3は、ネットワークトポロジの一例を示す図である。ネットワークトポロジ70において、アプリ開発サーバ100がマスタ71となる。図3の例では、マスタ71には配備先機器72〜74が接続されている。配備先機器72には、さらに配備先機器75が接続されている。配備先機器73には、さらに配備先機器76,77が接続されている。配備先機器75には、さらに配備先機器78が接続されている。配備先機器72の機器名は「A」、配備先機器73の機器名は「B」、配備先機器74の機器名は「C」、配備先機器75の機器名は「D」、配備先機器76の機器名は「E」、配備先機器77の機器名は「F」、配備先機器78の機器名は「G」である。
The connection relationship between the
FIG. 3 is a diagram showing an example of a network topology. In the network topology 70, the
以下の説明では、ネットワークトポロジ70においてマスタ71に近い方を上流、マスタ71から遠い方を下流と呼ぶ。ある配備先機器に着目したとき、着目した配備先機器の上流側に隣接する他の配備先機器を、着目した配備先機器の上流機器と呼ぶ。また着目した配備先機器の下流側に隣接する他の配備先機器を、着目した配備先機器の下流機器と呼ぶ。例えば配備先機器75の上流機器は、配備先機器72である。また配備先機器75の下流機器は、配備先機器78である。
In the following description, in the network topology 70, the one closer to the
なお図3に示したネットワークトポロジ70は、ツリー型のトポロジである。ネットワークトポロジ70で接続されている機器の間には、スイッチなどの通信機器が介在している場合もある。なおネットワークトポロジ70は、例えば機器間の物理的な接続関係を示す物理トポロジである。またネットワークトポロジ70は、アプリ開発サーバ100との間の通信経路を定義した理論上の装置間の接続関係を示す論理トポロジであってもよい。
The network topology 70 shown in FIG. 3 is a tree-type topology. Communication devices such as switches may intervene between the devices connected by the network topology 70. The network topology 70 is, for example, a physical topology that shows a physical connection relationship between devices. Further, the network topology 70 may be a logical topology showing a connection relationship between theoretical devices that defines a communication path with the
配備先機器72〜78となるGWノード51やサーバ52,53,・・・は、ネットワークトポロジ70における上流機器および下流機器と通信することで、システム上での自己の存在をマスタ71として機能するアプリ開発サーバ100に認識させる。
The
なお、センサノード41,42,・・・、GWノード51、サーバ52,53,・・・、端末装置61,62,・・・、およびアプリ開発サーバ100は、例えばコンピュータによって実現される。
The
図4は、アプリ開発サーバのハードウェアの一構成例を示す図である。アプリ開発サーバ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
FIG. 4 is a diagram showing a configuration example of the hardware of the application development server. The entire device of the
メモリ102は、アプリ開発サーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションソフトウェアの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
The
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
Peripheral devices connected to the bus 109 include a
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションソフトウェア、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
The
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
A monitor 21 is connected to the
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
A keyboard 22 and a mouse 23 are connected to the
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
The
機器接続インタフェース107は、アプリ開発サーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
The
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
The
アプリ開発サーバ100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。また、センサノード41,42,・・・、GWノード51、サーバ52,53,・・・、および端末装置61,62,・・・も、アプリ開発サーバ100と同様のハードウェアにより実現することができる。さらに、第1の実施の形態に示した情報処理装置10も、図4に示したアプリ開発サーバ100と同様のハードウェアにより実現することができる。
The
アプリ開発サーバ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。アプリ開発サーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、アプリ開発サーバ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またアプリ開発サーバ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
The
次に、アプリ開発サーバ100の機能について説明する。
図5は、アプリ開発サーバの機能の一例を示すブロック図である。アプリ開発サーバ100は、デバイス情報記憶部110、全体アプリフローデータ記憶部120、配備済みアプリ記憶部130、機器接続情報記憶部140、配備先機器状態記憶部150、配備指示部161、全体アプリフロー編集部162、分配アプリ生成部163、分配アプリ配備部164、機器経路情報登録部171、機器接続検知部172、障害状態判定部173、配備アプリ判定部174、および配備済みアプリ再配備部175を有する。
Next, the function of the
FIG. 5 is a block diagram showing an example of the function of the application development server. The
デバイス情報記憶部110は、IoTシステムに含まれる配備先機器についての情報を記憶する。例えばデバイス情報記憶部110として、メモリ102またはストレージ装置103の記憶領域の一部が使用される。
The device
全体アプリフローデータ記憶部120は、IoTシステムに実行させる処理を、単一の機器に実行させた場合の処理手順を示すデータ(全体アプリフローデータ)を記憶する。例えば全体アプリフローデータ記憶部120として、メモリ102またはストレージ装置103の記憶領域の一部が使用される。
The overall application flow
配備済みアプリ記憶部130は、全体アプリフローデータに基づいて生成され、いずれかの機器に配備された分配アプリフローデータを記憶する。例えば配備済みアプリ記憶部130として、メモリ102またはストレージ装置103の記憶領域の一部が使用される。
The deployed
機器接続情報記憶部140は、ネットワークトポロジ70における機器の接続情報を記憶する。例えば機器接続情報記憶部140として、メモリ102またはストレージ装置103の記憶領域の一部が使用される。
The device connection
配備先機器状態記憶部150は、配備先機器の状態を記憶する。配備先機器の状態は、例えば分配アプリの配備状態や障害発生状態である。例えば配備先機器状態記憶部150として、メモリ102またはストレージ装置103の記憶領域の一部が使用される。
The deployment destination device
配備指示部161は、全体アプリフローに基づく分配アプリの生成、および分配アプリの配備を制御する。例えば配備指示部161は、全体アプリフロー編集部162から全体アプリフローデータ121を受け取ると、全体アプリフローデータ121を全体アプリフローデータ記憶部120に格納する。また配備指示部161は、アプリ開発者からの、全体アプリフローに含まれる各ノードに対応する機能の配備先である配備先機器の指定入力を受け付ける。この指定入力の受け付けは、例えば画面に表示された配備先機器のリストの中から、アプリ開発者に配備先機器を選択させることで行うことができる。この場合、配備指示部161は、デバイス情報記憶部110を参照して、デバイス管理テーブル111に登録されている配備先機器の名称のリストを画面に表示する。アプリ開発者は、全体アプリフローから配備先機器の指定対象とするノードを選択すると共に、そのノードに対応する機能の配備先となる配備先機器の名称を、配備先機器の名称のリストから選択する。すると配備指示部161は、選択されたノードに対応する機能の配備先が、選択された配備先機器であると認識する。
The
全体アプリフロー内のすべてのノードについて配備先機器が指定されると、配備指示部161は、全体アプリフローデータ記憶部120内の全体アプリフローデータ121を分配アプリ生成部163に送信する。さらに配備指示部161は、分配アプリ生成部163に対して、全体アプリフローデータ121に示される各ノードに対応する機能の配備先を指定する。その後、分配アプリ生成部163によって、配備先機器ごとの分配アプリフローデータが生成されると、配備指示部161は、分配アプリ配備部164に対して、分配アプリの配備先を指定して、分配アプリの配備を指示する。
When the deployment destination device is specified for all the nodes in the entire application flow, the
全体アプリフロー編集部162は、アプリ開発者からの入力に従って、全体アプリフローを作成する。全体アプリフロー編集部162は、例えばNode−REDなどのフローベースのアプリ開発環境である。例えば全体アプリフロー編集部162は、Webブラウザ上での全体アプリフローの編集画面を表示し、アプリ開発者による入力に応じて、全体アプリフローの編集画面内で全体アプリフローを作成する。全体アプリフロー編集部162は、全体アプリフロー編集画面上での全体アプリフローを作成すると、全体アプリフローデータ121を生成する。そして全体アプリフロー編集部162は、生成した全体アプリフローデータ121を、例えば配備指示部161を介して全体アプリフローデータ記憶部120に格納する。
The overall application flow
分配アプリ生成部163は、配備指示部161からの指示に従って、全体アプリフローデータ121に基づいて、ノードに対応する機能の配備先ごとの分配アプリを生成する。分配アプリ生成部163は、生成した分配アプリを分配アプリ配備部164に送信する。
The distribution
分配アプリ配備部164は、配備指示部161からの指示に従って、分配アプリを、その分配アプリに対応する配備先機器に配備する。例えば分配アプリ配備部164は、分配アプリを示す分配アプリフローデータを配備先機器に送信し、配備先機器に対して分配アプリのインストールおよび起動を指示する。
The distribution
機器経路情報登録部171は、アプリ開発サーバ100の下位機器からの接続要求メッセージを受信する。そして機器経路情報登録部171は、接続要求メッセージに基づいて、ネットワークトポロジ70における機器間の接続情報を機器接続情報記憶部140に格納する。
The device route
機器接続検知部172は、機器接続情報記憶部140を参照し、新たに配備先機器が接続されたことを検知する。機器接続検知部172は、新たな配備先機器を検知すると、配備アプリ判定部174に、新たに接続された配備先機器の機器名を含む機器接続検知情報を通知する。
The device
障害状態判定部173は、下位機器からの障害発生通知メッセージを受信すると、配備先機器状態記憶部150に、配備先機器に障害が発生したことを示す情報を設定する。
配備アプリ判定部174は、配備先機器状態記憶部150を参照し、新たに接続された配備先機器で配備する分配アプリを判定する。例えば配備アプリ判定部174は、新たに接続された配備先機器が、障害が発生した配備先機器の代替機器の場合、障害が発生した配備先機器に配備済みの分配アプリを、新たに接続された配備先機器で配備する分配アプリと判定する。配備アプリ判定部174は、障害が発生した配備先機器に配備済みの分配アプリを示す情報を、配備済みアプリ再配備部175に通知する。
Upon receiving the failure occurrence notification message from the lower-level device, the failure
The deployment
配備済みアプリ再配備部175は、障害が発生した配備先機器の配備済みの分配アプリを、その配備先機器の代替の配備先機器に再配備する。
なお、図5に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図5に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
The deployed
The line connecting each element shown in FIG. 5 indicates a part of the communication path, and a communication path other than the illustrated communication path can be set. Further, the function of each element shown in FIG. 5 can be realized, for example, by causing a computer to execute a program module corresponding to the element.
次に、アプリ開発サーバ100内の各記憶部に格納されている情報について具体的に説明する。
図6は、デバイス情報記憶部の一例を示す図である。デバイス情報記憶部110には、デバイス管理テーブル111が格納されている。デバイス管理テーブル111には、例えば配備先機器の機器名に対応付けて、配備先機器のIP(Internet Protocol)アドレス、サブネットマスク、および機器識別子が設定されている。サブネットマスクは、IPアドレスのうちのネットワーク部の範囲を示す情報である。IPアドレスとサブネットマスクとのビット単位の論理積により、ネットワーク部の値(ネットワークアドレス)が取得できる。ネットワークアドレスが共通の複数の配備先機器は、内部ネットワークで接続されているものと判断できる。機器識別子は、配備先機器を一意に識別する識別子である。機器識別子は、配備先機器間の通信路の識別子に用いることができる。例えば、データ送信元の配備先機器の機器識別子とデータ送信先の配備先機器の機器識別子とを組み合わせて通信識別子を作成することで、機器間の通信路を一意に識別する識別子を生成することができる。なお、IPアドレスを配備先機器の機器識別子として用いてもよい。
Next, the information stored in each storage unit in the
FIG. 6 is a diagram showing an example of the device information storage unit. The device management table 111 is stored in the device
なお、デバイス情報記憶部110内の情報は、例えばシステムの運用者によって予め登録されている。また、配備先機器がネットワークに接続された際に、その配備先機器が、アプリ開発サーバ100へ、機器名、IPアドレス、サブネットマスク、機器識別子を送信してもよい。この場合、アプリ開発サーバ100は、配備先機器から送られた情報を、デバイス情報記憶部110に格納する。
The information in the device
図7は、全体アプリフローデータ記憶部の一例を示す図である。全体アプリフローデータ記憶部120には、全体アプリフローデータ121が格納されている。全体アプリフローデータ121は、全体アプリフロー編集部162により作成され、例えば配備指示部161により、全体アプリフローデータ記憶部120に格納される。全体アプリフローデータ121は、例えばJSON(JavaScript(登録商標) Object Notation)によって記述される。
FIG. 7 is a diagram showing an example of the entire application flow data storage unit. The overall application flow data 121 is stored in the overall application flow
全体アプリフローデータ121には、機能に対応するノードとノード間を接続する線で示された全体アプリフロー内のノードそれぞれを定義する記述(データ処理定義情報121a,121b,121c)が含まれている。データ処理定義情報121a,121b,121cには、項目名「id」の値としてそのノードの識別子が示されている。また、項目名「name」の値として、そのノードに対応する機能ブロックの名前が示されている。そして、出力側が他のノードに接続されたノードを定義するデータ処理定義情報には、項目名「wires」の値として、データ送信先のノードの識別子が示されている。
The overall application flow data 121 includes a description (data
図8は、配備済みアプリ記憶部の一例を示す図である。配備済みアプリ記憶部130には、全体アプリフローデータ121に基づいて生成された複数の分配アプリフローデータ131,132,・・・が格納されている。分配アプリフローデータ131,132,・・・それぞれには、アプリ名が付与されている。例えば分配アプリフローデータ131のアプリ名は「app001.json」である。
FIG. 8 is a diagram showing an example of the deployed application storage unit. The deployed
分配アプリフローデータ131では、「日付データ生成」に対応するノードを定義するデータ処理定義情報131aにおける項目名「wires」の値に示される送信先ノードの識別子が、「データ送信_MQTT」に対応するノードの識別子に変更されている。また分配アプリフローデータ131には、「データ送信_MQTT」に対応するノードを定義するデータ処理定義情報131bが追加されている。データ処理定義情報131b内には、項目名「topic」の値として、MQTTのトピックの値が設定されている。MQTTのトピックは、MQTTによる通信の通信識別子として用いられる。MQTTのトピックの値は、例えば「日付データ生成」のノードの配備先である配備先機器の識別子「dev1」と、データ処理定義情報121b(図7参照)内の「日付データ整形」のノードの配備先である配備先機器の識別子「dev2」とを含む値である。図8の例では、MQTTのトピックとして値「dev1todev2」が設定されている。
In the distribution
図9は、機器接続情報記憶部の一例を示す図である。機器接続情報記憶部140には、例えば機器接続関係テーブル141が格納されている。機器接続関係テーブル141には、接続関係にある配備先機器の上流側の機器(上流機器)の機器名に対応付けて、その機器の下流側の機器(下流機器)の機器名が設定されている。
FIG. 9 is a diagram showing an example of the device connection information storage unit. For example, the device connection related table 141 is stored in the device connection
図10は、配備先機器状態記憶部の一例を示す図である。配備先機器状態記憶部150には、例えば配備先機器状態テーブル151が格納されている。配備先機器状態テーブル151には、配備先機器の機器名に対応付けて、配備先機器に配備した分配アプリ(配備済みアプリ)のアプリ名と障害発生フラグとが設定されている。障害発生フラグは、対応する配備先機器の障害が検出されていなければ「0」が設定され、障害が検出されていれば「1」が設定される。
FIG. 10 is a diagram showing an example of the deployment destination device state storage unit. For example, the deployment destination device status table 151 is stored in the deployment destination device
図11は、配備先機器の機能の一例を示すブロック図である。配備先機器200は、接続要求メッセージ送受信部210、下流機器情報記憶部220、キープアライブメッセージ送受信部230、応答メッセージ送受信部240、故障判定処理部250、および判定通知処理部260を有する。
FIG. 11 is a block diagram showing an example of the functions of the deployment destination device. The
接続要求メッセージ送受信部210は、接続要求メッセージの送受信を行う。例えば接続要求メッセージ送受信部210は、下流機器200bから接続要求メッセージを受信し、自身の下流機器を認識する。接続要求メッセージ送受信部210は、接続要求メッセージの送信元である下流機器200bの装置名を、下流機器情報記憶部220に格納する。また接続要求メッセージ送受信部210は、下流機器200bから受信した接続要求メッセージを上流機器200aに転送する。その際、接続要求メッセージ送受信部210は、接続要求メッセージに、転送経路を示す情報として配備先機器200自身の装置名を付与する。
The connection request message transmission /
また接続要求メッセージ送受信部210は、配備先機器200が新たにシステムに追加された場合、接続要求メッセージを生成し、その接続要求メッセージを上流機器200aに送信する。なお論理トポロジにおける上流機器200aがどの機器なのか(例えば機器名とIPアドレス)は、配備先機器200のシステムへの追加時に、予め接続要求メッセージ送受信部210に設定される。
Further, when the
下流機器情報記憶部220は、配備先機器200の下流機器の情報を記憶する。例えば配備先機器200のメモリまたはストレージ装置の記憶領域の一部が、下流機器情報記憶部220として使用される。
The downstream device
キープアライブメッセージ送受信部230は、キープアライブメッセージの送受信を行う。例えばキープアライブメッセージ送受信部230は、定期的に下流機器200bに対してキープアライブメッセージを送信する。このとき、キープアライブメッセージ送受信部230は、キープアライブメッセージを送信したことを、応答メッセージ送受信部240に通知する。またキープアライブメッセージ送受信部230は、上流機器200aが送信したキープアライブメッセージを受信する。そしてキープアライブメッセージ送受信部230は、キープアライブメッセージを受信したことを、応答メッセージ送受信部240に通知する。
The keep-alive message transmission /
応答メッセージ送受信部240は、下流機器200bからの、キープアライブメッセージへの応答メッセージを受信する。応答メッセージ送受信部240は、下流機器200bから応答メッセージを受信すると、応答メッセージを受信したことを故障判定処理部250に通知する。また応答メッセージ送受信部240は、キープアライブメッセージを受信した旨の通知をキープアライブメッセージ送受信部230から取得すると、応答メッセージを上流機器200aに送信する。
The response message transmission /
故障判定処理部250は、下流機器200bに送信したキープアライブメッセージに対する応答メッセージの受信状況に基づいて、下流機器200bの故障の有無を判定する。例えば故障判定処理部250は、キープアライブメッセージを送信してから所定時間以内に応答メッセージを受信できなければ、下流機器200bが故障していると判定する。故障判定処理部250は、判定結果を判定通知処理部260に通知する。
The failure
判定通知処理部260は、故障判定処理部250から受信した判定結果を、上流機器200aに送信する。例えば判定通知処理部260は、下流機器200bが正常に動作していると判定した場合、上流機器200aに対して、障害非発生通知メッセージを送信する。また判定通知処理部260は、下流機器200bが正常に動作していないと判定した場合、上流機器200aに対して、障害発生通知メッセージを送信する。
The determination
なお、図11に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図11に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。 The line connecting each element shown in FIG. 11 indicates a part of the communication path, and a communication path other than the illustrated communication path can be set. Further, the function of each element shown in FIG. 11 can be realized, for example, by causing a computer to execute a program module corresponding to the element.
次に、下流機器情報記憶部220に格納される情報について、具体的に説明する。
図12は、下流機器情報記憶部の一例を示す図である。例えば下流機器情報記憶部220には、下流機器情報テーブル221が格納される。下流機器情報テーブル221には、配備先機器200の下流機器の機器名に対応付けて、下流機器と通信するためのアドレスが設定されている。アドレスは、例えばIPアドレスである。図12の例では、配備先機器200が、ネットワークトポロジ70における配備先機器73である場合における、下流機器の機器名とアドレスとの組が、下流機器情報テーブル221に設定されている。
Next, the information stored in the downstream device
FIG. 12 is a diagram showing an example of a downstream device information storage unit. For example, the downstream device
以上のような機能を有するマスタであるアプリ開発サーバ100と配備先機器とが連係動作することで、分配アプリの配備と、分配アプリを配備した配備先機器が故障した場合の代替の配備先機器への分配アプリの自動配備とが実現される。アプリ開発サーバ100と配備先機器とが連係動作して実現する処理は、大別して分配アプリ生成・配備フェーズ、システム構築フェーズ、および運用フェーズに分かれる。以下フェーズごとの処理を詳細に説明する。
By linking the
<分配アプリ生成・配備フェーズ>
まず、分配アプリ生成・配備フェーズについて説明する。分配アプリ生成・配備フェーズでは、アプリ開発サーバ100が全体アプリフローに基づいて分配アプリを自動生成し、生成した分配アプリを配備先機器に配備する。
<Distribution application generation / deployment phase>
First, the distribution application generation / deployment phase will be described. In the distribution application generation / deployment phase, the
図13は、分配アプリの自動生成および配備処理の一例を示す図である。全体アプリフロー編集部162は、アプリ開発者の入力に基づいて、全体アプリフロー81を作成する。全体アプリフロー81に含まれる各ノード81a〜81dは、アプリ開発者によって、対応する機能の配備先が指定されている。例えばノード81a,81bに対応する機能(センサデバイス制御、センサ入力値加工)の配備先は「機器A」である。ノード81cに対応する機能(フィルタリング)の配備先は「機器B」である。ノード81dに対応する機能(可視化)の配備先は「機器C」である。この全体アプリフロー81は、例えばセンサから取得したデータを入力データとして、特定デバイス固有のデータ取得処理、取得したデータの加工処理、データのフィルタリング処理(例えば平均化処理など)、取得データの可視化などを順に行うことを示す。
FIG. 13 is a diagram showing an example of automatic generation and deployment processing of the distribution application. The overall application flow
アプリ開発者から分配アプリの生成指示が入力されると、全体アプリフロー編集部162が作成した全体アプリフロー81を定義する全体アプリフローデータ121が、配備指示部161により全体アプリフローデータ記憶部120から読み出される。そして配備指示部161から分配アプリ生成部163へ全体アプリフローデータ121が送信される。すると分配アプリ生成部163は、全体アプリフローデータ121に基づいて、分配アプリ82〜84を生成する。
When the distribution application generation instruction is input from the application developer, the overall application flow data 121 that defines the
例えば分配アプリ生成部163は、まず全体アプリフロー81内のノードを、配備先機器ごとに分割する。図13の例では、配備先が「機器A」のノード81a,81bと、配備先が「機器B」のノード81cと、配備先が「機器C」のノード81dとに分割される。
For example, the distribution
さらに分配アプリ生成部163は、全体アプリフロー81の分割部分のリンク(全体アプリフロー81における接続線)を通信処理ノードに置き換える。具体的には、分配アプリ生成部163は、データ送信元のノードの出力側(図中右側)にデータ送信処理のノードを追加し、データ送信先のノードの入力側(図中左側)にデータ受信処理のノードを追加する。図13の例では、ノード81bの出力側に、データ送信処理のノード81eが追加されている。またノード81cの入力側に、データ受信処理のノード81fが追加され、ノード81cの出力側に、データ送信処理のノード81gが追加されている。さらにノード81dの入力側に、データ受信処理のノード81hが追加されている。追加されたデータ送信処理のノード81e,81gには、例えばデータ送信先の機器との通信を一意に示す識別子が付与される。また追加されたデータ受信処理のノード81f,81hには、例えばデータ送信元の機器との通信を一意に示す識別子が付与される。
Further, the distribution
なお、既存のノードの出力側にノードを追加するとは、分配アプリフローにおいて、追加するノードをアプリフローに追加すると共に、既存のノードの出力側と追加するノードの入力側とを通信のリンクを示す線で接続することである。また既存のノードの入力側にノードを追加するとは、分配アプリフローにおいて、追加するノードをアプリフローに追加すると共に、既存のノードの入力側と追加するノードの出力側とを通信のリンクを示す線で接続することである。 To add a node to the output side of an existing node means to add the node to be added to the application flow and to link the output side of the existing node and the input side of the node to be added in the distribution application flow. Connect with the indicated wire. Adding a node to the input side of an existing node means adding the node to be added to the application flow in the distribution application flow, and indicating a communication link between the input side of the existing node and the output side of the node to be added. It is to connect with a wire.
このようにして、配備先機器ごとの分配アプリ82〜84が生成される。生成された分配アプリ82〜84は、それぞれ指定された配備先機器に配備される。具体的には、「機器A」用の分配アプリ82は「機器A」に配備され、「機器B」用の分配アプリ83は「機器B」に配備され、「機器C」用の分配アプリ84は「機器C」に配備される。
In this way,
なお分配アプリ生成部163は、データ送信用またはデータ受信用のノードを追加する際、データ送信側とデータ受信側とで共通の通信プロトコルにより通信を行うノードを追加する。例えば分配アプリ生成部163は、通信に高いセキュリティが求められる場合には、通信プロトコルを、高いセキュリティ機能を有するプロトコルに決定する。すなわち、インターネットのような広域ネットワーク20bを経由した通信の場合、データが第3者に漏洩する危険がある。このような場合、分配アプリ生成部163は、送信されるデータが第3者に漏洩しないように、HTTPのような高いセキュリティ機能を有するプロトコルで通信するためのデータ送信およびデータ受信のノードを追加する。HTTPは、例えばHTTPSのような認証や暗号化技術を用いた通信が可能なプロトコルである。
When adding a node for data transmission or data reception, the distribution
また分配アプリ生成部163は、高い処理効率が求められる場合には、通信プロトコルを、効率的な通信が可能なプロトコルに決定する。例えば、企業内のローカルネットワーク20aのようなプライベートのネットワークを経由して、大量の機器からデータを収集する場合、個々のデータ通信のための処理負荷が高いと、収集する機器における負荷、およびネットワーク上の通信負荷が過大となる。このような場合、分配アプリ生成部163は、MQTTのような効率的なデータ通信が可能なプロトコルで通信するためのデータ送信およびデータ受信のノードを追加する。MQTTは、HTTPに比べてヘッダサイズが非常に小さく、通信量や送受信する機器の負荷を低く抑えることができるプロトコルである。
Further, the distribution
次に、分配アプリの生成および配備の手順について詳細に説明する。
図14は、分配アプリの生成および配備手順を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
Next, the procedure for generating and deploying the distribution application will be described in detail.
FIG. 14 is a flowchart showing a procedure for generating and deploying a distribution application. Hereinafter, the process shown in FIG. 14 will be described along with the step numbers.
[ステップS101]全体アプリフロー編集部162は、アプリ開発者からの入力に基づいて、IoTアプリとして実行するデータ処理を定義する全体アプリフローを作成する。
[Step S101] The overall application flow
[ステップS102]配備指示部161は、アプリ開発者からの、全体アプリフローで定義したノードに対して、実際のIoTシステム上のどの機器でその処理を行うか(配備先機器)の指定を受け付ける。例えば配備指示部161は、デバイス管理テーブル111に登録されている機器名を、配備先機器の候補としてモニタ21に表示する。アプリ開発者は、ノードごとに、そのノードに対応する機能を実行させる配備先機器を、候補として表示された機器名の中から選択する。配備指示部161は、ノードごとに選択された機器名を、そのノードの配備先機器の機器名としてメモリ102に格納する。
[Step S102] The
[ステップS103]配備指示部161は、アプリ開発者からの、分配アプリの配備指示を受け付ける。配備の指示とは、全体アプリを指定した配備先機器ごとに分離し、適切な機能を追加して分配アプリを生成し、分配アプリを対応する配備先機器に転送する処理を指示するものである。配備指示部161は、配備指示が入力されると、全体アプリフローを表す全体アプリフローデータと、全体アプリフローデータ内の各ノードの配備先情報を分配アプリ生成部163に送信する。
[Step S103] The
[ステップS104]分配アプリ生成部163は、全体アプリフローと配備先情報とに基づいて、分配アプリを生成する。分配アプリ生成部163は、生成した分配アプリを示す分配アプリフローデータを、分配アプリ配備部164に送信する。なお分配アプリ生成処理の詳細は後述する(図15参照)。
[Step S104] The distribution
[ステップS105]分配アプリ配備部164は、分配アプリを、その分配アプリの配備先機器に配備する。具体的には、分配アプリ配備部164は、配備先機器ごとの分配アプリの分配アプリフローデータを、その分配アプリに対応する配備先機器に対して送信する。さらに分配アプリ配備部164は、送信した分配アプリフローデータによる分配アプリのインストールおよび起動要求を、配備先機器に送信する。これにより、配備先機器は、分配アプリフローデータに定義された処理が実行できるように、インストール作業を行い、分配アプリを起動する。
[Step S105] The distribution
なお配備先機器が、分配アプリフローデータをインポートするAPI(Application Programming Interface)を備えている場合がある。この場合、分配アプリ配備部164は、例えば配備先機器の分配アプリフロー登録用のAPIに対してデータを送付する。これにより、配備先機器内の分配アプリフローデータの実行ソフトウェアに分配アプリフローデータが実行対象として設定される。このように、分配アプリフロー登録用のAPIを用いて分配アプリを配備することも可能である。
The deployment destination device may be equipped with an API (Application Programming Interface) for importing distributed application flow data. In this case, the distribution
分配アプリ配備部164による分配アプリの配備は、分配アプリ生成処理での分配アプリ生成から連続して行ってもよいし、あるいは分配アプリ生成後にさらにアプリ開発者からの任意のタイミングの指示に応じて行ってもよい。
The distribution
次に、分配アプリ生成処理について詳細に説明する。
図15は、分配アプリ生成処理の手順の一例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
Next, the distribution application generation process will be described in detail.
FIG. 15 is a flowchart showing an example of the procedure of the distribution application generation process. Hereinafter, the process shown in FIG. 15 will be described along with the step numbers.
[ステップS111]分配アプリ生成部163は、全体アプリフローからノードを1つ選択する。
[ステップS112]分配アプリ生成部163は、ステップS102において受け付けた配備先機器の指定に基づいて、選択したノード(選択ノード)の出力データの転送先となるノード(転送先ノード)の配備先機器が、選択ノードの配備先機器と同じか否かを判断する。配備先機器が同じであれば、処理をステップS125に進める。配備先機器が異なれば、処理をステップS113に進める。
[Step S111] The distribution
[Step S112] The distribution
[ステップS113]分配アプリ生成部163は、選択ノードと転送先ノードとの間で、選択ノードを含むアプリフローを分離する。例えば分配アプリ生成部163は、選択ノードを含むアプリフローを、選択ノードを最後尾とするアプリフローと、転送先ノードを先頭とするアプリフローとに分離する。分離により生成されたアプリフローが、分配アプリフローとなる。なお、分配アプリフローがさらに分離される場合もある。アプリフローが分離されることで、分離後の分配アプリフローを示すアプリフローデータ(分配アプリフローデータ)が生成される。
[Step S113] The distribution
分配アプリ生成部163は、以下のステップS114〜ステップS124の処理により、分配アプリフローを自動編集する。分配アプリ生成部163の編集処理は、具体的には、メモリ102内で分配アプリフローデータを編集する処理である。
The distribution
[ステップS114]分配アプリ生成部163は、転送先ノードが、外部のネットワークを介して接続されているか否かを判断する。例えば分配アプリ生成部163は、選択したノードと転送先ノードとのIPアドレス内のネットワーク部のアドレスが異なる場合、外部のネットワークを介して接続されていると判断する。分配アプリ生成部163は、外部のネットワークを介して接続されている場合、処理をステップS115に進める。また分配アプリ生成部163は、内部のネットワークを介して接続されている場合、処理をステップS120に進める。
[Step S114] The distribution
[ステップS115]分配アプリ生成部163は、選択ノードの出力側にHTTP送信処理ノードを追加する。追加されるHTTP送信処理ノードは、例えば外部ネットワークへの接続のために設置されたHTTPプロキシサーバを通過するための処理が記述された機能ブロックに対応するノードである。さらに、分配アプリ生成部163は、HTTP送信処理ノードの出力側に、転送先ノードからの応答を処理するための応答ノードを追加する。
[Step S115] The distribution
[ステップS116]分配アプリ生成部163は、転送先ノードの入力側にHTTP受信処理ノードを追加する。さらに、分配アプリ生成部163は、HTTP受信処理ノードの出力側に、選択ノードへのHTTP受信応答を行うための応答ノードを追加する。
[Step S116] The distribution
[ステップS117]分配アプリ生成部163は、選択ノードの転送先を、追加したHTTP送信処理ノードに変更する。例えば分配アプリ生成部163は、選択ノードの転送先を示す情報を、HTTP送信処理ノードのノードIDに変更する。
[Step S117] The distribution
[ステップS118]分配アプリ生成部163は、追加したHTTP受信処理ノードの転送先情報に、転送先ノードのノードIDを付与する。
[ステップS119]分配アプリ生成部163は、追加したHTTP送信処理ノードに、転送先ノードの配備先機器のIPアドレスを設定する。その後、分配アプリ生成部163は、処理をステップS125に進める。
[Step S118] The distribution
[Step S119] The distribution
[ステップS120]分配アプリ生成部163は、選択ノードの出力側に、MQTT送信処理ノードを追加する。
[ステップS121]分配アプリ生成部163は、転送先ノードの入力側に、MQTT受信処理ノードを追加する。
[Step S120] The distribution
[Step S121] The distribution
[ステップS122]分配アプリ生成部163は、選択ノードの転送先を、追加したMQTT送信処理ノードに変更する。例えば分配アプリ生成部163は、選択ノードの転送先を示す情報を、MQTT送信処理ノードのノードIDに変更する。
[Step S122] The distribution
[ステップS123]分配アプリ生成部163は、追加したMQTT受信処理ノードの転送先情報に、転送先ノードのノードIDを付与する。
[ステップS124]分配アプリ生成部163は、追加したMQTT送信処理ノードと追加したMQTT受信処理ノードとのそれぞれに、MQTT送信処理ノードとMQTT受信処理ノードとの組を一意に示す通信識別子(トピック)を設定する。
[Step S123] The distribution
[Step S124] The distribution
[ステップS125]分配アプリ生成部163は、全体アプリフロー内のすべてのノードを選択したか否かを判断する。分配アプリ生成部163は、すべてのノードが選択済みであれば、分配アプリ生成処理を終了する。分配アプリ生成部163は、未選択のノードが存在すれば、処理をステップS111に進める。
[Step S125] The distribution
このようにして、全体アプリを、指定された配備先機器が共通のノードごとに分割し、分散環境上での分配アプリの連携のための配備先機器間の通信処理機能を、分配アプリフロー上の適切な位置に自動的に付加することができる。しかも、配備先機器間の通信が、外部ネットワークを経由するのか否かにより、適切な通信プロトコルを適用することができる。 In this way, the entire application is divided for each node in which the specified deployment destination device is common, and the communication processing function between the deployment destination devices for cooperation of the distribution application in the distributed environment is performed on the distribution application flow. Can be automatically added to the appropriate position of. Moreover, an appropriate communication protocol can be applied depending on whether or not the communication between the deployment destination devices goes through the external network.
アプリ開発サーバ100は、生成した分配アプリを、複数の配備先機器に配備する。その後、配備先機器の一部で障害が発生すると、その配備先機器に配備した分配アプリが正常に機能しなくなる。その場合、システムの管理者によって、障害が発生した配備先機器の代替となる配備先機器が、ネットワークに接続される。すると、配備先機器とアプリ開発サーバ100との連係によるシステム構築フェーズが実施される。
The
<システム構築フェーズ>
次に、システム構築フェーズについて説明する。システム構築フェーズは、システム内に新たな配備先機器が接続されるごとに、アプリ開発サーバ100が有する機器接続情報を更新する処理である。
<System construction phase>
Next, the system construction phase will be described. The system construction phase is a process of updating the device connection information of the
図16は、システム構築フェーズにおける機器接続情報の更新例を示す図である。例えば配備先機器75の下流側に配備先機器78が新たに接続された場合を想定する。配備先機器78には、例えば予め上位機器となる配備先機器75のIPアドレスが設定されている。配備先機器78は、ネットワーク20に接続されると、接続要求メッセージ91を上位機器に送信する。接続要求メッセージ91には、要求元として、配備先機器78の装置名「G」が設定されている。
FIG. 16 is a diagram showing an example of updating device connection information in the system construction phase. For example, assume that the
接続要求メッセージ91を受信した配備先機器75は、接続要求メッセージ91に示される要求元の機器名「G」と要求元のIPアドレスとを、下流機器情報として格納する。さらに配備先機器75は、配備先機器75の上位機器である配備先機器72に接続要求メッセージ92を転送する。その際、配備先機器75は、転送する接続要求メッセージ92の経路の情報に、自身の装置名「D」を追加する。
The
接続要求メッセージ92を受信した配備先機器72は、配備先機器72の上位機器であるマスタ71に接続要求メッセージ93を転送する。その際、配備先機器72は、転送する接続要求メッセージ93の経路の情報に、自身の装置名「A」を、すでに設定されている機器名「D」の後に追加する。
Upon receiving the
接続要求メッセージ93を受信したマスタ71は、接続要求メッセージ93の要求元の機器名「G」に基づいて、機器名「G」の配備先機器78が接続されたことを認識する。またマスタ71は、接続要求メッセージ93の経路の情報に示される機器名の並びに基づいて、接続要求メッセージ93が機器名「G」の配備先機器75、機器名「A」の配備先機器72を介して転送されたことを認識する。そしてマスタ71は、新たに接続された配備先機器78のネットワークトポロジ70上の接続先機器が、配備先機器75であると判断する。マスタ71は、機器接続情報記憶部140内の機器接続関係テーブル141の上流機器として、接続先機器の機器名「D」が未登録の場合、上流機器「D」のレコードを、機器接続関係テーブル141に追加する。そしてマスタ71は、上流機器「D」のレコードの下位機器に、新たに接続された配備先機器78の機器名「G」を登録する。
Upon receiving the
このようにして、機器接続関係テーブル141を常に最新の状態に保つことができる。すなわちマスタ71であるアプリ開発サーバ100では、システム内に新たな配備先機器が追加されると、その機器の機器名と、その機器の上流機器とをすぐに認識できる。
In this way, the device connection-related table 141 can always be kept up to date. That is, when a new deployment destination device is added to the system, the
次に、システム構築フェーズの処理を実現するために配備先機器200と、マスタ71であるアプリ開発サーバ100とが実行する処理について詳細に説明する。配備先機器200が実行する処理には、配備先機器200がネットワーク20に新たに接続されたときの接続要求メッセージ送信処理と、下流機器から接続要求メッセージを受信したときの接続要求メッセージ転送処理とがある。
Next, the processing executed by the
図17は、新規に接続された配備先機器による接続要求メッセージ送信処理の手順の一例を示すフローチャートである。以下、図17に示す処理をステップ番号に沿って説明する。 FIG. 17 is a flowchart showing an example of a procedure for transmitting a connection request message by a newly connected deployment destination device. Hereinafter, the process shown in FIG. 17 will be described along with the step numbers.
[ステップS201]接続要求メッセージ送受信部210は、配備先機器200がネットワーク20に接続されたか否かを判断する。例えば接続要求メッセージ送受信部210は、配備先機器200のOSが起動され、TCP(Transmission Control Protocol)/IPによる他の機器との通信が可能な状態になったとき、ネットワーク20に接続されたと判断する。接続要求メッセージ送受信部210は、ネットワーク20に接続された場合、処理をステップS202に進める。また接続要求メッセージ送受信部210は、ネットワーク20に接続されていなければ、ステップS201の処理を繰り返す。
[Step S201] The connection request message transmission /
[ステップS202]接続要求メッセージ送受信部210は、自身の機器名を含む接続要求メッセージを生成し、予め指定されたIPアドレスの上位機器に、生成した接続要求メッセージを送信する。
[Step S202] The connection request message transmission /
次に配備先機器200が、下位機器から接続要求メッセージを受信した場合の接続要求メッセージの転送処理について説明する。
図18は、配備先機器による接続要求メッセージ転送処理の手順の一例を示すフローチャートである。以下、図18に示す処理をステップ番号に沿って説明する。
Next, the transfer process of the connection request message when the
FIG. 18 is a flowchart showing an example of the procedure of the connection request message forwarding process by the deployment destination device. Hereinafter, the process shown in FIG. 18 will be described along with the step numbers.
[ステップS211]接続要求メッセージ送受信部210は、下位機器から送信された接続要求メッセージを受信する。
[ステップS212]接続要求メッセージ送受信部210は、接続要求メッセージの送信元が自身の下流側に隣接する下流機器の場合、接続要求メッセージに示される要求元機器情報を、下流機器情報テーブル221に設定する。要求元機器情報は、例えば要求元の機器名と送信元のIPアドレスである。なお接続要求メッセージ送受信部210は、接続要求メッセージの送信元が自身の下流側に隣接する下流機器かどうかは、接続要求メッセージの経路の情報に基づいて判断することができる。例えば接続要求メッセージ送受信部210は、接続要求メッセージの経路の情報に他の配備先機器の機器名が登録されていなければ、接続要求メッセージの送信元が自身の下流側に隣接する下流機器であると判断する。
[Step S211] The connection request message transmission /
[Step S212] When the source of the connection request message is a downstream device adjacent to its own downstream side, the connection request message transmission /
[ステップS213]接続要求メッセージ送受信部210は、接続要求メッセージの経路の情報に、自機器情報を付与する。例えば接続要求メッセージ送受信部210は、経路の情報の最後尾に、自身の機器名を追加する。
[Step S213] The connection request message transmission /
[ステップS214]接続要求メッセージ送受信部210は、自機器の接続先機器に接続要求メッセージを転送する。
このような接続要求メッセージの転送を各配備先機器が実施することで、最終的にマスタ71であるアプリ開発サーバ100に接続要求メッセージが転送される。そしてアプリ開発サーバ100が、接続機器登録を行う。
[Step S214] The connection request message transmission /
When each deployment destination device transfers such a connection request message, the connection request message is finally transferred to the
図19は、マスタによる接続機器登録処理の手順の一例を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。
[ステップS221]機器経路情報登録部171は、いずれかの配備先機器から接続要求メッセージを受信する。
FIG. 19 is a flowchart showing an example of a procedure for registering connected devices by the master. Hereinafter, the process shown in FIG. 19 will be described along with the step numbers.
[Step S221] The device route
[ステップS222]機器経路情報登録部171は、機器接続関係テーブル141を参照し、接続要求メッセージの送信元の接続先である配備先機器の機器名が、上流機器として設定されたレコードがあるか否かを判断する。機器経路情報登録部171は、該当レコードがある場合、処理をステップS223に進める。また機器経路情報登録部171は、該当レコードがない場合、処理をステップS224に進める。
[Step S222] The device route
[ステップS223]機器経路情報登録部171は、接続要求メッセージの経路の情報に示される接続先機器の機器名を上流機器とし、接続要求メッセージの要求元機器の機器名を下流機器とする新たなレコードを、機器接続関係テーブル141に登録する。機器経路情報登録部171は、その後、処理をステップS225に進める。
[Step S223] The device route
[ステップS224]機器経路情報登録部171は、機器接続関係テーブル141内の、配備先機器の機器名が上流機器に設定されている登録済みのレコードの下流機器として、要求元機器の機器名を登録する。
[Step S224] The device route
[ステップS225]機器接続検知部172は、新たな配備先機器の接続を検知し、要求元機器の機器名を含む機器接続検知情報を配備アプリ判定部174に通知する。
このようにして、ネットワーク20に新たな配備先機器が接続されたことが検知され、機器接続検知情報が配備アプリ判定部174に通知される。このようなシステム構築フェーズと並行して、配備先機器とアプリ開発サーバ100とにより運用フェーズが実行される。
[Step S225] The device
In this way, it is detected that a new deployment destination device is connected to the
<運用フェーズ>
次に運用フェーズについて説明する。運用フェーズでは、障害が発生した配備先機器の検知と、その配備先機器に配備済みの分配アプリの再配備とが行われる。
<Operation phase>
Next, the operation phase will be described. In the operation phase, the failed deployment destination device is detected and the distribution application already deployed in the deployment destination device is redeployed.
図20は、配備先機器の障害検知例を示す図である。図20の例では、配備先機器76に障害が発生したものとする。配備先機器76の状態は、配備先機器76の上流機器である配備先機器73が監視する。例えば配備先機器73は、定期的にキープアライブメッセージ94を配備先機器76に送信する。配備先機器76が正常に動作している場合、配備先機器76は、キープアライブメッセージ94に対して応答メッセージを返信する。他方、配備先機器76に障害が発生した場合、配備先機器76は、キープアライブメッセージ94に対する応答メッセージを送信することができない。上流機器である配備先機器73は、キープアライブメッセージ94に対して応答メッセージが返されないことを検知すると、配備先機器76に障害が発生したと判断する。
FIG. 20 is a diagram showing a failure detection example of the deployment destination device. In the example of FIG. 20, it is assumed that the
配備先機器73は、配備先機器76に障害が発生したことを検知した場合、配備先機器76の機器名を含む障害発生通知メッセージ95をマスタ71宛てに送信する。マスタ71であるアプリ開発サーバ100は、障害発生通知メッセージ95に基づいて、配備先機器76で障害が発生したことを認識する。
When the
図21は、上流機器による下流機器状態確認処理の手順の一例を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。
[ステップS301]キープアライブメッセージ送受信部230は、下流機器に対してキープアライブメッセージを送信する。例えばキープアライブメッセージ送受信部230は、下流機器情報記憶部220を参照し、自身の下流機器のIPアドレスを取得する。そしてキープアライブメッセージ送受信部230は、取得したIPアドレス宛てのキープアライブメッセージを生成し、下流機器に対して生成したキープアライブメッセージを送信する。キープアライブメッセージ送受信部230は、キープアライブメッセージを送信したことを示す情報を、故障判定処理部250に通知する。
FIG. 21 is a flowchart showing an example of a procedure for checking the state of the downstream device by the upstream device. Hereinafter, the process shown in FIG. 21 will be described along with the step numbers.
[Step S301] The keep-alive message transmission /
[ステップS302]故障判定処理部250は、キープアライブメッセージが送信されると、キープアライブメッセージの応答メッセージ待ち時間計測用のタイマをスタートさせる。
[Step S302] When the keep-alive message is transmitted, the failure
[ステップS303]故障判定処理部250は、タイマをスタートしてからの経過時間が、応答メッセージ待ち時間の上限である受信上限時間を超過したか否かを判断する。故障判定処理部250は、タイマの時間が受信上限時間を超過した場合、処理をステップS304に進める。また故障判定処理部250は、タイマの時間が受信上限時間を超過していなければ、処理をステップS306に進める。
[Step S303] The failure
[ステップS304]故障判定処理部250は、キープアライブメッセージの送信先の下流機器が障害発生状態であると判断する。
[ステップS305]故障判定処理部250は、上流機器に対して、障害発生通知メッセージを送信する。その後、故障判定処理部250は、下流機器状態確認処理を終了する。
[Step S304] The failure
[Step S305] The failure
[ステップS306]故障判定処理部250は、応答メッセージを受信したか否かを判断する。例えば下流機器から応答メッセージが送信されると、その応答メッセージを応答メッセージ送受信部240が受信する。応答メッセージ送受信部240は、応答メッセージを受信すると、応答メッセージを受信したことを示す情報を、故障判定処理部250に通知する。故障判定処理部250は、応答メッセージ送受信部240からの通知により、応答メッセージの受信を認識する。故障判定処理部250は、応答メッセージを受信したと判断した場合、処理をステップS307に進める。また故障判定処理部250は、応答メッセージを受信していなければ、処理をステップS303に進める。
[Step S306] The failure
[ステップS307]故障判定処理部250は、タイマを停止する。
[ステップS308]故障判定処理部250は、上流機器に対して、障害非発生通知メッセージを送信する。
[Step S307] The failure
[Step S308] The failure
配備先機器200の下流機器が複数ある場合、図21に示した処理が下流機器ごとに実行される。配備先機器200から送信された障害発生通知メッセージまたは障害非発生通知メッセージは、上流側の配備先機器により、上流側に向かって転送され、最終的にマスタ71であるアプリ開発サーバ100に送られる。
When there are a plurality of downstream devices of the
下流側の配備先機器では、キープアライブメッセージに応じた状態通知処理が行われる。
図22は、下流機器における状態通知処理の手順の一例を示すフローチャートである。以下、図22に示す処理をステップ番号に沿って説明する。
At the deployment destination device on the downstream side, status notification processing is performed according to the keepalive message.
FIG. 22 is a flowchart showing an example of a procedure for status notification processing in a downstream device. Hereinafter, the process shown in FIG. 22 will be described along with the step numbers.
[ステップS311]キープアライブメッセージ送受信部230は、上流機器からのキープアライブメッセージを受信したか否かを判断する。キープアライブメッセージ送受信部230は、キープアライブメッセージを受信していれば、処理をステップS312に進める。またキープアライブメッセージ送受信部230は、キープアライブメッセージを受信していなければ、ステップS311の処理を繰り返す。
[Step S311] The keep-alive message transmission /
[ステップS312]キープアライブメッセージ送受信部230は、キープアライブメッセージを受信したことを示す情報を、応答メッセージ送受信部240に通知する。すると、応答メッセージ送受信部240は、上流機器に対して応答メッセージを送信する。
[Step S312] The keep-alive message transmission /
図21、図22に示した処理を各配備先機器が行うことにより、アプリ開発サーバ100には、各配備先機器についての障害発生通知メッセージまたは障害非発生通知メッセージを定期的に受信する。アプリ開発サーバ100は、障害発生通知メッセージまたは障害非発生通知メッセージに基づいて、障害が発生した配備先機器の存在を認識する。
When each deployment destination device performs the processing shown in FIGS. 21 and 22, the
図23は、マスタにおける障害状態判定処理の手順の一例を示すフローチャートである。以下、図23に示す処理をステップ番号に沿って説明する。
[ステップS321]障害状態判定部173は、下流機器から障害発生状態の通知メッセージ(障害発生通知メッセージまたは障害非発生通知メッセージ)を受信したか否かを判断する。障害状態判定部173は、障害発生状態の通知メッセージを受信した場合、処理をステップS322に進める。また障害状態判定部173は、障害発生状態の通知メッセージを受信していなければ、ステップS321の処理を繰り返す。
FIG. 23 is a flowchart showing an example of the procedure of the failure state determination process in the master. Hereinafter, the process shown in FIG. 23 will be described along with the step numbers.
[Step S321] The failure
[ステップS322]障害状態判定部173は、受信したメッセージに基づいて、障害が発生したか否かを判断する。例えば障害状態判定部173は、障害発生通知メッセージを受信した場合、障害が発生したと判断する。また障害状態判定部173は、障害非発生通知メッセージを受信した場合、障害が発生していないと判断する。障害状態判定部173は、障害が発生した場合、処理をステップS323に進める。また障害状態判定部173は、障害が発生していなければ、処理をステップS324に進める。
[Step S322] The failure
[ステップS323]障害状態判定部173は、配備先機器状態テーブル151に対して、障害非発生通知メッセージに示される配備先機器の障害発生フラグに「1」を設定する。その後、障害状態判定部173は障害状態判定処理を終了する。
[Step S323] The failure
[ステップS324]障害状態判定部173は、配備先機器状態テーブル151に対して、障害非発生通知メッセージに示される配備先機器の障害発生フラグに「0」を設定する。
[Step S324] The failure
このようにして、各配備先機器の障害の有無が配備先機器状態テーブル151に反映される。障害が発生した配備先機器の代替の配備先機器が新たに接続された際には、配備先機器状態テーブル151に基づいて、配備アプリ判定部174により、代替の配備先機器に配備する分配アプリが判断される。そして配備済みアプリ再配備部175により、代替の配備先機器への分配アプリの配備が行われる。
In this way, the presence or absence of failure of each deployment destination device is reflected in the deployment destination device status table 151. When an alternative deployment destination device of the failed deployment destination device is newly connected, the distribution application to be deployed to the alternative deployment destination device by the deployment
図24は、アプリ再配備例を示す図である。図24では、配備先機器76に障害が発生し、配備先機器76の代替として配備先機器79が接続された場合を想定している。マスタ71であるアプリ開発サーバ100は、配備先機器79が接続されたことを検知すると、配備先機器79と同じ上流機器に接続されている他の配備先機器を検索する。図24の例では、配備先機器79の上流機器は、配備先機器73である。この配備先機器73の下流機器としては、配備先機器79以外に、配備先機器76と配備先機器77とが存在する。アプリ開発サーバ100は、配備先機器76と配備先機器77との状態を確認し、配備先機器76に障害が発生していることを認識する。そしてアプリ開発サーバ100は、新たに接続された配備先機器79は、配備先機器76の代替機器であると判断する。
FIG. 24 is a diagram showing an example of app redeployment. In FIG. 24, it is assumed that a failure occurs in the
配備先機器76には、アプリ名「app002」の分配アプリが配備済みである。そこでアプリ開発サーバ100は、新たに接続された配備先機器79に、アプリ名「app002」の分配アプリを配備する。
A distribution application with the application name "appp002" has already been deployed in the
図25は、アプリ再配備処理の手順の一例を示すフローチャートである。以下、図25に示す処理をステップ番号に沿って説明する。
[ステップS331]配備アプリ判定部174は、配備先機器の動作状態を監視する。例えば配備アプリ判定部174は、配備先機器状態テーブル151の障害発生フラグの値により、各配備先機器の障害の有無を判断する。
FIG. 25 is a flowchart showing an example of the procedure of the application redeployment process. Hereinafter, the process shown in FIG. 25 will be described along with the step numbers.
[Step S331] The deployment
[ステップS332]配備アプリ判定部174は、機器接続検知部172から、新たに接続された配備先機器の機器名を含む機器接続通知を受信する。
[ステップS333]配備アプリ判定部174は、機器接続関係テーブル141から、新たに接続された配備先機器(接続機器)と同じ上流機器に接続された他の下流機器を検索する。例えば配備アプリ判定部174は、接続機器の機器名を下流機器として含むレコードを、機器接続関係テーブル141から検索する。そして配備アプリ判定部174は、該当するレコードに示されている下流機器の機器名のうち、接続機器以外の機器名を取得する。
[Step S332] The deployment
[Step S333] The deployment
[ステップS334]配備アプリ判定部174は、接続機器以外の下流機器があるか否かを判断する。配備アプリ判定部174は、ステップS333の処理により、少なくとも1つの機器名が取得できた場合、接続機器以外の下流機器があると判断する。配備アプリ判定部174は、接続機器以外の下流機器がある場合、処理をステップS335に進める。また配備アプリ判定部174は、接続機器以外の下流機器がない場合、アプリ再配備処理を終了する。
[Step S334] The deployment
[ステップS335]配備アプリ判定部174は、ステップS333で取得した機器名の下流機器において、障害が発生しているか否かを判断する。例えば配備アプリ判定部174は、配備先機器状態テーブル151から、配備先機器としてステップS333で取得した機器名が設定されたレコードを取得する。そして配備アプリ判定部174は、取得したレコードの障害発生フラグの値が「1」であれば、該当する下流機器で障害が発生していると判断する。配備アプリ判定部174は、障害が発生している場合、処理をステップS336に進める。また配備アプリ判定部174は、障害が発生していなければ、アプリ再配備処理を終了する。
[Step S335] The deployment
[ステップS336]配備アプリ判定部174は、配備先機器状態テーブル151から、障害が発生している下流機器に配備済みの分配アプリの名称を取得する。例えば配備アプリ判定部174は、ステップS335で取得したレコードの配備済みアプリに設定されているアプリ名を、再配備対象アプリのアプリ名として取得する。配備アプリ判定部174は、取得したアプリ名と、接続機器の機器名とを、配備済みアプリ再配備部175に通知する。
[Step S336] The deployment
[ステップS337]配備済みアプリ再配備部175は、接続機器に、再配備対象アプリを配備する。例えば配備済みアプリ再配備部175は、デバイス管理テーブル111を参照し、接続機器の機器名に対応するIPアドレスなどの情報を取得する。また配備済みアプリ再配備部175は、再配備対象アプリのアプリ名に対応する分配アプリフローデータを、配備済みアプリ記憶部130から取得する。そして配備済みアプリ再配備部175は、接続機器にアクセスし、取得した分配アプリフローデータの配備処理を行う。すなわち配備済みアプリ再配備部175は、取得した分配アプリフローデータを接続機器にコピーし、接続機器に対して、分配アプリフローデータに基づく処理の実行を開始させる。
[Step S337] The deployed
このようにして、障害が発生した配備先機器の代替の配備先機器が接続されると、障害が発生した配備先機器に配備されていた分配アプリが、代替の配備先機器に自動で配備される。その結果、配備先機器の障害によるサービスの停止期間の長期化を抑止することができる。 In this way, when an alternative deployment destination device of the failed deployment destination device is connected, the distribution application deployed on the failed deployment destination device is automatically deployed to the alternative deployment destination device. To. As a result, it is possible to prevent the service suspension period from being prolonged due to the failure of the deployment destination device.
また分配アプリを配備した配備先機器が故障しても、故障した配備先機器に配備された分配アプリを再配備すればよく、全体アプリから生成されたすべての分配アプリの再配備を行わずにすむ。すなわちアプリ開発サーバ100は、分配アプリ生成・配備フェーズにおいて生成した複数の分配アプリを、複数の配備先機器に配備する。その後、IoTアプリが動作する配備先機器がネットワークに接続されたとき、アプリ開発サーバ100が、システム構築フェーズにおいて、配備先機器間の機器接続情報(=配信経路)を構築して保持する。またアプリ開発サーバ100は、運用フェーズにおいて、新たに配備先機器がネットワークに接続されたことを検知すると、接続された配備先機器と上流機器が同じ配備先機器のうち、障害が発生している配備先機器を特定する。そしてアプリ開発サーバ100は、特定した配備先機器に配備した分配アプリを、新規に接続した配備先機器に配備する。
In addition, even if the deployment destination device to which the distribution application is deployed breaks down, the distribution application deployed to the failed deployment destination device can be redeployed without redeploying all the distribution apps generated from the entire application. I'm sorry. That is, the
これにより全体アプリから生成されるすべての分配アプリではなく、障害が発生した配備先機器に配備した分配アプリのみを新規に接続した配備先機器に再配備することが可能になる。すなわち、いずれかの配備先機器で正常に動作している分配アプリの入れ替えは不要である。その結果、管理者の配備コストの削減、またはサービス停止による利用者の利便性低下を防ぐことが可能となる。 This makes it possible to redeploy only the distribution app deployed to the failed deployment destination device to the newly connected deployment destination device, instead of all the distribution apps generated from the entire app. That is, it is not necessary to replace the distribution application that is operating normally on any of the deployment destination devices. As a result, it is possible to reduce the deployment cost of the administrator or prevent the user's convenience from being lowered due to the service suspension.
なおシステムの管理者は、障害が発生した配備先機器の代替の配備先機器に、例えば故障した配備先機器と同じIPアドレスを設定する。これにより代替の配備先機器に分配アプリを再配備しても、分配アプリの内容を変更せずに、代替の配備先機器が、障害が発生した配備先機器の代わりに他の機器と通信できる。 The system administrator sets, for example, the same IP address as the failed deployment destination device in the alternative deployment destination device of the failed deployment destination device. As a result, even if the distribution application is redeployed to the alternative deployment destination device, the alternative deployment destination device can communicate with other devices in place of the failed deployment destination device without changing the contents of the distribution application. ..
また分配アプリを実行する配備先機器同士がMQTTで通信する場合がある。MQTTによる通信では、MQTTのトピックが通信識別子となり、再配備した分配アプリにも、障害が発生した配備先機器に配備されていたときの同じトピックが設定されている。したがって、代替の配備先機器は、配備された分配アプリに設定されたトピックにより、障害が発生した配備先機器の代わりとして、他の機器との間でMQTTによる通信を行うことができる。 In addition, the deployment destination devices that execute the distribution application may communicate with each other by MQTT. In communication by MQTT, the topic of MQTT becomes the communication identifier, and the same topic as when it was deployed to the deployment destination device where the failure occurred is set in the redeployed distribution application. Therefore, the alternative deployment destination device can perform MQTT communication with another device in place of the failed deployment destination device according to the topic set in the deployed distribution application.
〔その他の実施の形態〕
第2の実施の形態では分散環境上で動作するIoTアプリの部分的な機能を実現する分配アプリの再配備の例を示したが、同様の処理により他のアプリを再配備することも可能である。
[Other embodiments]
In the second embodiment, an example of redeploying a distributed application that realizes a partial function of an IoT application operating in a distributed environment is shown, but it is also possible to redeploy other applications by the same processing. is there.
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。 Although the embodiment has been illustrated above, the configuration of each part shown in the embodiment can be replaced with another having the same function. Moreover, other arbitrary components and processes may be added. Further, any two or more configurations (features) of the above-described embodiments may be combined.
1 接続情報
2 ソフトウェア情報
3a〜3e 機器
10 情報処理装置
11 記憶部
12 処理部
1
Claims (6)
複数の機器が多階層に接続されたシステム内の第1機器の下位の階層の機器として、前記第1機器に第2機器が接続されたことを検知し、
前記複数の機器間の接続関係を示す接続情報に基づいて、前記第1機器に接続されている、前記第2機器と同じ階層の第3機器を検出し、
前記第3機器の監視結果に基づいて、前記第3機器の障害の有無を判定し、
前記第3機器に障害が発生している場合、前記複数の機器それぞれに配信済みのソフトウェアを示すソフトウェア情報に基づいて、前記第3機器に配信済みのソフトウェアを前記第2機器に配信する、
処理を実行させるソフトウェア配信プログラム。 On the computer
It is detected that the second device is connected to the first device as a device in the lower layer of the first device in the system in which a plurality of devices are connected in multiple layers.
Based on the connection information indicating the connection relationship between the plurality of devices, the third device in the same layer as the second device, which is connected to the first device, is detected.
Based on the monitoring result of the third device, the presence or absence of a failure of the third device is determined.
When a failure occurs in the third device, the software delivered to the third device is delivered to the second device based on the software information indicating the software delivered to each of the plurality of devices.
A software distribution program that executes processing.
請求項1記載のソフトウェア配信プログラム。 In the detection of the connection of the second device to the first device, when the connection request message output from the second device to the first device is acquired from the first device, the second device is connected. Detects
The software distribution program according to claim 1.
前記接続要求メッセージに基づいて、前記第1機器と前記第2機器との接続関係を前記接続情報に追加する、
処理を実行させる請求項2記載のソフトウェア配信プログラム。 On the computer,
Based on the connection request message, the connection relationship between the first device and the second device is added to the connection information.
The software distribution program according to claim 2, wherein the process is executed.
請求項1ないし3のいずれかに記載のソフトウェア配信プログラム。 In the determination of the presence or absence of a failure of the third device, a failure transmitted by the first device when the first device detects a failure of the third device by monitoring the state of the third device by the first device. It is determined whether or not the third device has a failure based on whether or not the occurrence notification message has been acquired.
The software distribution program according to any one of claims 1 to 3.
複数の機器が多階層に接続されたシステム内の第1機器の下位の階層の機器として、前記第1機器に第2機器が接続されたことを検知し、
前記複数の機器間の接続関係を示す接続情報に基づいて、前記第1機器に接続されている、前記第2機器と同じ階層の第3機器を検出し、
前記第3機器の監視結果に基づいて、前記第3機器の障害の有無を判定し、
前記第3機器に障害が発生している場合、前記複数の機器それぞれに配信済みのソフトウェアを示すソフトウェア情報に基づいて、前記第3機器に配信済みのソフトウェアを前記第2機器に配信する、
ソフトウェア配信方法。 The computer
It is detected that the second device is connected to the first device as a device in the lower layer of the first device in the system in which a plurality of devices are connected in multiple layers.
Based on the connection information indicating the connection relationship between the plurality of devices, the third device in the same layer as the second device, which is connected to the first device, is detected.
Based on the monitoring result of the third device, the presence or absence of a failure of the third device is determined.
When a failure occurs in the third device, the software delivered to the third device is delivered to the second device based on the software information indicating the software delivered to each of the plurality of devices.
Software distribution method.
前記システム内の第1機器の下位の階層の機器として、前記第1機器に第2機器が接続されたことを検知し、前記接続情報に基づいて、前記第1機器に接続されている、前記第2機器と同じ階層の第3機器を検出し、前記第3機器の監視結果に基づいて、前記第3機器の障害の有無を判定し、前記第3機器に障害が発生している場合、前記ソフトウェア情報に基づいて、前記第3機器に配信済みのソフトウェアを前記第2機器に配信する処理部と、
を有する情報処理装置。 A storage unit that stores connection information indicating a connection relationship between the plurality of devices in a system in which a plurality of devices are connected in multiple layers, and software information indicating software delivered to each of the plurality of devices.
As a lower layer device of the first device in the system, it is detected that the second device is connected to the first device, and the device is connected to the first device based on the connection information. When the third device in the same layer as the second device is detected, the presence or absence of a failure of the third device is determined based on the monitoring result of the third device, and the failure has occurred in the third device. Based on the software information, a processing unit that distributes the software that has been distributed to the third device to the second device, and
Information processing device with.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019047490A JP2020149480A (en) | 2019-03-14 | 2019-03-14 | Software distribution program, software distribution method, and information processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019047490A JP2020149480A (en) | 2019-03-14 | 2019-03-14 | Software distribution program, software distribution method, and information processing device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020149480A true JP2020149480A (en) | 2020-09-17 |
Family
ID=72429702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019047490A Pending JP2020149480A (en) | 2019-03-14 | 2019-03-14 | Software distribution program, software distribution method, and information processing device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020149480A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024111175A1 (en) * | 2022-11-24 | 2024-05-30 | 日立Astemo株式会社 | Network system and network management method |
-
2019
- 2019-03-14 JP JP2019047490A patent/JP2020149480A/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024111175A1 (en) * | 2022-11-24 | 2024-05-30 | 日立Astemo株式会社 | Network system and network management method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106790595B (en) | Docker container active load balancing device and method | |
AU2017261529B2 (en) | Failure resistant distributed computing system | |
US9998323B2 (en) | Datacenter configuration management tool | |
US20160092343A1 (en) | Datacenter management computing system | |
US9268546B2 (en) | Deployment and hosting of platform independent applications | |
CA3060491A1 (en) | Failure resistant distributed computing system | |
US9197720B2 (en) | Deployment and hosting of platform independent applications | |
EP3495946A1 (en) | Server updates | |
US20120131101A1 (en) | Cloud-Processing Management With A Landscape Directory | |
JP2009169860A (en) | Computer system for managing configuration item, and method and computer program therefor | |
CN104221004A (en) | Cluster wide consistent detection of interconnect failures | |
JP2009199528A (en) | Computer system for managing service process including two or more service steps, and method and computer program therefor | |
JP5979986B2 (en) | Distribution system and control method thereof | |
US20160261459A1 (en) | Package dependency maps for distributed computing | |
US9158520B2 (en) | Development of platform independent applications | |
US11354152B2 (en) | Self-evolving microservices | |
JP2016103144A (en) | Virtual machine deployment method, virtual machine deployment program and virtual machine deployment system | |
JP2019101866A (en) | Application update method and program | |
CN115103012B (en) | Geospatial information microservice integration system and method | |
US20130151595A1 (en) | Deployment and hosting of platform independent applications | |
US20160092194A1 (en) | Datacenter platform switching tool | |
CN113656147A (en) | Cluster deployment method, device, equipment and storage medium | |
CN113382077B (en) | Micro-service scheduling method, micro-service scheduling device, computer equipment and storage medium | |
JP2020149480A (en) | Software distribution program, software distribution method, and information processing device | |
CN113419818A (en) | Basic component deployment method, device, server and storage medium |