Using Docker in an industrial monitoring setting

Fiercely
3 min readMar 15, 2017

--

This solution was born after an industrial partner identified a special and focused need. They needed to get information from their production lines in near-real time, through messaging. They already had a working solution, based on SMS, but this solution would not scale within their budget. Since they wanted to increase the monitored events and therefore, the number of messages, the communication costs would grow exponentially. So, in order to fulfill this need, they looked at how to take advantage of internet-based text messaging solutions. Also, the industrial partner had a very short timeframe to put this solution in place.

Using this starting point, we presented a continuous integration and delivery approach for delivering them the solution, making possible for them to define their priorities. In order to make sure they had a predictable and adaptable solution, we also decided to use Docker containers for the main components. By using this, we could deliver the solution in different hardware platforms they might have (e.g. arm, x86 etc).

So, technically speaking, the production lines are using a set of sensors that deliver information through ModBus. This was something they already had in place, but in order to implement the continuous integration and the correspondent system testing, we also created a Docker container that simulates this ModBus and corresponding coils that are generated in the plant. This was a very important decision that we took since it allowed us to test at any time very different configurations and scenarios, making possible to deliver a robust and resilient solution.

Connected to the ModBus, we developed a multi-thread reader engine, delivered on another Docker container, that receives the information from the bus (namely coils), processes them and delivers the message to the messaging system.

Processing the message was one of the challenges in this solution, because we needed to implement a simple but configurable system that would allow the industrial operators to define specific messages for each monitored coil. In this solution, we followed a KISS approach. Instead of trying to define all the different scenarios and perhaps, implementing a rule based system, we decided, with the client, to implement a text-based definition, so that they can define the text that goes into each text message types and the channel they are intended to communicate through. By implementing this, we were able to give the necessary feature to the client and not going into a much more complex technical solution.

In order to achieve this simplicity, we also developed a very simple frontend that allows the operator to define the text for each message type and the channel where it should be delivered.

Because we were using a continuous integration and delivery approach, we were able to deliver fast to the client setting, making it possible for them to test and to change the things that were not working. Also, it allowed us to identify some operational challenges that were not initially identified, like for example, the proxy configuration on the industrial setting that had to be introduced into the solution; or the fact that the system had to be able to be initialized without any manual intervention. All these challenges were identified early in the project, following the continuous integration and delivery patterns.

As a wrap-up for this case study, one very important fact is that we were able to deliver a solution for a real problem, in a real setting. The client is now defining how they can expand this solution to other plants. Also, because we have used a continuous integration and delivery approach, we could deliver earlier and therefore, adjust the solution to their real needs. Finally, for this planned expansion, we are following the same principles, and therefore, if no new features are identified, the deployment will be straightforward and, if new features are identified, our delivery pipeline will handle it. And that is exactly one of the major outcomes from using CI/CD approach — we are now confident that we will deliver this solution to a new setting without problems, including, new features that would be needed.

--

--

Fiercely

We use the most current engineering techniques and tools to ensure our clients’ deliveries are value driven, fast and rock solid