Was sind Microservices?

Die Architektur der Microservices basiert auf serverbasierten Lösungen, bei denen die verfügbaren Dienste lose miteinander verbunden sind, aber dennoch ein hohes Maß an Effizienz und Zusammenarbeit gewährleisten. Lose bedeutet in diesem Fall, dass die Applikationsdienste arbeiten können, ohne sich gegenseitig in ihrem Ablauf und ihrer Logik zu beeinflussen.

Das Konzept der Microservices bringt viele Vorteile in Bezug auf die Architektur. Aber auch die Teamarbeit entlastet es deutlich. Da hochgradig wartbare Anwendungen unabhängig voneinander eingesetzt werden können, ist es nicht notwendig, dass mehrere Teams einen Prozess koordinieren müssen.

Darüber hinaus können in einer Microservic-Umgebung verschiedene Teams an verschiedenen Bereichen arbeiten, ohne dass sich dies zu sehr auf die Produktivität oder Effizienz der anderen Teams auswirkt. Dem Team wird jedoch auch gleichzeitig mehr Verantwortung zugeschoben. Wenn Sie mit Microservices arbeiten, sollten Ihre Teammitglieder besser begabt sein und gleichzeitig auch ein bisschen Führungsqualität und Autonomie besitzen.

In einem Mikroarchitektur-System arbeitet an jedem einzelnen Mikrodienst ein unabhängiges Team.
In einem Mikroarchitektur-System arbeitet an jedem einzelnen Mikrodienst ein unabhängiges Team.
Jedes Team, das an einem Microservice arbeitet, kann daher vergrößert werden.
Jedes Team, das an einem Microservice arbeitet, kann daher vergrößert werden.

Wenn Sie eine eindrucksvolle eCommerce-Applikation mit herausragenden Funktionen und hoher Flexibilität für Entwickler und Kunden erstellen wollen, dann sind Microservices dafür sicherlich sehr gut geeignet. So können Applikationsdienste in eine neue technische Umgebung wie Storefront.UI integriert werden. Die Storefront-Bibliothek wurde beispielsweise schon mit besonderem Hinblick auf die Anwendung im Bereich eCommerce entwickelt und verfügt, wie der UI-Teil andeutet, über eine starke Anpassungsfähigkeit.

Microservices vs. Monolithische Architektur

Um die Vorteile von Microservices besser zu verstehen, sollte man sie am besten mit einigen ihrer Alternativen vergleichen. Es gibt viele Variationen von Software-Architekturen. Microservices stellen nur eine Lösung von vielen dar. Die Client-Server-Methode zum Beispiel hängt von Anfrage- und Antwortmustern ab, während die Peer-to-Peer-Architektur keinen zentralen Server benötigt. Die Besonderheit eines Projekts entscheidet dabei darüber, welche Architektur am besten geeignet ist, oder ob mehrere Architekturen in Frage kommen. Verglichen mit dem monolithischen Ansatz glänzen Microservices, wenn es darum geht, die Leistung hinter der von ihnen verwendeten Technologie anzupassen.

Beispiel eines Frontend-Monolithen, unterteilt in Module.
Beispiel eines Frontend-Monolithen, unterteilt in Module.

Die monolithische Architektur ist die herkömmliche Methode, um jede Aktion zu vereinheitlichen, unabhängig davon, wo sie stattfindet - auf dem Server, auf der Client-Seite oder in der Datenbank. Beim monolithischen Ansatz laufen alle Kernprozesse verpackt in einer einzigen Einheit ab. Obwohl dieser Ansatz Anlass zu einem vereinfachten Entwicklungsprozess gibt, kann die Skalierung ein Problem darstellen. Da alles sehr dicht verschachtelt ist, entsteht eine untrennbare Verbindung, die zwar mit guten Absichten dahinter steht, aber manchmal auch negative Folgen nach sich zieht. Wenn Updates eingeführt werden müssen, kann sich dies beispielsweise unnötigerweise auf benachbarte Funktionen oder Prozesse auswirken.

Im Gegensatz zur monolithischen Architektur, bei der “eine Codebasis über alle herrscht”, verfügen Microservices jeweils über separate Datenbanken. Dieser Umstand begünstigt Änderungen, ohne dass man sich darum sorgen muss, verwandte oder untergeordnete Komponenten zu zerstören. Eine monolithische Architektur eignet sich am besten für kleine Unternehmen, die nicht den Drang haben, zu wachsen oder sich weiterzuentwickeln, bzw. sich nicht das für den Support eines Ansatzes wie Microservices erforderliche Team leisten können.

Wie Microservices funktionieren

Der Name “Microservices Architektur” suggeriert, dass es dazu ein Gegenstück geben muss. Und das gibt es auch - die Makroarchitektur. Der Microservices-Ansatz muss als wesentlicher Bestandteil einer funktionierenden Gesamtlösung betrachtet werden. Projekte, die auf Microservices basieren, unterteilen das interne Framework in der Regel visuell in zwei getrennte Zweige. Die Micro- und die Makroarchitektur.

Dabei bezieht sich die erste auf jeden Dienst und seine einzigartigen Fähigkeiten. Ein Fehler in einem Microservices bringt nicht gleich das ganze System zum Absturz, da jeder Microservice über eigene Datenbank- und Supportfunktionen verfügt. Wenn ein Microservices ein Problem aufweist, kann das Problem leicht isoliert und Kollateralschäden vermieden werden. Diese Tatsache ist insbesondere bei der Erstellung robuster und zuverlässiger Applikationen von Bedeutung.

Bei der Makroarchitektur geht es um eine Top-Down-Ansicht und die Kontrolle aller beteiligten Microservices. Erfolgreiche Projekte, die sich Microservices zunutze machen, bestehen aus vielen einzelnen Diensten, die insgesamt eine große Einheit bilden. Sorgfältig zusammengestellte Microservices optimieren den gemeinsamen Aufwand zur Erreichung eines gemeinsamen Ziels.

Self-contained Systems (In sich geschlossene Systeme)

Bei SCS handelt es sich um eine Architektur, die sich auf die Bereitstellung der gesamten Logik konzentriert, die für den Betrieb aller zugehörigen Dienste erforderlich ist. Self-contained Systems umfassen alles, was sich innerhalb der von ihr geschaffenen Grenzen und Regeln befindet. Zum Beispiel würde ein SCS für eine Checkout-Phase alle Dinge dieses Schrittes beinhalten. Dazu gehören beispielsweise die Checkout-Historie oder das UI der Checkout-Seite. Diese integrative Methode stellt sicher, dass die Änderung eines Features sich nur auf das SCS auswirkt, das dieses Feature enthält.

Beispiel für eine SCS-Architektur.
Beispiel für eine SCS-Architektur.

Asynchrone Microservices

Wenn Sie etwas in einen Gruppenchat eingeben und keine sofortige Antwort erwarten ist das asynchrone Kommunikation. Das Gleiche gilt für Microservices, bei denen es statt Gruppenchats einen Anfragefluss gibt.

Asynchrone Microservices verarbeiten keine Informationen, während sie Anfragen an andere Dienste stellen. Sie stellen auch keine Anfragen und warten nicht auf Antworten.

Kommunikation ohne auf eine Antwort zu warten - Abfeuern und Vergessen.
Kommunikation ohne auf eine Antwort zu warten - Abfeuern und Vergessen.

Da die Qualität der asynchronen Microservices und der asynchronen Kommunikation nicht von den Endergebnissen abhängt, sind beide sehr unabhängig voneinander. Diese Bedingung sorgt für zusätzliche Systemstabilität. Wenn es beispielsweise zu einem Systemabsturz kommt, ist der Übeltäter schnell gefunden und isoliert.

Frontend-Integration

Microservices passen auch gut zu Web-Frontends. Wir haben bereits die Trägheit der monolithischen Architektur erläutert. Zwar funktionieren sie gut, wenn man an nativen mobilen Applikationen arbeitet, jedoch ist es in der Regel schwieriger, Änderungen an monolithischen Frontends vorzunehmen.

Im Vergleich dazu ist ein Frontend, das Microservices als separate Frontend-Komponenten verwendet, flexibler und passt sich problemlos an Anpassungen an.

Microservice Plattformen

Die Architektur von Microservices bietet besondere Vorteile wenn es um die Skalierbarkeit geht. So ist es nicht verwunderlich, dass sie als Teil einer Plattform perfekt funktionieren. So ist Docker zum Beispiel sehr pro-Microservices, mit Support für deren Kommunikation und schnelle Bereitstellung. Wichtig an dieser Stelle ist, dass Docker am besten für neue Projekte geeignet ist. Ein Migrationsprozess kann sich als schwierig erweisen. Dann müssen nämlich Anpassungen und die mögliche Installation neuer Support-Applikationen durchgeführt werden, um eine Microservices-Plattform in eine funktionierende Lösung zu verwandeln.

Merkmale einer Microservices-Plattform.
Merkmale einer Microservices-Plattform.

Vorteile

Die Vorteile der Architektur von Microservices sind zu zahlreich, um sie alle aufzuzählen, ohne sie vorher zu kategorisieren. So ermöglichen Microservices die problemlose Bereitstellung großer und komplexer Applikationen.

Die Micro-Komponente der Microservices spielt eine bedeutende Rolle für weitere Vorteile. Da die App-Services klein sind, lassen sie sich schnell implementieren. Jede unabhängige Partei kann sich beteiligen und darüber hinaus Wartungs-, Aktualisierungs- oder Upgradearbeiten durchführen.

Microservices eröffnen die Möglichkeit, aufwändige Software-Tools mit Hilfe vieler erfahrener Builder zu erstellen, ohne dass sie sich gegenseitig behindern. Wenn es ein Problem gibt, kann man es schnell ausfindig machen und einem Dienst zuordnen. Wenn bestimmte Services angesprochen werden, können sie sofort getestet und besser verstanden und modifiziert werden.

Die Integration von Services ist durch die IDE möglich, und die hohe Geschwindigkeit der Entwicklungsumgebung macht die Entwickler auch produktiver. Die Reduzierung der Entwicklungs- und Bereitstellungszeit in der Architektur von Microservices hat diese bereits zu einer sehr gewünschten Lösung gemacht.

Viele große Unternehmen nutzen bereits Microservices. Das bedeutet aber nicht, dass diese Methode ausschließlich für große Unternehmen geeignet ist. Die Microservices-Architektur trägt der Idee Rechnung, dass nicht jedes Unternehmen zu Nikon oder Adidas werden kann. Sie definiert klar die zugrunde liegende Reichweite und Struktur des Unternehmens und baut darauf auf. Aus diesem Grund können Unternehmen jeder Größe Microservices als Basismodell für ihre Geschäftstätigkeit vertrauen.

Altsysteme werden immer noch gewartet, während ihre Eigentümer verzweifelt gegen mangelnden Support und die von veralteter Software verursachten Probleme kämpfen. Glücklicherweise können Microservices dieses Problem lösen, indem sie alte Komponenten optimieren, oder sie ohne große Auswirkungen zu ersetzen.

Aufgrund des unorthodoxen Ansatzes, der in die Architektur von Microservices eingebettet ist, funktionieren sie relativ schneller als jede monolithische Umgebung. Die Schnelligkeit des Zugriffs und der Interaktivität bringt die Idee selbst hervor, indem nur die Ressourcen zugewiesen werden, die direkt den ursprünglichen Anforderungen entsprechen.

Die Architektur von Microservices eignet sich hervorragend für größere Projekte. Da große Pläne zur Realisierung ähnlich große Teams erfordern, kann es hier natürlich unter Umständen zu Personalengpässen kommen. Dank des freien Betriebs aller Services kann die Arbeitslast intelligent in kleinere Aufgaben für kleinere Teams aufgeteilt werden, was die Arbeitsabläufe erleichtert und die Arbeit schneller und effizienter macht.

Abschließende Worte

Microservices sind Teil erfolgreicher Vorhaben wie Amazon, Spotify oder eBay. Betrachtet man Vor- und Nachteile, so lassen sie sich definitiv als tragfähige Wahl einstufen. Microservices sind neben der Makroarchitektur wesentliche Bestandteile bedeutenderer Programme. Ihre wahre Stärke liegt in ihrer Fähigkeit, die Integration und den Betrieb von Systemen zu unterstützen. Gleichzeitig können sie sogar alte Systemprojekte wieder aufleben lassen. Wenn sie mit gegenwärtigen Technologien als Supportmittel in Einklang gebracht werden, sind Werkzeuge wie Docker oder PaaS als Plattformlösungen für die Architektur von Microservices unschlagbar.

Autor

Andreas Maier, CEO

Andreas ist ein ergebnisorientierter CEO, der knapp 30 Jahre an Erfahrung in der Hightech-Branche mit sich bringt. Seine Führungsrollen in Fortune-100 Unternehmen wie bei rentalcars.com (PCLN) und Intrasoft International, einem führenden R&D 21 Softwareanbieter mit Sitz in der EU, verleihen ihm wertvolle Kompetenzen.
Er hält einen Doktortitel der Universität Köln im Fachbereich Neuronale Netze.
Andreas gründete und mitbegründete in seiner Karrierelaufbahn zahlreiche erfolgreiche Startups wie XXL Cloud, ein Cloud-Speicherdienst, der letztendlich von einem Wettbewerber übernommen wurde.