Architektur

Veröffentlicht am 2023-08-22 • 12 Min. Lesezeit

Moderne Softwarearchitektur: Vom Monolith zu Microservices

Banner

Historisch gewachsene Enterprise-Architekturen bestehen oft aus monolithischen Kernsystemen. Diese Systeme laufen zwar stabil, schränken aber die Agilität ein, verlangsamen Releases und bergen hohe Risiken bei Anpassungen. Die Ablösung des Monolithen ist unvermeidbar, muss aber im laufenden Betrieb erfolgen.

Das Strangler-Fig-Pattern

Ein bewährter Migrationsansatz ist das Strangler-Fig-Pattern. Statt eines riskanten „Big-Bang“-Releases werden Funktionen schrittweise aus dem Monolithen herausgelöst. Neue Features entstehen als Microservices und werden über ein API-Gateway angebunden. Der Monolith schrumpft sukzessive, bis er komplett abgeschaltet werden kann.

Die Zerlegung eines Unternehmensmonolithen ist keine einfache Aufgabe der Codeaufteilung. Entwicklungsteams müssen logische Domänengrenzen identifizieren und klare API-Verträge erstellen, damit Services sich unabhängig entwickeln können, ohne verteilte Transaktionsfehler zu verursachen.

Inbound RequestsAPI GatewayAlte PfadeLegacy-Monolith (Strangled)Neue PfadeModerne Microservices(Domain A, Domain B, Domain C)

Architektonische Eckpfeiler

Ein moderner Übergang erfordert:

  • Domain-Driven Design (DDD): Definition klarer Service-Grenzen anhand von Geschäftsprozessen, nicht nach technischen Kriterien.
  • Event-Driven Integration: Entkopplung der Services über asynchrone Message-Broker (z. B. Kafka) zur Steigerung der Ausfallsicherheit.
  • Zentrale Observability: Verteiltes Tracing und strukturiertes Logging zur schnellen Fehleranalyse in verteilten Systemen.

Das Prinzip „Datenbank pro Service“

Ein Hindernis bei der Migration ist die Datenbankkopplung. Monolithen teilen sich oft eine riesige relationale Datenbank. Im modernen Design gilt das Prinzip „Datenbank pro Service“. Jeder Dienst besitzt seine eigenen Daten und kommuniziert asynchron über einen Event-Bus.

Entkopplungs-Lebenszyklus

Der Übergang zu Microservices erfordert einen stufenweisen Ansatz zur Entkopplung von Datenbanken, zur Extraktion der Geschäftslogik und zur Einführung von Routing-Proxys.

DB entkoppelnLogik extrahierenAPI-Gateway bauenTraffic umschalten
Datenbank-pro-Service PatternBestell-ServiceBestell-DBRechnungs-ServiceRechnungs-DBKafka Event-Bus (Asynchron)

Entwicklungsgeschwindigkeit freisetzen

Durch die Entkopplung des Monolithen in eigenständige Services können Teams unabhängig voneinander entwickeln, testen und deployen. Dies senkt den Abstimmungsbedarf, erhöht die Release-Frequenz und isoliert Fehler im System.

Microservices lösen organisatorische Skalierungsprobleme, nicht nur technische. Einen Monolithen zu zerlegen, ohne zuvor in Grenzen und Observability zu investieren, tauscht nur eine Komplexität gegen eine schwierigere, verteilte ein.

← Zurück zum Blog