News

Was ist eine selbstheilende Software und was sind die wichtigsten Prinzipien?

DATE:
July 2, 2021
READING TIME:
10min

Wenn Menschen verletzt werden, erholen sich ihre Körper von selbst. Was wäre, wenn Technologie dasselbe tun könnte? Was wäre, wenn wir dir sagen würden, dass es das kann?

Unternehmen bemühen sich darum, selbstheilende Systeme zu entwickeln, die das Potenzial haben, die Qualität zu verbessern, Kosten zu sparen und das Vertrauen der Verbraucher zu stärken. Zum Beispiel IBM experimentiert mit sich selbst konfigurierenden, sich selbst schützenden und selbstheilenden Geräten genau aus diesem Grund.

Inhaltsverzeichniss

Was ist ein Selbstheilungssystem?

Eine selbstheilende Software kann Fehlfunktionen in ihrem Betrieb erkennen und sich ohne menschliches Zutun anpassen, sodass sie wieder in einen funktionaleren Zustand versetzt wird.

Selbstheilende Anwendungen basieren auf den folgenden Mechanismen:

  1. Fehlererkennung: Das System achtet ständig auf ungewöhnliches Verhalten und erkennt, wenn etwas schief geht. Diese Überwachung umfasst das gesamte System und stellt sicher, dass keine Anomalien der Erkennung entgehen.
  2. Fehlerisolierung: Sobald ungewöhnliches Verhalten erkannt wurde, ist der nächste entscheidende Schritt die Identifizierung der Ursache. Der Mechanismus zur Fehlerisolierung macht genau das — er identifiziert den Ursprung oder den Auslöser des Fehlers.
  3. Störungsbehebung: Nach der Identifizierung der Fehlerquelle kommt die wichtigste Komponente eines Selbstheilungssystems ins Spiel — der Wiederherstellungsmechanismus. Hier ergreift die Software eigenständig Korrekturmaßnahmen. Es geht nicht nur darum, das Problem zu beheben, sondern es geht darum, den normalen Betrieb so schnell wie möglich wiederherzustellen.

Selbstheilende Systeme sind in drei Stufen unterteilt, von denen jede ihre eigene Größe und ihren eigenen Ressourcenbedarf hat:

Ebene der Anwendung

Probleme werden häufig in einem „Ausnahmenprotokoll“ für zukünftige Untersuchungen vermerkt. Die meisten Probleme sind klein und können übersehen werden. Schwerwiegende Probleme können dazu führen, dass die Anwendung beendet wird (z. B. weil keine Verbindung zu einer Datenbank hergestellt werden kann, die offline geschaltet wurde).

Selbstheilende Apps enthalten dagegen Designaspekte, die bei der Behebung von Problemen helfen. Anwendungen, die Folgendes verwenden Akka, ordnen Sie beispielsweise Elemente in einer Hierarchie an und weisen Sie die Angelegenheiten eines Akteurs seinem Vorgesetzten zu. Viele dieser Tools und Frameworks unterstützen Apps, die so konzipiert sind, dass sie sich selbst reparieren.

Systemebene

Die Selbstheilung auf Systemebene ist im Gegensatz zur Selbstheilung auf Anwendungsebene unabhängig von einer Programmiersprache oder einzelnen Komponenten. Vielmehr können sie unabhängig von den zugrunde liegenden Komponenten verallgemeinert und für alle Dienste und Anwendungen verwendet werden.

Prozessfehler (die in der Regel durch erneutes Bereitstellen oder Neustarten behoben werden) und Schwierigkeiten mit der Reaktionszeit sind die häufigsten Fehler auf Systemebene (die häufig durch Skalierung und Entkalkung behoben werden). Selbstheilende Systeme überwachen den Zustand verschiedener Komponenten und versuchen, sie durch Reparaturen (z. B. erneutes Bereitstellen) wieder in ihren Idealzustand zu versetzen.

Hardware-Ebene

Durch die Selbstheilung auf Hardwareebene werden Dienste von einem instabilen Knoten auf einen fehlerfreien Knoten neu bereitgestellt. Es führt auch Gesundheitsinspektionen an verschiedenen Komponenten durch. Bestehende Lösungen auf Hardwareebene sind in erster Linie Lösungen auf Systemebene, da es keine echte Selbstheilung auf Hardwareebene gibt (z. B. einen Computer, der Speicherprobleme beheben oder eine defekte Festplatte reparieren kann).

Arten von Selbstheilungsprozessen: reaktiv vs. präventiv

In Bezug auf Selbstheilung können wir von reaktiver und präventiver Heilung sprechen:

Reaktive Selbstheilung

Die Heilung, die als Reaktion auf einen Fehler erfolgt, wird als reaktives Heilen bezeichnet und wird bereits angewendet. Bei der reaktiven Heilung wird beispielsweise eine Anwendung als Reaktion auf einen Fehler erneut auf einem neuen physischen Knoten bereitgestellt, wodurch Ausfallzeiten vermieden werden.

Das Ausmaß der Gefahr, der ein System ausgesetzt sein kann, bestimmt den Grad der reaktiven Heilung, der wünschenswert ist. Wenn ein System von einem einzigen Rechenzentrum abhängig ist, ist die Wahrscheinlichkeit, dass das gesamte Rechenzentrum an Strom verliert und alle Knoten ausfallen, so gering, dass die Schaffung eines Systems, das auf diese Möglichkeit reagiert, sowohl nutzlos als auch kostspielig ist. Wenn das System jedoch wichtig ist, kann es sinnvoll sein, es so aufzubauen, dass es im Falle eines Ausfalls automatisch wiederhergestellt wird.

Präventive Selbstheilung

In einem solchen Szenario werden Fehler proaktiv vermieden. Nehmen wir zum Beispiel die Verwendung von Echtzeitdaten, um Probleme mit der Verarbeitungszeit proaktiv zu verhindern. Um den Zustand des Dienstes zu überwachen und die Ressourcen besser zu nutzen, senden Sie eine HTTP-Anfrage. Sie erstellen das System so, dass es skaliert, wenn die Reaktion länger als 500 Millisekunden dauert, und Sie entwerfen das System so, dass es entskaliert, wenn es weniger als 100 Millisekunden benötigt, um zu reagieren.

Wenn die Reaktionszeiten jedoch häufig schwanken, kann die Verwendung von Echtzeitdaten problematisch sein, da das System kontinuierlich skaliert und entskaliert wird (dies kann in einer starren Architektur viele Ressourcen beanspruchen, in einer Microservice-Architektur eine geringere Menge an Ressourcen).

Drei Prinzipien selbstheilender Systeme

  1. Verstehe dein System. Wenn Sie Ihr System gründlich verstehen, können Sie natürlich besser vorhersagen, wo ein Problem auftreten wird und wie Sie reagieren werden. Was sind die häufigsten Szenarien? Was ist der Schweregrad der Fehler, die auftreten können?
  2. Konstruieren Sie für die Prävention. Automatisierung, verteilte Speicherung, Berechnung und Analytik machen präventive Maßnahmen einfach und kostengünstig. Fehler können vermieden werden, wenn Sie eine proaktive, präventive Haltung einnehmen.
  3. Machen Sie die Dinge für die beteiligten Personen einfach. Selbstheilende Systeme verringern den Wartungsaufwand Ihres Teams. Selbst wenn Störungen oder potenzielle Fehler ein menschliches Eingreifen erfordern, sollten Sie den Vorgang so einfach und unkompliziert wie möglich gestalten. Ihre Mitarbeiter werden es Ihnen danken.

Fünf-Punkte-Roadmap für selbstheilende Systeme

  1. Betrachte unveränderliche Infrastruktur als Code
  2. Automatisieren Sie Tests für eine effiziente Codebasis
  3. Installieren Sie umfassende Überwachungssysteme
  4. Integrieren Sie modernste intelligente Warnmeldungen, Auslöser und prädiktive Analysen in Ihre Strategie.
  5. Überlegen Sie, wie das System das Selbstlernen verbessern kann

Vorteile von Selbstheilungssoftware

Neben vielen anderen sind dies die greifbaren Vorteile, die Selbstheilungs-Apps bieten:

  • Reduzierte Ausfallzeiten: Selbstheilende Anwendungen sind darauf ausgelegt, Probleme ohne menschliches Eingreifen zu erkennen, zu diagnostizieren und zu lösen. Dies reduziert Ausfallzeiten erheblich und steigert die Leistung, sodass Unternehmen ihren Betrieb reibungslos ausführen können.
  • Innovatives Nutzererlebnis: Mit weniger Unterbrechungen aufgrund von Systemausfällen genießen Benutzer ein reibungsloseres und komfortableres Erlebnis, was besonders bei unternehmenskritischen Anwendungen von entscheidender Bedeutung ist.
  • Schwerpunkt auf kontinuierlicher Verbesserung: Die Implementierung von Selbstheilungssoftware ist kein einmaliger Prozess. Stattdessen bietet es die Möglichkeit, die Selbstheilungsmechanismen kontinuierlich zu lernen, zu verbessern und zu verbessern, wodurch ein widerstandsfähiges und robustes System gewährleistet wird.
  • Potenzial für Automatisierung: Selbstheilende Anwendungen umfassen Automatisierung, mit dem Ziel, autonomere, sich selbst tragende Systeme zu schaffen. Dies wiederum reduziert die Notwendigkeit menschlichen Eingreifens, wodurch potenzielle menschliche Fehler minimiert und die Effizienz gesteigert werden.
  • Widerstandsfähigkeit gegenüber Ausfällen: Mit der Fähigkeit, potenzielle Ausfälle zu planen, kann Self-Healing-Software diese Fehler effektiv erkennen, automatisch reagieren und beheben und so die Integrität des Systems sichern.
  • Einfluss von KI und maschinellem Lernen: Die Auswirkungen fortschrittlicher Technologien wie KI und maschinelles Lernen bereichern selbstheilende Anwendungen erheblich und bringen sie auf ein neues Niveau an Effizienz und Effektivität.

Selbstheilende Systeme: Wichtige Erkenntnisse

Selbstheilende Systeme und Anwendungen (oder, noch besser, Systeme und Apps, die Fehler automatisch erkennen und vermeiden) können die Qualität verbessern, Kosten senken und das Vertrauen der Verbraucher stärken. Selbst die besten Systeme erfordern menschliche Interaktion, aber sie können so konzipiert sein, dass sie leicht zu bedienen sind und für den Menschen einfach zu handhaben sind. Das könnte es genauso gut sein Selbstheilungscode ist die Zukunft der Software.

Die Vorteile von Software zur Selbstheilung sind zwar beeindruckend, aber Sie müssen sich bewusst sein, dass die Implementierung dieser fortschrittlichen Systeme nicht ohne Herausforderungen ist. Aber SnapStack kann helfen!

READ MORE ON OUR BLOG
Discover similar posts
Was sind die Vorteile der Verwendung von.NET für die Spieleentwicklung?

Hallo Freunde, ich hoffe ihr hattet eine tolle und produktive Woche. Das ist Jordan von SnapStack Solutions. Sie wissen, dass es Freitag ist, an dem unsere Artikel in Ihren sozialen Medien erscheinen, um Ihnen den Tag zu versüßen.

Read More
Wie funktionieren Smart Contracts: Schrittweise Erklärung

Intelligente Verträge sind für traditionelle Verträge das, was Smartphones für Mobiltelefone sind. Aber wie funktionieren intelligente Verträge? Dieser Artikel führt Sie durch jeden Schritt des intelligenten Vertragsprozesses, von der ersten Vertragsgestaltung bis zum endgültigen Abschluss und der Abrechnung. Er öffnet die Tür zu einer Zukunft, in der Vertrauen auf Code und nicht auf Papierkram basiert.

Read More
Swift gegen Objective-C: Welches ist besser zu wählen?

Eine entscheidende Entscheidung, die das Schicksal des Produkts beeinflusst, ist die Auswahl der besten Entwicklungsumgebung. Falsche Entscheidungen können zum Scheitern der Entwicklung führen. Wir werden über zwei Branchengrößen sprechen, die heute Apps für Apple-Geräte anbieten, und herausfinden, welche Apps 2022 vorteilhafter sein werden: Objective-C oder Swift. Lassen Sie sich all Ihre Fragen beantworten, indem Sie dieses Handbuch lesen.

Read More