Overview

My API

System Designs

DienstleistungenKontaktEnergieausgleichAnsprechpartnerImpressum


Three different system architectures



1. Monolithic System with one data source

In a monolithic architecture, a single application exists on the server side, containing the application's entire API.

An advantage of this architectural approach is the application's low complexity.

Disadvantages include inefficient scalability and the fact that the entire application must be shut down to install a new version. Under high server load, an additional monolith must be started to handle requests from the many clients.

A monolith is generally the first choice when launching new software. This approach is preferable when the expected server load is not yet clear, as it avoids unnecessary complexity.


2. Distributed System with one shared data source

In a distributed architecture with a shared database, multiple applications exist on the server side that collectively constitute the application's entire API.

An advantage of this architectural variant is the improved scalability of the server application. For instance, in the case of an online store, there might be three separate applications handling products, customers, and orders. Product data is typically maintained by only a few employees; consequently, the product API sees significantly less traffic than, say, the order API in a busy store. During peak times, only additional instances of the order module need to be launched, while the product module continues to run with just a single instance. Another advantage is that the entire application landscape does not need to be shut down. If the product module requires an update, for example, customers can still place orders—a clear benefit for the store's revenue.

A disadvantage of this architecture is the increased complexity on the server side. Furthermore, despite distributing the API across multiple modules, the shared database can become a bottleneck, as it receives requests from all the server modules' APIs. However, the data remains synchronized thanks to the database's consistency mechanisms.

This architecture makes sense when the load varies significantly across the different module APIs. This can justify the effort of managing multiple applications, as opposed to using a monolithic architecture.


3. Distributed System with synchronized data sources

The distributed architecture with multiple databases, also known as classic microservice architecture, has the highest complexity.

The advantage of this architecture variant is the high scalability of the server landscape. The additional distribution of the database model can eliminate the potential bottleneck of the shared database architecture.

The disadvantage of this architecture is the introduction of asynchrony between the databases. The data is only eventually consistent at any given time. The consistency between the databases is only established with a time delay via a so-called message broker. This can result in clients receiving conflicting information. For example, there could be 15 reviews for a product on a shop website, even though the headline says 14 reviews, because the 15th review was just written by me. This asynchrony can be unpleasant, but tolerable. However, it can also be unacceptable when it comes to sensor data in a technical device, for example, where the sensor value accurate to the second is required for real-time control. In this case, synchrony must be enforced. This then comes at the expense of the availability of the server landscape.

The microservice architecture should only be used if the framework conditions make it absolutely necessary due to an extremely large number of API clients.


3.1 Module Coupling

(1)(2)(3)(4)(5)(6)(7)(8)Module
4.000.000.000.003.000.000.000.00(1) FahrzeugService
0.004.000.000.003.001.000.000.00(2) AufgabeService
0.000.004.000.002.000.000.000.00(3) LehrgangService
0.000.000.003.001.000.000.000.00(4) LandService
1.001.001.001.003.001.001.002.00(5) FeuerwehrService
0.001.000.000.001.003.000.000.00(6) EinsatzService
0.000.000.000.002.000.003.000.00(7) SportDisziplinService
0.000.000.000.002.000.000.003.00(8) SchutzpatronService

3.2 Normalized Module Coupling

(1)(2)(3)(4)(5)(6)(7)(8)Module
0.570.000.000.000.430.000.000.00(1) FahrzeugService
0.000.500.000.000.370.120.000.00(2) AufgabeService
0.000.000.670.000.330.000.000.00(3) LehrgangService
0.000.000.000.750.250.000.000.00(4) LandService
0.090.090.090.090.270.090.090.18(5) FeuerwehrService
0.000.200.000.000.200.600.000.00(6) EinsatzService
0.000.000.000.000.400.000.600.00(7) SportDisziplinService
0.000.000.000.000.400.000.000.60(8) SchutzpatronService

3.3 Coupling Analysis

Modules8
Global Entities27
Min. Entities per Module3
Max. Entities per Module4
Average Entities per Module3.38
Local-only Entities9
Distributed Entities18
Transfer Entities24
Inter-Process-Transfers16
Max-Possible-Process-Transfers56
Transfer Effort28.6
Isolation Quality11.1




Overview

My API

System Designs

DienstleistungenKontaktEnergieausgleichAnsprechpartnerImpressum