Microservices:
Skalierbare Software schneller liefern

Teilen

Was sind Microservices?

Microservices bezeichnet einen Ansatz für die Softwarearchitektur, bei dem unabhängige Teams die fortlaufende Bereitstellung von bestimmten zweckgebundenen Services priorisieren. Dieses Modell ist der Gegenentwurf zu herkömmlicher monolithischer Software, die aus eng miteinander verzahnten Modulen besteht, nur selten aktualisiert wird und als Ganzes skaliert werden muss. Für manche Unternehmen und Anwendungsfälle mag dieser monolithische Ansatz ausreichend sein. Doch Unternehmen, die mehr Agilität und Skalierbarkeit benötigen, setzen zunehmend auf Microservices.

Unternehmen aller Branchen – von Telekommunikation und Einzelhandel bis zu Finanzdienstleistungen und der Fertigung – entscheiden sich für Microservices, um neue Anwendungen zu entwickeln und monolithische Systeme aufzuspalten. Microservices sind eine Gruppe kleiner Services, die jeweils bestimmte Unternehmensfunktionen implementieren und über eine HTTP-API miteinander kommunizieren. Jeder Microservice wird als eigenständiger Prozess ausgeführt und kann unabhängig von den anderen Services in derselben Anwendung bereitgestellt, aktualisiert, skaliert und neu gestartet werden. Sind die Microservices Teil einer CI/CD-Pipeline, können einzelne Dienste entsprechend häufig aktualisiert werden, ohne die Konsumenten der Anwendung zu beinträchtigen.


Microservices Cartoon


Vorteile von Microservices

Die Entwicklerteams können schneller auf Kundenanforderungen reagieren.

Unternehmen, die eine Microservices-Architektur einsetzen, sind nicht an starre Versionszyklen gebunden und können daher zeitnah neue Funktionen liefern, wenn ihre Kunden sie benötigen.

Die Effizienz des Entwicklerteams ist höher.

Microservices bauen auf die bewährten Prinzipien von Agile sowie DevOps. Damit können mehrere Teams parallel an der schrittweisen Weiterentwicklung verschiedener Features arbeiten.

Organisationen können sowohl die Verfügbarkeit als auch die Skalierbarkeit von Systemen verbessern.

Eine gelungene Microservices-Architektur ist sehr robust. Sie nutzt wiederholbare und automatisierte Vorgänge, wo immer dies möglich ist. Zudem unterstützt sie eine fein abgestimmte Skalierung von Services und ist so aufgebaut, dass das System auch dann weiterläuft, wenn einzelne Komponenten ausfallen.




Microservices bei Pivotal

Pivotal unterstützt Sie beim Entwurf einer leistungsstarken Microservices-Architektur und liefert Ihnen eine erstklassige Umgebung zur Ausführung der Microservices.

In Zusammenarbeit mit unserem Team ermitteln Sie zunächst, welche Ihrer Anwendungen kontinuierlich weiterentwickelte Funktionen und extreme Skalierbarkeit benötigen. Anschließend lernen Sie, wie Sie Teams bilden, die sich auf diese Ziele konzentrieren.

Entwickeln und pflegen Sie Microservices mit Pivotal Cloud Foundry – unserer nativen Cloud-Plattform, die den Weg zur produktiven Nutzung verkürzt.

Entwickler können sich beim Aufbau verteilter Systeme mit Microservices auf Vorlagen von Spring Cloud Services stützen, um wichtige Herausforderungen zu bewältigen und den Arbeitsaufwand zu reduzieren.



Sie interessieren sich für eine Microservices-Architektur? Dann sollten Sie Folgendes beachten.

Microservices sind nicht unbedingt für jedes Unternehmen oder jede Anwendung geeignet. Sie können sogar zusätzliche Kosten verursachen, wenn sie nicht korrekt implementiert werden. Deshalb sollten Sie zunächst folgende Fragen klären:

Ist Ihr Unternehmen dafür bereit?

Der Umstieg auf Microservices erfordert nicht nur eine technologische, sondern auch eine organisatorische Umstellung. Ihre Teams müssen bereit sein, die Softwareentwicklung als einen stark automatisierten Prozess zu verstehen, bei dem laufend neue Versionen bereitgestellt werden. Ist Ihr Unternehmen bereit, isolierte Funktionsbereiche aufzubrechen und eigenständige Teams für die Entwicklung und den Betrieb von Services einzusetzen? Ermöglichen Ihre Veränderungsmanagement-Prozesse eine vollständig automatisierte Bereitstellungs-Pipeline?

Gibt es bei Ihnen übereifrige Entwickler?

Microservices eignen sich nicht für jede Anwendung. In der anfänglichen Begeisterung, alles auf Microservices umzustellen, wenden Ihre Entwickler möglicherweise viel Zeit für die Umprogrammierung bestehender Anwendungen auf – die aus geschäftlicher Sicht jedoch gar nicht verändert werden müssen. Anwendungen, die nur selten geändert werden oder die nicht geschäftskritischen Funktionen dienen, lassen Sie vermutlich besser in ihrer alten, monolithischen Architektur. Microservices erhöhen zwar die Agilität, bringen jedoch auch eine größere Komplexität mit sich. Seien Sie sich ganz sicher, dass Sie Ersteres benötigen, bevor Sie Letzteres in Kauf nehmen.

Sind Ihre Services auf einander abgestimmt?

Microservices sind nur lose miteinander verbunden und ändern sich permanent. Wie finden Sie die aktuelle URL eines Service oder leiten den Datenverkehr über eine variable Anzahl von Serviceinstanzen? Wie tauschen Services untereinander Daten aus? In vielen Fällen ist die Technologie für Service Discovery, Lastenausgleich und Benachrichtigungen nicht ansatzweise in der Lage, mit der Dynamik von Microservices umzugehen.

Wie sind Sie auf den alltäglichen Betrieb einer komplexen Umgebung vorbereitet?

Je mehr Objekte Sie managen müssen, desto größer ist das Betriebsrisiko. Wenn Sie diese Aufgabe nicht von Grund auf neu angehen, wird die Verwaltung von hunderten oder tausenden Microservices auf hunderten oder tausenden Servern zum reinsten Alptraum. Wie spielen Sie Patches oder Upgrades in die betreffenden Rechner ein? Behalten Sie den Überblick über gegenseitige Abhängigkeiten und darüber, welche Anwendungen betroffen sind? Wie sorgen Sie dafür, dass die zahlreichen Microservices-Instanzen an die aktuelle Anwendungskonfiguration angepasst werden? Von der Wahl der Komponenten für Ihre Microservices-Plattform und der Entscheidung, wo Sie diese Komponenten und Services ausführen, wird ihre betriebliche Agilität für die nächsten Jahre abhängen.



Die entscheidenden Unterschiede: Microservices und herkömmliche Architekturen im Vergleich
Microservices-Architektur
Herkömmliche Architektur
Ein Schwerpunkt: Microservices können genau eine Sache, und die richtig gut. Sie sind auf einen bestimmten Problembereich fokussiert und bringen alles mit, was sie dafür brauchen (sogar die Daten). Das „Micro“ in Microservices steht nicht für die Größe, sondern für den Wirkungsbereich eines Service.
Viele Schwerpunkte: Herkömmliche Lösungen versuchen, mit einem integrierten Softwarepaket viele geschäftliche Aufgaben abzudecken.
Lose Verknüpfung: In einer Microservices-Architektur müssen die Services so eigenständig wie möglich sein und sollten im Code keine festen Verweise auf andere Services enthalten.
Enge Verknüpfung: Herkömmliche Systeme bestehen oft aus einem komplizierten Gefüge voneinander abhängiger Komponenten, die in einer genau festgelegten Reihenfolge bereitgestellt werden müssen.
Kontinuierliche Bereitstellung: Microservices sind ideal für Teams, deren Anwendungen sich ständig wandelnde Anforderungen erfüllen müssen. Sie werden regelmäßig aktualisiert und automatisch für die Produktion bereitgestellt.
Neue Versionen nach Zeitplan: Die Entwicklung der Anwendungen und Implementierung von Updates folgen einem festen Zeitplan. Häufig wird ein vierteljährlicher oder jährlicher Zyklus eingehalten.
Unabhängige Teams mit Eigenverantwortung für den Service-Lifecycle: Der Umstieg auf Microservices betrifft die Teamstruktur ebenso wie die Technologie. Microservices werden von unabhängigen Teams entwickelt, ausgeliefert und verwaltet. Diese Vorgehensweise ist nicht für jeden Service notwendig. Es ist jedoch ein leistungsfähiges Modell für geschäftskritische Dienste.
Viele Teams mit gemeinsamer Verantwortung für den Service-Lifecycle: Projektteams sind verantwortlich für die erste Version einer neuen Software und werden dann auseinandergerissen, weil die Mitglieder anderen Projekten zugeteilt werden. Die weitere Betreuung der Software übernimmt dann ein Administrationsteam.
Designmuster und Technologie mit Fokus auf große, verteilte Systeme: Microservices lassen sich nicht auf dieselbe Art und Weise und mit denselben Tools entwickeln und betreiben wie monolithische Software. Eine Microservices-Architektur erfordert Funktionen für Service Discovery, Benachrichtigungen, Routing im Netzwerk, Fehlererkennung, Protokollierung, Speicherung, Identität und vieles mehr.
Designmuster und Technologie mit Fokus auf Prozesse: Isolierte Tools und Prozesse, die auf die wichtigsten Entwicklungsphasen, Qualitätssicherung und Veröffentlichung fokussiert sind, produzieren monolithische Software.