Agilität durch Software-Modularisierung

Microservices: Ja oder nein?

Microservices kommen immer häufiger zum Einsatz. Aber was verspricht die Technologie? Führt die Software-Modularisierung zu mehr Agilität? Wann sind Microservices sinnvoll?

Das Architekturmuster

Was sind Microservices ?

Ohne die technische Komplexität dahinter zu erklären, sind Microservices leicht zu verstehen. Sie dienen der Modularisierung von Software und Prozessen. Dadurch werden große Projekte in kleine Einheiten aufgeteilt und können somit gut organisiert und umgesetzt werden. Programme sind so am Ende erweiter- und wartbar, sowie einzelne Komponenten austauschbar. Schon bei der Software-Planung berücksichtigt, ermöglicht die Verwendung von Microservices einen Best-of-Breed Ansatz.

Die wesentliche Eigenschaft von Microservices ist es, dass die jeweiligen Dienste unabhängig voneinander entwickelt und in Betrieb – deployed – genommen werden können. Dabei ist jede Komponente frei in der Wahl der zugrundeliegenden Programmiersprache und Software-Architektur. Szenarien mit unterschiedlichen Komponenten unterschiedlicher Hersteller, die zusammen eine große Software-Lösung bilden, sind damit leicht realisierbar.

Jeder Dienst ist also eigenständig zuständig für genau eine Teilaufgabe und in Bezug auf die eigene Programmlogik nach außen hin isoliert. Damit die Services miteinander kommunizieren können, werden standardisierte Schnittstellen, wie zum Beispiel REST-APIs, eingesetzt. Diese ermöglichen es über Datenaustauschformate wie JSON oder XML Nutzdaten und Informationen von einer an die andere Komponente weiterzugeben, ohne dabei die Architektur der jeweils anderen Komponente kennen zu müssen.
Alle Microservices, die zusammen ein System ausmachen, können auf diese Weise sehr leicht auf getrennten Servern oder gar in getrennten Rechenzentren betrieben werden, da der einzige Schnittpunkt die Schnittstelle darstellt. So kann bei richtiger Planung neben einer horizontalen Skalierung, auch die Ausfallsicherheit erhöht werden.


Ziele formulieren

Wann sind Microservices sinnvoll?

Die Antwort auf diese Frage kann nicht generalisiert werden. Sie müssen sich dazu unbedingt folgende Fragen stellen: Wie sind Ihre konkreten Ziele, warum wollen Sie Microservices einführen? Was möchten Sie damit erreichen und verbessern?

Auf einen Blick

Vorteile

  • Unabhängigkeit eines Microservices von anderen. Auch die Entwicklerteams arbeiten unabhängig voneinander und können in unabhängigen Zyklen deployen.
  • Durch die Isolation eines Microservices, können für die einzelnen Anwendungen unterschiedliche Technologien verwendet werden. Wichtig ist nur die gemeinsame Schnittstelle.
  • Best-Of-Bread Strategie: Kein One-Fits-All
  • Hohe Stabilität des Systems, denn bei Ausfall eines Microservices bleibt die restliche Architektur bestehen.
  • Problemlose Skalierbarkeit: Einzelne Dienste können unabhängig, nach Bedarf und individuell skaliert werden.
  • Austauschbarkeit einzelner Microservices ohne das gesamte System tauschen zu müssen.

Nachteile

  • Erhöhter Overhead für die Kommunikation der einzelnen Dienste. Ein gutes Konzept für den synchronen und asynchronen Datenaustausch ist unerlässlich.
  • Das Testen der Software wird komplexer, da das Zusammenspiel der einzelnen Komponenten ggf. von unterschiedlichen Dienstleistern getestet werden muss.
  • Auch der Deployment-Prozess kann komplexer werden, da er für jeden Dienst geplant und ausgeführt werden muss und ggf. fachliche Abhängigkeiten zwischen den einzelnen Releases der Microservices bestehen.
  • Datenkonsistenz und Datenverteilung B. von Stammdaten, die jeder Microservice benötigt, wird durch die redundante Datenhaltung komplexer

Mein Fazit

Ja, Microservices machen Organisationen agil und flexibel. Vor Projektbeginn sollten allerdings alle Aspekte einer Software-Modularisierung genau abgewogen werden. Zusammenfassend lässt sich sagen, dass Microservices besonders bei großen Software-Projekten sinnvoll sind, da kleine Teams verbunden mit geringer Koordination und die Skalierbarkeit entscheidende Vorteile sind. Zuvor müssen stets die Projektziele klar abgesteckt werden.

EIKONA Logistics ist Spezialist für die Entwicklung spezifischer Logistik-Software. Wir haben bereits viele Microservices-Projekte durchgeführt. Gemeinsam mit Ihnen analysieren wir die Ausgangssituation, definieren die Projektaufgaben, erstellen einen Projektplan und legen gemeinsam das Projektbudget fest.


Stefan Seufert

CTO/Vorstand

Stefan Seufert

Wie kein Zweiter fuchst sich der Software-Entwickler als Meister des Konzepts in die Anforderungen von Logistikdienstleistern. Informationen sicher und effizient auszutauschen und damit auch den physischen Logistik-Prozess zu beschleunigen, ist seine Leidenschaft.

Diesen Artikel teilen

Zurück