Interview mit Tobias Bayer und Hendrik Still

Microservices: „Einen Hauptvorteil sehen wir in der Symbiose mit Continuous Delivery“

Moritz Hoffmann

Auf der W-JAX 2015 werden sich Tobias Bayer und Hendrik Still (beide inovex GmbH) mit der dunklen Seite der Microservices beschäftigen. Angefangen beim Monitoring über verteilte Transaktionen und die Testbarkeit bis hin zur Service Discovery gibt es einige Herausforderungen zu bewältigen, die neben den Vorzügen von Microservices im Talk eine Rolle spielen werden. Im Vorfeld standen uns die beiden für einige Fragen zur Verfügung…

JAXenter: Trotz des allgemeinen Trends hin zu Microservices steht eine einheitliche Definition des Begriffs nach wie vor aus, was versteht ihr genau darunter?

Tobias Bayer/Hendrik Still: Grundsätzlich verstehen wir unter einer Microservice-Architektur die Zerlegung einer einzelnen Anwendung in ein verteiltes System. Dabei ist es wichtig, dass die Aufteilung der einzelnen Microservices vertikal, also nach einzelnen Geschäftsfunktionen geschieht.

Ein weiterer wichtiger Bestandteil einer Microservice-Architektur ist die Kommunikation über Webprotokolle, wie z.B. HTTP, die von praktisch jeder modernen Programmiersprache einfach genutzt werden können.

JAXenter: Was schätzt ihr besonders an der Microservice-Technologie?

Tobias Bayer/Hendrik Still: Einen Hauptvorteil sehen wir insbesondere in der Symbiose mit Continuous Delivery. Dadurch, dass jeder Microservice, also auch jede Komponente, einzeln deployed werden kann, wird CD auch für umfangreichere Softwareprojekte richtig möglich. Unabhängig voneinander deploybare Services verbessern auch das unabhängige Entwickeln der einzelnen Komponenten und ermöglichen so auch eine bessere Kapselung der Entwicklungsteams.

Ein weiterer Vorteil ist die Möglichkeit, polyglott zu entwickeln. Dadurch können neue Technologien leichter eingesetzt werden, ohne dass die komplette Anwendung neu entwickelt oder überarbeitet werden muss.

JAXenter: In eurem Talk auf der W-JAX 2015 werdet ihr euch mit der „schwierigen Testbarkeit“ und der „Service Discovery“ in Microservices beschäftigen. Wo liegt dabei das Problem?

Tobias Bayer/Hendrik Still: Bei der Fülle von Vorteilen einer Microservice-Architektur übersieht man leicht, dass mit diesem Architekturstil auch eine Reihe von Herausforderungen zu bewältigen sind. Das Thema Service Discovery ist essenziell um Vorteile wie z.B. Skalierbarkeit und Ausfallsicherheit aus den Microservices zu ziehen. Dazu sind zusätzliche technische Komponenten wie eine Service Registry notwendig. Nur so können Instanzen eines Microservice überhaupt zuverlässig aufgefunden werden.

Die schwierige Testbarkeit von Microservices ergibt sich durch die Abhängigkeiten zwischen den einzelnen Services. Will man die Integration zwischen den Services testen, fällt schnell auf, dass dafür nicht nur die zu testenden Services, sondern auch die transitiv abhängigen Services gestartet werden müssen. Spätestens dann wird es wegen dieser Abhängigkeiten jedoch schwierig, seine Microservices unabhängig zu deployen.

W-JAX 2019 Java-Dossier für Software-Architekten

Kostenlos: Java-Dossier für Software-Architekten 2019

Auf über 30 Seiten vermitteln Experten praktisches Know-how zu den neuen Valuetypes in Java 12, dem Einsatz von Service Meshes in Microservices-Projekten, der erfolgreichen Einführung von DevOps-Praktiken im Unternehmen und der nachhaltigen JavaScript-Entwicklung mit Angular und dem WebComponents-Standard.

 

JAXenter: Gibt es Möglichkeiten, sich auf die Probleme von Microservice-Architekturen im Vorfeld eines Projekts einzustellen?

Tobias Bayer/Hendrik Still: Man sollte versuchen, die Herausforderungen verteilter Systeme zu verstehen. Da Softwareentwickler schon seit langem verteilte Systeme entwickeln, gibt es also meistens für jede Problemstellung schon passende Lösungsansätze.

JAXenter: Wie positioniert ihr euch in der von Martin Fowler angeregten und von Stefan Tilkov aufgenommenen Debatte um die Frage, ob Monolithen als Basis von Microservices taugen?

Tobias Bayer/Hendrik Still: Ob man einen “Monolith-First” oder “Microservice-First”-Ansatz verfolgen sollte, kann man wie so oft mit “it depends” beantworten. Dass beide Ansätze möglich sind, haben ja schon einige Projekte bewiesen. Man sollte sich bewusst sein, dass eine verteilte Anwendung gewisse Grundvoraussetzungen hat, die einen schnellen Start im Zweifelsfall eher schwierig machen.

Eventuell ist zum Projektstart für eine neue Anwendung gar nicht sicher, ob die Anwendung Vorteile aus einer Microservice-Architektur ziehen wird. In diesem Fall sollte man eventuell die “Monolith-First” Variante wählen. Wenn sich allerdings abzeichnet, dass die Anwendung von solch einer Architektur stark profitiert, macht es Sinn, die längere Anlaufzeit zu riskieren und gleich mit Microservices zu starten. Dies wird aber sicher nicht in jedem Projekt der Fall sein.

JAXenter: Vielen Dank für das Interview!

 

Tobias Bayer ist Softwarearchitekt und Senior Developer bei der inovex GmbH. Seine Schwerpunkte liegen auf der Entwicklung von Webapplikationen mit Java und mobilen Apps für iOS. Außerdem beschäftigt er sich mit Microservices und funktionaler Programmierung in Clojure.

 

Hendrik Still ist Werkstudent im Bereich Application Development bei der inovex GmbH. Zur Zeit beschäftigt er sich mit den Problemstellungen von Microservices-Architekturen und deren Umsetzung mit Docker.

Geschrieben von
Moritz Hoffmann
Moritz Hoffmann
Moritz Hoffmann hat an der Goethe Universität Soziologie sowie Buch- und Medienpraxis studiert. Er lebt seit acht Jahren in Frankfurt am Main und arbeitet in der Redaktion von Software und Support Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: