Anwendungen in drei Phasen modernisieren

Der Weg zur Cloud-native Company

| Autor / Redakteur: Alois Mayr * / Stephan Augsten

Will man eine monolithische Anwendung in Microservices überführen, so muss man die Interaktionsmuster der einzelnen Service-Kandidaten verstehen und ausgliedern.
Will man eine monolithische Anwendung in Microservices überführen, so muss man die Interaktionsmuster der einzelnen Service-Kandidaten verstehen und ausgliedern. (Bild: realworkhard - Pixabay.com / CC0)

Viele Unternehmen setzen bereits ausschließlich auf Cloud Technologien, um die Entwicklung und den Betrieb von Anwendungen zu beschleunigen, Kosten zu senken und die Produktivität zu erhöhen. Typischerweise folgen Unternehmen dabei einem 3-Phasen-Plan um eine Cloud-native Strategie für die zeitgemäße Anwendungsentwicklung umzusetzen.

Markt- und Kundenanforderungen ändern sich stetig. Dies äußert sich in flexibleren und schnelleren Entwicklungs- sowie deutlich kürzeren Release-Zyklen. Gleichzeitig erwarten die Nutzer eine hochqualitative, stabile, performante und einfach zu bedienende Anwendung, mit der sie Aufgaben schnell, zuverlässig und selbsterklärend erledigen können.

Um dies zu erfüllen, müssen Software-Development-Unternehmen ihre Prozesse und Organisationsstrukturen grundlegend verändern. Entwicklungsteams übernehmen zusehends die volle Verantwortung für ihre Microservices, vom Design bis hin zum Betrieb ihrer Services auf Cloud-native Plattformen.

Damit haben wir auch gleich den jüngsten Paradigmenwechsel bei den Entwicklungsprozessen genannt: Statt aus großen monolithischen Anwendungen mit Millionen von Programmzeilen bestehen moderne Anwendungen aus kleinen, vernetzten Microservices mit spezifischen Funktionen aus den einzelnen Domänen – wie Preiskalkulation, Kreditkartenverrechnung oder Warenkorb.

Diese Microservices werden in unabhängig voneinander arbeitenden Teams entwickelt, erweitert, gewartet und betrieben. Die einzelnen Entwicklungsteams entscheiden dabei auch über die am besten für ihre Microservices geeigneten Technologien, solange die nach außen hin definierten Schnittstellen klar festgelegt sind. Auf diese Weise lassen sich Änderungen und neue Funktionen rasch in kleinen abgegrenzten Services einpflegen und bereitstellen.

Es ist eine Herausforderung, das große Ganze der einzelnen interagierenden Microservices zu designen und ihr Zusammenspiel zu überwachen. Selbstlernende Monitoring-Lösungen helfen aber dabei dabei, das richtige Zusammenspiel von Microservices zu garantieren.

Die Einführung dieser neuen Prozesse und Strukturen erfordert jedoch Zeit, Erfahrung und Aufwand. Dabei hat sich eine Vorgehensweise in drei Schritten bewährt.

  • Phase 1: „Lift and Shift“ und Einführung von Continuous Delivery
  • Phase 2: Entwicklung von Microservice-Applikationen
  • Phase 3: Skalierung mit dynamischen Microservices

„Lift and Shift“ und Einführung von Continuous Delivery

Eine Cloud-Plattform bietet eine Reihe von Vorteilen gegenüber dem Betrieb eigener, klassischer Serversysteme. Sie ist flexibel skalierbar, ausfallsicher, ressourcenoptimiert und meist kostengünstiger als der Betrieb eigener Server. Zudem bieten moderne PaaS-Umgebungen (Platform as a Service) zahlreiche Software-Werkzeuge für die Bereitstellung von Anwendungen, ohne dass sich der IT-Betrieb um die darunterliegende Infrastruktur kümmern muss.

Die einfachste Möglichkeit zur Migration einer Applikation besteht darin, sie weitgehend unverändert in einer Cloud-Umgebung zu installieren und laufen zu lassen. Bei diesem Lift-and-Shift-Ansatz mit virtuellen Maschinen (VMs) bleiben Code, Betriebssystem und Libraries identisch. Dieser Ansatz eignet sich sehr gut als erster Schritt, da das Re-Design einer monolithischen Applikation für die Cloud sonst oft aufwändig ist.

Selbst in einem Lift-and-Shift-Szenario sind Produktionsumgebungen in der Cloud ohne automatisierte Delivery Pipeline undenkbar. Daher bildet die Einführung von Continuous-Integration- und Delivery-Szenarien (CI/CD) eine Voraussetzung für den Cloud-Betrieb. In der Praxis laufen so Entwicklung, Test und Bereitstellung von Anwendungen möglichst automatisch ab. So werden die Deployment-Prozesse schneller, zuverlässiger und wiederholbar.

Beim Lift-and-Shift-Ansatz verwenden konventionelle Anwendungen nur wenige Cloud-spezifische Funktionen und Services. In der Regel lassen sich die großen Vorteile der Skalierbarkeit und Ausfallsicherheit dabei komplizierter und weniger effizient nutzen als bei Microservice-Architekturen.

Entwicklung von Microservice-Applikationen

Sobald die Hausaufgaben mit automatisierten CI/CD umgesetzt sind, werden in der zweiten Phase monolithische Anwendungen nach und nach in eine Microservice-Architektur überführt. Dies gestaltet sich oft schwierig, da die einzelnen Komponenten einer Software häufig in unbekannter Weise miteinander interagieren. Die größte Herausforderung dabei ist es, die Interaktionsmuster der einzelnen Service-Kandidaten zu verstehen und auszugliedern.

Microservice-Architekturen werden häufig mit Hilfe von Container-Technologien betrieben. Im Gegensatz zu Hypervisor-basierter Virtualisierung nutzen Container, die sich auf einem Host befinden, denselben Betriebssystem-Kernel.

So ist es möglich, mittels Prozess-Isolierung auf Betriebssystemebene schlanke Umgebungen zu schaffen, wo Microservices völlig unabhängig voneinander laufen, und vorhandene Rechenkapazitäten effektiver genutzt werden. Jeder Container enthält dabei die notwendigen Microservice-Komponenten wie Laufzeitumgebung, Konfiguration, Libraries sowie Code und ist allein funktionsfähig.

Die Nutzung von PaaS und Containern verschlankt und beschleunigt die Release-Prozesse. PaaS-Plattformen wie Cloud Foundry oder OpenShift (Kubernetes) erlauben dabei eine effizientere Ressourcenverwendung und bieten zudem Mechanismen für die Ausfallsicherheit, Skalierbarkeit und Load-Balancing an.

Dem Monitoring dieser verteilten Anwendungen kommt eine äußerst wichtige Rolle zu. Integriertes Monitoring hilft dabei, den Betrieb der Microservice-Architektur aber auch der Plattform an sich zu überwachen. Fehlverhalten der Plattform oder der Microservices lässt sich damit sofort im Betrieb erkennen und reparieren.

Einen besonderen Stellenwert genießt dabei das automatisierte Tracing von Requests der einzelnen verteilten Microservices zwischen all den Containern. Damit erhalten die Entwicklungsteams Einblicke in das Big Picture der Gesamtarchitektur und können so Fehlverhalten schnellstmöglich analysieren und reparieren.

Skalierung mit dynamischen Microservices

Da die Umgebung immer dynamischer wird, müssen sich die Microservices flexibel skalieren lassen. Dynamisches Skalieren und Load Balancing sorgen dabei für die Verteilung der Last der einzelnen Microservices auf die entsprechenden Container.

Die Skalierung in Microservice-Applikationen funktioniert auf der Ebene einzelner Dienste. So wird etwa ein Warenkorb-Service zu Spitzenzeiten tageszeitabhängig von drei auf sechs Instanzen erweitert und bei niedriger Last wieder auf drei Instanzen reduziert. Eine Voraussetzung für eine skalierbare Microservice-Umgebung bildet Service Discovery.

Feste Verbindungen zwischen Mikrodiensten lassen sich damit vermeiden, stattdessen werden diese während der Laufzeit ermittelt. Dabei verwaltet eine Service Registry die aktiven Instanzen bestimmter Microservices. Durch diese hohe Dynamik steigt die Komplexität der Infrastruktur. Daher müssen Microservice-Plattformen mit möglichen Fehlern intelligent umgehen und auf die redundant ausgelegten Lösungen umleiten.

Intelligentes, selbstlernendes IT-Monitoring gewährleistet, dass die Applikation auch beim Ausfall einer oder mehrerer Komponenten für den Endbenutzer reibungslos weiterlaufen. Zudem lassen sich Fehler durch die Erkennung problematischer Instanzen und deren rechtzeitiger Abschaltung extrem schnell vermeiden und KI-basiert Rollbacks von neuen Deployments initiieren.

Fazit

Reine Cloud-Anwendungen ermöglichen sehr schnelle Innovationszyklen sowie eine dynamische Skalierung in wenigen Sekunden. Der Schritt von monolithischen hin zu Cloud-native Anwendungen kann in drei Phasen mit steigender Komplexität umgesetzt werden. Dabei sind in jedem Reifestadium weitere Produktivitäts- und Effizienzgewinne sowie kürzere Innovationszyklen möglich.

Alois Mayr
Alois Mayr (Bild: Dynatrace)

Spätestens mit dem Schritt zu Cloud-native brauchen IT-Experten – Admins und Entwickler – und die Managementebene intelligentes IT-Monitoring. Große Anwendungsmanagement (APM)-Lösungen bieten das in der nötigen Tiefe und Breite. Wichtig ist dabei immer sowohl die Funktionalität als auch die Performance der Microservices im Auge zu behalten, um jederzeit Probleme schnellstmöglich lösen zu können.

* Alois Mayr arbeitet als Cloud Technology Lead bei Dynatrace Strategic Alliances and Technology.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44963777 / Microservices)