plusserver-Blog-Microservices
Blog

|

20.10.2017

Was sind Microservices?

Annika Opitz
Durch Microservices lässt sich die Entwicklung und der Rollout komplexer Anwendungen flexibler gestalten.
So können Unternehmen den Entwicklungen in einer zunehmend digitalen Geschäftswelt optimal begegnen. Eine auf dieser Software-Architektur basierte Applikation setzt sich aus einer Vielzahl kleiner, unabhängiger Modul-Services zusammen. Jeder dieser Microservices hat eine dedizierte Aufgabe und nutzt eine genau definierte Schnittstelle, um mit den anderen Modulen zu kommunizieren.

Inhaltsverzeichnis

Warum Microservices?

Getrieben wird die Entwicklung im Bereich von Microservices einerseits durch die Verfügbarkeit neuer Technologien wie Container und andererseits von der fortschreitenden digitalen Transformation, mit der sich Unternehmen zusehends konfrontiert sehen. Um wettbewerbsfähig zu bleiben, müssen Unternehmen in der Lage sein, Innovationen möglichst schnell zu entwickeln und auf den Markt zu bringen. Das schließt unter anderem ein, neue Anwendungen und ihre funktionellen Erweiterungen und Updates effizient umzusetzen und auszurollen. Darüber hinaus stehen Unternehmen vor der Herausforderung, bestehende monolithische Softwareanwendungen dynamischer zu gestalten. Hier sind oft die eigenen Entwickler die treibende Kraft im Unternehmen, die Anwendungen auf Basis von Containern und Microservices neu aufsetzen wollen. Auf diese Weise können sie den Anforderungen nach mehr Agilität und schnellerer Entwicklung gerecht werden.

Microservices: Modulare Software-Architektur

Microservices verteilen Funktionalitäten innerhalb einer Anwendung auf separate Applikationen, die über sprachunabhängige Programmierschnittstellen – wie REST APIs – miteinander kommunizieren. So könnte eine E-Commerce-Anwendung unter anderem aus einer Userdatenbank, einem Versandmodul, einem Bestellmodul, einem Modul für die verschiedenen Bezahlarten sowie dem Frontend bestehen.

plusserver Blog - microservices - onlineshop
Eine E-Commerce-Anwendung könnte beispielsweise aus diesen Microservices bestehen.

Eine Anwendung kann aus einigen Dutzend bis einigen hundert solcher Microservices bestehen. Jeder der Microservices ist dabei in sich vollständig unabhängig. Das heißt, die Microservices teilen sich untereinander keine Datenverbindungsschicht, sondern jeder Microservice verwendet seine eigene Datenbank, Load Balancer etc. Denn oftmals benötigt jeder dieser kleinen Dienste unterschiedliche Skalierungstechniken. So werden manche Microservices beispielsweise Zugriff auf eine relationale Datenbank benötigen während andere lediglich auf eine NoSQL-Datenbank zurückgreifen.

Welche Vorteile bieten Microservices?

Diese Form der “Isolierung” von Teilaufgaben zeichnet den Aufbau von Microservice-Architekturen aus. Softwareunternehmen können damit ihre Applikationen effizient strukturieren und auch ihren Entwicklerteams möglichst viel Verantwortung für einen begrenzten Teil einer Applikation geben. Gerade für Firmen, die mit hunderten oder sogar tausenden von Entwicklern zusammenarbeiten, ist dies ein enormer Vorteil. Sie müssen diese großen Teams nicht zentral verwalten, sondern können selbstorganisierte Mitarbeitergruppen bilden, die verschiedene Microservice-Softwaremodule jeweils eigenverantwortlich betreuen.

Microservices auf Entwicklerteams verteilen

Wo sinnvoll, können einzelne Teams auch mehrere Microservices betreuen, wenn diese beispielsweise fachlich oder funktionell zusammenhängen. Das jeweilige Team entscheidet dann alle Implementierungsdetails und stellt unter Umständen sogar Bereitschaften für den Betrieb des Dienstes. Selbstverständlich gibt es unter den Teams auch eine gewisse Interaktion und Abstimmungsprozesse. Diese sind in der Regel jedoch nicht so angelegt, dass sie die Geschwindigkeit hemmen oder in endlosen Abstimmungsrunden enden. Der Einsatz von Microservices ermöglicht so kürzere Entwicklungszeiten und schnellere Rollouts von Updates oder neuen Funktionalitäten.

Wofür eignen sich Microservices?

  • Neue Softwareprojekte
  • Anwendungen, die hohe Skalierbarkeit benötigen
  • Legacy-Anwendungen, die an ihre Grenzen stoßen (zu viele Zeilen Code, zu große Datenbank, zu wenig skalierbar, zu träge bei der Entwicklung neuer Features)

Gibt es auch Nachteile?

Anwendungen, die auf einer Microservice-Architektur basieren, sind zwar schneller entwickelt und ausgerollt. Diese Art der Software-Architektur bringt jedoch auch einige Limitierungen mit sich, vor allem hinsichtlich Logging, Monitoring und Debugging. Die einzelnen Module innerhalb einer solchen Architektur sind schnell aktualisiert, bearbeitet oder sogar ausgetauscht. Aber die Tatsache, dass Microservices über APIs miteinander kommunizieren, kann sich gerade bei der Fehlersuche innerhalb einer modulbasierten Gesamtanwendung als sehr komplex erweisen.

Komplexe Fehlersuche?

Bei monolithischen Anwendungen werden meist bestimmte Haltepunkte innerhalb des Codes gesetzt – sogenannte Break Points oder Debugging Hooks. Stimmt etwas nicht mit dem Programm, können Entwickler durch die Nutzung von Debugging Tools den Softwarecode Schicht für Schicht an den jeweiligen Haltepunkten kontrollieren, um den Fehler möglichst schnell zu finden. In einer Microservice-Architektur gestaltet sich die Fehlersuche unter Umständen etwas komplizierter, bis alle zusammenhängenden Module inklusive der Schnittstellen überprüft und ausgewertet sind.

Die in einer Microservice-Architektur verwendeten REST APIs sind zwar einerseits schlanker, flexibler und einfacher erweiterbar. Sie addieren andererseits aber eine zusätzliche Schnittstelle, die es ebenfalls zu überwachen gilt. Denn auch hier können sich Fehlfunktionen oder Bugs einschleichen, die gegebenenfalls gefunden und behoben werden müssen. Logging, Monitoring und Debugging von Microservice-basierten Anwendungen kann daher eine durchaus komplexe Angelegenheit sein – vor allem wenn die Software am Ende aus mehreren hundert Microservices besteht.

Strategische Planung nötig

Ihr Start in die Welt der Microservices

Geben Sie mit Ihrer Softwareentwicklung mit der PSKE die passende Plattform an die Hand, um agile Cloud-native Applikationen zu erstellen.

Das akkurate Zusammenspiel von Microservices untereinander ist immens wichtig und bringt auch einiges an Komplexität mit sich. Deshalb sollten sich Unternehmen im Vorfeld einer Investition in die Entwicklung von Microservices strategisch mit der Thematik auseinandersetzen. Denn nicht für jede Anwendung ist es sinnvoll, sie als Microservice aufzusetzen oder umzuschreiben. Das gilt vor allem für bestehende Applikationen, die Cloud-fähig gemacht werden sollen. Hier können die Beratungsangebote erfahrener Cloud-Anbieter helfen, um den individuellen Bedarf genau zu identifizieren, zu planen und mögliche Fallstricke von vorneherein auszuschließen.

Glossar

Container – verpacken eine Anwendung und alle zu ihrer Ausführung erforderlichen Dateien in ein handliches Paket. Das vereinfacht die Installation und den Betrieb von Server-Anwendungen sowie deren Management und Verteilung.

REST – Representational State Transfer. Der Begriff bezeichnet ein Programmierparadigma für verteilte Systeme, insbesondere Webservices. REST ist eine Abstraktion der Struktur und des Verhaltens des World Wide Web und hat das Ziel, einen Architekturstil zu schaffen, der die Anforderungen des modernen Webs besser darstellt. Dabei unterscheidet sich REST vor allem in der Forderung nach einer einheitlichen Schnittstelle von anderen Architekturstilen.

API – Application Programming Interface. API ist eine Schnittstelle zur Anwendungsprogrammierung bzw. ein Programmteil, der von einem Softwaresystem anderen Programmen zur Anbindung an das System zur Verfügung gestellt wird.

Über den Autor

Annika Opitz ist Product Owner für die plusserver Kubernetes Engine (PSKE) und ist in ihrer Rolle für die Produktvision, Ausrichtung und Weiterentwicklung der Lösung verantwortlich. Sie besitzt jahrelange Erfahrung in der IT- und Technologiebranche sowie umfangreiche Praxiserfahrung in der Planung und Weiterentwicklung von Produkten während des gesamten Produktlebenszyklus.

Weiterführende Inhalte

Blog

Was ist Cloud-native?

Eine agile, konzeptionelle Methode, um Anwendungen vollständig in der Cloud zu entwickeln und zu betreiben.
Blog

Was bedeutet CI/CD in der Entwicklung?

CI/CD verbessert Softwareentwicklung und -auslieferung mit Techniken, Prozessen und Tools.
Produkt

Cloud Consulting

Unterstützung vom führenden deutschen Cloud Provider, Ihre individuelle Strategie zu entwickeln, umzusetzen oder zu optimieren.