Anwendungen und Praxisbeispiele von Microservices
article.detail.published-on:
October 05, 2021
article.detail.reading-time:
article.detail.minutes
Vor dem Aufkommen der Microservice-Infrastruktur verließen sich führende Unternehmen wie Netflix, Ebay, Spotify und andere auf monolithische Archtektursysteme. Ein System wird als „monolith“ bezeichnet, wenn es aus miteinander verknüpften funktionalen Aspekten besteht und nicht aus separaten architektonischen Elementen.
Im Gegensatz zu monolithischen und Microservices sind Letztere einfacher zu verstehen und besser geeignet, um flexible Anwendungen mit logischen Services zu erstellen. Aus diesem Grund sind alle oben erwähnten Unternehmen von einer monolithischen Architektur zu einer Microservice-Architektur übergegangen.
Praxisbeispiele
Ebay
Wie die meisten Systeme begann die Handelsplattform eBay als Monolith: Damals hatte eBay 3,4 Millionen Codezeilen in einer einzigen Datei. Aufgrund dieser Situation wurde beschlossen, den Monolithen zu öffnen und Microservices (in Java) zu entwickeln. Bei eBay kommunizieren einzelne Dienste über REST miteinander.
Die Tatsache, dass eBay und viele andere Unternehmen erfolgreich von einer Monolith- zu einer Microservice-Architektur übergegangen sind, beweist die Nützlichkeit dieses moderneren Ansatzes. Während in der Anfangszeit eines Online-Projekts mit wenigen aktiven Nutzern und einer überschaubaren Reichweite ein Monolith ausreicht, wird diese Struktur mit steigender Nachfrage zu einem wachstumshemmenden Monster.
Netflix
Netflix verfolgt den gleichen Ansatz: Microservices implementieren REST-Schnittstellen, die Clients verwenden können. Ziel ist es, Microservices nicht nur eigenständig zu entwickeln, sondern auch zu skalieren. Netflix setzt bei der Implementierung hauptsächlich auf Java. Die meisten Tools und Bibliotheken im Netflix-Universum sind für diese Programmiersprache konzipiert. Diese Tools sind als Open Source verfügbar. Auch andere Technologien sind über eine REST-Schnittstelle möglich. Microservices bieten somit viel größere und komplexere Geschäftsfunktionen.
Spotify
Auch ein weiterer Streaming-Dienst, Spotify, nutzt in seinem Angebot Microservices. Die Herausforderung für Spotify in seiner täglichen Entwicklungsarbeit ist ein harter Wettbewerb. Mit Apple, Amazon und Google sind einige der größten Informationstechnologie-Unternehmen der Welt im Audiostreaming-Markt. Gleichzeitig müssen Entwickler aufgrund der steigenden Nutzerzahlen ständig auf steigende Nachfragen reagieren und bestimmte Geschäftsregeln einhalten (zum Beispiel Lizenzrechte). Um eigene Produktinnovationen schneller zu veröffentlichen und rasch auf neue Entwicklungen von Wettbewerbern reagieren zu können, sind Microservices die passende Lösung für Spotify.
Die Funktion, mit der Benutzer beispielsweise Vorschläge erhalten, sobald sie einen Suchbegriff eingeben, ist ein eigenständiger Microservice, der von einem dedizierten Team verwaltet wird. Spotify profitiert von der Robustheit seiner Microservice-Architektur: Fällt ein Microservice aus, wird nicht das gesamte Produkt unbrauchbar. Spotify verwendet über 800 Microservices. Der Streamingdienst verwendet übrigens ebenso Java für die meisten Microservices.
Beispielanwendungen
Angenommen, ein Unternehmen erstellt ein Online-Shop, der das Microservice-Architekturmuster verwendet, und implementiert die Produktdetailseite. Die Entwickler müssen mehrere Versionen der Produktdetails-Benutzeroberfläche ausarbeiten:
- HTML5/JavaScript-basierte Benutzeroberfläche für Desktop- und mobile Browser – HTML wird von einer serverseitigen Webanwendung generiert
- Native Android- und iPhone-Clients – diese Clients interagieren mit dem Server über REST-APIs
Darüber hinaus muss der Online-Shop Produktdetails über eine REST-API zur Verwendung durch Anwendungen von Drittanbietern bereitstellen.
Ein anderes Beispiel:
Ein Unternehmen entwickelt eine Online-Shop-Anwendung mit dem Microservice-Architekturmuster. Die meisten Dienste müssen Daten in einer Art Datenbank speichern. Beispielsweise speichert der Bestellservice Informationen zu Bestellungen und der Kundenservice speichert Informationen zu Kunden.
Die Dienste müssen lose gekoppelt sein, damit sie unabhängig entwickelt, bereitgestellt und skaliert werden können. Einige Geschäftstransaktionen müssen Invarianten erzwingen, die mehrere Dienste umfassen. Im Anwendungsfall „Bestellung aufgeben“ muss beispielsweise überprüft werden, dass eine neue Bestellung das Kreditlimit des Kunden nicht überschreitet. Andere Geschäftstransaktionen müssen Daten aktualisieren, die mehreren Diensten gehören.
Einige Geschäftstransaktionen müssen Daten abfragen, die mehreren Diensten gehören. Beispielsweise muss die Verwendung von View Available Credit den Kunden abfragen, um das Credit Limit und die Orders zu finden, um den Gesamtbetrag der offenen Orders zu berechnen. Einige Abfragen müssen Daten verknüpfen, die mehreren Diensten gehören. Um beispielsweise Kunden in einer bestimmten Region und ihre letzten Bestellungen zu finden, müssen Kunden und Bestellungen zusammengeführt werden.
Code
Erfahrungen mit diesem Ansatz gibt es nicht nur in modernen Umgebungen wie den Online-Shops oder Online-Werbungen, sondern auch in traditionellen Organisationen wie Online-Magazinen. Typische Microservices sind in diesem Szenario sehr klein, möglicherweise 10 oder 100 Zeilen Code. Jeder der Microservices kann beispielsweise einen Teil des Anzeigenplatzierungsalgorithmus implementieren.
Übersicht der gesamten Blogreihe über Microservices
article.detail.share
article.detail.categories
Checkliste für ein gutes Social Intranet
June 07, 2022
Das Social Intranet und seine Besonderheiten
May 03, 2022