Was sind Microservices?

URL kopieren

Microservices bezeichnen eine Art von Anwendungsarchitektur, bei der eine Sammlung unabhängiger Services über schlanke APIs miteinander kommuniziert.

Erinnern Sie sich nur einmal an Ihren letzten Besuch in einem Onlineshop. Dabei haben Sie vielleicht die Funktion für die Produktsuche auf der jeweiligen Site verwendet. Diese Suchfunktion ist ein Service. Vielleicht wurden Ihnen auch Vorschläge für ähnliche Produkte unterbreitet, oder Sie haben ein Produkt zu Ihrem Warenkorb hinzugefügt. Dabei handelt es sich auch um Services. Wenn Sie all diese Microservices bündeln, haben Sie eine vollständig funktionale Anwendung.

Eine Microservices-Architektur ist ein cloudnativer Ansatz, bei dem Software so entwickelt wird, dass Kernfunktionen innerhalb einer Anwendung unabhängig voneinander funktionieren.

Wenn die Elemente einer Anwendung auf diese Art und Weise voneinander getrennt sind, können Entwicklungs- und Operations-Teams zusammenarbeiten, ohne sich gegenseitig in die Quere zu kommen. Das heißt, dass mehrere Entwicklerinnen und Entwickler gleichzeitig an derselben App arbeiten und so die Entwicklungszeit deutlich reduziert werden kann.

 

Image

Red Hat Ressourcen

Bei der traditionellen Anwendungsentwicklung lag der Schwerpunkt auf dem Monolith. In einer monolithischen Architektur sind die Funktionen und Services innerhalb einer Anwendung miteinander verbunden und agieren als eine Einheit. Wenn die Anwendung erweitert oder verbessert wird, führt dies dazu, dass die Architektur komplexer wird. Dadurch wird es schwieriger, eine einzelne Funktion innerhalb der Anwendung zu verbessern, ohne gleichzeitig die gesamte Anwendung in ihre Teile zerlegen zu müssen. Weiterhin führt es dazu, dass die Skalierung eines einzelnen Prozesses innerhalb der Anwendung eine Skalierung der gesamten Anwendung erfordert.

In einer Microservices-Architektur werden Anwendungen so entwickelt, dass einzelne Kernfunktionen der App unabhängig von anderen funktionieren. Dadurch können Entwicklungsteams neue Komponenten entwickeln und an die geschäftlichen Anforderungen anpassen, ohne dass eine Unterbrechung der Anwendung als Ganzes erforderlich ist.

Die Microservices-Architektur ist eine Weiterentwicklung der serviceorientierten Architektur (SOA). Bei beiden Ansätzen werden große, komplexe Anwendungen in kleinere Komponenten zerlegt, mit denen es sich leichter arbeiten lässt. Wegen ihrer Ähnlichkeit werden SOA und Microservices-Architektur oft verwechselt. Ein Hauptunterschied zwischen den beiden ist ihr Umfang: Eine SOA ist ein unternehmensweiter Architekturansatz, während es sich bei Microservices um eine Implementierungsstrategie für die Teams in der Anwendungsentwicklung handelt.

Dank der verteilten Entwicklung von Microservices entstehen für Ihre Teams und Routinen ganz neue Möglichkeiten. Außerdem können Sie mehrere Microservices gleichzeitig entwickeln. Das heißt, dass mehrere Entwicklerinnen und Entwickler gleichzeitig an derselben App arbeiten und so die Entwicklungszeit deutlich reduziert werden kann.

Schnellere Markteinführung

Da die Entwicklungszyklen in einer Microservices-Architektur sehr viel kürzer sind, können auch Deployments und Updates viel agiler durchgeführt werden.

Hohe Skalierbarkeit

Wenn der Bedarf für bestimmte Services steigt, können diese über mehrere Server und Infrastrukturen hinweg flexibel implementiert werden.

Resilienz

Wenn diese unabhängigen Services ordnungsgemäß entwickelt sind, haben Sie keinerlei Auswirkungen aufeinander. Das heißt, wenn eine Komponente ausfällt, streikt im Gegensatz zum monolithischen Ansatz nicht gleich die gesamte App.

Einfaches Deployment

Da auf Microservices basierende Apps modular und dazu viel kleiner als traditionelle monolithische Apps sind, können Sie die mit der alten Methodologie verbundenen Probleme getrost vergessen. Zwar erfordert die neue Variante mehr Koordination, die durch eine Service Mesh-Schicht erreicht werden kann, dieser Umstand kann jedoch durch die vielen Vorteile mehr als wettgemacht werden.

Besserer Zugriff

Da eine größere App in kleinere Bestandteile aufgegliedert wird, können Entwicklerinnen und Entwickler die einzelnen Komponenten leichter verstehen, aktualisieren und verbessern, was wiederum zu kürzeren Entwicklungszyklen führt, speziell in Kombination mit agilen Entwicklungsmethoden wie etwa DevOps.

Mehr Offenheit

Dank sprachunabhängiger APIs können Entwicklungsteams ihre bevorzugte Sprache bzw. Technologie für die notwendige Funktion frei wählen.

Die durch Microservices ermöglichte Flexibilität kann dazu führen, dass neue Änderungen sehr schnell bereitgestellt werden, was bedeutet, dass neue Pattern kreiert werden müssen. Im Software Engineering bezeichnet ein „Pattern“ algorithmische Lösungen, die bekanntermaßen funktionieren. Als „Anti-Pattern“ werden häufige Fehler bezeichnet, die bei der Problemlösung gemacht werden und langfristig zu neuen Problemen führen können.

Neben den kulturellen und prozessualen Komponenten sind Komplexität und Effizienz 2 der größten Herausforderungen einer Microservices-Architektur. Beim Arbeiten mit einer Microservices-Architektur sollten Sie nach diesen häufigen Anti-Patterns Ausschau halten.

  1. Skalierung: Die Skalierung einer Funktion innerhalb des Software-Lifecycle-Entwicklungsprozesses kann besonders zu Beginn herausfordernd sein. Bei der ersten Einrichtung sollten Abhängigkeiten zwischen Services identifiziert und ein besonderes Augenmerk auf potenzielle Auslöser gelegt werden, die eine Abwärtskompatibilität gefährden könnten. Wenn der Zeitpunkt des Deployments gekommen ist, ist eine Investition in Automatisierung äußerst wichtig, da Microservices zu komplex für ein menschliches Deployment sind.
  2. Protokollierung: Bei verteilten Systemen benötigen Sie zentrale Protokolle zur Erfassung aller Daten. Ansonsten wird eine effiziente Skalierung unmöglich.
  3. Überwachung: Sie benötigen unbedingt eine zentrale Ansicht Ihres Systems, um die Ursachen von Problemen identifizieren zu können.
  4. Debugging: Remote-Debugging mithilfe Ihrer lokalen IDE (Integrated Development Environment) ist hier keine Option und funktioniert nicht bei Dutzenden oder Hunderten von Services. Leider gibt es auf diese Frage zum jetzigen Zeitpunkt keine zufriedenstellende Antwort.
  5. Konnektivität: Ziehen Sie eine zentralisierte oder integrierte Service Discovery-Lösung in Betracht.

Container und Kubernetes
Ein Kubernetes ist eine Plattform für die Container-Orchestrierung, mit der einzelne Komponenten in einer Anwendung aktualisiert werden können, ohne dass sich dies auf den Rest des Technologie-Stacks auswirkt. Dadurch ist Kubernetes für das Automatisieren der Verwaltung, Skalierung und Bereitstellung von Microservice-Anwendungen optimal.

APIs
Eine Programmierschnittstelle, auch API genannt, ist der Teil einer Anwendung, der für die Kommunikation mit anderen Anwendungen verantwortlich ist. Innerhalb der Infrastruktur einer Microservices-Architektur spielen APIs eine wichtige Rolle, da sie es verschiedenen Services innerhalb eines Microservices erlauben, Informationen zu teilen und als Ganzes zu arbeiten.

Event Streaming
Ein Event bezeichnet einen Vorgang, der innerhalb eines Microservice-Service stattfindet. Beispielsweise wenn jemand beim Onlineshopping einen Artikel zum Warenkorb hinzufügt oder daraus entfernt.

Events formen Event Streams, die das veränderte Verhalten eines Systems abbilden. Durch die Überwachung von Events können Organisationen nützliche Rückschlüsse zu Daten und Kundenverhalten erhalten. Event Stream Processing ermöglicht sofortiges Handeln und kann direkt und in Echtzeit mit operativen Workloads verwendet werden. Unternehmen nutzen Event Streaming für viele verschiedene Anwendungsbereiche von der Betrugserkennung bis hin zur Rechnerwartung.

Serverless Computing
Serverless Computing ist ein cloudnatives Entwicklungsmodell, bei dem Entwicklungsteams Anwendungen erstellen und ausführen und ein Cloud-Anbieter sich um die Provisionierung, Wartung und Skalierung der Serverinfrastruktur kümmert. Entwicklungsteams müssen für das Deployment lediglich den Code in Container paketieren. Unternehmen können damit schneller Innovationen schaffen, da die Anwendung von der zugrunde liegenden Infrastruktur abstrahiert wird.

Die Open Source-Lösungen von Red Hat unterstützen Sie nicht nur bei der Aufschlüsselung Ihrer monolithischen Anwendungen in Microservices, sondern auch bei deren Verwaltung, Orchestrierung und der Handhabung der damit erstellten und geänderten Daten.

Red Hat OpenShift
Red Hat® OpenShift® ist eine Kubernetes-basierte Plattform, die Microservices ermöglicht, indem sie einen einheitlichen Weg für die Vernetzung, Verwaltung und Beobachtung von Anwendungen bietet, die auf Microservices basieren. Unterstützt werden containerisierte, cloudnative und Legacy-Anwendungen sowie Anwendungen, die zu Microservices umstrukturiert werden. OpenShift lässt sich in Red Hat Application Services integrieren und kann mit bestehenden Automatisierungstools wie Git und Jenkins verwendet werden. Dazu verfügt es über ein unternehmensfähiges Linux-Betriebssystem, das mehr Sicherheit für den gesamten Cluster bietet.

Unabhängig davon, ob Sie Legacy-Anwendungen optimieren, zur Cloud migrieren oder komplett neue microservicebasierte Lösungen entwickeln, Red Hat OpenShift bietet für diese Anwendungen eine sichere und stabile Plattform in der gesamten Infrastruktur.

 

Red Hat Runtimes

Red Hat Runtimes umfasst eine Reihe vorkonfigurierter, containerisierter Runtime-Vorlagen für Microservices. Es unterstützt eine breite Palette an Sprachen und Frameworks, die bei der Erstellung von Microservices-Architekturen verwendet werden können, darunter Quarkus, Spring Boot, MicroProfile und Node.js. Zusätzlich enthält Red Hat Runtimes unterstützende Services für schnellen Datenzugriff in Form von Red Hat Data Grid sowie Services für den Schutz von Microservice-APIs in Form von Red Hat Single Sign-On.

 

Red Hat Integration

Red Hat Integration umfasst diverse Integrations- und Messaging-Technologien, mit denen sich Anwendungen und Daten in Hybrid-Infrastrukturen verbinden lassen. Es handelt sich um eine agile, verteilte, containerisierte und API-zentrierte Lösung. Sie enthält folgende Funktionen: Service-Komposition und -Orchestrierung, Anwendungskonnektivität und Datentransformation, Echtzeit-Messaging und -Streaming sowie API-Management – und das kombiniert mit einer cloudnativen Plattform und Toolchain, die das vollständige Spektrum moderner Anwendungsentwicklung unterstützt.

Entwicklungsteams können Tools wie Drag-and-Drop-Services und eingebaute Integrationsmuster nutzen, um Microservices zu erstellen. Geschäftlich Nutzende können webbasierte Tools verwenden, um APIs zu entwickeln, die unterschiedliche Microservices integrieren können.

Warum Red Hat für das API-Management?

Hub

Der offizielle Red Hat Blog

Lernen Sie mehr über unser Ökosystem von Kunden, Partnern und Communities und erfahren Sie das Neueste zu Themen wie Automatisierung, Hybrid Cloud, KI und mehr.

Red Hat Testversionen

Unsere kostenlosen Testversionen unterstützen Sie dabei, praktische Erfahrungen zu sammeln, sich auf eine Zertifizierung vorzubereiten oder zu bewerten, ob ein Produkt die richtige Wahl für Ihr Unternehmen ist.

Weiterlesen

Gehostete Control Planes für Red Hat OpenShift | Vorteile

Gehostete Control Planes ermöglichen das Ausführen von Control Planes auf kleineren Knoten und senken dadurch Kosten für Cluster. Konzepte für Hybrid Cloud

Was sind Sandbox-Container? | Sandboxing von Containern

Sandbox-Container erfüllen strenge Sicherheitsanforderungen. Sie isolieren Anwendungen, indem sie virtuelle Maschinen verwenden, die Container in Pods starten.

Red Hat OpenShift für Entwicklungsteams und Developer

Mit Red Hat® OpenShift® können Entwickler Anwendungen mit den Tools ihrer Wahl entwickeln und bereitstellen, ohne Sorge um die Infrastruktur.

Ressourcen zu Container

Verwandte Artikel