I am using terminology from more usual Hub & Spokes architectures in an attempt describe what I want to achieve. However, this use-case may be a bit odd, so the terms I am using may be inaccurate. Apologies in advance for that.
Summary
We have multiple independent systems using Ignition (called hub in description below) which will communicate to a shared Ignition sub-system (called spoke in description below). The spoke system acts as a shared system the hubs interact with. It is not collecting data from the individual hubs.
Any potential pitfalls with an architecture like this?
Any recommendations for how to show alarm journal for the spoke onboard the hubs?
More detailed system description and questions below.
Detailed description and questions
Description of our system
We have a use case where we end up having some spoke Ignition gateways that multiple other hub gateways connect to, but where these hubs are completely independent systems.
This spoke system will act as a sub-system to the different hubs. The individual hubs can go in and out of communication range with the spoke system. The hubs will use the spokes as a remote tag provider.
Multiple hubs can talk to the shared spoke system at the same time, but only one hub is "in control" of the spoke system at a time.
The security of the spoke system is considered as weaker than the hub systems.
We want to be able to view alarms and alarm journal for the spoke system on the hub systems, and to be able to acknowledge the spoke systems alarms from there. We will also use the tags to show the perspective views of the spoke system on the hub systems.
Currently we are going for full Ignition on the shared spoke, but we may end up changing that to Edge later on, if that can cover our needs.
Figure above shows three independent hub systems, and two spoke systems they communicate with via WiFi. The servers in each hub system has the same IP, so it is used masquerading on the network going out on WiFi.
Pitfalls?
Is there any known pitfalls with this architecture, or is this something that is already in use by others?
I have done some initial testing using full Ignition version for the spoke system, and it seems to work fine so far.
Alarm journal
We need be able to see view the alarm journal for the spoke system at the hub systems. Here I see two possible options.
-
Remote query-only DB connection from the hub to the spoke.
-
Add additional Journal on each hub system, and have the spoke connect to this as a remote journal. The Store and Forward system on the spoke system will then ensure that each of the hub systems get their copy of the spoke systems journal updated when they are back in communication range.
Option 1 at first glance seems like the cleaner option, but there are some concerns that Ignition would implicitly trust a DB connection as safe, and therefore have less protections in place than if we go indirectly via e.g. the Journal system instead.
Any thoughts regarding potential security concurs with Option 1?
Option 2 has been tested and seems to work fine. But it seems a bit round about having to try and make a copy of spoke systems alarm list on the hub systems just using store and forward.
Potential minor disadvantage I see here is we are keeping multiple copies of the alarm journal for the spoke system, and we may run into situation where the different hub systems have a different journal to represent the spoke system.
Potential advantage could be that network usage would be less when browsing alarm journal (not tested how much data it actually is yet), and also the possibility to view journal when outside communication range.
Is there a third option where we could e.g. just connect a journal in the hub system to the journal system on the spoke?
Keep in mind that the spoke system is considered less secure (and less important), and we do not want this to become a potential attack vector for the hub systems.