Suchen

Technologie allein reicht nicht Modernisierung von geschäftskritischen Systemen mittels Microservices und Cloud

Autor / Redakteur: Matthias Hänsgen* / Florian Karlstetter

Ein Großteil der bestehenden geschäftskritischen Systeme in Unternehmen ist zwischenzeitlich „in die Jahre gekommen“. Technische Symptome hierfür sind Probleme bei der Systemverfügbarkeit und der Skalierbarkeit. Parallel zu den technischen treten oftmals auch strukturelle Herausforderungen in Form von kostspieliger Wartung und einer nicht mehr zeitgemäßen Erweiterbarkeit der Systeme auf.

Firmen zum Thema

Wie sich geschäftskritische Systeme mit Hilfe von Microservices und Cloud-Technologien modernisieren lassen.
Wie sich geschäftskritische Systeme mit Hilfe von Microservices und Cloud-Technologien modernisieren lassen.
(Bild: © vectorfusionart - stock.adobe.com)

Dieser Artikel zeigt auf, wie Microservices und Cloud-Technologien sinnvoll bei der Migration und Optimierung von Systemen eingesetzt werden können. Darüber hinaus wird anhand von Praxiserkenntnissen aufgezeigt, welche weiteren Faktoren für einen erfolgreichen Transfer von „Altsystemen“ in die Cloud zu berücksichtigen sind.

Cloud-Technologien vereinfachen die Erfüllung von nicht-funktionalen Anforderungen an Systeme

Alle etablierten Cloud-Anbieter bieten Infrastrukturen an, die den Betrieb

  • hoch verfügbarer (24x7-Betrieb),
  • fehlertoleranter und
  • skalierbarer (z. B. Steigerung der Geschäftstransaktionen um 50%)

Systeme gegenüber einem Inhouse-Betrieb vereinfachen und kostengünstiger gestalten. Hierfür wird eine vollständige Infrastruktur aus einem Guss für den Betrieb von Systemen zur Verfügung gestellt (virtuelles Rechenzentrum). Die wichtigsten Vorteile eines Systembetriebs in der Cloud sind die folgenden:

1. Kostenvorteile

  • keine Kapitalbindung in Form von Hardware/Server/Lizenzen
  • Economies of Scale
  • schnelle Ressourcen-Anpassung bei schwankender Last (automatisches Skalieren)
  • Testen von neuen Technologien ohne Vorab-Investitionen in Hardware

2. Schnellere Entwicklungszyklen = Zeitvorteile

  • Ressourcen für die Entwicklung und Proof-of-Concepts können innerhalb von Minuten anstatt Wochen bereitgestellt werden.

3. Qualität der Infrastruktur

  • Für ein kleineres Unternehmen ist es sehr kostspielig, vergleichbare technische und organisatorische Maßnahmen durchzuführen (z. B. physische Sicherheit des Rechenzentrums, verteiltes Rechenzentrum über mehrere Standorte, Netzwerkanbindung, Personal).

Neben dem reinen Transfer eines Systems vom Inhouse-Betrieb in die Cloud (Lift and Shift) bietet die Cloud darüber hinaus weitere Technologien an, die sowohl zu einem kostengünstigeren und vereinfachten Betrieb führen als auch die Adressierung von nicht-funktionalen Anforderungen erleichtern.

Zu diesen Technologien gehören:

  • Nutzung von vorgefertigten Services des Cloud-Anbieters in Form von Platform as a Service (PaaS) und Software as a Service (SaaS); z. B. Datenbanken, Datenspeicher, Analytics- und Deployment-Werkzeuge
  • Serverless Computing (Function as a Service); z. B. verbesserte Skalierbarkeit, Anpassung an starke Lastschwankungen

Microservices vereinfachen die Entwicklung und Wartung von umfangreichen Systemen

Fast alle bestehenden, geschäftskritischen Systeme in Unternehmen basieren auf einer monolithischen Systemarchitektur, die über eine jahrzehntelange Weiterentwicklung zu großen und komplexen Systemen geführt hat. Diese Architektur verursacht Systeme, die aus Millionen Zeilen von Programmcode bestehen, die über komplexe Abhängigkeiten verfügen und aus denen eine einzige Applikation erstellt wird. Hieraus resultieren die folgenden Nachteile:

  • Aufgrund der Komplexität des Programmcodes ist die (Weiter-)Entwicklung langsam und fehleranfällig (Time-to-Market ist zu lang, z. B. dauert ein neues Feature 3 Monate von der Entwicklung bis zur Inbetriebnahme).
  • Wegen der Größe der Applikation sind die Entwicklungszyklen (compile, deploy, test) langsam und schwerfällig.
  • Die selektive Skalierung von Funktionalitäten, die einen hohen Ressourcenbedarf haben, ist schwierig, da das System aus einer einzelnen Applikation besteht.
  • Eine hohe Ausfallsicherheit zu erreichen, ist schwierig, da eine fehlerhafte Funktionalität die gesamte Applikation zum Absturz bringen kann und ein vollständiges Testen der Applikation aufgrund der Größe schwierig ist.
  • Die Systeme basieren auf einer einheitlichen Technologie-Plattform. Sie kann wegen des Umfangs der Systeme nicht ohne Weiteres ausgetauscht und damit an neue technische Entwicklungen angepasst werden (Technology/Vendor-lock-in).

Ein Lösungsansatz, um komplexe Systeme zu modularisieren, ist der Einsatz einer Microservices-Architektur, die auf den folgenden Konzepten basiert:

  • Zerlegung des Gesamtsystems in unabhängige Prozesse (Microservices)
  • Entkopplung der Prozesse – Kommunikation nur über definierte Schnittstellen: Kommunikation zwischen den Prozessen über sprachunabhängige Schnittstellen (z. B. REST)

Eine Microservices-Architektur hat gegenüber einer monolithischen Architektur diverse Vorteile:

Microservices sind klein und dadurch einfacher zu warten und zu erweitern: Ein Microservice beinhaltet nur einen fachlichen Aspekt eines Systems und ist dadurch für einen Entwickler leichter zu verstehen als ein komplexes Gesamtsystem. Außerdem beschleunigt die kleinere Sourcecode-Basis den generellen Entwicklungsprozess durch verkürzte Handlings-Zeiten (z. B. Kompilieren, Starten des Service, Testen). Dies hat in der Praxis eine kürzere Entwicklungszeit für eine Funktionalität des Systems zur Folge.

Microservices können unabhängig voneinander produktiv gesetzt werden: Änderungen/Erweiterungen am System die nur einen Microservice betreffen, können ohne weitere Koordination mit anderen Entwicklungsaktivitäten produktiv gesetzt werden. Dies unterstützt die schnelle Produktivsetzung von neuen Systemfunktionalitäten.

Microservices sind unabhängig voneinander skalierbar: Innerhalb eines Systems haben die einzelnen Funktionen einen unterschiedlichen Ressourcenverbrauch und eine unterschiedliche Ausführungshäufigkeit (Anzahl der Businesstransaktionen pro Zeiteinheit). Innerhalb einer monolithischen Systemarchitektur kann nur die gesamte Applikation skaliert werden (höhere Anzahl von Instanzen, die über einen Loadbalancer angesprochen werden). Bei einer Microservices-Architektur können einzelne Microservices je nach Belastung skaliert werden. Hieraus resultiert eine Kostenreduktion für den Betrieb, da weniger Ressourcen benötigt werden.

Besseres, isoliertes Fehlerverhalten: In einer monolithischen Systemarchitektur kann eine fehlerhafte Komponente das gesamte System zum Absturz bringen. In einer Microservices-Architektur ist beim Ausfall eines Services nur dieser betroffen und die restlichen Systemfunktionen können weiterhin genutzt werden.

Vereinfachter Einsatz neuer Technologien: Die Microservice-Architektur ermöglicht es, pro Microservice eine spezifische Technologieentscheidung zu treffen. So wird z. B. Service A in Programmiersprache Y entwickelt, alle anderen Services mit Programmiersprache Z. Hierdurch besteht die Möglichkeit, basierend auf den Anforderungen an einen spezifischen Service, die optimale Implementierungstechnologie auszuwählen.

Eine Microservice-Architektur ermöglicht das Arbeiten mit autonomen Teams: Die Weiterentwicklung von monolithischen Systemen erfordert eine detaillierte Koordination aller (Entwicklungs-)Aktivitäten, was einen hohen Abstimmungsaufwand und eine verlangsamte Entwicklung bedeutet. Microservices bieten die Möglichkeit, autonome Teams pro Microservice zu etablieren. Es besteht lediglich Abstimmungs- und Koordinationsbedarf, wenn sich öffentliche Schnittstellen für andere Microservices ändern.

Die Praxis – die Welt ist nicht Schwarz-Weiß

Die bisher beschriebenen Vorteile legen nah, dass der Einsatz von Cloud-Technologien und Microservices für die Modernisierung von Systemen ein „Selbstgänger“ ist. Bei einer Entscheidung für eine Modernisierung eines Systems sollten auf jeden Fall diese Erkenntnisse aus der Praxis berücksichtigt werden:

Gerade für kleinere Unternehmen bietet eine Cloud-Infrastruktur eine attraktive und kostengünstige Plattform, um skalierbare und hochverfügbare Systeme zu betreiben. Ein essenzieller Punkt vor einem Schwenk in die Cloud ist ein angepasstes Sicherheitskonzept für den Betrieb von Systemen in der Cloud inklusive der Anbindung von Inhouse-Systemen.

  • Microservices-Architekturen bieten unbestrittene Vorteile – sie sind aber kein „Allheilmittel“ für alle Arten von Systemen.
  • Microservices sind verteilte Anwendungen, die eine zusätzliche Komplexität mit sich bringen. Die Implementierung z. B. von Systemen, die verteilte Transaktionen über Microservices-Grenzen erfordern, ist komplex.
  • Die Zerlegung eines monolithischen Systems in möglichst unabhängige Microservices ist nicht trivial.
  • Eine Microservices-Architektur bietet Vorteile für große Systeme. Bei kleinen Systemen überwiegen die Nachteile, so dass eine monolithische Architektur weiterhin sinnvoll ist.

Um die Vorteile einer Microservices-/Cloud-Architektur zu nutzen, müssen auch die Organisation und der Entwicklungsprozess angepasst werden:

  • Die Entwicklung von Microservices unterscheidet sich technisch von einer monolithischen Implementierung (z. B. Nutzung von Shared Libraries oder Serverless Computing). Dies erfordert eine entsprechende Weiterbildung des Personals.
  • Die Anpassung der Teamorganisation, z. B. in Form von autonomen Teams für spezifische Microservices, ist notwendig.

Und „last-but-not-least”: Die Entwicklung einer Microservices-/Cloud-Applikation ohne eine etablierte DevOps-Infrastruktur (z.B. CI/CD) ist ein Garant für das Scheitern eines Projektes.

Fazit

Matthias Hänsgen arbeitet als System-Architekt für die Consist Software Solutions GmbH.
Matthias Hänsgen arbeitet als System-Architekt für die Consist Software Solutions GmbH.
(Bild: Consist)

Der Artikel veranschaulicht, welche prinzipiellen Vorteile eine Microservices-/Cloud-Architektur bei der Modernisierung von Systemen bieten kann. Anhand von Praxiserkenntnissen wird aufgezeigt, welche Faktoren zu berücksichtigen sind, damit diese prinzipiellen Vorteile auch zum Tragen kommen. Eine grundlegende Entscheidung hierbei ist die Überprüfung, ob der Umfang und die Komplexität des Systems die Einführung einer Microservices-Architektur rechtfertigen. Neben dieser prinzipiellen Entscheidung ist außerdem die Verfügbarkeit einer automatisierten DevOps-Pipeline eine Grundvoraussetzung für eine erfolgreiche Transformation von Systemen in die Cloud.

Der Autor: Matthias Hänsgen arbeitet als System-Architekt für die Consist Software Solutions GmbH. Seit über 25 Jahren entwickelt er geschäftskritische Anwendungen auf Basis von objektorientierten Technologien. Sein aktueller Tätigkeitsschwerpunkt liegt in der Entwicklung von Cloud-basierten Microservices-Anwendungen.

(ID:46309081)