Was sind Microservices? - Vor- und Nachteile der Microservice-Architektur

16.10.2021

Blog Artikel Bild - Was sind Microservices? - Vor- und Nachteile der Microservice-Architektur

In diesem Blogbeitrag möchte ich einmal auf die Frage eingehen, was sind Microservices eigentlich sind und warum Sie in modernen Softwaresystemen nicht mehr wegzudenken sind.

Dieser Artikel erhebt keinen Anspruch auf Vollständigkeit und soll lediglich einen ersten Überblick, sowie die meiner Meinung nach wichtigsten Vor- und Nachteile der Microservice Architektur aufzeigen.

Vor gar nicht allzu langer Zeit wurden Softwaresysteme monolithisch entwickelt. Das gesamte Softwaresystem bestand aus einer Code-Basis. Wenn beispielsweise eine kleine Funktionalität des Systems ausgetauscht oder erweitert werden sollte, musste das gesamte System neu ausgerollt werden. Auch musste jeder Softwareentwickler die gesamte Code-Basis des Systems mehr oder weniger kennen.

Da von Zeit zu Zeit die Softwaresysteme immer größer und komplexer geworden sind, wurde eine neue Softwarearchitektur benötigt. Die Microservice-Architektur war geboren.

Bei der Microservice-Architektur wird das gesamte Softwaresystem in kleinere Bestandteile zerlegt, sodass die einzelnen Dienste (Microservices) unabhängig ihre Arbeit verrichten können. Einzelne Microservices sind voneinander komplett entkoppelt. Dies erlaubt einen modularen Aufbau von größeren Softwaresystemen.

Die Kommunikation zwischen den einzelnen Microservices erfolgt meist nach einem zuvor definierten plattformunabhängigen Austausch Format. Dies ist in den mir bekannten Microservice-Architekturen vorwiegend REST und JSON.

Microservices entsprechend weitestgehend der UNIX-Philosophie („Erledige nur eine Aufgabe und erledige sie gut“)

Fast jedes neues Softwareprojekt wird heutzutage in der Microservice-Architektur implementiert.

Folgende Punkte sprechen für den Einsatz der Microservice Architektur:

Vorteile der Microservice-Architektur

  • Einzelne Softwareentwickler oder kleinere Teams können sich voll und ganz auf einzelne Microservices konzentrieren und müssen sich nicht durch ein größeres System arbeiten. Dies erlaubt schnellere Änderungen, Anpassungen und Erweiterungen von einzelnen Funktionalitäten.
  • Microservices erlauben die Skalierung von Entwicklerkapazitäten.
  • Microservices können meist schnell und einfach durch Neuimplementierungen beispielsweise in einer anderen Programmiersprache schnell ersetzt werden.
  • Fällt ein Microservice aus, bleiben anderen Funktionalitäten des gesamten Softwaresystems weiterhin bestehen.
  • Da einzelne Microservices voneinander unabhängig sind, kann beispielsweise jeder Microservice in einer anderen Technologie implementiert oder ausgetauscht werden. Dies erlaubt beispielsweise bei neuen Technologien schnell den Tech-Stack mit neuen Technologien aktuell zu halten.
  • Ein auf Microservices basierendes Softwaresystem kann leicht durch weitere Microservices erweitert werden.

Wie alles im Leben bringt der Einsatz von Microservices jedoch nicht nur Vorteile mit sich, sondern kann auch Nachteile aufweisen, die jedoch minimiert werden können.

Nachteile der Microservice-Architektur

  • Microservices erzeugen einen höheren Aufwand im Betrieb, da die einzelnen Microservice Dienste einzeln überwacht werden und die Kommunikation zwischen den einzelnen Microservices gewährleistet werden muss.
  • Das Loggen wird komplexer, da jeder Microservice für sich einzelne Logs schreibt und diese ggf. zusammegeführt werden müssen.
  • Da einzelne Microservices in unterschiedlichen Technologien implementiert werden können, müssen entsprechende Entwicklerkapazitäten in diesen Technologien vorhanden sein.