Lade Dir unseren Leitfaden für eine skalierbare Architektur herunter.
Jetzt herunterladenLade Dir unseren Leitfaden für eine skalierbare Architektur herunter.
Jetzt herunterladenMuss ich diesen Berg bezwingen? Eine moderne verteilte Architektur muss nicht in jedem Fall der „Goldweg“ sein. Sind Microservices, Client-Server, SOA und Co unbedingt notwendig? Lohnt sich der Aufwand für große Refactoring-Initiativen? Wir berichten wann Softwarehersteller handeln sollten.
von Romy Walter, Lesezeit: 5 Min.Eine der größten Herausforderungen für Softwarehersteller in der Produktentwicklung stellt die hohe Komplexität eines gewachsenen, monolithischen Systems dar. Dieser Herausforderung wollen wir uns in diesem Artikel annehmen und Euch dabei helfen zu entscheiden, ob es Zeit ist den berühmten ersten Schritt zu wagen.
Zunächst gilt es zu klären, wie eine Alternative zum Status Quo aussehen könnte. Monolithische Ansätze werden auch als klassische oder traditionelle Ansätze bezeichnet. Sie enthalten in einem großen Gesamtsystem alle Funktionalitäten. Das heißt, alle Funktionen werden in einem einzigen Prozess umgesetzt.
Bei verteilten Architekturen (z. B. Microservices, Client-Server oder SOA) hingegen, wird die Software in einzelne Teilsysteme strukturiert, die jeweils eine bestimmte Gruppe von Funktionalitäten beinhalten. Diese Teile werden in einzelne Prozesse gekapselt. Dadurch können die Services unabhängig voneinander entwickelt und betrieben werden. Folglich können die individuellen Teilsysteme ohne negative Auswirkungen auf andere Teilsysteme ausgeführt werden bzw. sind bei einem Ausfall nur Teile des Gesamtsystems betroffen.
Um ein gewachsenes System in eine verteilte Architektur zu überführen, werden beispielsweise Refactorings genutzt. Solche Initiativen können sich u. U. über lange Zeiträume hinweg ziehen. Manchmal bringen sie im ersten Schritt nicht die gewünschte Leichtigkeit und Flexibilität. Bevor Ihr Euch für den einen oder den anderen Pfad entscheidet, solltet Ihr gut überlegen, welche Architektur wirklich zu Euch passt und wie dabei vorzugehen ist.
Wir haben unseren Kollegen Jakob dazu befragt. Jakob ist ein erfahrener Softwareentwickler und hat bereits sowohl in komplexen Systemen gearbeitet, als auch in modernen Softwarearchitekturen und war Teil großer Refactoring-Initiativen.
Seine Antworten haben wir hier für Euch kurz und knapp zusammengefasst:
Zum Abschluss dieses kleinen Exkurses fasst Jakob nochmal seinen persönlichen Standpunkt für Euch zusammen:
Ich persönlich arbeite lieber in verteilten Architekturen, weil es einfacher ist sich in einzelne Teile hineinzudenken. Während der Programmierung habe ich einen definierten Bereich innerhalb dessen ich mich bewegen darf.
Wenn Unternehmen merken, dass ihr Monolith nicht mehr funktioniert, dann gibt es immer die Frage, ob man das komplette System austauschen sollte oder nur einzelne Teile. Ich bin immer dafür erst einzelne kritische Komponenten im Monolithen zu identifizieren und diese dann in Microservices oder andere modulare Strukturen zu überführen.
Einen wichtigen Hinweis habe ich noch. Auch in modularisierten Strukturen müsst Ihr aufpassen, dass Ihr nicht einen verteilten Monolithen baut, in dem plötzlich doch wieder alle Komponenten voneinander abhängen.
Für diejenigen, die sich tiefer in die Thematik einlesen wollen, habe ich noch zwei Empfehlungen von zwei Vorreitern der Entwicklung. „Microservices: Grundlagen flexibler Softwarearchitekturen“ von Eberhard Wolff sowie den Artikel von James Lewis zu Microservices.
Wenn das Gesamtsystem eine solche Komplexität angenommen hat, dass die Wartung des Systems und die Liefergeschwindigkeit neuer Features beeinträchtigt sind, wird es höchste Zeit zum Handeln. Aber Vorsicht, bevor es zu Aktionismus kommt, sollten die richtigen Weichen gestellt werden. Ein strukturiertes Vorgehen und ein objektiver Blick von außen können dabei den Erfolg des Vorhabens bestimmen.
Bist noch unsicher, ob ihr diesen Schritt gehen sollt? Dann lade Dir unsere Leitfaden herunter, lerne die einzelnen Ausprägungen einer Modularisierung kennen und nutze unsere Handlungsempfehlungen für eine erfolgreiche Umsetzung.
Lade Dir unseren Leitfaden für eine skalierbare Architektur herunter.
Jetzt herunterladen