Veröffentlicht am 2023-08-22 • 12 Min. Lesezeit
Moderne Softwarearchitektur: Vom Monolith zu Microservices
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.
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.
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.