Die letzten Jahre waren von einem deutlichen Wandel im Anwendungsentwicklungsprozess geprägt. Mit dem Aufkommen von Trends wie Agile und DevOps hat sich das gesamte Szenario für die Entwicklung von Anwendungssoftware schrittweise verändert. Unternehmen arbeiten mit Hochdruck daran, neue Software oder eine Internetanwendung auf innovative Weise bereitzustellen und dabei die Entwicklungsgeschwindigkeit hoch zu halten. Dies hat Unternehmen geholfen, maximale Ergebnisse zu erzielen, ohne tagelang, wochenlang oder noch länger auf neue Anwendungen warten zu müssen, um den Engpass in der Anwendungsentwicklung zu überwinden.

Darüber hinaus entscheiden sich Unternehmen heute eher für die Cloud-native Anwendungsentwicklungsmethodik als für den traditionellen Ansatz. Cloud-Infrastruktur und Containerisierungstechnologien haben neue verteilte Systemdesigns ins Spiel gebracht, die als Microservices bezeichnet werden. Der Großteil der Microservices ist am Aufbau großer Anwendungen, der schnellen Bereitstellung und dem Deployment durch dezentrale, kontinuierliche Bereitstellung unter Verwendung komprimierter DevOps-Praktiken beteiligt.
Eine umfassende Serviceüberwachung ist für die effiziente Entwicklung, Wartung und den Betrieb solcher Anwendungen unerlässlich.
32 % der neuen Anwendungen, die für viele Unternehmen bis 2020 entwickelt werden sollen, was eine rasche Akzeptanz von Cloud-nativen Anwendungsentwicklungstechniken in den kommenden Jahren erwarten lässt. - The Economic Times
Lassen Sie uns tiefer eintauchen, um zu erfahren, wie die Cloud-native Welt neu konfiguriert werden kann, um erfolgreiche Geschäftsausführungen zu erzielen.
Cloud-Native Anwendungen
Bevor wir fortfahren, ist es unerlässlich zu verstehen, was ein Cloud-nativer Ansatz eigentlich ist.
Der Cloud-native Ansatz nutzt die Vorteile eines umfassenden Cloud-Computing-Modells und ist eine treibende Kraft für die Entwicklung von Anwendungen als Microservices und deren Ausführung auf dynamisch orchestrierten Plattformen. Es geht um den Prozess der Erstellung und Bereitstellung von skalierbaren Anwendungen in öffentlichen, privaten und hybriden Clouds.
Cloud-native Anwendungen, die On-Demand-fähig sind, über unbegrenzte Rechenleistung verfügen und moderne Daten- und Anwendungsdienste für Entwickler bereitstellen, haben Unternehmen dazu veranlasst, mit häufigen neuen Ideen auf dem Markt voranzuschreiten und schnell auf Kundenanforderungen zu reagieren. Dieser Paradigmenwechsel wird Unternehmen helfen, den Entwicklungsprozess zu beschleunigen und avantgardistische Lösungen anzubieten.

Das obige Diagramm zeigt vier Hauptkomponenten einer Cloud-nativen Anwendung:
DevOps, eine Zusammenarbeit von Softwareentwicklern und IT-Betrieb mit dem Ziel einer qualitativ hochwertigen Softwareauslieferung, die alle Kundenherausforderungen in einer Umgebung löst, in der Softwaretests, -erstellung und -freigabe häufiger stattfinden.
Continuous Delivery (CD) bedeutet, kleine Softwarepakete auf konsistente Weise durch Automatisierung in die Produktionsumgebung zu überführen. CD ermöglicht durch Agile-Praktiken die schnelle und bessere Bereitstellung von Ergebnissen für und Feedback von den Kunden, wodurch Flexibilität und Robustheit verbessert werden.
Microservices konzentriert sich auf die Entwicklung einer Anwendung als eine Sammlung kleiner Teile, die als Services bezeichnet werden, und jeder Service implementiert eindeutige Geschäftsfunktionen, hat seinen eigenen Prozess und kommuniziert über HTTP-APIs oder Messaging.
Container bieten eine Standardmethode für die Verpackung des Codes, der Konfigurationen und der Abhängigkeiten einer Anwendung in ein einzelnes Projekt, wodurch sowohl Effizienz als auch Geschwindigkeit mit Standard-Virtual Machines (VMs) erzielt werden.
Überwachung von Cloud-nativen Anwendungen und die damit verbundenen Herausforderungen
Container, Kubernetes, Microservices, Service Meshes, unveränderliche Infrastrukturen und Serverless haben die Art und Weise verändert, wie Unternehmen Software erstellen und betreiben. Da die Mehrheit der Unternehmen auf Cloud-native umstellt, sind die entwickelten Systeme verteilter und oberflächlicher geworden.
Dieses Muster der Anwendungsarchitektur hat viele Vorteile gebracht und erfordert gleichzeitig eine kleine Änderung in den Supportsystemen wie der Überwachung. Da die Komponenten und die Komplexität der Cloud-nativen Anwendungen zunehmen, steigt auch die Wahrscheinlichkeit von Systemausfällen. Es ist eine effektive Cloud-native Überwachungsstrategie erforderlich, mit der solche Leistungsengpässe und potenziellen Probleme von Microservices und Infrastrukturen erfasst werden, bevor sie Probleme für die Entwicklungsteams und Endbenutzer verursachen.
Um zu wissen, wie der Anwendungscode innerhalb der Überwachung ausgeführt wird, ist ein Überwachungssystem erforderlich, das in der Lage ist, das externe Verhalten zu verfolgen, wie z. B. die Verfolgung der CPU-Auslastung des Host-Rechners, was als Black Box Monitoring bezeichnet wird, und das Systemverhalten basierend auf den Metriken zu beobachten, die durch die Interna des Systems definiert werden, wie z. B. Protokolle oder ein HTTP-Handler, der interne Statistiken ausgibt, was als White Box Monitoring bezeichnet wird.
Cindy Sridharan stellt fest, dass es mit zunehmender Komplexität eine große Herausforderung ist, eine klare Sicht auf den Systemzustand zu erhalten, und dass die Mehrheit der Fehler in der Anwendungsschicht oder durch komplexe Interaktionen zwischen verschiedenen Anwendungen entstehen wird.

Cindy Sridharan fasst ihre Gedanken zur Observability und ihrer Relevanz für die Container-native Überwachung zusammen. Observability ist eine Ideologie, die Überwachung, Protokollaggregation, Metriken und verteilte Ablaufverfolgung umfasst, um tiefere, Ad-hoc-Einblicke in ein System zu gewinnen. Die Überwachung von Cloud-Natives bedeutet nicht nur, die Metriken zu erfassen, sondern ihr Hauptziel ist es, sie in Aktionen umzuwandeln, die die Kunden- und Endbenutzererfahrung verbessern. Sie fügt hinzu, dass die richtige Werkzeugauswahl entscheidend ist, um Einblicke in die Cloud-nativen Systeme zu gewinnen.
Strategien, die für eine effektive Überwachung von Cloud-nativen Anwendungen erforderlich sind
Ein engagierter und umfassender Ansatz ist bei der Überwachung einer Cloud-nativen Umgebung unerlässlich, der die externe Systemprüfung, die Behebung von Kernproblemen, die Erfassung maßgeschneiderter Metriken und die Verfolgung der zugehörigen Anfragen umfasst. Jede dieser Komponenten bietet einen einzigartigen Einblick in das System und wird nicht von jeder Cloud-nativen Architektur benötigt.
- Externe Systemprüfung: Eine externe Überprüfung des Systems, die als Black-Box-Überwachung bezeichnet wird, wird durchgeführt, um einen externen Einblick in das System zu erhalten, wie z. B. die Verfolgung der CPU-Auslastung des Host-Rechners. Da es sich um die traditionellen Formen der Überwachung handelt, ist diese Strategie sehr effizient, um Probleme zu erkennen, die für die Benutzer sichtbar sind. Es wurde beobachtet, dass die externe Abfrage eine High-End-Sichtbarkeit eines Cloud-nativen Systems bietet.
- Behebung von Kernproblemen: Da Container und Server kurzlebig sind, ist es wichtig, jedes Protokoll in ein zentrales Protokollierungssystem zu übertragen. Alle System- und Anwendungsprotokolle, die an einem einzigen Ort vorhanden sind, geben dem gesamten Überwachungssystem einen zusätzlichen Vorteil. Diese können so konfiguriert werden, dass sie bei anomalem Verhalten, wie z. B. erhöhtem Protokollvolumen, unerwarteten Fehlermeldungen usw., eine Warnung ausgeben. Wenn etwas schief geht, bietet das zentrale oder Kernprotokollierungssystem eine schnelle und unmittelbare Ansicht von allem, was im System im jeweiligen Moment geschieht, und liefert gefilterte Protokolle für bestimmte Anwendungen, Labels oder Nachrichten.
- Individuell gemessene Statistiken: Diese helfen, ein klares Bild vom Zustand der Anwendung zu erhalten. Diese Metriken bieten viel genauere Informationen als die Metriken, die aus den Abfragedaten abgeleitet werden, d. h. von außerhalb des Systems. Beispielsweise hat die Prometheus-Integration mit Kubernetes eine einfache und effiziente Erfassung einer Vielzahl von Metriken ermöglicht.
- Erkennung zugehöriger Anfragen: Die Erkennung von Anfragen ist eine Methode, mit der alle zugehörigen Anfragen in einer Cloud-nativen Umgebung verbunden werden, indem eine Reihe zusätzlicher Anfragen an die unterstützenden Microservices ausgelöst werden. Die Verfolgung von Anfragen bietet eine bessere Systemübersicht. Jaeger, requestsZipkin sind die Open-Source-Tools, die für die Verfolgung von Anfragen entwickelt wurden und detaillierte Informationen über alle Anfragen liefern, die aus einer anfänglichen Anfrage heraus erzeugt wurden. Solche Informationen sind sehr hilfreich bei der Diagnose der Engpässe der Cloud-nativen Systeme.
Die Überwachung allein wird nicht die Ursachen eines Problems aufzeigen. Um das Spiel der Cloud-Natives zu gewinnen, ist ein aggressiver Gesamtansatz erforderlich. Auf die Registrierung eines Problems durch die Kunden zu warten, ist ein sinnloses Unterfangen. Es wird immer empfohlen, die Verfügbarkeit der Anwendung zu überprüfen, was es uns ermöglicht, "Warnungen" bezüglich des Funktionierens oder des Absturzstatus von Anwendungen zu versenden.
Protokolle für eine Instanz geben in Verbindung mit den anderen Protokollen eine Vorstellung vom Gesamtzustand des Systems. Die korrelierten Daten können sehr hilfreich sein, um den Ursprung des Problems zu ermitteln, wodurch wiederum die Korrekturen und Verbesserungen in der jeweiligen Codestruktur vorgenommen werden können.
Automatisierung, die Kontinuität gewährleistet, ist der Prozess der Behebung von Cloud-nativen Problemen, der in einem solchen Fall ein Segen sein wird. Der Vorschlag von Resilienz-Tools soll auch eine bessere Idee für die Erkennung und Verhinderung von Problemen sein, bevor die Dienste und Apps in der Produktion bereitgestellt werden.
Weaveworks fasst all diese zusätzlichen Überwachungskapazitäten unter dem Modell "Monitoring Maturity Ladder" zusammen.

Einige der Tools zur Überwachung von Cloud-nativen Anwendungen
- Kubernetes: Google ist der ursprüngliche Designer, Kubernetes wird jetzt von der Cloud Computing Foundation verwaltet. Kubernetes ist eine portable Open-Source-Plattform, die zur Verwaltung von containerisierten Workloads und Diensten verwendet wird und deklarative Konfiguration und Automatisierung ermöglicht.
- PaaS oder IaaS sind die Cloud-Dienste, die eine Kubernetes-basierte Plattform oder Infrastruktur als Service anbieten, auf der Kubernetes als plattformbereitstellender Dienst bereitgestellt werden kann.
- Prometheus: Das Projekt ist in Go geschrieben und unter Apache 2 lizenziert. Prometheus ist eine Open-Source-Softwareanwendung, die für die Ereignisüberwachung und -benachrichtigung verwendet wird. Als zertifiziertes Produkt der Cloud Native Computing Foundation, Kubernetes und Envoy kann der Quellcode für dasselbe von Github extrahiert werden.
- Fluentd: Fluentd wurde von Treasure Data entwickelt und ist ein Open-Source- und plattformübergreifendes Datenerfassungsprojekt. Es führt eine Datenvereinheitlichung durch, um die Erfassung und Nutzung zu verbessern.
- ELK Stack: ElasticSearch, das mit Logstash und Kibana (ELK Stack) bereitgestellt wird, ist das beliebteste Open-Source-System für die zentrale Protokollierung. Die Komponenten des ELK Stack bieten eine Reihe von Open-Source-Tools, die die Protokollspeicherung, -erfassung und -visualisierung vereinfachen.
- Grafana: Es ist eine Open-Source-Plattform für Datenvisualisierung, -analyse und -überwachung, die bevorzugt zusammen mit Graphite, InfluxDB sowie Elasticsearch und Logz.io verwendet wird. Grafana bietet facettenreiche Dashboards mit Panels, die bestimmte Metriken innerhalb eines festgelegten Zeitrahmens darstellen und die an das Projekt oder jede Art von Entwicklung angepasst werden können.
- Istio: Ein Open-Source-unabhängiges Service Mesh, das Elemente bietet, die für den erfolgreichen Betrieb einer verteilten Microservice-Architektur benötigt werden. Die Verwaltung von Microservice-Bereitstellungen wird mit Istio reduziert, das Sicherheit, Konnektivität und Überwachung von Microservices bietet.
Abschließende Bemerkung
Das Aufkommen von Microservice-Architekturen, die mit kurzlebigen Containern auf der Infrastruktur laufen, entwickelt sich schnell weiter. Erschwerend kommt hinzu, dass diese Anwendungen regelmäßig in mehreren Verfügbarkeitszonen, Regionen oder sogar in mehreren Clouds bereitgestellt werden. Aus diesem Grund ist es unerlässlich geworden, Strategien zu entwickeln und die Maßnahmen zu berücksichtigen, die für eine bessere Überwachung von Cloud-nativen Anwendungen ergriffen werden können.
Zunächst mag man es für eine Technologie wie jede andere halten, die es zu überwachen gilt, aber die Überwachung einer Cloud-nativen Anwendung ist ganz anders. Observability als Philosophie umfasst Überwachung, Protokollaggregation, Metriken und verteilte Ablaufverfolgung, um tiefere, Ad-hoc-Einblicke in ein System zu gewinnen.
Ein komplizierter Ansatz, der die externe Überprüfung des Systems, die Protokolle aus dem Kern für ein gutes Debugging, die entwickelten benutzerdefinierten Metriken und die Beobachtung der Anfragen umfasst, bietet eine effektive Überwachungslösung für die Cloud-native Umgebung eines Unternehmens. Das Herzstück der Cloud-nativen Überwachung liegt in den Details und in den definitiven Anforderungen, die sich je nach Reifegrad eines Unternehmens ändern können. Die Befolgung von Ansätzen, die dem Modell der Monitoring Maturity Ladder ähneln, lässt keine Schlupflöcher zurück. Darüber hinaus sind Open-Source-Tools wie Prometheus, Fluentd und Kubernetes eine Hilfe bei der Überwachung von Cloud-nativen Anwendungen.
Abonnieren
Verwandte Blogs
Serverless vs. Managed Services: Welche Option ist die richtige für Sie?

Wenn Sie sich entscheiden, eine Anwendung in der Cloud zu entwickeln, müssen Sie verschiedene Faktoren berücksichtigen…

In den letzten Jahren hat die Cloud-Branche mit der Transformation des Serverless Computing einen extremen Wandel…
Den Serverless-Trend unter der Lupe

Flexibel. Skalierbar. Wirtschaftlich. Diese Begriffe fassen im Wesentlichen die Vorteile von Serverless Computing zusammen,…