Zum Inhalt gehen

Microservice-Architektur mit Java: Vorteile und Herausforderungen für IT-Architekten

Capgemini Karriere
25. Juni 2019

Microservices sind aktuell ein Trendthema in der IT-Architektur – welche Rolle spielt dabei Java? Microservice-Experte Michael Cirikovic berichtet.

Als Managing Solution Architect bei Capgemini in Stuttgart berät Michael Cirikovic Kunden bei der Umsetzung von Migrationsprojekten und Neuentwicklungen von Microservice-Applikationen. Im Interview gibt er Einblicke in die Herausforderungen von IT-Architekten und die Rolle von Java bei Microservices.

Tätigkeit als Managing Solution Architect

Welche Aufgaben übernimmst du als Managing Solution Architect?

Meine Aufgaben bestehen aus einer Mischung aus Beratung und Software-Entwicklung. Als Solution Architekt ist es meine Aufgabe, fachliche Anforderungen des Kunden zu verstehen, daraus technische Lösungen zu entwerfen und deren Umsetzung zu begleiten.

Ich selbst bin Experte für bestimmte technische Themen, im speziellen für Microservices, Cloud, DevOps, Agile, APIs und Java. Wenn diese Themen gefragt sind, komme ich in die Projekte, berate den Kunden und entwickle Lösungsangebote. Zudem helfe ich bei Ausschreibungen, Angebotsphasen, bilde unsere Kollegen aus und halte Vorträge und Workshops.

Auch die Entwicklung von Patterns und Vorgaben für die Entwickler sowie die Dokumentation von der Einigung mit dem Kunden gehören zu meinen Aufgaben.

An welchem Projekten arbeitest du?

Aktuell bin ich technischer Chefarchitekt für die Microservice Migration von einem geschäftskritischen System eines Automobilanbieters in Stuttgart. Dabei geht es um ein zentrales System, das für die Abwicklung von Fahrzeugbestellungen vom Konfigurieren über die Werks-Einsteuerung bis hin zur globalen Auslieferung zuständig ist. Das System wird von Capgemini seit 20 Jahren betreut und soll jetzt auf Microservices migriert werden.

Microservice-Architektur mit Java

Was sind die Vorteile von Microservices?

Viele Systeme mit alten Architekturansätzen – monolithische Anwendungen – werden mit der Zeit immer größer, weil sie kontinuierlich verändert und um neue Funktionalität erweitert werden. Das erhöht die Komplexität und führt zu Code-Entropie, also Unordnung im System. Modulgrenzen verschwimmen, die Kopplung nimmt zu. Microservices versuchen dem entgegen zu wirken, indem Systeme so klein gebaut werden, dass sie nur eine Aufgabe erledigen. Ein Microservice sollte nie größer sein als das, was ein Entwickler in ein bis zwei Wochen komplett verstehen kann.

Dadurch wird alles schneller und agiler: Kleine Dienste können flexibel deployed und Änderungen vollautomatisch getestet werden, ohne, dass ein anderes System davon betroffen ist.
Microservices sind zudem perfekt für die Cloud und können mit DevOps-Ansätzen entwickelt werden.

Was sind besondere Herausforderungen für IT-Architekten bei der Entwicklung von Microservices?

Wenn die Teilsysteme weniger komplex sind, wird die Gesamtkomplexität höher. Für den Entwickler ist es leicht in der Microservice-Welt, für den IT-Architekten wird es kompliziert. Denn er muss z. B. in jedem Dienst einzeln Security machen und sich um Konsistenz und Transaktionen kümmern. Diese bekommt man in einem monolithischen System automatisch.

Eine weitere Herausforderung ist es, Fachprozesse abzubilden. Wenn ich z. B. Ware bezahlt habe und festgestellt wird, dass diese nicht auf Lager ist, wie stellen wir sicher, dass die Abbuchung rückgängig gemacht wird? Ähnlich ist es mit der Fehleranalyse: Wie kriege ich in einem stark verteilten System heraus, an welcher Stelle ein Fehler aufgetreten ist und welches Team den Fehler analysieren muss?

Außerdem ist der Kulturwandel hin zum agilen Arbeiten nach wie vor eine riesige Herausforderung – beim Kunden und innerhalb von Teams.

In welchen Projekten bei Capgemini sind Microservices gefragt?

Wir machen Microservices aller Art und Weise bei Capgemini – für Shopsysteme, Smart Home oder eben im Automobilbereich. Ich habe zum Beispiel auch Microservices für einen digitalen Fahrzeugschlüssel gebaut. Viele Kunden möchten mittlerweile den Microservice-Architektur-Ansatz nutzen und vor allem in nutzernahen Anwendungen ist er sehr sinnvoll.

Welche Rolle spielt Java bei der Implementierung von Microservices?

Java spielt eine große Rolle, weil es momentan einfach noch weltweit der Industriestandard für Anwendungen und Microservices in Unternehmen ist. Die Java-Community ist groß und Java ist seit 15 Jahren die etablierteste Programmiersprache.
Bezüglich Microservices und Java gibt es zwei Trends: Fast jeder Kunde möchte Microservices mit Spring Boot bauen. Das weltweit in der Industrie angewandte Framework ist weit entwickelt und sehr flexibel. Eine gute Alternative, die allerdings weniger genutzt wird, ist Microprofile, eine spezielle Variante von Java EE.

Wie geeignet ist Java EE für Microservices?

Java hat Vor- und Nachteile bei der Microservice-Architektur. Du kannst auf viele Java-erfahrene Entwickler zurückgreifen, hast eine breite Tool-Unterstützung und jahrzehntelange Erfahrung, eine große Verbreitung am Markt und sehr ausgereifte Frameworks. Der Nachteil ist, dass Java mit viel Overhead kommt und dass das Bauen und Testen mit Java etwas aufwändiger ist. Man braucht mehr Hardware und hat einen höheren Speicher- und CPU-Verbrauch, was aber nicht mehr so tragisch ist, da Hardware und CPU relativ günstig sind.

Frameworks wie Microprofile oder Spring Boot nehmen viele der Hauptärgernisse von JEE-Anwendungen weg. Die Java-Welt hat viel getan, um sich an Microservices anzupassen und leichtgewichtigere Anwendungen zu bauen. Die Nachteile lassen sich zwar definitiv nicht ganz wegdenken, aber man kann mittlerweile sehr effizient und schnell damit entwickeln.

Dennoch entwickeln wir bei Capgemini auch Microservices in anderen Sprachen. Vor allem, wenn sehr viele Requests in kurzer Zeit verarbeitet werden müssen, bieten sich neue Technologien an.

Welche Alternativen gibt es zu Java im Bereich Microservice?

Eine Alternative für Java wäre zum Beispiel GO. Diese moderne Programmiersprache ist meist schneller und Ressourcen-sparender als Java für kleine Anwendungen wie Microservices und leicht zu erlernen. Und dann gibt es Plattformen wie das Javascript-basierte NodeJS, das gerade für Aufgaben mit sehr vielen Aufrufen extrem effizient und schnell ist.
Die am stärksten wachsende Alternative ist aber wohl Python. Die Sprache erlebt gerade einen Boom, weil sie im Bereich AI und Maschine Learning die erste Wahl ist und an Universitäten gelehrt wird.

Stellen als Java IT-Architekt bei Capgemini

Was ist für dich das Spannendste an deinen Projekten bei Capgemini?

Als IT-Architekt bei Capgemini sehe ich nicht nur einen, sondern viele Kunden mit ihren Herausforderungen und lerne stetig dazu. In der Regel haben wir bei Capgemini große Projekte und arbeiten für unsere Kunden an unternehmenskritischen Kernsystemen, was ein sehr spannender Aspekt ist.

Welche Qualifikationen und Vorerfahrungen mit Microservice-Architektur sollten Bewerber für den Job des IT-Architekten mitbringen?

Es ist sehr sinnvoll, wenn IT-Architekten Vorerfahrung in der Softwareentwicklung und Programmierung mitbringen. Bei Capgemini entwickeln sich z. B. Softwareingenieure nach einer gewissen Erfahrung zu Solution Architects und IT-Architekten weiter. Speziell für Microservices sollte man verteilte Architekturen verstanden haben und Erfahrungen im Restschnittstellen-Design haben. Wenn jemand dazu noch Erfahrung mit Agile und DevOps mitbringt, wäre das natürlich optimal und unser absoluter Wunschkandidat.

Vielen Dank Michael, für den Einblick in die Microservice-Architekturen mit Java.

Sie sind IT-Architekt und möchten im Bereich Microservices Unternehmen dabei unterstützen, ihre Systeme zu modernisieren? Bewerben Sie sich jetzt als IT-Architekt Integration (w/m/d) oder IT-Architekt / Software Architekt (w/m/d). Mehr Jobs für IT-Architekten und erfahrene Software Engineers finden Sie in unserem Job-Portal.