Slide 1

Slide 1 text

INFODECK Self-Contained Systems I N F O D E C K

Slide 2

Slide 2 text

A monolith contains numerous things inside of a single system …

Slide 3

Slide 3 text

Various Domains

Slide 4

Slide 4 text

User interface Business logic Persistence

Slide 5

Slide 5 text

… as well as a lot of modules, components, frameworks and libraries.

Slide 6

Slide 6 text

With all these layers in one place, a monolith tends to grow.

Slide 7

Slide 7 text

With all these layers in one place, a monolith tends to grow.

Slide 8

Slide 8 text

If you cut a monolithic system along its very domains …

Slide 9

Slide 9 text

… and wrap every domain in a separate, replaceable web application …

Slide 10

Slide 10 text

… then that application can be referred to as a self-contained system (SCS).

Slide 11

Slide 11 text

On its outside, an SCS is a decentralized unit that is communicating with other systems via RESTful HTTP or lightweight messaging.

Slide 12

Slide 12 text

Therefore self-contained systems can be individually developed for different platforms.

Slide 13

Slide 13 text

An SCS contains its own user interface, specific business logic and separate data storage

Slide 14

Slide 14 text

The user interface consists of web technologies that are composed according to ROCA principles.

Slide 15

Slide 15 text

Besides a web interface a self-contained system can provide an optional API.

Slide 16

Slide 16 text

The business logic part only solves problems that arise in its core domain. This logic is only shared with other systems over a well defined interface.

Slide 17

Slide 17 text

The business logic can consist of microservices to solve domain specific problems.

Slide 18

Slide 18 text

Every SCS brings its own data storage and with it redundant data depending on the context and domain.

Slide 19

Slide 19 text

These redundancies are tolerable as long as the sovereignty of data by its owning system is not undermined.

Slide 20

Slide 20 text

This enables polyglot persistence, which means a database can be chosen to solve a domain specific problem rather than to fulfill a technical urge. Neo4J Oracle CouchDB

Slide 21

Slide 21 text

Inside of a self-contained system a bunch of technical decisions can be made independently from other systems, such as programming language, frameworks, tooling or workflow.

Slide 22

Slide 22 text

The manageable domain specific scope enables the development, operation and maintenance of an SCS by a single team. Team 1 Team 3 Team 2

Slide 23

Slide 23 text

Self-contained Systems should be integrated over their web interfaces to minimize coupling to other systems.

Slide 24

Slide 24 text

Therefore simple hyperlinks can be used to navigate between systems. System 1 System 2

Slide 25

Slide 25 text

A redirection can be used to ensure navigation works in both directions. System 1 System 2

Slide 26

Slide 26 text

Hyperlinks can also support the dynamic inclusion of content that is served by another application into the web interface of a self-contained system. System 1 System 2

Slide 27

Slide 27 text

To further minimize coupling to other systems, synchronous remote calls inside the business logic should be avoided.

Slide 28

Slide 28 text

Instead remote API calls should be handled asynchronously to reduce dependencies and prevent error cascades.

Slide 29

Slide 29 text

This implies that – depending on the desired rate of updates – the data model’s consistency guarantees are relaxed.

Slide 30

Slide 30 text

An integrated system of systems like this has many benefits.

Slide 31

Slide 31 text

Overall resilience is improved through loosely coupled, replaceable systems.

Slide 32

Slide 32 text

Some systems can be individually scaled to serve varying demands.

Slide 33

Slide 33 text

It is not necessary to perform a risky big bang release to migrate an outdated, monolithic system into a system of systems. Version 1

Slide 34

Slide 34 text

It is not necessary to perform a risky big bang release to migrate an outdated, monolithic system into a system of systems. Version 2

Slide 35

Slide 35 text

Instead a migration can happen in small, manageable steps which minimize the risk of failure and lead to an evolutionary modernization of big and complex systems.

Slide 36

Slide 36 text

Instead a migration can happen in small, manageable steps which minimize the risk of failure and lead to an evolutionary modernization of big and complex systems.

Slide 37

Slide 37 text

In reality a system of systems consists of individually developed software and standard products.

Slide 38

Slide 38 text

A product that fits well in a system of systems can be chosen by the following aspects: It has to solve a defined set of tasks and provide the same integration mechanisms that a self-contained system offers.

Slide 39

Slide 39 text

This ensures that products can be replaced safely by other products once their lifetime has ended.

Slide 40

Slide 40 text

This ensures that products can be replaced safely by other products once their lifetime has ended.

Slide 41

Slide 41 text

If a product with such integration mechanisms can not be found, it should at least be possible to extend that product with uniform interfaces that integrate well with the rest of the system.

Slide 42

Slide 42 text

Krischerstr. 100 40789 Monheim am Rhein Germany +49 2173 3366-0 Ohlauer Str. 43 10999 Berlin Germany +49 2173 3366-0 Ludwigstr. 180E 63067 Offenbach Germany +49 2173 3366-0 Kreuzstr. 16 80331 München Germany +49 2173 3366-0 Hermannstrasse 13 20095 Hamburg Germany +49 2173 3366-0 Gewerbestr. 11 CH-6330 Cham Switzerland +41 41 743 0116 innoQ Deutschland GmbH innoQ Schweiz GmbH www.innoq.com You can find more interesting content about self- contained systems, microservices, monoliths, REST or ROCA at https://www.innoq.com If you have questions or feedback please do not hesitate to contact us [email protected]