Interview mit Mark Little

Microservices – die am häufigsten gestellten Fragen

Coman Hamilton

Dr. Mark Little

Worum geht es bei Microservices? Welche Änderungen können Entwickler erwarten, wenn sie von einem Monolithen auf Microservices umsteigen? Und wie fügt sich DevOps in das Ganze ein? Dr. Mark Little, Vice President of Middleware Engineering bei Red Hat, erläutert die Grundlagen des Monolithe zerstörenden IT-Trends.

JAXenter: Was genau sind Microservices und warum werden sie gebraucht?

Dr. Mark Little: Microservices sind ein neues Muster der Softwareentwicklung, das sich aus den jüngsten Trends in den Bereichen Softwareentwicklung und Softwaremanagementpraktiken ergeben hat, um die Geschwindigkeit und Effizienz bei der Entwicklung und der Verwaltung von Softwarelösungen zu erhöhen.

Agile Methoden, DevOps-Kultur, PaaS, Anwendungscontainer und die weitverbreitete Übernahme – sowohl in geistiger als auch in technischer Hinsicht – von CI/CD-Methoden machen es möglich, die Erstellung wirklich modularer großer Service-Systeme, sowohl für die interne als auch die kommerzielle Nutzung, in Betracht zu ziehen.

DevOps ist eine Herangehensweise an Kultur, Prozesse und Tools, die auf die Erhöhung des Geschäftswerts und eine höhere Responsivität durch eine schnelle, iterative und qualitativ hochwertige Lieferung von IT-Services abzielt. Sie kann auch im Rahmen einer monolithischen Anwendung sehr erfolgreich umgesetzt werden.

JAXenter: Welche Herausforderungen und Risiken können sich für Organisationen ergeben, die von einem monolithischen System auf Microservices umsteigen? Und welche Rolle spielen Microservices im DevOps-Ansatz?

Dr. Mark Little: Zunächst muss man verstehen, warum die Leute wechseln möchten. Nicht alle Monolithe sind schlecht, und selbst die, die nicht funktionieren, profitieren möglicherweise nicht (oder nicht sofort) von einem Wechsel zu Microservices. Andere Herangehensweisen, wie z. B. die Bereitstellung einer effektiveren Softwaretechnik und Architektur, könnten hilfreich sein. Microservices sind nicht das Allheilmittel für sämtliche Probleme und erfordern umfangreiche Investitionen, um erfolgreich zu sein.

Service Discovery : Mehrere Services könnten zusammenarbeiten, um die Funktionalität einer Anwendung bereitzustellen. In einer Cloud-Umgebung könnte das recht knifflig sein, da die Services dort flüchtig sind und hoch- bzw. runterskalieren könnten. Die Auflösung der Services, die für den Betrieb eines Service erforderlich sind, ist eine gemeinsame Funktionalität. Services müssen sich in einem zentralen Registry registrieren und andere Services müssen dieses Registry abfragen, um Abhängigkeiten aufzulösen.

Service Replication: Jeder Service muss sich replizieren, gewöhnlich durch X-Achsen-Klonierung oder Y-Achsen-Partitionierung. Es sollte einen Standard-Mechanismus geben, anhand dessen die Services basierend auf Metadaten leicht skaliert werden können. Mithilfe einer PaaS wie OpfenShift kann diese Funktionalität vereinfacht werden.

Service Monitoring: Einer der wichtigsten Aspekte von verteilten Systemen ist die Überwachung und das Logging von Services. Dieses erlaubt ein proaktives Vorgehen, beispielsweise wenn ein Service unerwartete Ressourcen verbraucht.

Resilienz: Egal wie aufwändig man testet: Störungen und Ausfälle gehören zu Software dazu. Der Knackpunkt ist also nicht die Frage, wie man diese verhindert, sondern wie man mit ihnen umgeht. Dies sticht besonders bei Microservices hervor, da hier Services über das ganze Internet verteilt sind. Hier ist es besonders wichtig, dass die Services automatisch korrigierende Aktionen vornehmen und sicherstellen, dass die User Experience nicht betroffen ist.

DevOps: Continuous Integration und Continuous Deployment (CI/CD) sind beide sehr wichtig für den Erfolg Microservices-basierter Anwendungen. Fehler werden so bereits in einem frühen Stadium erkannt und die erforderliche Koordination zwischen den verschiedenen Teams, die verschiedene Microservices realisieren, beschränkt sich – sofern überhaupt vorhanden – auf ein Minimum.

JAXenter: Können Sie einige Anforderungen guter Microservices-Architektur und Best Practices für diese nennen?

Dr. Mark Little: Alle, die Microservices in Betracht ziehen, sollten bei deren Entwicklung folgende Aspekte berücksichtigen:

Unabhängige Skalierung: Jeder Microservice sollte unabhängig von anderen skalieren, je nach Bedarf über die X-Achse (Klonierung mit mehr CPU oder Speicher) und die Z-Achse (Sharding). Dies stellt einen großen Unterschied zu monolithischen Anwendungen dar, die zwar gemeinsam eingesetzt werden müssen, aber jeweils sehr unterschiedliche Anforderungen stellen können.

Unabhängige Upgrades: Jeder Service sollte von anderen Services unabhängig bereitgestellt werden. Alle lokalen Änderungen am Service können von einzelnen Entwicklern durchgeführt werden ohne sich mit anderen Teams koordinieren zu müssen. Beispielsweise kann die Performance eines Service verbessert werden, indem die zugrundeliegende Implementierung geändert wird. Als Folge davon bleibt die Agilität des Microservice erhalten. Dabei handelt es sich auch um einen bedeutenden Ermöglicher von Continuous Integration und Continuous Deployment.

Einfache Wartung: Der Code eines Mircoservice ist auf eine Funktion beschränkt und deshalb leichter zu verstehen. IDEs können den Code sehr einfach laden und die Produktivität der Entwickler erhalten.

Potentiell heterogen und polyglott: Entwickler können die Sprache und den Stack auswählen, der für ihren Service am besten geeignet ist. Auch wenn die Organisation die Auswahl der Technologie beschränkt, wird man für vergangene Entscheidungen nicht bestraft. Dies ermöglicht es auch, den Service mit einer angemesseneren Sprache oder Technologie umzuschreiben. Dies gibt einem im Hinblick auf die Technologien, Tools und Frameworks die Freiheit der Wahl.

Fehler- und Ressourcenisolierung: Ein sich fehlverhaltender Service, z.B. Speicherverlust oder nicht geschlossene Datenbankverbindungen, wirkt sich nur auf diesen einen Service aus – im Gegensatz zu einer gesamten monolithischen Anwendung. Dies verbessert die Fehlerisolierung und sorgt dafür, dass nicht die ganze Anwendung, sondern nur ein Teil von ihr ausfällt.

Schwierige Kommunikation über Teams hinweg: Ein Microservice wird gewöhnlicherweise von einem Full-Stack-Team umgesetzt, d. h. alle Mitglieder, die mit einer Domäne verbunden sind, arbeiten im selben Team. Da alle das selbe Ziel teilen, verbessert sich die Kommunikation zwischen den Teammitgliedern deutlich.

DevOps Docker Camp 2017

Das neue DevOps Docker Camp – mit Erkan Yanar

Lernen Sie die Konzepte von Docker und die darauf aufbauende Infrastrukturen umfassend kennen. Bauen Sie Schritt für Schritt eine eigene Infrastruktur für und mit Docker auf!

JAXenter: Bedeutet der breitere Aufgabenbereich eines DevOps-Ansatzes mehr Arbeit für Entwickler, die sich ständig Gedanken um das große Ganze machen müssen?

DevOps fordert mehr Verantwortlichkeit ein, gibt dem Entwickler aber auch mehr Autorität. Ein Entwickler kann ein Feature im Rahmen eines eigenen Zeitplans veröffentlichen und gleichzeitig für die Lösung der Probleme, die sich bei seiner Nutzung im Produktionseinsatz ergeben, zuständig sein. Am Ende geht es immer darum, dass das Unternehmen profitiert, und DevOps-Praktiken sind bekannt dafür, der Geschwindigkeit und Agilität einer Organisation zuträglich zu sein.

Dr. Mark Little is vice president of middleware engineering at Red Hat and has worked in the area of reliable distributed systems since the mid-80s with a PhD in fault-tolerant distributed systems, replication, and transactions.

Aufmacherbild: FAQ cocnept – machine answering frequently asked questions von Shutterstock / Urheberrecht: BoBaa22

Geschrieben von
Coman Hamilton

Coman is Editor of JAXenter.com at S&S Media Group. He has a master’s degree in cultural studies and has written and edited content for numerous websites and magazines, as well as several ad agencies. // Want to submit a story? Get me at coman[AT]jaxenter.com or linkedin.com/in/comanhamilton

Kommentare
  1. Was sind eigentlich Microservices? | Fachinformatiker Anwendungsentwicklung2015-07-03 05:52:01

    […] Microservices – häufig gestellte Fragen (von Coman Hamilton und Mark Little) […]

Schreibe einen Kommentar

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