Leistungseffizienz

Leistungseffizienz stellt sicher, dass die Software die verfügbaren Ressourcen optimal nutzt und unter Lastbedingungen gut funktioniert. Sie besteht aus verschiedenen Untermerkmalen:

  • Zeitverhalten beschreibt, wie schnell die Software auf Eingaben reagiert und Aufgaben erledigt. Dies umfasst Ladezeiten und Antwortzeiten, die entscheidend für eine positive Benutzererfahrung sind.

  • Ressourcennutzung stellt sicher, dass die Software die vorhandenen Systemressourcen, wie CPU, Speicher und Netzwerkbandbreite, effizient nutzt. Dies reduziert den Ressourcenverbrauch und erhöht die Leistungsfähigkeit.

  • Kapazität garantiert, dass die Software in der Lage ist, eine bestimmte Menge an Daten oder Benutzern zu verarbeiten, ohne an Leistung zu verlieren. Dies ist wichtig für die Skalierbarkeit und Zukunftssicherheit der Anwendung.

Folgende Qualitätstaktiken können Anforderungen bezüglich der Leistungseffizienz erfüllen:

Caching

Häufig benötigte Daten zwischenspeichern

Caching hält Daten, die oft gelesen, aber selten geändert werden, nach dem ersten Abruf in einem schnellen Zwischenspeicher. Dies kann im Arbeitsspeicher, auf schnellen SSDs oder speziellen Cache-Servern wie Redis oder Memcached erfolgen. Bei erneuten Zugriffen liest das System die Daten direkt aus dem Cache, ohne langsamere Festplatten oder Datenbanken zu belasten. Strategien wie Time-to-Live (TTL), Cache-Aside oder Write-Through steuern, wann Einträge aktualisiert oder invalidiert werden. Caching reduziert die Antwortzeiten und erhöht den Durchsatz, erfordert aber eine durchdachte Invalidierungsstrategie, um veraltete Daten zu vermeiden.

Fördert: Zeitverhalten, Ressourcennutzung
Konsequenzen: Erhöhter Speicherverbrauch, Gefahr veralteter Daten bei unzureichender Cache-Invalidierung.

#Caching #Zwischenspeicherung #Performanceoptimierung

Lastverteilung

Last auf mehrere parallel arbeitende Verarbeitungseinheiten aufteilen

Lastverteilung verteilt Anfragen und Aufgaben auf mehrere Server, Prozessoren oder Threads, damit keine einzelne Einheit zum Engpass wird. Algorithmen wie Round-Robin, Least-Connections oder gewichtete Verteilung wählen das Ziel anhand aktueller Kapazität und Verfügbarkeit. Hardware-Load-Balancer, Reverse Proxies wie NGINX oder anwendungsseitiges Routing decken unterschiedliche Skalierungsanforderungen ab. Health Checks prüfen laufend die Backend-Knoten und entfernen nicht reagierende Instanzen aus dem Pool, sodass der Verkehr nur gesunde Ziele erreicht. Antwortzeiten sinken, weil parallele Verarbeitungseinheiten die Arbeitslast teilen, während die gleichmäßige Ressourcennutzung aller Knoten Verschwendung unter Spitzenlast reduziert.

Fördert: Zeitverhalten, Ressourcennutzung
Fördert auch: Kapazität
Konsequenzen: Erhöhte Komplexität, Notwendigkeit der Synchronisation und Zustandsverwaltung.

#Lastverteilung #LoadBalancing #Skalierung

Asynchrone Verarbeitung

Aufrufe und Ausführungen durch Asynchronität voneinander entkoppeln

Asynchrone Verarbeitung reiht Anfragen und Aufträge in eine Warteschlange ein, statt sie direkt zu bearbeiten. Message Broker wie RabbitMQ, Apache Kafka oder Amazon SQS entkoppeln Sender und Empfänger zuverlässig. Die aufrufende Komponente erhält sofort eine Bestätigung und kann weitere Anfragen stellen. Separate Verarbeitungseinheiten (Worker) arbeiten die Warteschlange unabhängig ab, was die Nebenläufigkeit erhöht und blockierende Aufrufe vermeidet. Asynchrone Verarbeitung verkürzt die Reaktionszeiten für Aufrufer und ermöglicht eine unabhängige Skalierung von Produzenten und Konsumenten nach ihrem jeweiligen Bedarf.

Fördert: Zeitverhalten, Ressourcennutzung
Fördert auch: Kapazität
Konsequenzen: Erhöhte Komplexität bei Fehlerbehandlung und Überwachung der Verarbeitung.

#AsynchroneVerarbeitung #Entkopplung #Nebenläufigkeit

Asynchrones Logging

https://leanpub.com/qualitaetstaktiken

Performance-Budgets

https://leanpub.com/qualitaetstaktiken

Ressourcennutzungsoptimierung

https://leanpub.com/qualitaetstaktiken

Komprimierung

https://leanpub.com/qualitaetstaktiken

API-Aufrufoptimierung

https://leanpub.com/qualitaetstaktiken

Effiziente Algorithmen

https://leanpub.com/qualitaetstaktiken

Datenbankoptimierung

https://leanpub.com/qualitaetstaktiken

NoSQL-Datenbanken

https://leanpub.com/qualitaetstaktiken

Graph-Datenbanken

https://leanpub.com/qualitaetstaktiken

Lasttests

https://leanpub.com/qualitaetstaktiken

Stresstest

https://leanpub.com/qualitaetstaktiken

Profiling

https://leanpub.com/qualitaetstaktiken

Ressourcen-Pooling

https://leanpub.com/qualitaetstaktiken

Parallelisierung

https://leanpub.com/qualitaetstaktiken

Verteilte Verarbeitung

https://leanpub.com/qualitaetstaktiken

Nebenläufigkeit

https://leanpub.com/qualitaetstaktiken

Pipelining

https://leanpub.com/qualitaetstaktiken

Streaming

https://leanpub.com/qualitaetstaktiken

Elastische Skalierung

https://leanpub.com/qualitaetstaktiken

Vertikale Skalierung

https://leanpub.com/qualitaetstaktiken

Horizontale Skalierung

https://leanpub.com/qualitaetstaktiken

Content Delivery Networks

https://leanpub.com/qualitaetstaktiken

Static Site Generation

https://leanpub.com/qualitaetstaktiken

Server Side Rendering

https://leanpub.com/qualitaetstaktiken

Edge Computing

https://leanpub.com/qualitaetstaktiken

Client Side Rendering

https://leanpub.com/qualitaetstaktiken

Batch-Verarbeitung

https://leanpub.com/qualitaetstaktiken

In-Memory-Verarbeitung

https://leanpub.com/qualitaetstaktiken

Lazy Loading

https://leanpub.com/qualitaetstaktiken

Deferred Static Generation

https://leanpub.com/qualitaetstaktiken

Lazy Evaluation

https://leanpub.com/qualitaetstaktiken

Adaptive Streaming

https://leanpub.com/qualitaetstaktiken

Progressive Loading

https://leanpub.com/qualitaetstaktiken

Pagination

https://leanpub.com/qualitaetstaktiken

Infinite Scrolling

https://leanpub.com/qualitaetstaktiken

Virtualisierte Listen

https://leanpub.com/qualitaetstaktiken

Approximative Verfahren

https://leanpub.com/qualitaetstaktiken

Vorhersage-basiertes Laden

https://leanpub.com/qualitaetstaktiken

Predictive Prefetching

https://leanpub.com/qualitaetstaktiken

Code-Splitting

https://leanpub.com/qualitaetstaktiken

Tree Shaking

https://leanpub.com/qualitaetstaktiken

Spezialisierte Hardware

https://leanpub.com/qualitaetstaktiken

Kontinuierliche Leistungsüberwachung

https://leanpub.com/qualitaetstaktiken

Performance-Messungen

https://leanpub.com/qualitaetstaktiken

Statische Codeanalyse

https://leanpub.com/qualitaetstaktiken

Dynamische Programmierung

https://leanpub.com/qualitaetstaktiken

Probabilistische Datenstrukturen

https://leanpub.com/qualitaetstaktiken

Vektorisierung

https://leanpub.com/qualitaetstaktiken

Leistungsmodellierung

https://leanpub.com/qualitaetstaktiken

Transparente Leistungsmetriken

https://leanpub.com/qualitaetstaktiken

Serverless Computing

https://leanpub.com/qualitaetstaktiken

Reactive Programming

https://leanpub.com/qualitaetstaktiken

Massentestdatenerzeugung

https://leanpub.com/qualitaetstaktiken

Speicherhierarchie

https://leanpub.com/qualitaetstaktiken

Verteiltes Caching

https://leanpub.com/qualitaetstaktiken

Datenpartitionierung

https://leanpub.com/qualitaetstaktiken

Datendeduplizierung

https://leanpub.com/qualitaetstaktiken

Datenaggregation

https://leanpub.com/qualitaetstaktiken

Materialized Views

https://leanpub.com/qualitaetstaktiken

Probenahme

https://leanpub.com/qualitaetstaktiken

Datenarchivierung

https://leanpub.com/qualitaetstaktiken

Datenstromverarbeitung

https://leanpub.com/qualitaetstaktiken

Optimistische UI-Updates

https://leanpub.com/qualitaetstaktiken

Kapazitätsplanung

https://leanpub.com/qualitaetstaktiken

Backpressure

https://leanpub.com/qualitaetstaktiken

CQRS

https://leanpub.com/qualitaetstaktiken

Read Replicas

https://leanpub.com/qualitaetstaktiken

Denormalisierung

https://leanpub.com/qualitaetstaktiken

Verbindungspooling

https://leanpub.com/qualitaetstaktiken

Serialisierungsoptimierung

https://leanpub.com/qualitaetstaktiken

Bild- und Asset-Optimierung

https://leanpub.com/qualitaetstaktiken

Cold Start Mitigation

https://leanpub.com/qualitaetstaktiken

Verteiltes Tracing

https://leanpub.com/qualitaetstaktiken