Lars Röwekamp open knowledge GmbH

„Der Schritt weg vom Java-EE-Monolith hin zu einer Microservices-basierten Anwendung stellt deutlich mehr Anforderungen an Entwickler und Architekten als nur das Erlernen neuer APIs. Möchte man in den Genuss der positiven Effekte einer Microservices-basierten Architektur kommen, muss man sich intensiv mit den neuen Herausforderungen auseinandersetzen, die sich als direktes Resultat der Verteiltheit des Systems und des damit einhergehendens Fehlens einer zentralen Laufzeitumgebung ergeben.“

Microservices-basierte Architekturen sind erste Wahl, wenn es um die Realisierung von Cloud-nativen Anwendungen geht. Sie verkürzen die Time to Market neuer Features, indem diese unabhängig voneinander entwickelt, getestet und produktiv gestellt werden können. Was aber bedeutet diese schöne neue Welt für einen gestandenen Java-Enterprise-Entwickler oder -Architekten? Kann das über Jahre aufgebaute Wissen über Methodik und Technologie weiter angewandt werden oder ist ein Neuanfang notwendig?

Die Umstellung vom Monolith hin zu Microservices bringt – ein passendes Service-Design vorausgesetzt – eine Menge Vorteile mit sich. Allen voran eine Reduzierung der fachlichen Komplexität der einzelnen Services sowie eine Unabhängigkeit der einzelnen Service-Teams bezüglich der Entwicklung und Bereitstellung ihrer Services. Gleichzeitig geht mit diesen Vorteilen aber auch eine Reihe neuer Herausforderungen einher, die bei den involvierten Entwicklern ein Umdenken im Vorgehensmodell und bei der Umsetzung erforderlich machen.

Im Folgenden werden die wesentlichen Herausforderungen aufgezeigt und passende Lösungsansätze skizziert. Wie sich diese Lösungsansätze mit den beiden Java Microservices Frameworks Spring Boot und MicroProfile realisieren lassen, zeigt der Artikel „Java Microservices im Praxischeck“ in diesem Heft.

Warum Microservices?

Die kaum zu beherrschenden Herausforderungen, die mit der Umsetzung und Wartung großer Systeme einhergehen, haben den klassischen Monolith in den letzten Jahren mehr und mehr in Richtung Abstellgleis gedrängt. Heutige Architekturen müssen Agilität in der Entwicklung und der Bereitstellung garantieren. Um dies zu gewährleisten, wird die Anwendung in kleinere, auf fachliche Domänen fokussierte Services zerlegt, die von eigenständigen Teams entsprechend der Business Needs konzipiert und umgesetzt werden können.

Richtig durchgeführtes Microservices-Design, d. h. eines, das bewährte Patterns wie Single Responsibility, Separation of Concerns, Lightweight Async Communication oder Share Nothing berücksichtigt, erzeugt eine Gruppe lose gekoppelter Services. Diese können unabhängig voneinander entwickelt, erweitert, ersetzt, getestet und skaliert werden.

Die Zerlegung eines Monolithen in unabhängige Services als Ganzes oder auch nur in Teilen bringt dabei viele Vorteile mit sich. Jeder Service für sich deckt lediglich eine überschaubare und somit leichter zu verstehende und umzusetzende Fachlichkeit ab. Lokale Änderungen können ohne das Risiko negativer Seiteneffekte auf die restliche Anwendung durchgeführt werden. Fehler werden per Definition durch die Grenzen des Service eingedämmt. Die Time to Market für die Realisierung neuer fachlicher Anforderungen kann dank der Ermöglichung hoher Agilität drastisch reduziert werden.

Leider bringt eine Anwendung, die aus Dutzenden oder gar Hunderten von Microservices besteht, nicht nur Vorteile, sondern auch neue Herausforderungen mit sich. Denn all die Aspekte, die vormals bei einer monolithischen Anwendung innerhalb eines Application Servers und somit zentral abgehandelt werden konnten, gilt es nun in einer stark verteilten Umgebung zu beherrschen. Management, Monitoring und Security stehen ebenso auf der To-do-Liste der neuen Herausforderungen wie das dynamische Auffinden und Ansprechen von Services oder aber die Kommunikation über ein unzuverlässiges Netzwerk und deren Kompensation im Falle auftretender Probleme.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 6.19 - "Was kommt nach Java EE?"

Alle Infos zum Heft
579889781Vom JEE-Monolith zu Microservices
X
- Gib Deinen Standort ein -
- or -