Zuverlässigkeit

Zuverlässigkeit stellt sicher, dass die Software unter definierten Bedingungen über einen bestimmten Zeitraum hinweg fehlerfrei funktioniert. Sie besteht aus verschiedenen Untermerkmalen:

  • Reife beschreibt die Fähigkeit der Software, eine stabile Leistung zu erbringen und Fehler in der Anwendung zu minimieren. Dies erhöht das Vertrauen der Benutzer, dass die Software konsistent funktioniert.

  • Verfügbarkeit sorgt dafür, dass die Software immer dann zugänglich und nutzbar ist, wenn sie benötigt wird. Dies minimiert Ausfallzeiten und maximiert die Betriebszeit der Anwendung.

  • Fehlertoleranz stellt sicher, dass die Software in der Lage ist, bei Auftreten von Fehlern oder unerwarteten Ereignissen weiterzufunktionieren. Dies erhöht die Widerstandsfähigkeit der Software gegenüber Ausfällen.

  • Wiederherstellbarkeit garantiert, dass die Software nach einem Fehler oder Ausfall schnell wieder in einen funktionsfähigen Zustand zurückkehren kann. Dies reduziert die Ausfallzeiten und die Auswirkungen von Störungen auf die Benutzer.

Für zuverlässigere Softwaresysteme können diese Qualitätstaktiken infrage kommen:

Fehlerbehandlung

Mechanismen zur Erkennung, Protokollierung und Behandlung von Fehlern umsetzen

Durch eine robuste Fehlerbehandlung können Ausnahmen und unerwartete Situationen abgefangen werden, ohne dass das gesamte System abstürzt. Fehler werden protokolliert, um die Ursachen zu analysieren und zukünftige Probleme zu vermeiden. Geeignete Fehlermeldungen informieren auch Benutzer über aktuelle bestehende Probleme. Eine strukturierte Fehlerbehandlung ermöglicht es dem System zudem, sich von Fehlerzuständen zu erholen. Fehlerbehandlung erhöht die Zuverlässigkeit und Verfügbarkeit des Systems und minimiert die Auswirkungen von Fehlern auf die Benutzer.

Fördert: Fehlertoleranz
Konsequenzen: Erhöhter Implementierungsaufwand und Komplexität durch zusätzlichen Code zur Fehlerbehandlung.

#ExceptionHandling #Logging #Fehlermanagement #Resilienz

Redundanz

Kritische Komponenten oder Systeme mehrfach vorhalten

Redundanz dupliziert kritische Komponenten oder ganze Subsysteme, sodass eine Standby-Instanz übernehmen kann, wenn die primäre ausfällt. Gängige Muster sind Active-Passive-Setups mit einem Hot Spare für den Failover, Active-Active-Konfigurationen, die Last auf mehrere Instanzen verteilen, und N+1-Schemata mit einem zusätzlichen Knoten über dem Minimum. Jeder Ansatz eliminiert Single Points of Failure und erhöht die Gesamtverfügbarkeit. Wirksame Redundanz erfordert Health Checks, automatische Failover-Mechanismen und regelmäßige Tests, damit Backup-Komponenten im Ernstfall tatsächlich funktionieren.

Fördert: Verfügbarkeit
Konsequenzen: Erhöhte Kosten und Komplexität durch zusätzliche Hardware, Software und Wartung.

#Ausfallsicherheit #Failover #Hochverfügbarkeit #Spare

Exceptions

Ausnahmen verwenden, um Fehlerzustände zu signalisieren und zu behandeln

Exceptions (Ausnahmen) signalisieren und behandeln Fehlerzustände in einem System. Wenn eine Komponente auf eine Situation stößt, die sie nicht normal verarbeiten kann, wie ungültige Eingaben, Ressourcenmangel oder interne Fehler, kann sie eine Ausnahme auslösen. Die Ausnahme unterbricht den normalen Programmfluss und übergibt die Kontrolle an eine spezielle Ausnahmebehandlungsroutine. Dort kann der Fehler protokolliert, alternative Maßnahmen ergriffen oder die Ausnahme an eine höhere Ebene weitergeleitet werden. Exceptions ermöglichen eine klare Trennung von normalem Programmcode und Fehlerbehandlung sowie eine strukturierte Behandlung von Fehlerzuständen.

Fördert: Fehlertoleranz
Konsequenzen: Erhöhte Komplexität durch die Implementierung von Ausnahmebehandlungsroutinen und mögliche Leistungseinbußen bei häufigem Auslösen von Ausnahmen.

#Ausnahmebehandlung #Fehlerbehandlung #Robustheit #DefensiveProgrammierung

Checklisten

https://leanpub.com/qualitaetstaktiken

Runbooks

https://leanpub.com/qualitaetstaktiken

Fehlerprotokollierung

https://leanpub.com/qualitaetstaktiken

Monitoring

https://leanpub.com/qualitaetstaktiken

Überwachung der Systemauslastung

https://leanpub.com/qualitaetstaktiken

Langweilige Technologien

https://leanpub.com/qualitaetstaktiken

Resilienz

https://leanpub.com/qualitaetstaktiken

Notfallwiederherstellung

https://leanpub.com/qualitaetstaktiken

Bereitschaftsdienst

https://leanpub.com/qualitaetstaktiken

Lastverteilung

https://leanpub.com/qualitaetstaktiken

Chaos Engineering

https://leanpub.com/qualitaetstaktiken

Elastische Ressourcennutzung

https://leanpub.com/qualitaetstaktiken

Proaktives Kapazitätsmanagement

https://leanpub.com/qualitaetstaktiken

Service Level Agreements

https://leanpub.com/qualitaetstaktiken

Service Level Objectives

https://leanpub.com/qualitaetstaktiken

Service Level Indicators

https://leanpub.com/qualitaetstaktiken

Datenreplikation

https://leanpub.com/qualitaetstaktiken

Failover-Mechanismen

https://leanpub.com/qualitaetstaktiken

Selbstüberwachung und -diagnose

https://leanpub.com/qualitaetstaktiken

Isolierung fehlerhafter Komponenten

https://leanpub.com/qualitaetstaktiken

Umgebungsparität

https://leanpub.com/qualitaetstaktiken

Wartung der Produktionsumgebung

https://leanpub.com/qualitaetstaktiken

Site Reliability Engineering (SRE)

https://leanpub.com/qualitaetstaktiken

Graceful Degradation

https://leanpub.com/qualitaetstaktiken

Circuit Breaker

https://leanpub.com/qualitaetstaktiken

Bulkhead

https://leanpub.com/qualitaetstaktiken

Selbsttest

https://leanpub.com/qualitaetstaktiken

Ping

https://leanpub.com/qualitaetstaktiken

Heartbeat

https://leanpub.com/qualitaetstaktiken

Transaktionen

https://leanpub.com/qualitaetstaktiken

Retry

https://leanpub.com/qualitaetstaktiken

Watchdog

https://leanpub.com/qualitaetstaktiken

Smoke Testing

https://leanpub.com/qualitaetstaktiken

Nonstop Forwarding

https://leanpub.com/qualitaetstaktiken

Timestamping

https://leanpub.com/qualitaetstaktiken

Statusüberwachung

https://leanpub.com/qualitaetstaktiken

Failover-Cluster

https://leanpub.com/qualitaetstaktiken

Redundante Datenspeicherung

https://leanpub.com/qualitaetstaktiken

Rollback-Mechanismen

https://leanpub.com/qualitaetstaktiken

Blue Green Deployment

https://leanpub.com/qualitaetstaktiken

Feature Toggles

https://leanpub.com/qualitaetstaktiken

Rolling Updates

https://leanpub.com/qualitaetstaktiken

Dark Launches

https://leanpub.com/qualitaetstaktiken

Canary Releases

https://leanpub.com/qualitaetstaktiken

Fehlertolerante Datenstrukturen

https://leanpub.com/qualitaetstaktiken

Fehlereingrenzung

https://leanpub.com/qualitaetstaktiken

Fehlerkorrekturcodes

https://leanpub.com/qualitaetstaktiken

Fehlerberichterstattung und -analyse

https://leanpub.com/qualitaetstaktiken

Prüfsummen

https://leanpub.com/qualitaetstaktiken

Redundante Prüfsummen

https://leanpub.com/qualitaetstaktiken

Kontinuierliche Datenüberprüfung

https://leanpub.com/qualitaetstaktiken

Plausibilitätsprüfungen

https://leanpub.com/qualitaetstaktiken

Wiederherstellungspunkte

https://leanpub.com/qualitaetstaktiken

Überwachung der Systemintegrität

https://leanpub.com/qualitaetstaktiken

Lasttests

https://leanpub.com/qualitaetstaktiken

Regelmäßige Backups

https://leanpub.com/qualitaetstaktiken

Incident-Management

https://leanpub.com/qualitaetstaktiken

Root Cause Analysis

https://leanpub.com/qualitaetstaktiken

Hochverfügbarkeitsarchitekturen

https://leanpub.com/qualitaetstaktiken

Fehler-Log-Analyse

https://leanpub.com/qualitaetstaktiken

Datenintegrität

https://leanpub.com/qualitaetstaktiken

Sichere Software

https://leanpub.com/qualitaetstaktiken

Regelmäßige Wartung und Updates

https://leanpub.com/qualitaetstaktiken

Kontinuierliche Integration und Bereitstellung

https://leanpub.com/qualitaetstaktiken

Immutable Infrastructure

https://leanpub.com/qualitaetstaktiken

Automatisierte Tests

https://leanpub.com/qualitaetstaktiken

Fehlerbudgets

https://leanpub.com/qualitaetstaktiken

Blameless Postmortems

https://leanpub.com/qualitaetstaktiken

Health-Check-Endpunkte

https://leanpub.com/qualitaetstaktiken

Timeout-Management

https://leanpub.com/qualitaetstaktiken

Rate Limiting

https://leanpub.com/qualitaetstaktiken

Load Shedding

https://leanpub.com/qualitaetstaktiken

Idempotenz-Design

https://leanpub.com/qualitaetstaktiken

Saga Pattern

https://leanpub.com/qualitaetstaktiken

Dead-Letter-Queue

https://leanpub.com/qualitaetstaktiken

Write-Ahead-Logging

https://leanpub.com/qualitaetstaktiken