Softwareentwicklung und Architektur / 16.10.2020 / Lothar Grünz

Welche Vorteile bieten Microservices?

Microservices sind in aller Munde, wenn es um Softwarearchitektur geht. Die einschlägige Literatur verspricht viele Vorteile, wenn die verteilten Dienste richtig eingesetzt werden.

Doch der Weg zu einem funktionierenden Geflecht aus Microservices kann sehr anspruchsvoll sein. Daher gilt es im Vorfeld gut abzuwägen, in welchen Bereichen sich ihr Einsatz wirklich lohnt.Der folgende Artikel beleuchtet zum einen die unterschiedlichen Ausgangssituationen in der Softwareentwicklung, zum anderen wirft er einen Blick auf die wesentlichen Vorteile von Microservices und was zu tun ist, damit diese Vorteile zum Tragen kommen.

Voraussetzungen für die Implementierung von Microservices-Architekturen

Die Einführung von Microservices findet zumeist in einer der beiden folgenden Ausgangssituationen statt:

  • Sehr häufig ist bereits eine monolithische Altapplikation vorhanden. Diese soll nun durch eine neue Applikation abgelöst werden, die auf Microservices beruht. Die neue Applikation soll eine tragfähige zukunftssichere Architektur erhalten. Zudem ist darauf zu achten, dass die bestehende Applikation sich nicht auf einen Schlag abschalten lässt. Beim Umstieg müssen Alt- und Neuapplikation daher zeitweise parallel laufen, wodurch erhöhte Kosten für Betrieb, Infrastruktur und weitere Themen anfallen.
  • Andere Unternehmen befinden sich in der glücklichen Lage, dass es keine „Altlasten“ in ihrer IT-Landschaft gibt. Somit können sie – mehr oder weniger – von Grund auf starten. Aber auch diese Situation birgt einige Herausforderungen, insbesondere ein höherer Aufwand bei der initialen Implementierung.

Flexiblere, robustere und besser skalierbare Architekturen dank Microservices

Microservices bringen Vorteile mit, wie sie im Allgemeinen auch andere verteilte Systeme oder service-orientierte Architekturen bieten. Der Grad der Segmentierung sowie die Grösse der einzelnen Services haben einen nicht zu unterschätzenden Einfluss darauf, wie stark welche Vorteile zum Tragen kommen. Sam Newmans Standardwerk “Building Microservices” beschreibt diese sehr zutreffend:

  • Technologische Heterogenität (“technological heterogeneity”) – Jeder Microservice ist eine kleine Applikation in sich. Hierdurch ermöglichen sie die offene Auswahl derjenigen Technologie, welche am besten zu dem jeweiligen Service passt.
  • Resilienz (“resilience”) – In einer Microservice-Architektur ist jeder Microservice autonom und hat klar definierte Schnittstellen. Dadurch hat ein Fehler in einem Microservice keine – oder nur geringe – Auswirkungen auf die angrenzenden Module bzw. Microservices.
  • Skalierbarkeit (“scaling”) – Viele Applikation verzeichnen starke Schwankungen im Nutzungsverhalten. Um den erforderlichen Leistungsspitzen gerecht zu werden, müssen bestimmte Funktionsbereiche dabei innerhalb kurzer Zeit skalieren. Sogenannte Stateless (Micro-)Services mit entsprechender Architektur und Infrastruktur sind für diese Aufgabe bestens geeignet.
  • Einfaches Deployment (“ease of deployment”) – Microservices werden separat voneinander in Betrieb genommen. Je kleiner der Umfang ist, desto einfacher ist in der Regel auch das Deployment.
  • Organisatorische Ausrichtung (“organizational alignment”) – Der Ansatz der agilen Software-Entwicklung hat gezeigt, dass die Effizienz in kleinen Teams steigt. Microservices unterstützen diesen Ansatz und machen es einfacher, im Umfang abgegrenzte User Stories bzw. Applikationen den jeweiligen Teams zuzuordnen sowie an funktionalen Geschäftsbereichen in der Organisation zu orientieren.
  • Wiederverwendbarkeit (“composability”) – Der Einsatz von Microservices ermöglicht die Wiederverwendbarkeit von Komponenten; beispielsweise derselben Geschäftslogik für unterschiedliche Endgeräte wie Tablet, Wearable oder Mobile. Ebenso lassen sich neue Abläufe durch die Kombination vorhandener Microservices gestalten.
  • Verbesserung der Austauschbarkeit (“optimizing for replaceability”) – Durch die Autonomie von Microservices lassen sich Änderungen mit einem deutlich geringeren Risiko umsetzen als in grossen Applikationen, in denen Änderungen an der Codebasis zu unvorhersehbaren „Nebeneffekten“ führen können. Auch Umstellungen auf neue Technologien lassen sich bei Microservices leichter durchführen.

Herausforderungen bei der Implementierung und Orchestrierung

Diese und weitere Vorteile können Anwender sich von Microservices erwarten – dennoch sind sie nicht das Allheilmittel und die Garantie für die erfolgreiche Entwicklung von Software. Die folgenden Herausforderungen sind bei der Entscheidung für oder wider Microservices ebenfalls zu berücksichtigen:

  • Vor allem in der Startphase ist der „Rüstaufwand“ für die Implementierung von Microservices deutlich höher als für herkömmliche Architekturen.
  • Mit steigender Anzahl an Microservices steigt auch die Komplexität des Gesamtkonstrukts sowie der Aufwand für die reibungslose Kommunikation zwischen den einzelnen Microservices und deren Orchestrierung.
  • Der Entwurf und die Aufspaltung von Geschäftslogik in autonome Microservices erfordern viel Erfahrung und ein sehr tiefes Verständnis der geschäftlichen Abläufe und Zielsetzungen.
  • Eine ausschliesslich technologisch begründete Aufteilung kann in Sackgassen und zu falschen Designentscheidungen bei Schnittstellen führen.

Microservices spielen ihre Stärken je nach Anwendungsfall aus

Bei Architekturentscheidungen gilt es, die Vorteile und Herausforderungen von Microservices abzuwägen. Microservices gelten mittlerweile zurecht als State of the Art – doch nicht jede Applikation muss zwangsläufig auf ihnen basieren. Die gewählte Grösse bzw. Aufteilung der (Micro-)Services hat entscheidenden Einfluss auf Aufwände, Risiken und Fallstricke. Insbesondere ist der Faktor Komplexität zu berücksichtigen, der mit der Grösse und Heterogenität eines Microservice-Geflechts stark zunimmt.

Die besten Ergebnisse werden daher erzielt, wenn sich die Architektur an den individuellen fachlichen sowie geschäftlichen Anforderungen ausrichtet und die beste Lösung hierfür findet. Prinzipiell ist es auch möglich, eine monolithische Architektur für bestimmte Aufgaben mit Microservices anzureichern und somit eine „hybride“ Lösung zu erzielen.

Einblicke

Shaping the future with our clients