Introduction to Fault-Tolerance-Patterns

Begriffe der Fault-Tolerance

Begriffe der Fault-Tolerance

J_ Ravi

J_ Ravi

Set of flashcards Details

Flashcards 32
Language Deutsch
Category Computer Science
Level University
Created / Updated 25.12.2015 / 29.12.2015
Weblink
https://card2brain.ch/box/faulttolerancepattern_introduction
Embed
<iframe src="https://card2brain.ch/box/faulttolerancepattern_introduction/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

FAULT

Begriffserklärung

Die Ursache eines Errors, oftmals ein Bug, oder ein Defekt im System:

  • Coding Fehler (Bugs)
  • Falsche Designs (z.B. Desing falsch umgesetzt)
  • Falsche Anforderungsspezifikation (z.B. falsche Anforderungsspezifikatio erhalten)

Beispiel: Beim Beispiel mit dem Bankautomaten ist der Fault, dass der Bankangestellte die Banknoten in das falsche Fach legte.

FAULT, der (bis jetzt) nicht zu einem Error geführt hat

Begriffserklärung

Latent Fault

Faults können zu einem Error führen. Sie sind grundsätzlich in jedem System vorhanden, treten aber nicht unbedingt auf. In diesem Fall werden werden die Faults als latent bezeichnet.

ERROR

Begriffserklärung

Ein Error ist ein falscher Systemzustand, welcher einen „failure“ hervorrufen kann, aber nicht muss. Error werden in zwei Kategorien unterteil: Timing (z.B. Race Condition oder Endlosschleife) und Value (z.B. Dateninkonsistenz oder Wild Write -> Daten werden an einem falschen Ort geschrieben).

Beispiel: In unserem Beispiel mit dem Bankomat (siehe Failure) wäre der Error, dass die Banknoten im falschen liegen.

FAILURE

Begriffserklärung

Bezeichnet ein System, das seine Spezifikationen nicht mehr befolgt. Ohne Spezifikation kann aber auch kein Failure statfinden.

Beispiel: Bei einem Bankomat wäre ein Failure, wenn ein falscher Betrag ausgegeben wird.

Andere Beispiele:

  • Falsche Resultate werden geliefert
  • System ist nicht erreichbar zu unerwartetem Zeitpunkt
  • Applikation reagiert nicht auf Benutzereingabe

FAILURE Typen

Fail-Silent (Fail Mode): Das System liefert entweder das korrekte, oder gar kein Resultat mehr.

Crash-Failure (Fail Mode): Nach einem fail-silent failure stürzt das Subsystem ab

Fail-Stop (Fail Mode): Der crash-failure ist für den Rest des Systems sichtbar.

Consistent Failures: Das System scheitert und für alle Beobachter erzeugt dies das selbe Resultat.

Inconsistent (Malicious) Failures: Der Fehler im System wird von veschiedenen Benutzern auf verschiedene Art und Weise erkannt.

COVERAGE Begriffserklärung

Coverage ist die Fähigkeit eines Systems, wenn ein Fehler auftaucht, in einer gewissen Zeit zu automatisch zu korrigieren.

RELIABILITY Begriffserklärung

Reliability ist die Wahrscheinlichkeit, dass ein System für eine gewisse Zeit ohne Failure läuft.

AVAILABILITY Begriffserklärung

Availability, Verfügbarkeit, beschäftigt sich mit der prozentualen Zeit in welcher das System fehlerfrei arbeitet und verfügbar ist.

MTTF/(MTTF+MTTR) == MeanTimeToFailure / (MeantTimeToFailure + MeanTimeToRepair)

DEPENDABILITY Begriffserklärung

Dependability ist eine Kombination aus Reliabiliy, Availability, Safety und Security.

Safety: Nicht-Auftritt eines katastrophalen Failures

Security: Unerlaubter Zugriff oder unerlaubtes Verbearbeiten von Informationen

PERFORMANCE Begriffserklärung

Performance und Reliability liegen nahe beieinander, z.B. wenn definiert werden muss, wie viele Requests ein System gleichzeitig verarbeiten soll, und was passieren soll wenn diese Zahl überschritten wird.

Mögliche Szenarien sind etwa dass das System zusammenbricht, oder dass die Leistung sinkt.

Zusammenhang Fault, Failure und Error

Fault kann zu Error führen, wobei mehrere Faults (nicht gleichzeitig) zum selben Error führen können.

Error kann zu Failure führen, wobei mehrere Errors (nicht gleichzeitig) zum selben Failure führen können.

Fault Tolerant Mindset

Fault Tolerant Mindset beschreibt die Denkweise, welche immer hinterfragt, was alles in einer bestimmten Situation schief laufen kann.

Quality vs. Faul Tolerance

Eine gute Qualität garantiert nicht die Fehlertoleranz eines Systems, da diese zwei Eigenschaften ähnlich sind, aber unabhängig voneinander.

Quality

Die Qualität einer Software beschreibt, wie lange eine Software fehler- und errorfrei ausgeführt werden kann. Ein qualitativ hochwertiges Programm erzeugt nur wenige Errors. Trotzdem muss bei der qualitativ hochwertigen Software erzeugte Error nicht zwingend harmlos sein.

Keep It Simple

Ein System soll möglich einfach gehalten werden. Denn mit erhöhte Komplexität erhöht sich auch die Menge an Faults.

Defensive Programming Techniques

Defensive Programmierung beruht auf der fehlertoleranten Denkweise, wobei der Code sich selber vor möglicherweise auftretenden Problemen schützt.

Faults in Fault Tolerant Code

Nach dem Prinzip, dass jede Zeile Code mögliche Faults birgt, so kann durch Hinzufügen von Code zur Fehlerbehandlung ebenfalls wieder neue Faults dazukommen. 

Memory Corruption

Es gibt verschiedene Ursachen, welche die gespeicherten Daten verändern können (z. B. bei falscher Verwendung von Pointer). Deshalb ist bei Verwendung von Pointer Vorsicht geboten

Data Structure Design (Auf was soll geachtet werden bei Waht der Datenstruktur?)

Datenstruktur sollen immer so gewählt werden, sodass diese auf Korrektheit (Korrekte Werte und für Datenintegrität) überprüft werden können.

Design for Maintainability (Worauf soll geachtet werden bei der Programmierung bezüglich Maintainability?)

Die Lebensdauer von fehlertoleranten Systemen ist hoch, weshalb die Wartbarkeit eine wichtige Rolle spielt. Der Code sollte einfach geschrieben sein (z.B. kleine Methoden), sodass das Design stetig problemlos weiterentwickelt werden kann.

Coding Standards

Dank Coding Standard kann man die Qualität der Software steigern. Dabei sollte man nicht zu viele Standards verwenden, da sich keiner über 100 Standards merken kann.

Redundant Disk

RAID (Redundant Array of inexpensive disks) beschreibt eine Technologie mehrere Disks zu kombinieren und die Daten absichtlich Redundant zu halten.

The Role of Verification

Testing und Verifikation ist wichtig für ein Fehlertolerantes System, da dadurch die Zuverlässigkeit einer Software sichergestellt werden kann.

Fault Insertion Testing

Hierbei bei wird dem System absichtlich falsche Werte mitgegeben, um zu testen, ob das System in der Lage ist, einen Fehler korrekt zu behandeln.

Es gibt 4 Phasen im Lebenszyklus eines Faults:

Error Detection -> Error Recovery -> Error Migration -> Fault Treatment

Soft Real-Time

Damit der Zeitliche Deadline nicht überschritten wird können Failure ausgegeben werden, wenn der Resultat bis dahin noch nicht berechnet wurde. Dieser Failure führt nicht zu einem katastrophalen Failure.

Example: Web Server (responses are desired very quickly, but if a request should take longer than specified it won’t result in a system failure)

Hard Real-Time

Die Resultate müssen in einem Hard Real-Time-System spätestens bis zum zeitlichen Deadline berechnet worden sein. Sonst kann es zu einem katastrophalen Failure führen (z.B. bei einem Flugzeug).

High Reliablity

High Realibility ist wenn ein System eine hohe availability und hohe Anforderung an Korrektheit hat. High Availability hohe Verfügbarkeitsanforderungen an das System.

Failure Rate Requirement

Bestimmt wie viel Fehler in einer gewissen Anzahl von Funktionsaufrufen geschehen darf. Z.B. in einer Bank darf nur maximal 1 Transaktion fehlschlagen pro 100‘000 Transaktionen.

Stateful

Ein Biespiel eines Stateful Systems ist das Telefonnetzwerk, welche über eine grosse Menge an Statuinformationen verfügt. Wenn ein Stateful System sein State verliert, verliert es auch die Fähigkeit weiterzuoperieren.

Stateless

Beispiele für Stateless Systeme sind z.B. Webserver. Anfragen welche an den Webserver gesendet werden sind nicht mehr Teil vom aktuellen System.

External Observers

External Observers sind Systeme welche unabhängig vom eigendlichen System laufen und den Status des Systems überprüfen. Hierbei wird unterschieden zwischen Systemen, dessen Daten „live“ überwacht wird und Systeme, dessen Daten periodisch überwacht wird.