Skip to main content

Intro

The Need for Modular Real-Time Systems

In monolithic architectures as programmable logic controllers (PLCs), the functional elements form an inseparable, homogeneous structure whose components cannot be implemented independently of each other. Software monoliths are therefore modularised internally (e.g. using packages and classes), but the internal components are closely interdependent. This mainly affects older software systems. However, modular architectural approaches can also lead to monolithic structures if unplanned dependencies between individual modules creep in over time.

Disadvantages of Monolithic Systems

Monolithic systems can have some disadvantages:

  • Difficult maintenance and extension: monolithic software systems are difficult to maintain and extend because individual components can only be adapted with great effort due to their close coupling. Although monolithic architectures have internal modularisation, unwanted dependencies often develop in larger systems nevertheless. Changes to components can thus lead to unforeseeable side effects elsewhere.
  • Low reusability of components: The low degree of modularisation reduces the reusability of individual components.
  • Holistic deployment: The deployment of larger monolithic applications can lead to problems. Even the smallest change to a component can require the entire application to be redeployed.
  • Poor scalability: The low granularity of a monolithic application results in disadvantages when scaling. For example, scaling by replicating the entire application leads to increased costs compared to scaling systems in which individual components can be scaled.
  • Dependency Hell: Adding and updating libraries leads to inconsistent systems that are either not executable or whose behaviour is, in the worst case, faulty. The disadvantages mentioned are mainly due to the low or tightly coupled modularisation of monolithic software systems. Modular architectural concepts such as service-oriented architectures and microservices are used to counteract these problems.

To tackle these issues we provide the following solutions: