Suche
Interview mit Kai Tödter

Microservices – nicht nur an den Nutzen denken

Gabriela Motroc

Microservices sind im Moment ein trendiger Architekturstil, aber sie sind auch eine flexible und dennoch solide Grundlage für Software. In diesem Interview beschreibt DevOpsCon-Sprecher Kai Tödter einige der Vor- und Nachteile von Microservices. Außerdem erklärt er, warum Cloud Computing eine natürliche Unterstützung für eine Microservices-Architektur ist.

Dieses Interview ist im Zuge der JAX London entstanden. Das englische Original finden Sie auf JAXenter.com

JAXenter: Viele Leute springen auf den Zug der Microservices, ohne einen klares Ziel zu verfolgen. Wie wichtig ist es, sich die Frage zu stellen: „Soll ich Microservices nutzen?“

Kai Tödter: Oft werden Software-Architekturstile nur deshalb verwendet, weil sie angesagt sind. Deshalb ist es sehr wichtig, sich diese Frage zu stellen. Es gibt viele Gründe für den Einsatz von Microservice-basierten Architekturen, aber es gibt auch immer Kosten, die nie ignoriert werden sollten.

JAXenter: Wie können Microservices – richtig eingesetzt – Flexibilität bei der Entscheidung bieten, wie sich die Ressourcen eines Projekts optimal nutzen lassen?

Kai Tödter: Einer der Vorteile einer Microservice-basierten Architektur besteht darin, dass kleine Teams vollständig für einen einzelnen Microservice verantwortlich sind. So können die Teammitglieder entscheiden, welcher Technologie-Stack für die Implementierung des Microservice am besten geeignet ist. Die Teams sind flexibler und können von vorhandenem Wissen und vorhandenen Fähigkeiten profitieren.

JAXenter: Wie sieht die richtige Art und Weise aus, Microservices zu nutzen?

Kai Tödter: Es gibt keinen generellen richtigen Weg, es kommt immer auf die funktionalen und nicht-funktionalen Anforderungen des Business-Kontexts an. Aber die Teams müssen sich genau überlegen, wie Microservices miteinander interagieren sollen, etwa mit Orchestrierung oder Choreographie. Die Dienste selbst sollten in sich abgeschlossen sein oder Resilienzmuster verwenden, wenn sie Daten anderer Microservices benötigen.

Jeder Microservice sollte unabhängig einsetzbar, erweiterbar, austauschbar und skalierbar sein.

JAXenter: Können Microservices die Komplexität erhöhen?

Kai Tödter: Ja. Während ein einziger Microservice die Komplexität für eine bestimmte Domäne oder Funktionalität reduzieren kann, erhöht die Zusammensetzung vieler Microservices die Komplexität. Einige Beispiele sind skalierbare Deployments, Kommunikation zwischen Microservices, zentrale Protokollierung, Monitoring und Tracing. Und das ist nur die Spitze des Eisbergs, der oft unterschätzt wird.

JAXenter: Was ist das größte Missverständnis in Sachen Microservices?

Kai Tödter: Ich schätze, eines der größten Missverständnisse ist, dass Microservices alle existierenden (architektonischen) Probleme lösen könnten. Das ist definitiv nicht der Fall, und Teams sollten nicht nur über den Nutzen, sondern auch über die Kosten nachdenken, wenn sie sich für einen Microservice-basierten Ansatz entscheiden.

JAXenter: Wie lauten deiner Meinung nach die drei goldenen Regeln des Deployments von Microservices?

Kai Tödter: Ich würde es nicht auf drei goldene Regeln festnageln, aber es gibt ein paar Eigenschaften, die für alle Microservices gelten sollten. Beispielsweise sollte jeder Microservice unabhängig einsetzbar, erweiterbar, austauschbar und skalierbar sein.

JAXenter: Wie heißen die besten Open-Source-Tools zur Orchestrierung von Microservices?

Kai Tödter: Ich vermute, diese Frage bezieht sich eher auf die Container-Orchestrierung als auf Microservice-Interaktionsmuster wie Orchestrierung oder Choreographie. Beliebte Instrumente zur Orchestrierung von Containern sind Kubernetes, Marathon (für Mesos und DC/OS) oder Docker Swarm.

Lesen Sie auch: Wann Microservices sinnvoll sind – und wann nicht!

JAXenter: Was sind die Schlüsselelemente bei der Implementierung einer Microservice-basierten Architektur?

Kai Tödter: Es gibt viele Elemente, die eine Microservice-basierte Architektur charakterisieren. Ich denke, ein Schlüsselelement ist, dass Microservices wie Produkte und nicht wie Projekte behandelt werden, was bedeutet, dass das Team den gesamten Lebenszyklus eines Microservices verantwortet, einschließlich Deployment und Betrieb. Ein Team, das einen Microservice betreut, sollte fachübergreifend sein und sich nicht an bestimmten Technologien (z. B. UI oder Datenbanken) orientieren, sondern an den geschäftlichen Anforderungen, die für die Implementierung des gesamten Microservice erforderlich sind. Die Datenverwaltung sollte dezentralisiert sein (z. B. jeder Microservice entscheidet über seine eigene Persistenzschicht) und Technologie-Stacks sollten vom Team gewählt werden, anstatt eine zentrale Governance zu haben.

Kai Tödter ist Principal Key Expert für Softwarearchitektur und -technologien bei Siemens Building Technologies. Er hat zwanzig Jahre Java-Erfahrung und vertrat Siemens im Java Community Process (JCP) und in der Eclipse Foundation. Kai ist Committer bei einigen Open-Source-Projekten, seine aktuellen Themenschwerpunkte sind Technologien im Webumfeld, Microservices und Hypermedia-APIs.
Geschrieben von
Gabriela Motroc
Gabriela Motroc
Gabriela Motroc ist Online-Redakteurin für JAXenter.com. Vor S&S Media studierte Sie International Communication Management an der The Hague University of Applied Sciences.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.