Software
13.08.2020
Observability
1. Teil: „End-to-End-Monitoring zur Software-Überwachung“

End-to-End-Monitoring zur Software-Überwachung

Programmcode und ComputertastaturProgrammcode und ComputertastaturProgrammcode und Computertastatur
isak55 / shutterstock.com
Ganzheitliches End-to-End-Monitoring bringt einige Vorteile für Unternehmen. Unter anderem kann dies die Grundlage zum Aufsetzen einer durchweg positiven Kundenerfahrung bilden.
Dieser Beitrag wurde erstellt von Gregory Ouillon, CTO, EMEA bei New Relic.
  • Gregory Ouillon ist CTO, EMEA bei New Relic. In dieser Funktion unterstützt er Kunden in der gesamten EMEA-Region bei der Einführung moderner Technologien und der digitalen Transformation.
    Quelle:
    New Relic
Moderne Software- und IT-Architekturen sind in ihrer Komplexität und Dynamik nahezu biologisch. Sie sind zudem quasi in Echtzeit für den Endnutzer zugänglich und erfahrbar. Die Architekturen erfordern deshalb eine Art Nervensystem, das jedes einzelne Organ oder jede einzelne Komponente in Echtzeit erfassen, messen und überwachen kann. Dieses sensible System sollte zudem die Beschaffenheit und Leistung der biologischen Anwendung auf der Grundlage all dieser Informationen in Echtzeit bestimmen können.
Dies bildet die Grundlage für ein End-to-End-Monitoring - auch Observability genannt. Erfolgreich implementiert, ermöglicht Observability den Unternehmen, proaktiv Zero-Downtime zu erreichen, die Verwaltung einer optimalen Anwendungsleistung zu gewährleisten sowie die Grundlage für eine durchwegs positive Kundenerfahrung aufzusetzen. Darüber hinaus unterstützt es Unternehmen dabei, effizienter zu sein sowie die digitale Transformation und Innovation zu beschleunigen.

Das Monitoring an Anwendungsarchitekturen und DevOps anpassen

Um erfolgreich zu sein, sollte die Art und Weise der Überwachung von Anwendungen auf die Struktur angepasst werden, mit der diese kreiert und bereitgestellt wurden. Moderne, vielschichtige Software- und IT-Architekturen bedingen fast immer ein End-to-End-Monitoring, um eine holistische und detaillierte Übersicht der Gesamt-Performance zu erhalten.
Anfangs war Software monolithisch und meistens in einer einzigen Programmiersprache geschrieben. Die Software-Entwicklung brachte meist, wegen langer Entwicklungs- und Qualitätssicherungs-Zyklen nur ein paar wenige Releases pro Jahr heraus - auch, um die Stabilität zu gewährleisten. Applikationen basierten auf simplen, typischerweise 3-tier IT-Architekturen mit ein paar wenigen Servern und Storage-Möglichkeiten. Sie ließen lediglich eine vertikale Skalierung zu. Zudem war das Fachwissen über diese Applikationen und die betreffende IT-Architektur auf wenige Personen begrenzt. Monitoring wurde in erster Linie bei Netzwerk- und Infrastrukturkomponenten als Ergänzung zu den herstellerspezifischen Element-Managern eingesetzt.

So war es früher

Die Anwendungen haben sich seither deutlich weiterentwickelt, um schnellere Innovation, bessere Skalierbarkeit und höhere Leistung zu ermöglichen.
Heute sind jedoch kurze Entwicklungszyklen, verschiedene Sprachen und Codes, mehrere Releases pro Monat und komplexe Server- sowie Cloud-Architekturen die Realität. Software ist mittlerweile hochgradig modularisiert und in „Microservices“ zerlegt - gestützt auf architektur-übergreifende API-Aufrufe. Zudem ist jede Komponente in der Sprache geschrieben, die am besten zum Team und zum Zweck des Codes passt.
Aktuelle Microservice-Architekturen setzen vermehrt auf Container, also leistungsfähige Technologien zur Virtualisierung und Abstraktion. Einige Unternehmen starten und betreiben täglich mehrere 100000 dieser Container. Die Standortunabhängigkeit und die Möglichkeit der horizontalen Skalierbarkeit sind zum Regelfall geworden - die automatisierte Erstellung von Server- und Containerinstanzen in Echtzeit sorgen für eine dynamische und schnelllebige Umgebung.
Darüber hinaus erfolgt die Entwicklung mit hunderten hochspezialisierten Best-of-Breed-Komponenten, entweder proprietär oder Open Source, als Cloud-PaaS, Managed Services oder Code. Netzwerke, Proxies, Message Queues, SQL und No-SQL, Caches, Webserver und Load Balancer sind nur einige dieser Bereitstellungsmöglichkeiten.
Die meisten Unternehmen veröffentlichen den Code mindestens auf monatlicher Basis. Manche veröffentlichen neue Anwendungskomponenten sogar bis zu 100 Mal pro Tag. Mit dieser Vielschichtigkeit und Komplexität bieten traditionelle Monitoring-Lösungen, die sich auf Infrastruktur und Applikations-Logs beschränken, keine zeitgemäße Lösung mehr.
Heutige Systeme sind äußerst komplex und beeinflussen die Erfahrung der Endnutzer. Deshalb benötigen Entwickler- und Operations-Teams eine Art zentrales Nervensystem, das jedes einzelne Organ oder jede einzelne Komponente in Echtzeit erfasst, misst und überwacht. Das gibt ihnen die Möglichkeit, auf Grundlage all dieser Informationen das Verhalten, den Zustand und die Leistung der Anwendung ebenfalls in Echtzeit zu bestimmen. Hierin liegt der große Vorteil des modernen Monitorings, das sich zur Observability hin entwickelt. Es bietet, was Teams zunehmend benötigen, um hochkomplexe und volatile moderne Anwendungen in Echtzeit vollständig zu verstehen und zu betreiben.
2. Teil: „Von SLAs zu Performance Management im End-to-End-Monitoring “

Von SLAs zu Performance Management im End-to-End-Monitoring

Vertragliche SLAs (Service Level Agreements) sind der Schlüssel für Geschäftsbeziehungen im Bereich Software und Dienstleistungen. Die End-to-End-Überwachung legt eine starke und effektive Grundlage zur Definition und für die Bereitstellung von SLAs. Dies gelingt durch die Echtzeit-Ansicht aller wichtigen Metriken, die das Geschäft, den Durchsatz, die Leistung, die Verfügbarkeit, die Skalierbarkeit, das Verhalten und die Endnutzer-Erfahrung auf einer granularen Ebene oder auf Anwendungs- und Service-Ebene bestimmen.
Die Bereitstellung von Anwendungen in einwandfreier Qualität und überlegener Leistung geht jedoch weit über SLAs hinaus.
Der Vorteil des End-to-End-Monitorings ist die Möglichkeit zur Überwachung eines breiten Spektrums von Key Service Level Indicators und die Einhaltung einer Reihe von SLOs (Service Level Objectives). Sie sind in der Regel strenger und detaillierter als SLAs. Organisationen können sich folglich darauf konzentrieren, über die vertraglichen SLAs hinaus optimale Leistungen zu erbringen. Charakteristisch für SLOs ist, dass sie oft qualitative, meist aber quantitative, in den SLAs definierte Vorgaben, die als Zielgrößen für gewisse Funktionen, Prozesse und Aktivitäten dienen, geben.
Beispielsweise ist die Bindung an die Reaktionszeit für Endbenutzer als SLA bei nur sehr wenigen E-Commerce-Websites implementiert. Stattdessen verfügen die Unternehmen in der Regel über SLOs, die an die Reaktionszeit gekoppelt sind, um eine positive Customer Experience zu schaffen und in der Folge den Net Promoter Score positiv beeinflussen. Dies zeigt die unmittelbare Koppelung zwischen operativer Leistungsfähigkeit und dem jeweiligen Kundenerlebnis auf, und wie letzteres durch End-to-End-Monitoring entscheidend positiv beeinflusst werden kann.
Zudem können so die Key-Metriken MTTD (die mittlere Zeit zum Identifizieren, engl. Mean Time To Detect) und die MTTR (die mittlere Zeit zur Behebung, engl. Mean Time To Resolution) reduziert werden. Mit End-to-End-Monitoring reichen wenige Klicks, um auf die Ursachenforschung eines Vorfalls zuzugreifen und den Ausgangspunkt zu identifizieren: dazu werden die verfügbaren Informationen aller Anwendungs- und Infrastrukturkomponenten korreliert, verbunden und visualisiert.
Ein großer Vorteil für Teams - und letztlich das gesamte Unternehmen - ist die Möglichkeit, präventiv und proaktiv Vorfälle zu definieren und ihnen bereits im Vorfeld entgegenwirken. Durch ein ganzheitliches Monitoring wird alles, was künftig zu einem Ausfall oder zu einem Leistungsabfall führen könnte, überwacht, erkannt, visualisiert und korreliert. Tritt ein Problem auf, wird automatisch ein Alarm ausgelöst. Kontinuierlich geprüft und analysiert werden Verhaltensmuster, Fehler, Ressourcenverbrauch oder der Durchsatz. Ausfälle, die vom Endnutzer bemerkt werden und dessen Kundenerfahrung trüben könnten, treten erst gar nicht auf - ein klarer Vorteil, der sich letztendlich auch in den Umsätzen widerspiegeln wird.

Mehr Potential für Transformationsaufgaben

Transparenz, Kontrolle und die Korrelation zwischen Leistung, Verfügbarkeit und Ressourcenauslastung sind die Grundlagen für die Prozessoptimierung im Softwarebetrieb. Dadurch wiederum werden Kapazitäten bei IT-Mitarbeitern frei, die für andere Aufgaben, wie beispielsweise für anstehende Transformationsaufgaben wie die Cloud-Migration genutzt werden können. Und auch hier geht es nicht ohne adäquates Monitoring, um einen nahtlosen und effizienten Übergang gewährleisten zu können.
Ein weiterer Vorteil des End-to-End-Monitorings ist die Steigerung der Geschwindigkeit und der Qualität von Software-Implementierungen und DevOps. Nicht nur Produktionssysteme, sondern auch Staging- und Pre-Production-Systeme werden in die Analyse mit einbezogen. So können bereits im Entwicklungszyklus mögliche Probleme identifiziert werden, sondern auch das Problemverständnis in Echtzeit signifikant erhöht werden. Das ist vor allem bei Vorfällen in laufender Produktion sehr relevant, um eine schnelle Lösung herbeiführen zu können. Mit End-to-End-Monitoring ist ein rasches Zurücksetzen auf vorherige Versionen gegeben oder das Problem kann sogar schon im DevOps-Kontext vorausschauend entschärft werden.

Erfolgreiches End-To-End-Monitoring: Nichts bleibt unbeobachtet

Einige der führenden Überwachungs- und Observability-Technologien sind ungemein ressourceneffizient geworden. Sie erzeugen nur noch wenig Overhead und sind in der Lage, alle Komponenten, sowohl End-to-End als auch Full Stack, sehr effektiv zu überwachen. Die Bereitstellung lässt sich zudem mit CI/CD-Tools leicht automatisieren.
Deshalb ist es in der Regel empfehlenswert, das Monitoring auf alle Software-, Middleware- und Infrastrukturkomponenten einer Anwendung auszudehnen und keine Blackbox in den Umgebungen zurückzulassen. Natürlich erwarten Unternehmen, dass alle Organe und Komponenten der Anwendungen überwacht werden - deshalb ist der Einsatz innerhalb aller Anwendungscontainer und Laufzeitumgebungen, die die Anwendung unterstützen, notwendig. Idealerweise sollten alle Technologien auf allen Servern und Containerclustern (zum Beispiel Kubernetes) abgedeckt werden.
Um eine gelungene Kundenerfahrung zu schaffen, ist vor allem End-to-End-Monitoring in mobilen Anwendungen und im Browser entscheidend. Damit wird die Back-End-Überwachung der Anwendung und der Infrastruktur vervollständigt.
Mit dem Einsatz von Synthetics kann zudem die Simulation von Transaktionen oder Endbenutzern und das dauerhafte Testen von Servern, APIs, gewünschtem Nutzerverhalten oder Servern gesichert werden. Auch das Testen durch Simulation ermöglicht die Validierung von Leistung, Verfügbarkeit und Erfahrung in einer sicheren Umgebung, ohne dass die Kundenerfahrung dadurch beeinträchtigt wird.
Die erfolgreichste Nutzung des End-to-End-Monitorings ist dann gegeben, wenn Unternehmen allen Teams, Abteilungen und Managementebenen Zugriff auf die Plattform gewähren. Dadurch wird eine Single-Truth-Umgebung geschaffen. Die Möglichkeit zur Einsicht in dieselben Daten aus unterschiedlichen Perspektiven bietet einer Vielzahl von Funktionen innerhalb eines Unternehmens Anhaltspunkte zur Performancesteigerung. Auch kann durch die Demokratisierung der Daten das Change und Incident Management erheblich verbessert werden.
Ein Unternehmen muss nicht sonderlich modern sein, um ein zeitgemäßes End-to-End-Monitoring einzusetzen. State-of-the-Art-Monitoring ist in jeder Phase der Transformation ein tragendes Element zum Geschäftserfolg. Eine einheitliche Sicht auf alle Bereiche der digitalen Umgebung, die Entwicklung einer gemeinsamen Sprache und einer Reihe von Service Level Indicators (SLIs), die als Grundlage für die SLOs dienen, sind in der gesamten digitalen Transformationsphase ein enormer Vorteil. Weiterhin ergibt sich damit ein besseres Verständnis dafür, wie sich bei Veränderungen im Unternehmen die SLIs entwickeln. Das End-to-End-Monitoring gibt wichtige Zeit und Ressourcen frei. Aufwändiges und kostenintensives Ausfallmanagement wird vermieden, womit Ressourcen für Transformationsaufgaben und auf die Verbesserung der Geschäftsergebnisse verwendet werden können, die sonst gebunden wären.
3. Teil: „Zentrale Merkmale des End-to-End-Monitorings “

Zentrale Merkmale des End-to-End-Monitorings

Der erste zentrale Bestandteil eines ganzheitlichen End-to-End-Monitorings ist eine ausschließliche SaaS-Zentrierung des Service. Denn Unternehmen sollten nicht das System überwachen und verwalten müssen, dass eben diese Aufgabe für die eigenen Systeme übernehmen soll. Vor dieser Herausforderung stehen aktuell viele Unternehmen in der Wachstumsphase. Mit den vor Ort implementierten Monitoring- oder Open-Source-Tools sind sie nicht in der Lage, ihre Plattformen in großem Umfang auf dem aktuellsten Stand zu halten. Durch die SaaS-Zentrierung können wöchentlich eine Vielzahl von Updates und neuen Features quasi in Echtzeit bereitgestellt werden.
Ein weiterer Grundbaustein ist die ortsunabhängige, einfache und sofortige Instrumentierung. Drop-In-Instrumentation (agents) in allen gängigen Programmiersprachen und Cloud-Services generieren so innerhalb von Sekunden Einblicke für das Unternehmen. Es muss dafür keine individuelle Instrumentierung in Apps integriert werden. Zudem sollte auch die Integration externer Überwachungstelemetrie von Infrastrukturen und Anwendungen, die bisher mit Open Standards instrumentiert waren, nahtlos möglich sein.
Ein weiterer zentraler Aspekt ist der stetige Fokus auf die Anwendung, die der Kern der digitalen Erfahrung ist. Essenziell ist an dieser Stelle der umfassende Einblick in die Applikation und die Korrelation der Vorgänge innerhalb derselbigen. Das reicht von den Daten der laufenden Container, über Orchestrierungs-Komponenten bis hin zur zugrundeliegenden Infrastruktur.
Darüber hinaus gelten standardisierte und effiziente Workflows als Grundvoraussetzung für ein optimales End-to-End-Monitoring. Übersichtliche Dashboards, angepasst an individuelle Bedürfnisse, spielen dabei eine genauso große Rolle wie das Angebot vorgefertigter, kuratierter Workflows zur Fehlerbehebung ohne vorherige Konfiguration. Dadurch können alle Benutzer dieselben Informationen aus ihrem persönlichen Blickwinkel betrachten, egal ob es Spezialisten, Marketer, Unternehmensinhaber, Geschäftsführer, SREs (Site Reliability Engineers) oder Entwickler sind.
Des Weiteren gelten Echtzeit-Analysen als weiterer Kernbestandteil des End-to-End-Monitorings. Dabei sollten sich Unternehmen bei der Beurteilung des Ist-Zustandes jedoch nicht nur auf Key-Performance-Indikatoren verlassen. Wirkliche Erkenntnisse basieren auf der Erfassung jeder einzelnen benutzerinitiierten Interaktion. Diese Informationen wiederum müssen über eine API, eine Abfragesprache und Dashboards zur Verfügung gestellt werden. Dadurch sind Nutzer nicht durch die Anzahl an Dimensionen oder eine hohe Kardinalität eingeschränkt. Das Warten auf Antworten entfällt.
Abschließend spielt die Skalierbarkeit eine wesentliche Rolle: Um für IT-kritische Ereignisse, wie zum Beispiel Black Friday, Produkteneinführungen oder Rabattaktionen zu unterstützen, muss sichergestellt werden, dass auch sehr große Datenmengen ohne Ausfall oder Verzögerung verarbeitet und ausgewertet werden können.

Die Rolle von ML und KI: Gegenwart und Zukunft von AIOps

Es gibt bereits jetzt Anbieter, die schon seit längerer Zeit Algorithmen und Techniken der Applied Intelligence in ihren Plattformen nutzen. Dies ist zum Beispiel bei Alert-Engine-Algorithmen, die auf Machine Learning basieren, der Fall. Sie basieren Warnmeldungen auf historischen Trends und nicht auf fixen Grenzwerten. Und auch wenn eine Anwendung am Wochenende weniger genutzt wird, kann so sichergestellt werden, dass keine fehlerhaften Warnmeldungen verschickt werden. Es wird lediglich das tatsächliche Verhalten des Service widergespiegelt.
KI und maschinelles Lernen, angewandt auf den IT-Betrieb - auch AIOps genannt - ist als kritische Fähigkeit vollständig in die führenden Observability-Plattformen integriert.
Definitiv haben Maschinelles Lernen und künstliche Intelligenz das Potential, den modernen Softwarebetrieb auf verschiedene Arten gegenwärtig als auch zukünftig zu unterstützen: Zum einen durch eine fortschrittliche proaktive Erkennung, Korrelation und Benachrichtigung schwacher Signale oder seltener Muster, die sich über längere Zeit wiederholen.
Zum anderen durch die Reduzierung von Alarmen, -ermüdung und der Angst von Ausfällen beim Einsatz eines virtuellen SRE. Systeme werden immer komplexer, weshalb auch die Vorfälle, auf die Software-, Engineering- und DevOps-Teams reagieren müssen, immer komplizierter werden. Die Verwendung von Microservices-Architekturen, Containern und Serverless-Infrastrukturen tragen zu dieser Komplexität ebenfalls bei. Probleme mit einem Dienst können deshalb zu weitreichenden Ausfällen führen, die letztendlich zahlreiche Alerts im gesamten Stack auslösen - eventuell sogar von mehreren Monitoring Tools. Oberste Prämisse ist es deshalb, den Überblick zu behalten und das eigentliche Problem zu identifizieren.
Ein weiteres Anwendungsgebiet von ML und KI besteht darin, das Virtual SRE-Konzept auf die Formulierung von Empfehlungen für Abhilfemaßnahmen mit hoher Erfolgsaussicht auszudehnen. Dazu zählen auch die anschließende automatische Auslösung einiger operativer Runbooks und Aktionen für Vorfälle, bei denen Ursache und Abhilfe mit hoher Wahrscheinlichkeit bekannt sind - wie etwa der wiederholte automatische Neustart von Containern ehe eine Alarmmeldung versendet wird. Es ist auch denkbar, dass sich ML und KI auf die Wiederherstellungsautomatisierung ausweiten, bei denen Operators, DevOps-Teams und SREs künftig eben nur dann zu Rate gezogen werden müssten, wenn die AIOps-Plattform den Fehler nicht selbst beheben kann.
Es könnte allerdings noch eine gewisse Zeit vergehen, bis das der Fall ist, weil dieses Feld wegen der nahezu unendlichen Kombinationsmöglichkeiten in echten Anwendungsfällen, Unternehmensprozessen sowie -Tools und Architekturen äußerst komplex ist. Dadurch ist es wahrscheinlicher, dass künstliche Intelligenz und maschinelles Lernen in diesem Bereich nur in stark eingegrenzten und Teilen des Ökosystems langfristig umsetzbar sind. Konkurrenz bekommen die Technologien hier außerdem von Wiederherstellungs- und Autoskalierungs-Anwendungen, die aktuell das Potenzial haben, wesentlich schneller voranzukommen als die Wiederherstellungsautomatisierung.

mehr zum Thema