Was sind Microservices?

Microservices, auch Microservices-Architektur genannt, bezieht sich auf eine Softwareentwicklungsmethode, die eine Anwendung als kombinierte Sammlung von Services strukturiert. Im Wesentlichen wird diese Anwendungssuite als eigenständige vollständige Anwendung bereitgestellt, und diese Services bilden alle zusammen die gesamte Anwendung. Alle Microservices folgen diesen Mustern: Sie sind nach Geschäftsmöglichkeiten organisiert, sie sind lose miteinander verbunden, sie sind unabhängig voneinander einsetzbar und sie sind testbar. Da sie lose miteinander verbunden sind, können Microservices dann unabhängig voneinander erstellt, bereitgestellt und skaliert werden.

Microservices-Diagramm

Jeder Service kommuniziert mit anderen Services über standardisierte Schnittstellen zur Anwendungsprogrammierung (APIs), sodass die Services in verschiedenen Sprachen oder auf verschiedenen Technologien geschrieben werden können. Dies unterscheidet sich vollständig von Systemen, die als monolithische Strukturen entwickelt wurden, bei denen Services untrennbar miteinander verbunden sind und nur zusammen skaliert werden können.

Da jeder Service über eine eingeschränkte, im Allgemeinen singuläre Funktionalität verfügt, ist er sowohl in seiner Größe als auch in seiner Komplexität viel kleiner. Der Begriff Microservice leitet sich von diesem diskreten Funktionsdesign ab.

Durch die Zerlegung der Anwendung in diskrete Services, die bestimmte Geschäftsfunktionen implementieren, bieten Microservices modernen Entwicklern die Möglichkeit, hoch skalierbare, flexible Anwendungen zu entwerfen.

Warum Microservices?

Microservices sind immer beliebter geworden, da ihre modularen Eigenschaften zu Flexibilität, Skalierbarkeit und reduziertem Entwicklungsaufwand führen. Ihre Flexibilität bei der Bereitstellung und der Aufstieg cloudnativer, serverlosen und Funktion-als-Dienstleistung-Bereitstellungsoptionen (wie AWS Lambda und Microsoft Azure Cloud Functions) haben die perfekte Umgebung geschaffen, in der Microservices in der heutigen IT-Landschaft gedeihen können. Mit diesen Cloud-Plattformen können Microservices und Funktionen von Inaktivität auf hohes Volumen und wieder zurück skaliert werden, während Kunden nur für die Rechenkapazität bezahlen, die sie nutzen.

Da Unternehmen ständig agiler sein, Engpässe reduzieren und die Lieferzeiten von Anwendungen verkürzen möchten, wird die Microservices-Architektur weiterhin immer beliebter.

In der Vergangenheit entwickelten Unternehmen spezialisierte Unternehmensanwendungen mit drei Hauptkomponenten:

  • Eine benutzerseitige Oberfläche, normalerweise HTML-Seiten, die auf dem Computer eines Benutzers ausgeführt werden
  • Eine Datenbank, typischerweise viele Tabellen in einem relationalen Datenbank-Managementsystem
  • Eine serverseitige Anwendung, die alle Anforderungen wie Datenabruf, HTTP-Anfragen und das Befüllung von HTML-Browsern bearbeitet.

Für den Benutzer schien alles über einen einzigen Ansprechpartner zu laufen. Bei Entwicklung, Tests und Bereitstellung wurde eine Bereitstellungspipeline verwendet, und Sie konnten horizontal skalieren, indem Sie mehrere Instanzen ausführen.

Die Entwicklung war jedoch recht kostspielig, alle Änderungen erforderten eine vollständige Neugestaltung, einen Neuaufbau und eine erneute Bereitstellung des Systems. Es war schwierig, eine saubere, modulare Struktur aufrechtzuerhalten, da das Unternehmen wuchs und sich veränderte. Außerdem musste bei der Skalierung die vollständige Anwendung erneut getestet, skaliert und für jede Änderung neu bereitgestellt werden, egal wie klein die Überarbeitung war. All diese Probleme führten zu einem teuren, nicht agilen System, über das die sich schnell verändernde Technologielandschaft schnell hinauswuchs.

Eine Möglichkeit, sich diese traditionellen monolithischen Systeme vorzustellen, sind fertige Dollhouses. Sie können zwar die Struktur oder das Layout bearbeiten, aber es ist nicht einfach und Sie sind in der Gesamtgröße begrenzt, es sei denn, Sie kaufen ein weiteres Dollhouse und erweitern das vorhandene Dollhouse damit.

Bei Microservices muss nicht die gesamte Anwendung neu bereitgestellt werden, sondern nur die Services, die sie benötigen. Stellen Sie sich Microservices anstelle einer einzigartigen strukturellen Einheit wie einem Puppenhaus aus einem Haufen Lego-Steine vor. Technisch gesehen sind sie alle unabhängig, aber wenn sie zusammengestellt werden, bilden sie eine vollständige strukturelle Anwendung. Wenn Sie ein Fach hinzufügen oder etwas beenden möchten, kann es einfach entfernt, hinzugefügt, skaliert und bearbeitet werden, um den sich ändernden Anforderungen schnell und effizient gerecht zu werden, ohne die gesamte Anwendung herunterfahren zu müssen.

Flexible Microservices-Entwicklung für AWS
Flexible Microservices-Entwicklung für AWS
Erfahren Sie, wie Ihr Unternehmen Agilität aufbauen und Anforderungen erfüllen kann, indem Sie Microservice-basierte Anwendungen für AWS erstellen.

Vorteile einer Microservices-Architektur

Unternehmen, die Microservices einführen und in ihre Angebote integrieren möchten, bieten eine Reihe bedeutender Vorteile, auf die im Folgenden näher eingegangen wird.

Schnellere Markteinführung

Durch das schnelle Hinzufügen und Entfernen von Funktionen kann das Unternehmen unglaublich agil werden. Neue Funktionen können schnell hinzugefügt werden, um mit dem Geschäftswachstum Schritt zu halten. Im Gegensatz zu herkömmlicher monolithischer Software wirken sich Änderungen am Code in einem Teil des Systems nicht auf andere Module aus, sodass keine zusätzlichen Tests erforderlich sind, die gesamte Anwendung heruntergefahren oder alles erneut bereitgestellt werden muss.

Höherer Funktionsumfang und niedrigere Betriebskosten

Da die Module in Microservices alle getrennt sind, besteht ein weitaus geringeres Risiko potenzieller Fehler, die zum Ausfall der gesamten Anwendung führen. Im Gegensatz zu herkömmlichen Softwaresystemen, bei denen eine Änderung in einem Teil der Funktionalität zu einem Mangel oder Fehler in einem anderen Teil führen kann, ermöglicht die Isolierung und lose Verbindung die Implementierung von unterteilten Upgrades und Erweiterungen. Microservices ermöglichen auch die Verwendung von Cloud-nativen Funktion als Dienstleistung-Bereitstellungsoptionen, wodurch die Betriebskosten erheblich gesenkt werden können.

Einfach skalierbare Anwendungen

Skalierungsentscheidungen für Microservices werden granulär getroffen, sodass die effizientesten Entscheidungen für die Systemoptimierung gefällt werden können. Durch die Einführung von Microservices können Unternehmen zur Zeit der Skalierung genau die für sie besten Entscheidungen treffen.

Kontinuierliche Integration

Microservices werden mithilfe individueller kontinuierlicher Entwicklungs- und Bereitstellungsströme entwickelt. Diese Streams können aufrechterhalten werden, sodass es zu keiner Unterbrechung eines anderen Services kommt, wenn ein Team eine Änderung auf der Grundlage von Kundenfeedback implementiert. Das bedeutet eine höhere Zufriedenheit der Endbenutzer.

Engagierte Entwicklungsteams

Im Gegensatz zu monolithischen Systemen, die nicht mehrere Entwicklungsteams unterstützen können, können Microservices Teams unterstützen, die sich bestimmten, spezifischen Teilen des Systems widmen. Da die Softwaremodule nicht miteinander interagieren, besteht kein Risiko von Fehlern oder teamübergreifenden Überschneidungen der Arbeit, sodass Microservices-Teams spezialisierte Softwareentwickler umfassen und die Teams die über verschiedene Zeiträume oder geografische Standorte hinweg arbeiten können.

All diese Vorteile ergeben vielleicht den wichtigsten: die geschäftliche Agilität. Kleine und einfache Änderungen können schnell vorgenommen werden, sodass mit Prozessen experimentiert werden kann. Mit Microservices wird es möglich, einen großen Sprung nach vorne zu machen oder zumindest schnell auszufallen und in Echtzeit zu reagieren. Darüber hinaus haben Studien ergeben, dass innerhalb weniger Monate nach der Bereitstellung der Microservices-Architektur ein Drittel der Unternehmen Vorteile erzielt. Das bedeutet, dass die Zeitrahmen für die Entwicklung verkürzt werden, und mit weniger Codefehlern und erweiterten Funktionen sind die positiven Auswirkungen auf den Geschäftsbetrieb fast sofort spürbar.

Eigenschaften von Microservices

  • Lose Verbindung
  • Unabhängig einsetzbare Komponenten
  • Automatisierte Bereitstellung
  • Dezentralisierte Daten- und Sprachsteuerung
  • Sehr wartungsfreundlich
  • Einfach testbar
  • Auf die Bedürfnisse und Fähigkeiten eines Unternehmens oder einer Organisation ausgerichtet
  • Jeder Service wird in der Regel von einem kleinen Team ausgeführt

Herausforderungen bei Microservices

Während Microservices eine Reihe von Problemen lösen, gibt es immer noch einige Schwierigkeiten und Probleme, auf die man bei der Architektur und bei der ersten Einführung stoßen könnte.

Dezentralisierte Datenverwaltung

Im Gegensatz zu monolithischen Systemen verlassen sich Microservices normalerweise nicht auf eine einzige Datenbank, die als einzige Informationsquelle für Ihre Daten für das Unternehmen dient. Kundendaten können sich an einem Ort befinden, während sich Lieferantendaten an einem anderen Ort befinden. Möglicherweise werden Bestandsinformationen im Online-Verkaufsportal gespeichert, aber das Bestellsystem wird in einer separaten Datenbank geführt. Das kann zu Problemen bei der Datenqualität und -konsistenz führen, sofern Sie dies nicht genau planen.

Unternehmenskultur und interne organisatorische Herausforderungen

Es kann schwierig sein, Unternehmen dazu zu bringen, neue Softwaresysteme zu akzeptieren und sich an sie anzupassen. Oft zögert das Management, die Kontrolle abzugeben, oder eine Abteilung verteidigt ihre Silos. Was auch immer der Grund für den Rückschlag von Teams sein mag, die neue Systeme akzeptieren müssen, das Fazit ist, dass die Leute manchmal Veränderungen einfach nicht mögen.

Um die unternehmensweite Einführung von Microservices zu erreichen, ist die Erkenntnis, dass die Einführung neuer Systeme und Prozesse störend sein kann, entscheidend. Aber es ist auch genauso wichtig, sich daran zu erinnern, dass sich die Vorteile lohnen. Zu Beginn der Umstellung auf Microservices ist es am besten, die betroffenen Teams bei der Planung der Architektur einzubeziehen. Planen Sie, die verfügbaren Lösungen zu bewerten und sicherzustellen, dass die beste Lösung für die Geschäftsanforderungen ausgewählt wird.

Microservices können zu Komplexität in Ihrer Architektur führen

Während die einzelnen Services selbst, aus denen Microservices bestehen, klein und einfach sein können, kann die Gesamtanwendung in Kombination viele bewegliche Teile enthalten, die schwer zu verwalten sind. Mit Hunderten oder Tausenden von Verbindungen können Microservices schnell komplexer werden.

Es wird empfohlen, dass bei der Implementierung von Microservices ein erhebliches Maß an Voraussicht und Planung in das Design und die grundlegende Implementierung einfließen. Viele Komplexitäten können mit einem guten grundlegenden Architekturdesign vermieden werden, das Wachstum und Veränderungen in der Zukunft ermöglicht.

Anwendungsbeispiele der Microservices-Architektur

Nutzen Sie Cloud-native Bereitstellungsoptionen: Nutzen Sie die serverlose Bereitstellung und Funktion als Dienstleistung für effizientere und skalierbarere Abläufe.

Migration der Funktionen aus Alt-Anwendungen: Zerlegen Sie Services aus großen monolithischen Anwendungen, sodass sie unabhängig verwaltet und skaliert werden können.

Nutzen Sie die moderne Anwendungsarchitektur: Nutzen Sie ereignisgesteuerte, lose miteinander verbundene Microservice-Anwendungsmuster mit der Möglichkeit, je nach Anwendungsfall verschiedene Programmiersprachen zu nutzen. Entscheiden Sie sich beispielsweise für rechenintensive Funktionen, Node.js für schnelle Webanwendungen usw.

Was ist DevOps und warum wird das oft mit Microservices in Zusammenhang gebracht?

DevOps kann als eine toolorientierte Ideologie erklärt werden. Im Wesentlichen handelt es sich um eine Reihe von Methoden, die Tools und Technologie kombinieren, um die Arbeit der Entwickler zu vereinfachen. Neben verbesserten Werkzeugen trägt die Zusammenarbeit zwischen den Betriebs- und Entwicklungsteams zum schnelleren und effizienteren Abschluss von Projekten bei.

Angenommen, Sie erstellen zum Beispiel eine Anwendung, mit der Benutzer ihre Kontensalden überprüfen können. In der Vergangenheit hatten Entwickler im App-Entwicklungszyklus häufig die App erstellt und dann an das Betriebsteam weitergegeben, ohne für das Endergebnis verantwortlich zu sein. Es war Aufgabe des Betriebsteams, die App zum Laufen zu bringen. In einer geschlosseneren DevOps-Umgebung arbeiten beide Seiten zusammen. Ein Entwickler besitzt den Lebenszyklus der App von Anfang bis Ende. Das bedeutet, dass er während der Veröffentlichung einsatzbereit ist. Eine konsistente Kommunikation zwischen den beiden Gruppen ist notwendig, um sicherzustellen, dass alles erfolgreich ist, und um alle Vorteile von DevOps zu nutzen, wie z. B. schnelle Markteinführung, einfacherer Entwicklungszyklus und mehr Rechenschaftspflicht.

Das neue DevOps-Workflow-Modell bewirkt einen großen kulturellen Wandel. Durch Verwendung neuer Tools wird ein DevOps-Plan nicht erfolgreich. Im Gegenteil: neue Tools können den Erfolg beeinträchtigen, wenn sie Sie ohne Zweifel glauben lassen, dass alles angemessen implementiert werden wird.

Aufgrund der Natur von Microservices sind für die Bereitstellung häufig starke DevOps-Prozesse erforderlich. Der verstärkte Einsatz von Werkzeugen und stärkere gemeinsame Praktiken verhindern, dass Teams von all den kleinen beweglichen Teilen überfordert werden. Sie reduzieren die Störung oder Belastung dieser Verschiebung und erhalten gleichzeitig weiterhin die Leistungen.

Microservices Software-Testversion
Testen Sie TIBCO Cloud Integration - Kostenlose Testversion
Mit TIBCO Cloud Integration können Sie Ihr Unternehmen durch eine einfachere und schnellere API-geführte Integration stärken. Das ist Integration — ganz einfach.

Die Zukunft: Ereignisbasierte Microservices, serverloses Computing und FaaS

Wenn Menschen zum ersten Mal mit Microservices experimentieren, verwenden sie häufig standardmäßig vertraute Techniken wie RESTful-APIs. REST arbeitet mit einer Art Kommunikation namens Anfrage-Antwort. Das Problem bei diesem synchronen Ansatz besteht darin, dass die Services voneinander abhängig werden, da Sie auf eine Antwort warten müssen. Das heißt, wenn ein Service langsamer läuft oder nicht reagiert, läuft der Service, der ihn aufgerufen hat, langsamer oder schlägt fehl. Diese Verbindung kann bedeuten, dass einige der Vorteile einer Microservices-Architektur verloren gehen und eine stärker voneinander abhängige Struktur geschaffen wird, die einem Stil einer serviceorientierten Architektur (SOA) ähnelt.

Wenn Sie Ihre Services mit einem anderen Modell als REST oder einem ereignisgesteuerten Modell entwerfen, können Sie sicherstellen, dass Teile Ihrer Anwendung weiterhin funktionieren, während andere Teile möglicherweise nicht beteiligt sind, anstatt dass die gesamte Anwendung nicht mehr reagiert. Netflix ist ein perfektes Beispiel dafür. Gelegentlich stellen Sie möglicherweise fest, dass die Schaltfläche „Weiter ansehen“ nicht angezeigt wird. Das liegt daran, dass dieser spezielle Service nicht verfügbar ist. Das bedeutet jedoch nicht, dass Netflix vollständig beendet wird. Benutzer können weiterhin nach Shows suchen und Vorschauen ansehen, sodass andere Aspekte des Netflix-Services weiterhin funktionsfähig und verfügbar sind, obwohl ein Service möglicherweise nicht verfügbar ist.

Entwickler, die einen Microservice-Ansatz voll und ganz annehmen, erkennen, dass echte Skalierbarkeit durch lose Verbindung und ereignisbasierte Architektur ermöglicht wird. Ein Service kann asynchron sein, eine Aktion ausführen, eine Nachricht senden und seine Hauptfunktion fortsetzen, ohne auf eine Antwort eines anderen Services warten zu müssen.

Wie funktionieren Microservices?

Microservices sind keine neue Idee. Vor mehr als drei Jahrzehnten entwickelte Unix ein SOA, das ein ähnliches Konstruktionsprinzip verwendete. Aber die Implementierung war kostspielig und wurde nicht allzu oft als gute Option für Unternehmen angesehen. Zwanzig Jahre später kamen Microservices mit einer viel besseren Konsistenz zwischen den Services an, und die Einführung war seitdem weitaus erfolgreicher.

In Bezug auf die tatsächliche Funktionsweise von Microservices wird die Softwarefunktionalität zunächst in kleine, isolierte Module unterteilt. Diese Module haben definierte, eigenständige Aufgaben. Anschließend verknüpft das System diese kleinen Softwareteile mithilfe von Schnittstellen zur Anwendungsprogrammierung (APIs) miteinander.

APIs sind Codesegmente, die zwei unabhängige Programme dazu bringen, miteinander zu „sprechen“. Ein Beispiel für APIs in Aktion wäre eine App oder Website, in die Google Maps eingebettet ist. Eine API befindet sich zwischen Google Maps und der App, die Informationen hin und her sendet, sodass Benutzer ihre Karte in Echtzeit sehen, dem Fahrer Anweisungen geben und Ihren vertrauenswürdigen Kontakt über Ihren Standort informieren können. Während Google Maps eine separate Einheit bleibt, ermöglicht die API die Kommunikation zwischen der Karte und der App. Anstatt eines vorgefertigten Dollhouses, in dem alles geplant, starr und schwer zu ändern ist, haben Sie diese nützlichen kleinen Lego-Teile, die mithilfe von APIs als Konnektoren zusammenklicken. Standardisierte Technologieplattformen können einschränkend sein, aber nicht jedes Problem ist ein Nagel, auch nicht jede Lösung ein Hammer. Microservices ermöglichen das richtige Tool für die Aufgabe.

Microservices haben gewisse Vorteile, und Unternehmen, die sie erfolgreich als Architekturmodell übernommen haben, haben die Vorteile schnellerer, agilerer Geschäfts-IT-Strukturen genutzt. Einige Unternehmen haben jedoch festgestellt, dass das System die Produktivität enorm einschränkt und eine Belastung für den Betrieb ist. Der Unterschied zwischen Erfolg und Misserfolg besteht aus zwei Teilen: der Kultur der Organisation und ihrer Bereitschaft, die Microservices zu akzeptieren und zu nutzen, und die Planung und Voraussicht, die in die Karte der Microservices aufgenommen werden.

Oft werden die wahren Vorteile oder Kosten eines neuen Systems viele Jahre lang nicht realisiert. Die monolithische Architektur ist manchmal schon darüber hinausgewachsen oder beginnt in diesen Jahren, zu zerfallen. Es gibt weniger Möglichkeiten für diesen Zerfall innerhalb von Microservices, und die Behebung eines Problems ist viel einfacher.

Eine Lösung für eine Vielzahl dieser potenziellen Probleme besteht darin, mit einem Monolithen zu beginnen. Auf diese Weise kann eine Basissoftware beim Skalieren andere Dinge anschrauben und so eine Art Dollhouse mit Lego-Erweiterungen bilden. Dies ist zwar möglicherweise nicht der eleganteste Ansatz, aber es ist eine Möglichkeit für ein Unternehmen, voranzukommen, insbesondere mit einer vorhandenen Datenbank oder einem Programm, das im Mittelpunkt des Betriebs steht.