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.
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:
Selbstheilende Systeme sind in drei Stufen unterteilt, von denen jede ihre eigene Größe und ihren eigenen Ressourcenbedarf hat:
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.
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.
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).
In Bezug auf Selbstheilung können wir von reaktiver und präventiver Heilung sprechen:
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.
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).
Neben vielen anderen sind dies die greifbaren Vorteile, die Selbstheilungs-Apps bieten:
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!
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 MoreIntelligente 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 MoreEine 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