Monolithische Architektur bedeutet, dass alle Funktionen der Anwendung in einem einzigen, entwickelten und bereitgestellten Code zusammengefasst sind.
Serviceorientierte Architektur (SOA) und insbesondere Mikrodienste — ist ein Ansatz, bei dem die Anwendung aus einer Reihe von Modulen besteht, die über klare Schnittstellen (in der Regel netzwerkbasiert) interagieren.
Wann ist ein Monolith vorteilhaft:
Wann ist SOA vorteilhaft:
Beispielvergleich: Monolith:
public class Application { public static void main(String[] args){ UserService userService = new UserService(); OrderService orderService = new OrderService(); // Logik für Bestellungen, Benutzer — alles in einer Anwendung } }
SOA — Kommunikation über API:
GET /user/42 # Anfrage an den Benutzerservice GET /order/532 # Anfrage an den Bestellservice
Schlüsselfunktionen:
Teilt SOA die Datenbank zwischen den Diensten?
Normalerweise teilen die Dienste Daten zur schwachen Kopplung. Gemeinsame Datenbanken sind in Migrationsphasen akzeptabel, aber idealerweise hat jeder Dienst eine eigene DB.
Ist ein Monolith immer schlechter in der Leistung?
Nein, ein Monolith kann bei kleinen Volumen leistungsfähiger sein, da es keine unnötigen Netzwerkaufrufe und keine Speicherdifferenzierung gibt.
Kann man einen Monolithen "auf einen Schlag" in Mikrodienste umwandeln?
Nein, der Übergang erfolgt normalerweise schrittweise, beginnend mit der Abgrenzung von Kontextgrenzen und der Umwandlung dieser in Dienste.