Der Übergang von Monolithen zu Microservices lohnt sich

7 Dinge, die Sie über Microservices wissen sollten [Gastbeitrag]
Kommentare

Monolithische Strukturen wirken auf den ersten Blick vorteilhaft für ein Projekt. Mit der Zeit werden diese jedoch schwerfällig und lassen sich schlecht an Veränderungen anpassen. Hier kommen Microservices-Architekturen ins Spiel. Warum sich der Übergang von Monolithen zu Microservices lohnt, zeigt dieser Artikel.

Das monolithische Anwendungsmodell hat vor allem zu Beginn eines Projekts viele Vorteile. Im Laufe der Zeit aber können Monolithen auch schwerfällig werden und so die schnelle und flexible Anpassung eines Unternehmens an die Veränderungen des Geschäftsumfelds einschränken.

Um das zu vermeiden, nutzen Unternehmen wie Amazon, eBay und Netflix die Vorteile von Microservice-Architekturen. „Microservices-Modelle sind ein Ansatz zur Entwicklung einer Gesamtanwendung als eine Gruppe kleiner Dienste, die jeweils als eigene Prozesse laufen und über einfache Mechanismen, häufig HTTP-basierte APIs, miteinander kommunizieren“, erläutert Martin Fowler das Prinzip.

Der bekannte Autor, Software-Entwickler und frühe Verfechter von Microservices rät dazu, diese Dienste an die betrieblichen Möglichkeiten anzupassen und diese von einem vollautomatischen Implementierungsvorgang unabhängig voneinander zu implementieren. „Es gibt nur ein Mindestmaß an zentralisiertem Management für diese Dienste, die in unterschiedlichen Programmiersprachen geschrieben sind und verschiedene Datenspeicherungsmechanismen nutzen können,“ so Fowler weiter.

Microservices vereinfachen Verwaltung monolithischer Anwendungen

Das Konzept der Microservices ist zwar nicht neu, mittlerweile aber ein wesentlicher Bestandteil des Entwicklungsvorgangs im heutigen, sehr dynamischen Geschäftsumfeld. Jeder Dienst hat klar definierte Grenzen und kommuniziert mit anderen Diensten über APIs. Microservices ermöglichen einen Grad an Modularität, mit dem man die einzelnen Dienste schneller entwickeln, testen und implementieren kann. Deshalb können Entwickler mit Diensten arbeiten, die einfacher zu verstehen und zu pflegen sind.

Einer der größten Vorteile des Microservices-Modells ist die Tatsache, dass sich Entwickler immer auf einen Dienst anstatt auf eine ganze, monolithische Anwendung konzentrieren können. Dadurch werden sie nicht durch die für den ursprünglichen Monolithen verwendete(n) Technologie(n) eingeschränkt, sondern können für die zu erledigende Aufgabe die geeignetste Technologie wählen und iterativ vorgehen. Darüber hinaus hat jeder Dienst sein eigenes Datenbankschema, sodass Anwender das am besten zum jeweiligen Dienst passende Datenbanksystem verwenden können.

Steht in einer Organisation der Übergang von Monolithen zu Microservices an, sollten folgende Punkte bekannt sein:

1. Microservices sind modular

Im Microservices-Modell werden Anwendungen abhängig von den betrieblichen Möglichkeiten in eine kleine Menge untereinander verbundener Dienste aufgeteilt. Jeder Dienst realisiert dabei eine Gruppe unterschiedlicher Funktionen und dient somit als Minianwendung mit eigener Anwendungslogik, eigenen Adaptern und sogar einem Datenbankschema. Solche Dienste können auf verschiedene Weise zusammengefügt werden und insgesamt als neues Produkt dienen.

2. Microservices sind kein neuer Gedanke

Mit ständiger Bereitstellung und Integration, Containern und DevOps ist die Innovationsgeschwindigkeit im Web sehr stark angestiegen, deshalb ist das Microservices-Konzept heute wichtiger denn je. Jeder Dienst verfügt über klar definierte Grenzen in Form eines APIs auf Grundlage von RESTful, RPC oder Nachrichten. Das Modell erzwingt einen Modularitätsgrad, mit dem die einzelnen Dienste schneller zu entwickeln sowie einfacher zu verstehen und zu pflegen sind.

3. Interne Sicherheit als oberstes Gebot

Die Organisationen sollten besonders auf die interne Sicherheit einer Microservices-Anwendung achten. Es lohnt sich, ein Augenmerk auf die Sicherheitsbedrohungen zu legen, die von anderen Komponenten der Anwendung drohen. Auch wenn man ihnen zunächst trauen kann, so weiß niemand, wie sich der Nutzerkreis der Anwendung zukünftig entwickeln wird.

Der erste Schritt sollte eine Standardisierung auf TLS (Transportschichtsicherheit) sein. Von Anfang an sollte in die Architektur eine Zertifikatsprüfung sowohl für Nutzer (Clients) als auch Anbieter (Server) eingebaut werden. Die hierdurch möglichen Beeinträchtigungen der Leistung können durch beschleunigende Proxy-Server minimiert werden.

Außerdem ist die Verwendung eindeutiger Kennzeichnungen für jede Transaktion, z. B. mit OpenTracing, bei der Aufzeichnung und Prüfung von Vorgängen überaus wichtig.

4. Trennung von Frontend und Backend

Bei den meisten monolithischen Anwendungen gibt es eine klare Trennung zwischen der äußeren Präsentation (Benutzerschnittstelle) einerseits und den internen, firmenseitigen Datenzugriffen andererseits. Beide sind meist über eine API-Schnittstelle verbunden. Durch die Aufteilung der Anwendung entlang dieser Schnittstelle erhält man zwei kleinere, leichter überschaubare Anwendungen.

5. Kleinere Dienste bedeuten einfachere Entwicklung

Das Microservices-Modell macht es für Entwickler-Teams einfacher, sich jeweils auf einen Dienst anstatt auf eine ganze, monolithische Anwendung zu konzentrieren. Somit sind die Entwickler nicht an die für den ursprünglichen Monolithen verwendete Technologie gebunden, sondern können die für die zu erledigende Aufgabe am besten geeignete Technologie wählen.

Dabei können Organisationen vorhandene Module in eigenständige Microservices umwandeln. Bei jeder solchen Umwandlung eines Moduls in einen Dienst wird der vorhandene Monolith kleiner. Je mehr Module umgewandelt werden, desto weniger Probleme kann ein komplexer Monolith verursachen.

6. Jeder Dienst hat sein eigenes Datenbankschema

Auch wenn dies dem Prinzip eines unternehmensweiten Datenmodells widerspricht, so erlaubt es den Anwendern doch, das am besten zum jeweiligen Dienst passende Datenbanksystem zu verwenden. Dieser Gedanke wird auch als „polyglot persistence architecture“ bezeichnet, also als eine Architektur der polyglotten Beständigkeit. Sie steht für die Verwendung unterschiedlicher Datenspeichertechnologien, die passend zur Verwendung durch die jeweiligen Anwendungen ausgewählt werden.

7. Microservices bieten größere Angriffsfläche als Monolithen

Microservices bieten eine größere Angriffsfläche als Monolithen. Deshalb ist es wichtig, sich die Unterschiede in den Sicherheitsaspekten bewusst zu machen und darauf zu reagieren.

Microservices kommunizieren zwischen den verschiedenen Diensten. Zuvor waren die Microservices auf demselben Server zuhause, sind jetzt aber auf verschiedene Server verteilt und kommunizieren über ein Netzwerk. Falls jemand in das Netzwerk eindringt und z. B. eine Datensonde einschleust, kann er jede Menge Datenverkehr mit potenziell vertraulichen Informationen sehen. Eine Möglichkeit, Organisationen davor zu schützen, ist die Verwendung von SSL für die Kommunikation zwischen den Microservices.

Unabhängig von Unternehmensgröße und Branche arbeiten Entwickler heute meist an irgendwelchen monolithischen Anwendungen und können diese häufig ausufernden, aufgeblähten Anwendungskolosse nur noch mit Mühe aktualisieren, testen oder implementieren. Denn mit den immer komplexer werdenden Anforderungen an Unternehmen werden auch die dahinterstehenden Anwendungen immer komplexer. Und je komplexer eine Anwendung ist, desto weniger Sinn ergibt ein monolithisches Modell. Microservices können Unternehmen dabei helfen, ihre monolithischen Anwendungen effektiver zu verwalten. Im Laufe der Zeit werden die Unternehmen dann genug Module in Microservices umgewandelt haben, sodass Monolithen kein Problem mehr darstellen.

DevOps Docker Camp

Das neue DevOps Docker Camp – mit Erkan Yanar

Lernen Sie die Konzepte von Docker und die darauf aufbauenden Infrastrukturen umfassend kennen. Bauen Sie Schritt für Schritt eine eigene Infrastruktur für und mit Docker auf!

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -