Microservices und monolithische Architektur
Monolithische Architektur
Monolithische Architektur ist ein Softwareentwicklungsmuster, bei dem eine Anwendung mit einer einzigen Codebasis, einem einzigen Build-System, einer einzigen ausführbaren Binärdatei und mehreren Modulen für geschäftliche oder technische Funktionen erstellt wird. Die Komponenten arbeiten zusammen und teilen sich denselben Speicherplatz und dieselben Ressourcen. Aus der Definition von monolithisch folgt, dass eine monolithische Anwendung eine zusammenhängende Codeeinheit ist (griech. mono = „allein“, „einzig“, „ein“ + griech. lithos = „Stein“ => einzelner Steinblock bzw. aus nur einem Stein gemeißeltes, monumentales Bildwerk)

Monolitische Architektur einer Webanwendung
Obwohl
der Code in Klassen und Pakete unterteilt sein kann und eine gute
Struktur aufweisen sollte, wird er nicht in Module zur separaten Kompilierung
aufgeteilt und funktioniert als isolierte Einheit, wobei die Komponenten der Anwendung durch die Verwendung interner Prozeduren leicht miteinander kommunizieren können.
Der
Code wird, sobald er zur Freigabe bereit ist, in einer einzigen Version
an alle Knotenpunkte gleichzeitig ausgeliefert. Um die Verteilung hier durchzuführen, ist es oft notwendig, das
gesamte System anzuhalten, die Software auszurollen und dann neu zu
starten.
Die Skalierung einer Komponente erfordert die Skalierung der gesamten
Anwendung, da es sich um eine Integration von kleinen Teilen handelt,
die nicht unabhängig voneinander funktionieren können.
Dieser Ansatz wurde jahrelang für die Entwicklung von Webanwendungen verwendet, da man sich auf Desktop-Geräte mit Browsern konzentrierte, die keine APIs (application platform interfaces) benötigten.
Microservices-Architektur
Eine Anwendung wird mit jeder Iteration größer, ist schwieriger zu verwalten und braucht länger, um zu starten. Aus diesem Grund wird in letzter Zeit für große Webanwendungen zunehmend das Microservices-Pattern verwendet:
Microservices-Architektur
Die Microservices-Architektur ist im Gegensatz zur monolithischen
Architektur eine Sammlung von mehreren lose gekoppelten Diensten. Diese
sogenannten Microservices verwenden eine leichtgewichtige
Standardkommunikation (RESTful API = HTTP + meist JSON) und bilden als
zusammenhängende Lösung eine Webanwendung.