Microservices: Definition, Vorteile und Beispiele
Die Bedeutung von Microservices nimmt angesichts zunehmend komplexerer Anforderungen an Software immer weiter zu. Insbesondere große, moderne IT-Infrastrukturen benötigen flexible Lösungen, die auf einer Microservice-Architektur basieren. Diese verhindert Totalausfälle des Systems und ermöglicht, dass die eingesetzte Software mit dem Unternehmen bei Bedarf mitwächst.
Im Folgenden erfahren Sie, wie sich Microservices definieren lassen, welche generellen Vorteile sie mit sich bringen und wie sich ein Microservice-Architekturmuster erfolgreich im Unternehmen einsetzen lässt. Darüber hinaus erhalten Sie einige wertvolle Beispiele zum Aufbau einer Microservice-Struktur.
Was sind Microservices?
Bei Microservices handelt es sich um ein Architekturkonzept in der Softwareentwicklung. Einzelne Komponenten einer Software bzw. Web-Anwendung funktionieren dabei unabhängig voneinander. Ein Beispiel für Microservices verdeutlicht der Onlineshop. Damit lassen sich die Funktionen „In den Warenkorb legen“ sowie der Warenkorb selbst jeweils mit unterschiedlichen Microservices betreiben. Sie kommunizieren über eine Datenbank oder einen zentralen Server miteinander. Ein solcher Aufbau nennt sich Microservice-Architektur und stellt eine Alternative zur Monolith-Software dar.
Innerhalb der Software müssen die Microservices lückenlos miteinander interagieren und arbeiten. Nur so kann eine Microservice-Struktur das erreichen, wofür sonst ganzheitliche Anwendungen eingesetzt werden müssten. In der Vergangenheit wählten Entwickler der IT-Branche standardmäßig einen Monolith-Ansatz oder entschieden sich für eine serviceorientierte Architektur (SOA). Um der zunehmenden Komplexität moderner Infrastrukturen erfolgreich zu begegnen, eignen sich die agilen, skalierbaren Microservices jedoch oftmals besser.
Microservices – Vorteile im Überblick
Microservices haben den großen Vorteil, dass mehrere Entwickler zur gleichen Zeit an derselben App arbeiten können. Das spart folglich Entwicklungszeit ein und somit auch Gesamtkosten für ein Unternehmen.
Ob eine Microservice-Architektur tatsächlich vorteilhaft ist oder nicht, hängt jeweils davon ab, welche individuellen Ziele bei der Softwareentwicklung verfolgt werden. Diese grundsätzlichen Vorzüge von Microservices ermöglichen routinierte Unternehmensprozesse:
- Verteilte Entwicklung: Microservices werden jeweils einzeln entwickelt, optimiert und ggf. repariert. Dadurch bestehen zwischen den verschiedenen Entwicklerteams einer Software auf Basis einer Microservice-Struktur keine Abhängigkeiten. So lässt sich eine Anwendung optimieren, ohne dass dafür aufwendige, langwierige Absprachen erforderlich sind.
- Beständiges System: Während bei anderen Systemen zum Teil nicht beabsichtigte technische Abhängigkeiten entstehen können, bleibt die Microservice-Architektur unabhängig und stabil. Verkettungen zwischen einzelnen Microservices sind hierbei gezielt mithilfe einer API herzustellen. Dies bedeutet einen hohen Aufwand und kann somit nicht versehentlich geschehen.
- Hohe Skalierbarkeit: Wächst ein Unternehmen, entstehen dadurch automatisch neue Anforderungen an die genutzte Software. Unternehmen müssten eine Monolith-Software in diesem Fall komplett anpassen, erneuern oder ersetzen. Dagegen lassen sich bei einer Microservice-Struktur gezielt einzelne Funktionen skalieren. Zudem ist es nicht erforderlich, weitere Microservices innerhalb der Architektur anzupassen oder ihre Kompatibilität zu überprüfen.
- Ressourceneinsparung: Microservices lassen sich im Einzelnen in ihrer Relevanz bewerten. Kommt es zu einer Überlastung, können Unternehmen Platz für vorab identifizierte Schlüsseldienste schaffen. Dazu müssen sie lediglich die für sie weniger relevanten Services reduzieren oder vollständig aus der Microservice-Architektur entfernen.
- Schutz vor Totalausfällen: Bedingt durch ihre gegenseitige Unabhängigkeit können einzelne Microservices zwar fehleranfällig sein oder ausfallen – einem Totalausfall wird mit dem Architekturmuster von Microservices jedoch weitestgehend vorgebeugt. Funktioniert ein einzelner Microservice nicht mehr, beeinträchtigt dies die weiteren Komponenten, etwa in einem Onlineshop, nicht.
- Individuelle Anpassbarkeit: Sprachunabhängige APIs ermöglichen Entwickler ihre gewünschte Sprache bzw. Technologie für die notwendige Funktion auszuwählen.
- Einfacher Zugriff: Grundsätzlich besteht eine App aus kleineren Bestandteilen. Dank eine adäquaten Microservices-Architektur verstehen Entwickler die einzelnen Komponenten leichter und können sie so schneller aktualisieren und verbessern. Dieser Prozess verkürzt Entwicklungszyklen, insbesondere bei der Anwendung agiler Methoden.
Microservice-Architektur vs. serviceorientierter Architektur
Unter Entwicklern gewinnt die Microservice-Architektur immer mehr an Popularität. Dies liegt hauptsächlich daran, dass andere Ansätze, vor allem die serviceorientierte Architektur (SOA) häufig Schwierigkeiten bereiten.
Was beinhaltet eine serviceorientiere Architektur?
Die SOA sieht vor, dass eine monolithische Anwendung in viele kleine Anwendungen aufgespalten wird. Diese sind nach dem Prinzip der Gleichzeitigkeit (Concurrency) oder der Partitionierung auszuführen. Das kann jedoch dazu führen, dass die Anwendung nicht so effizient arbeitet, wie es das Unternehmen wünscht.
Je besser der Prozess einer Anwendung ist, desto effizienter kann sie Aufgaben bearbeiten. Allerdings kommen zu den ursprünglichen immer neuen Anforderungen hinzu.
Warum Microservices zu empfehlen sind
Eine Software muss in der Lage sein mitzuwachsen, um umfangreichere Funktionen und zunehmenden Traffic verarbeiten zu können. Dies ist es, was Microservices auszeichnet – sie lassen sich schnell und im Einzelnen skalieren, um neue Funktionen abzudecken. Bei anderen Vorgehensweisen, wie etwa SOA, können derartige neue Anforderungen dazu führen, dass sich die Geschwindigkeit und die Effizienz der Anwendung stark reduziert.
Die SOA zugrundeliegenden Prinzipien Gleichzeitigkeit und Partitionierung sind nur schwer zu unterstützen und umzusetzen. Vor allem, wenn es sich um eine umfangreiche Anwendung handelt, die auf mehreren Servern bereitgestellt werden muss. Vertikale Skalierung gilt in solch komplizierten Fällen als Mittel der Wahl. Dazu wird die Hardware aufgestockt bzw. werden weitere Server hinzugefügt. Ein Schritt, der zeit- und kostenintensiv ist und deutlich zeigt, welche Vorteile unabhängig skalierbare Microservices mit sich bringen.
Microservices: Best Practices
Die Entscheidung für oder gegen eine Microservice-Architektur bei der Softwareentwicklung treffen Unternehmen am besten direkt zu Beginn des Projekts. Eine solche Struktur ist stets von Grund auf neu aufzubauen – mit einzelnen Microservices, die innerhalb einer eigenen Microservices-Architektur miteinander interagieren und dennoch unabhängig voneinander funktionieren können.
Entwickler bauen Microservices unter dem Gesichtspunkt der Nachhaltigkeit auf – sie müssen skalierbar, zuverlässig und fehlerfrei sein. Ein ideales Architekturmuster von Microservices lässt sich in folgende vier Ebenen unterteilen:
Hardware
Diese Ebene der Microservice-Struktur umfasst den physischen Host Server, Datenbanken und Betriebssysteme – hier empfiehlt es sich, ein einheitliches Betriebssystem zu wählen. Unabhängig davon, ob es sich dabei um Linux, Solaris oder Windows handelt, muss es mit Konfigurationsmanagement-Tools wie Ansible, Chef oder Puppet konfiguriert werden. Das gewählte Tool nutzen Entwickler nun für alle Installationen von Anwendungen sowie zum Einstellen spezifischer Konfigurationen. Andernfalls können Probleme hinsichtlich der Skalierbarkeit auftreten: Ist eine Skalierung notwendig, bedeutet dies eine aufwendige Neukonfiguration. Zusätzlich ist auf dieser Ebene der Microservice-Architektur ein umfassendes Monitoring erforderlich, um Probleme schnell erkennen und lösen zu können.
Kommunikation
Diese Ebene wirkt sich auf die gesamte Microservice-Struktur aus. Denn ohne reibungslose Kommunikation kann diese nicht funktionieren. Um untereinander Daten auszutauschen, können Microservices beispielsweise auf HTTP und RAF oder auf einen TIFF-Kommunikationskanal zurückgreifen. Zur Übermittlung von Nachrichten sendet ein Microservice diese über das Netzwerk via HTTP oder über das gewählte Protokoll.
Entwicklung
Auf dieser Ebene werden die Microservices entwickelt. Daher sollten darin alle Self-Service-Entwicklungstools enthalten sein, mit denen sich neue Tabellen, Datenbanken, Message Broker, Schemata und Ports erstellen lassen. Die Einbindung von Protokollierungs- und Überwachungstools ist ein wichtiger Schritt in der Entwicklungsebene.
Microservice
Die letzte Ebene ist die einfachste und zugleich bedeutendste. Auf dieser spielt sich der Microservice ab. Hier liegt die Konfigurationsdatei und hier sollten Self-Service Tools aus den anderen Schichten zum Einsatz kommen, wenn Änderungen anstehen.
Microservice-Architektur: Funktion und APIs
Bezüglich Microservices als solchen und Microservice-Strukturen bestehen verschiedene Missverständnisse und irrtümliche Annahmen. Der folgende Absatz geht auf diese ein.
Ein Microservice kann komplexe Aktionen ausführen
Der „Micro“-Teil der Bezeichnung führt oftmals dazu, dass ein Microservice als äußerst kleine Anwendung verstanden wird, die keine komplexen Funktionen ausführen kann. Zwar handelt es sich bei einem Microservice tatsächlich um eine kleine Komponente – diese kann jedoch unabhängig von ihrer Größe verschiedenste Aktionen ausführen, von einfach bis komplex. Demnach eignen sich Microservices beispielsweise sowohl als Anmeldesystem als auch für die Zahlungsabwicklung in einem Onlineshop.
Ein Microservice ist keine API
Eine weitere Microservice-Annahme betrifft APIs – ob und inwieweit diese mit Microservices verwandt sind, welche Rolle APIs innerhalb einer Microservice-Architektur einnehmen und ob es sich bei Microservices um eine neue Art von Protokoll handelt.
Obgleich ein Zusammenhang besteht, sind APIs und Microservices zunächst einmal getrennt voneinander zu betrachten: Microservices sind einzelne Komponenten, aus denen sich eine Software zusammensetzen kann. APIs hingegen sind Programmierschnittstellen, Frameworks, über die Entwickler mit einer Webanwendung interagieren können. Um miteinander zu kommunizieren, verwenden einige Microservices u. a. APIs, sie stellen also einen Bestandteil der Microservice-Architektur dar. Abgesehen davon können Microservices zur Kommunikation auf REST-, ESB- und SOAP-Dienste sowie auf die Nachrichtenprotokolle AMGQ und JMS zurückgreifen.
Microservice-Architektur-Tool von Talend jetzt entdecken!
Eine Microservice-Architektur ist flexibel und skalierbar und kommt damit gleich zwei der aktuell wichtigsten Anforderungen der Softwarebranche nach. Unternehmen greifen bei der Entwicklung von Cloud-Diensten und Anwendungen inzwischen bevorzugt auf Microservices zurück. Dabei unterstützt werden sie von intelligenten Microservice Tools, wie etwa dem umfangreichen „Open Studio for ESB“ von Talend.
Entdecken Sie unsere clevere Lösung für Ihre Softwareentwicklung auf Microservice-Basis. Gerne zeigen wir Ihnen, wie Sie Ihr Unternehmen damit zu langfristigem Erfolg führen!
Sind Sie bereit, mit Talend durchzustarten?
Vertrieb kontaktieren