Weltweit führend bei Datenresilienz
Hinweise von Veeam für Kunden, die vom Content-Update von CrowdStrike betroffen sind

Was sind Microservices?

Microservices sind ein Architekturansatz für die Entwicklung von Anwendungen, der ein Projekt in kleinere, unabhängigere Dienste aufteilt, die über APIs miteinander kommunizieren. Die Verwendung von Microservices kann die Anwendungsentwicklung beschleunigen, indem die Komplexität jedes Teils des Projekts reduziert wird. Einzelne Microservices können über mehrere Projekte hinweg wiederverwendet werden.

Erfahren Sie, wie die Veeam Data Platform Sie beim Schutz der Datensicherheit in Ihrer Cloud-, Hybrid- oder lokalen Umgebung unterstützen kann.

Monolithische und Microservices-Architektur im Vergleich

In der Vergangenheit verwendeten Online-Anwendungen eine monolithische Architektur. Bei dieser Herangehensweise an die Softwareentwicklung sind alle Prozesse innerhalb eines Projekts eng miteinander gekoppelt. Ein monolithisches SaaS-Projekt kann mehrere Komponenten enthalten, darunter:

  • Webserver und Load Balancer
  • Benutzerregistrierung und -verwaltung
  • Zahlungssysteme
  • CRUD-Systeme zum Erstellen und Anzeigen von Inhalten
  • API-Endpunkte zur externen Verwendung

Das Problem bei monolithischen Architekturen besteht darin, dass das gesamte System skaliert werden muss, wenn die Webanwendung einen Nachfrageschub verzeichnet. Darüber hinaus wird es mit zunehmendem Wachstum der Codebasis viel schwieriger, Änderungen daran vorzunehmen. Langfristig kann dies zu technischen Schulden führen. Wenn ein Teil Ihrer Codebasis auf alten oder veralteten Bibliotheken beruht oder Sie für bestimmte Features zu einem neuen Framework wechseln möchten, können Probleme mit anderen Teilen der Codebasis Sie zurückhalten.

Bei Microservices ist jede Komponente ein eigenständiger Dienst. Der Benutzerservice ist unabhängig vom Zahlungssystem, das wiederum unabhängig vom Content-System ist, und so weiter. Die Dienste teilen keinen Code miteinander. Vielmehr kommunizieren sie über APIs miteinander.

Da jede Komponente eigenständig ist, ist es möglich, sie auf Wunsch in völlig unterschiedlichen Sprachen zu schreiben. Wenn eine Komponente ausfällt, muss es zudem nicht zwangsläufig zum Ausfall der gesamten Anwendung kommen. Andere Aspekte der Anwendung, die nicht von dieser Komponente abhängen, können weiterhin wie gewohnt funktionieren.

Serviceorientierte Architektur (SOA) und Microservices-Architektur im Vergleich

In einer serviceorientierten Architektur sind Anwendungen in Module unterteilt. Diese Module haben klar definierte Rollen und sind kleiner als monolithische Anwendungen, wodurch SOA dem Microservices-Ansatz ähnelt. Der Hauptunterschied zwischen SOA- und Microservices-Architekturen ist der Umfang der Architektur.

Module, die für SOA entwickelt wurden, werden unternehmensweit gemeinsam genutzt und wiederverwendet. Im Gegensatz dazu stützen sich Microservices auf Module, die so konzipiert sind, dass sie unabhängig voneinander funktionieren. Das heißt aber nicht, dass Komponenten, die für eine Microservice-Architektur geschrieben wurden, nicht wiederverwendet werden können, aber der Ansatz ist ein anderer. So können beispielsweise Module, die für eine SOA-Anwendung erstellt wurden, alle dieselbe Speicherebene verwenden und über denselben Enterprise Storage Bus (ESB) kommunizieren. In einer Microservice-Umgebung verfügt jeder Service über eine eigene API und kann seinen eigenen Speicher verwenden.

Vorteile von Microservices

Microservices haben mehrere Vorteile, insbesondere wenn eine Anwendung von Grund auf neu entwickelt wurde, um dieses Modell zu verwenden.

  • Einfache Entwicklung: Da es sich bei Microservices um kleine, eigenständige Anwendungen handelt, kann jede von einem separaten Team entwickelt werden. Jeder Microservice hat einen klar definierten Zweck, der es einfach macht, Tests für ihn zu schreiben. Die Fehlerbehebung bei Microservices ist in der Regel einfacher als die Fehlerbehebung bei einer monolithischen Anwendung. Darüber hinaus ist es möglich, bestehende Microservices wiederzuverwenden, um die Entwicklung weiter zu beschleunigen, wenn das Projekt wächst.
  • Flexibilität: Entwickler monolithischer Anwendungen sind oft an bestimmte Technologien oder Vorgehensweisen gebunden, da es schwierig ist, Änderungen an der vorhandenen Codebasis vorzunehmen. Bei Microservices ist es einfacher, Änderungen vorzunehmen, mit neuen Technologien zu experimentieren und ein Code-Refactoring im laufenden Betrieb durchzuführen, da das Risiko unbeabsichtigter Folgen beim Arbeiten mit einem eigenständigen Service geringer ist.
  • Skalierbarkeit: Das Skalieren einer monolithischen Anwendung kann schwierig sein. Die übermäßige Bereitstellung von Hardware ist nicht kosteneffizient, und dieser Skalierungsansatz ist nicht geeignet, um plötzliche, unerwartete Nachfragespitzen zu bewältigen. Microservices bieten mehr Optionen für die Skalierung Ihrer Anwendungen und können Entwicklern helfen, bei Bedarf Kapazitäten hinzuzufügen und später zusätzliche Services abzuschalten, wenn die Nachfrage zurückgeht.
  • Resilienz: Wenn eine monolithische Anwendung ausfällt, kommt es zum Ausfall der gesamten Anwendung. Bei Microservices beschränken sich die Probleme auf die spezifische Anwendung, bei der ein Fehler aufgetreten ist. Wenn beispielsweise der Anmeldeserver für ein Spiel ausfällt, können sich neue Benutzer möglicherweise nicht authentifizieren. Alle, die bereits mit der App verbunden sind, können die App jedoch unter Umständen weiterhin wie gewohnt verwenden. Ein Problem mit der Fotogalerie kann auf diesen kleinen Dienst beschränkt sein und andere Bereiche einer Website nicht beeinträchtigen.
  • Verbesserte Ressourcenauslastung: Die Aufteilung einer Anwendung in kleine, klar definierte Services kann Effizienzverbesserungen gegenüber einer monolithischen Architektur mit sich bringen. Anstatt ein großes CMS mit hohem Ressourcenbedarf zur Verwaltung der Inhalte für eine Website zu verwenden, könnte ein Unternehmen ein Headless-Microservice-CMS und ein leichtes, benutzerdefiniertes Frontend zum Anzeigen seiner Inhalte nutzen.

Herausforderungen von Microservices

Dank ihrer Leistungsfähigkeit und Flexibilität werden Microservices gerne für große, komplexe Anwendungen verwendet. Ihre Bereitstellung ist jedoch mit einigen Herausforderungen verbunden.

  • Komplexität: Jede Komponente einer Microservices-Architekturanwendung ist zwar einfach, aber die Anwendung selbst kann recht komplex werden, weil es so viele verschiedene Komponenten gibt, die berücksichtigt werden müssen. Durch das Zerlegen einer Anwendung in mehrere Komponenten können weitere Bereiche entstehen, in denen Fehler auftreten können. Außerdem ist ein gewisser Performance-Overhead möglich.
  • Datenkonsistenz: Bei Verwendung einer Microservices-Architektur kann es zu Problemen mit der Datenkonsistenz und Racebedingungen kommen. Es kann schwierig sein, Instanzen zu behandeln, in denen ein Microservice aus einer Datenbank liest, während ein anderer versucht, sie zu aktualisieren.
  • Kommunikation und Serviceerkennung: Es kann eine Herausforderung sein, sicherzustellen, dass alle Microservices in der Lage sind, effektiv miteinander zu kommunizieren und zu wissen, welche Dienste wo verfügbar sind. Dies ist etwas, das frühzeitig in der Entwurfsphase angegangen werden sollte.
  • Tests/Debugging: In gewisser Weise ist das Testen von Microservices einfacher, da jede Komponente unabhängig getestet werden kann. Wenn es jedoch darum geht, Komponenten zu verknüpfen, kann das Testen und Debuggen dieser eine Herausforderung sein. Ist die erhaltene unerwartete Ausgabe auf einen Fehler in der Komponente zurückzuführen, an der Sie gerade arbeiten, oder entsprechen die Daten, die von einem anderen Service zugeführt werden, nicht Ihren Erwartungen?
  • Monitoring und Service-Management: Einer der Vorteile der Microservices-Architektur ist die Möglichkeit, Instanzen von Microservices bei Bedarf zu erstellen und zu löschen, ohne andere Bereiche des Programms zu beeinträchtigen. Für die Verwaltung dieser Aufgaben sind möglicherweise zusätzliche Tools erforderlich, z. B. Software zur Verwaltung der Containerbereitstellung.

Microservices-Technologien

Zur Verwaltung von Microservices-Architekturen werden viele Tools und Technologien verwendet. Im Folgenden stellen wir einige Schlüsseltechnologien vor, die häufig in Umgebungen mit Microservices eingesetzt werden.

Containerisierung

Container sind ein wichtiger Bestandteil von Microservices-Architekturen. Sie ermöglichen die schnelle Bereitstellung von Microservices-Anwendungen auf vorhersehbare und effiziente Weise. Es gibt verschiedene Arten von Containerisierungstools, die von traditionellen LXC-Linux-Containern bis hin zum mittlerweile nahezu allgegenwärtigen Docker reichen. Container sind sofort ausführbare Versionen von Anwendungen, die alle erforderlichen Bibliotheken und sonstigen Informationen enthalten und mit nur einem Klick in praktisch jeder Umgebung bereitgestellt werden können.

Orchestrierung

Es ist zwar möglich, Container bei einer kleinen Bereitstellung manuell zu verwalten, aber Unternehmen, die mehrere Docker-Bereitstellungen über mehrere Cloud-Dienste hinweg ausführen, benötigen eine Möglichkeit, diesen Prozess zu automatisieren. Lösungen wie Kubernetes ermöglichen eine weitreichende Automatisierung. Entwickler können zur Definition ihrer Container eine von Menschen lesbare Datenserialisierungssprache namens YAML verwenden.

API-Gateway

Jeder Microservice kommuniziert über REST-APIs mit anderen Microservices. Wenn nur eine kleine Anzahl bekannter Dienste vorhanden ist, ist es einfach, diese Dienste direkt kommunizieren zu lassen. Je komplexer die Umgebung wird, desto weniger effizient ist es, Dienste direkt miteinander kommunizieren zu lassen. API-Gateways und Management-Tools erleichtern Entwicklern die Integration vorgefertigter Services. Das Gateway empfängt die Anfragen und leitet sie an die dahinter sitzenden Systeme weiter. Wenn Sie etwas an den zugrunde liegenden Diensten ändern müssen, muss nur das Gateway aktualisiert werden. Ihre anderen Services können weiterhin wie gewohnt Anforderungen an das Gateway übergeben.

Service-Registry

Eine Service-Registry ist eine effektive Möglichkeit, den Überblick über die Microservices zu behalten, an die Anforderungen gesendet werden können. Eine Service-Registry ist eine Datenbank mit Services, ihren Instanzen und ihren Speicherorten. Bei einigen Modellen kann eine Service-Registry auch dafür zuständig sein, Health Checks über die API der einzelnen Services aufzurufen, um zu bestätigen, dass die Services derzeit Anforderungen verarbeiten können. Einige Container-Management-Systeme, wie z. B. Kubernetes, verfügen über eigene integrierte Service-Registrys, um die Serviceerkennung und -verwaltung zu erleichtern.

Circuit Breaker

Circuit Breaker werden verwendet, um den Zustand von Services in einer Microservices-Architektur zu überwachen. Bei Vorhandensein eines Circuit Breakers können Microservices wie gewohnt miteinander kommunizieren und der Circuit Breaker zählt alle Fehler. Wenn die Anzahl der erkannten Fehler innerhalb eines bestimmten Zeitraums einen bestimmten Schwellenwert erreicht, wird der Schutzschalter aktiviert. Wenn diese Zahl nicht erreicht wird, setzt der Circuit Breaker den Zähler auf Null zurück und setzt das Monitoring fort. Dies trägt dazu bei, den zuverlässigen Betrieb der Microservices sicherzustellen und akzeptable Zeitüberschreitungen oder andere Fehler zu berücksichtigen.

Microservices-Anwendungsfälle und -Beispiele

Die Microservice-Architektur ist nützlich für jede Umgebung, in der eine webbasierte Anwendung im Laufe der Zeit weiterentwickelt und skaliert werden muss. Microservices werden in allen Bereichen eingesetzt, von Gaming und E-Commerce bis hin zu Logistik und Finanzen.

E-Commerce

Der Anbieter von E-Commerce-Lösungen Bigcommerce setzt sich für einige seiner Kunden für den Einsatz von Microservices-Architekturen und Headless-E-Commerce-Lösungen ein. Als wesentliche Vorteile dieser Architektur werden erhöhte Agilität und Flexibilität genannt.

Gesundheitswesen

Microservices ermöglichen es Gesundheitsdienstleistern, separate, aber lose gekoppelte Anwendungen zu erstellen, die zusammenarbeiten können und nur auf die Daten zugreifen, die sie benötigen. Die Verwendung einer Microservices-Architektur bietet mehrere Vorteile gegenüber herkömmlichen ESB-Systemen. Es gibt keine zentrale Fehlerquelle, sodass Probleme mit einem System keine Auswirkungen auf andere, potenziell kritischere Systeme haben. Tests und Sicherheit lassen sich außerdem einfacher verwalten, wenn die Systeme voneinander isoliert sind. Im Gesundheitswesen ist es äußerst wichtig, eine maximale System- und Datenverfügbarkeit zu erzielen. Der moderne Microservices-Ansatz wird zunehmend beliebt, da er dabei hilft, diese Ziele zu erreichen.

Bank- und Finanzwesen

Viele Unternehmen im Banken- und Finanzsektor sind in großem Maße auf herkömmliche Systeme angewiesen, die sich nur schwer aktualisieren lassen. Anstatt zu versuchen, eine monolithische Legacy-Codebasis zu ändern, verwenden viele Unternehmen Microservices, die eine Verbindung zu dieser vorhandenen Codebasis herstellen, um zusätzliche Funktionen bereitzustellen. Neuere Finanzinstitute können von Grund auf neu beginnen und Systeme auf der Grundlage von Microservices und individuellen APIs entwickeln. Ältere Institutionen können ihre monolithische Codebasis beibehalten und dennoch die Benutzererfahrung verbessern und neuere Features entwickeln, die mit diesem Code interagieren. In Kombination mit Systemen wie den Veeam-Datensicherheits- und -sicherungssystemen für Finanzdienstleistungen können Unternehmen darauf vertrauen, dass ihre Systeme robust und die Daten ihrer Benutzer zuverlässig geschützt sind.

Transport und Logistik

Der Transport- und Logistiksektor ist führend bei der Einführung vieler Technologien, einschließlich Internet-of-Things-Technologien, die für die Verfolgung der Lieferkette nützlich sein können. Ein prominentes Projekt, NIMBLE, verfolgt einen Ansatz einer Microservices-Architektur für verbundenes IoT, der eine zuverlässige und skalierbare Echtzeitüberwachung und -optimierung von Lieferketten bietet.

Durch einen Microservices-basierten Entwicklungsansatz können Unternehmen neue Geräte und Technologien schnell testen, ohne bestehende Arbeitsabläufe zu beeinträchtigen. Da moderne Lieferketten rund um die Uhr arbeiten, ist diese Agilität unglaublich nützlich.

So können Sie mit Veeam jetzt starten

Veeam ermöglicht eine einfache Verwaltung von Backups und Datensicherheit, unabhängig davon, in welcher Umgebung Ihre Daten gehostet werden. Ob Sie eine monolithische lokale Architektur verwenden, für die Verwaltung Ihrer Kundeninformationen vorwiegend auf SaaS-Drittanbieter wie Salesforce zurückgreifen oder Anwendungen in der Cloud hosten – Veeam kann Ihnen helfen, Ihre Daten zu schützen.

Wir bieten Backup- und Wiederherstellungslösungen für AWS, Azure, Google- und IBM-Cloud-Plattformen und Kubernetes-Bereitstellungen sowie gängige Virtualisierungslösungen. Unsere Tools sind so konzipiert, dass sie sich so nahtlos wie möglich in Ihre bestehende Konfiguration einfügen.

Für viele unserer Tools bieten wir kostenlose Community-Editionen an. So ist beispielsweise Veeam Kasten für bis zu fünf Knoten kostenlos. Dies gibt den Benutzern die Möglichkeit, das System zu testen, bevor sie entscheiden, ob es in größerem Maßstab eingesetzt werden soll. Es stehen auch zeitlich begrenzte Testversionen unserer Produkte für Unternehmen zur Verfügung.

Schützen Sie Ihr Unternehmen mit der Veeam Data Platform vor Datenpannen und Datenverlust.