Architecture
6 minute read
The United Manufacturing Hub at its core is a Helm Chart for Kubernetes consisting of several microservices and open source 3rd party applications, such as Node-RED and Grafana. This Helm Chart can be deployed in various environments, from edge devices and virtual machines to managed Kubernetes offerings. In large-scale deployments, you find typically a combination out of all these deployment options.
In this chapter, we’ll explore the various microservices and applications that make up the United Manufacturing Hub, and how they work together to help you extract, contextualize, store, and visualize data from your shop floor.
Simulators
The United Manufacturing Hub includes several simulators to generate data during development and testing.
Microservices
- iotsensorsmqtt simulates data in three different MQTT topics, providing a simple way to test and visualize MQTT data streams.
- packml-simulator simulates a PackML machine which sends and receives MQTT messages
- opcua-simulator simulates an OPC-UA server, which can then be used to test connectivity of OPC-UA clients and to generate sample data for OPC-UA clients
Data connectivity microservices
The United Manufacturing Hub includes microservices that extract data from the shop floor and push it into the Unified Namespace. Additionally, you can deploy your own microservices or third-party solutions directly into the Kubernetes cluster using the custom microservice feature. To learn more about third-party solutions, check out our extensive tutorials on our learning hub
Microservices
- sensorconnect automatically reads out IO-Link Master and their connected sensors, and pushes the data to the message broker.
- barcodereader connects to USB barcode reader devices and pushes the data to the message broker.
- Node-RED is a versatile tool with many community plugins and allows access to machine PLCs or connections with other systems on the shopfloor. It plays an important role and is explained in the next section.
Node-RED: connectivity & contextualization
Node-RED is not just a tool for connectivity, but also for stream processing and data contextualization. It is often used to extract data from the message broker, reformat the event, and push it back into a different topic, such as the UMH datamodel.
In addition to the built-in microservices, third-party contextualization solutions can be deployed similarly to data connectivity microservices. For more information on these solutions, check out our extensive tutorials on our learning hub. In addition to the built-in microservices, third-party contextualization solutions can be deployed similarly to data connectivity microservices. For more information on these solutions, check out our extensive tutorials on our learning hub.
Microservices
- Node-RED is a programming tool that can wire together hardware devices, APIs, and online services.
Unified Namespace
At the core of the United Manufacturing Hub lies the Unified Namespace, which serves as the central source of truth for all events and messages occurring on your shop floor. The Unified Namespace is implemented using two message brokers: HiveMQ for MQTT and Apache Kafka. MQTT is used to receive data from IoT devices on the shop floor because it excels at handling a large number of unreliable connections. On the other hand, Kafka is used to enable communication between the microservices, leveraging its large-scale data processing capabilities.
The data between both brokers is bridged automatically using the mqtt-to-kafka microservice, allowing you to send data to MQTT and process it reliably in Kafka.
If you’re curious about the benefits of this dual approach to MQTT/Kafka, check out our blog article about Tools & Techniques for Scalable Dataprocessing in Industrial IoT.
For more information on the Unified Namespace feature and how to use it, check out the detailed description of the Unified Namespace feature.
Microservices
- HiveMQ is an MQTT broker used for receiving data from IoT devices on the shop floor. It excels at handling large numbers of unreliable connections.
- Apache Kafka is a distributed streaming platform used for communication between microservices. It offers large-scale data processing capabilities.
- mqtt-kafka-bridge is a microservice that bridges messages between MQTT and Kafka, allowing you to send data to MQTT and process them reliably in Kafka.
- kafka-bridge a microservice that bridges messages between multiple Kafka instances.
- console is a web-based user interface for Kafka, which provides a graphical view of topics and messages.
Historian / data storage and visualization
The United Manufacturing Hub stores events according to our datamodel. These events are automatically stored in TimescaleDB, an open-source time-series SQL database. From there, you can access the stored data using Grafana, a visualization and analytics software. With Grafana, you can perform on-the-fly data analysis by executing simple min, max, and avg on tags, or extended KPI calculations such as OEE. These calculations can be selected in the umh-datasource microservice.
For more information on the Historian or Analytics feature and how to use it, check out the detailed description of the Historian feature or the Analytics features.
Microservices
- kafka-to-postgresql stores data in selected topics from the Kafka broker in a PostgreSQL compatible database such as TimescaleDB.
- TimescaleDB, which is an open-source time-series SQL database
- factoryinsight provides REST endpoints to fetch data and calculate KPIs
- Grafana is a visualization and analytics software
- umh-datasource is a plugin providing access factoryinsight
- redis is an in-memory data structure store, used for cache.
Custom Microservices
The Helm Chart allows you to add your own microservices or Docker containers to the United Manufacturing Hub. These can be used, for example, to connect with third-party systems or to analyze the data. Additionally, you can deploy any other third-party application as long as it is available as a Helm Chart, Kubernetes resource, or Docker Compose (which can be converted to Kubernetes resources).