Microservices are a much-noticed topic these days. In this article I would like to explain the crucial role microservices play in the industry 4.0 environment.
The basics of Industrie 4.0
First, I want to clarify the value proposition of Industry 4.0. As I show in this article, Industrie 4.0 is about evolving quicker than competition.
The digitalization and automatization of factories, by the help of emerging technologies, has a disruptive character. Leading to a non-linear increase in evolvement speed.
Industrial companies that go on this journey will produce at lower cost, higher quality and take better control over their whole supply chain.
Three pillars form the foundation of this change:
- Technology and
This article lays focus on the software pillar. However, it will not discuss software build or buy decisions. This is another topic.
The software pillar
The previous chapter made clear, that companies which take Industrie 4.0 seriously, need speed in all three foundation pillars.
The software pillar can be divided into software and software architecture.
To explain the difference between software and software architecture, I often use the metaphor of houses and cities – thanks Sam Newman!
Making or buying software is like building or buying a house. However, building houses without an overall context (no city plan) will probably lead to favelas.
Transferred to the IT/OT domain, this leads to software islands that are very inflexible. Typically, changes in this scenario are costly and slow.
Monoliths and Microservices
In fact, Industrie 4.0 needs the exact opposite: flexibility and speed. Therefore, the suitable software architecture has to fit at least the following non-functional requirements:
- Flexibility / Scalability
To anticipate: The software architecture style microservices fits all of them. However, in the past corporate IT landscapes were shaped by big monolithic systems.
In simple terms, monolithic software, on the one hand, implements all the functionalities in one large application. An example are the typical ERP or ME systems we often see today.
On the other hand microservices try to split applications in smaller, reasonable pieces. Those pieces will be put together to bigger applications – like a toolbox.
Basically monoliths and microservices are both (valid) ways to build applications.
Therefore, I‘d like to explain why the usage of microservices is very helpful on the journey towards Industrie 4.0.
Flexibility, Robustness and Speed
Microservices go hand in hand with Domain-Driven-Design (DDD).
DDD describes a way of building software. The most important point is, that software will be consequently built from the perspective of a certain domain.
There is no standard which describes how a microservice must look like.
Nevertheless, microservices today often share the same paradigms.
Microservices should be isolated from the concrete programming language and environment. Usually this is done with docker, a container virtualizer.
Using Microservices, it is much more important to focus on the interfaces of each service.
The interfaces, also known as API, are typically web based. REST is very common.
Good interfaces, form the basis for a flexible and robust software architecture, that will enable the creation of better software in shorter times.
Domain-Driven-Design and agile forms of organization, like scrum, support this process.
The introduction of a suitable software architecture is crucial for a successful digital transformation of factories. Otherwise, as „software eats the world“, the risk is high that some companies end up in an IT corset.
The other side of the medal
I don’t want to glorify microservices as a magic bullet.
Of course there are also disadvantages when using microservices.
One example is the increased complexity. In the beginning, it will always be faster to build the monolith. In the long run, however, the monolith will become bigger, slower and often also more error-prone.
But building and maintaining distributed systems is nothing for beginners. Operating more than 20 microservices will show the need for an application management and orchestration system like Kubernetes.
Despite the mentioned drawbacks I strongly recommend the usage of microservices for the software pillar in the Industrie 4.0 scenario.
They bring all the required non-functional requirements like scalability, industrial robustness (when done right) and most important: speed. With microservices it is possible to have shorter release cycles, do updates during operation and build resilient systems.
This article covered only part of the surface of a huge, complex topic: Software Architecture for Industry 4.0.
homo-digitalis.net will be the place for further articles of this kind in the future.
Header Image Source: Pixabay, Pixabay License