System architecture
This section describes the data flow and provides a system architecture diagram.
GDS uses Microsoft Orleans for business logic. This provides many features out of the box which are useful to build a well scalable system. Some advantages:
-
Scales easily (increasing the count of silos)
-
Maps real devices to grains (keeping business logic clear)
-
Provides RPC calls via grains
-
Helps when working with concurrent flows (grains provide locking)
-
Handles internal communication via Microsoft Orleans
-
Supports different solutions for messaging
The following services are included in the GDS system.
-
Silo: This is the business layer that hosts the Orleans silos.
-
API Gateway: Entry point to the system from the user interface (UI). The API Gateway uses the Microsoft Orleans client to access the business layer in the silo.
-
IPL UI: This is based on the Itron Presentation Layer user interface framework to host the front-end application.
-
Message relayer: This is a helper service that relays messages from the MQTT broker to Microsoft Orleans. Only one service instance can join to one MQTT broker. This is a single point of failure in the design. Every utility has a separate MQTT broker and all of them are available by this service. The service allows it to run per utility.
-
Test API Gateway: Used for L3 tests because not all of the required services are available publicly, for example the internal test MQTT brokers are not available from ADS pipelines.
-
Simulator: This is used to simulate some business flows. It can emulate the gas remote disconnect device by handling the OWOC (OpenWay Operations Center) requests or it can send MQTT messages instead of methane sensors.