Zielkonflikte beim Benchmarking

Benchmarking zwischen Performance und Qualität

Aysylu Greenberg

© Shutterstock / Tashatuvango

Bei Benchmarks stellt sich oft die Frage, ob man die Qualität oder die Performance des eigenen Systems verbessern möchte. Bevor man sich jedoch für eine der beiden Möglichkeiten entscheidet, sollte man sich über das Kosten-Nutzen-Spektrum möglicher Zielkonflikte informieren, meint Aysylu Greenberg (Google), Sprecherin auf der diesjährigen JAX London.

Software zu benchmarken ist ein wichtiger Schritt, um die Entwicklung eines Systems auszureifen. Am besten führt man das Benchmarking durch, nachdem alle Fehlerquellen beseitigt und das System auf seine Benutzerfreundlichkeit und Zuverlässigkeit geprüft worden ist. Bei einem typischen System-Lebenszyklus liegt der Schwerpunkt zunächst auf einer korrekten Implementierung, welche durch Komponenten-, Funktions- und Integrationstests kontrolliert wird.

Einige Performance-Probleme können durch weitsichtige Entscheidungen bei der Planung des Designs vermieden werden. So verlagert sich im späteren Verlauf der Akzent auf die Zuverlässigkeit und Benutzerfreundlichkeit eines Systems; überprüft werden diese Faktoren während der laufenden Produktion durch Monitor- und Überwachungssysteme. Nach diesem Schritt ist das System vollkommen einsatzbereit. Es produziert keine Fehlermeldungen mehr und ist mit den notwendigen Features ausgestattet, die nützlich für den Endverbraucher sind.

Und jetzt ist der Zeitpunkt gekommen, um sich Gedanken über die Performance zu machen. An diesem Punkt sollte man auf Benchmarks zurückgreifen, um in Erfahrung zu bringen, welche Systemverbesserungen überhaupt notwendig sind.

Zwei Arten von Benchmarks

Es gibt zwei Arten von Benchmarks, die man durchführen kann. Die einen zielen auf die Qualität, die anderen auf die Performance eines Systems ab. Performance-Benchmarks messen in der Regel die Latenz und die Durchsatzleistung. Sie beantworten also folgende Fragen: „Wie schnell kann das System eine Anfrage beantworten?“, „Wie viele Anfragen kann es in einer Sekunde bewerkstelligen?“ und „Wie viele gleichzeitige Anfragen kann es behandeln?“. Demgegenüber adressieren Qualitäts-Benchmarks bereichsspezifische Anliegen, die nicht problemlos auf andere Systeme übertragen werden können.

So kann zum Beispiel ein Qualitäts-Benchmark auf einer News-Webseite die Gesamtanzahl von Klicks, Kommentaren und Shares aller Artikel umfassen. Im Gegensatz dazu mag ein anderer Seitenbetreiber nicht nur an diesen Daten interessiert sein, sondern ebenfalls wissen wollen, was genau die User angeklickt haben. Dieses Wissen ist etwa dann entscheidend, wenn die Einnahmen einer Webseite in erster Linie von der Anzahl von Weiterempfehlungen abhängen und nicht vom Erfolg einzelner Artikel.

Das Ziel von Benchmarks ist es, Optimierungen anzuleiten und Performance-Ziele zu definieren. Ein guter Benchmark sollte folgende Frage beantworten können: „Wie schnell ist schnell genug?“. Gute Antworten erlauben es einem Unternehmen, die Nutzer ihrer Software mit einem möglichst geringem Kostenaufwand zufrieden zu stellen und kein Geld für unnötige Hardware ausgeben zu müssen.

Es gibt ein Spektrum an Kosten-Nutzen-Zielkonflikten, die ein Benchmark-Designer kennen sollte. Spezialisierte Benchmarks, die realistische Arbeitsbelastungen nutzen und die Produktionsumgebung genau modellieren, sind teuer. Ein grundsätzliches Problem ist hierbei, dass eine spezielle Infrastruktur vorhanden sein muss, um die Produktionsauslastung zu simulieren. Die Zusammenfassung und Überprüfung der Ergebnisse ist ebenfalls ein aufwändiger Prozess, da hier sowohl eine gründliche Analyse als auch der Rückgriff auf statistische Techniken notwendig ist. Dagegen sind Micro-Benchmarks schnell und einfach einzurichten. Sie sind jedoch fehleranfälliger, da sie öfters keine repräsentative Workloads oder Funktionen messen.

Eine Frage formulieren

Bevor man anfängt, ein Benchmark zu designen, ist es hilfreich, sein Vorhaben in einer Frage zu formulieren. Zum Beispiel: „Wie schnell lädt die Page bei Usern, wenn sie ihre Warenkorb-Artikel aufrufen?“ Diese Frage kann man dann mit den Zielen des Benchmarks in Verbindung setzen: „Wie schnell muss die Page laden, um eine gute User Experience gewährleisten zu können?“ Auf diese Art und Weise kann man dem Team eine Anleitung für die Optimierung ihrer Arbeit an die Hand geben. Sie hilft ihnen dabei, zu bestimmen, wann ein wichtiger Schritt in die richtige Richtung vollbracht worden ist.

Benchmarking ist sowohl ein Engineering- als auch ein Business-Problem. Eindeutige Fragestellungen und eine präzise Zielsetzung helfen dabei, die Zeit des Berechnens und Konstruierens effektiv zu nutzen. Wenn man ein Benchmark erstellt, ist es wichtig, sich zu überlegen, inwiefern das System von dessen Arbeit profitieren kann.

Benchmarks, welche die Funktionalität eines Systems in der Breite abdecken und die Ergebnisse gründlich auswerten, sind teuer zu designen und einzurichten. Durch sie gewinnt man jedoch gute und zuverlässige Einblicke in das Verhalten des Systems. Aber auch kleine Benchmarks können bei bestimmten Fragen brauchbare Antworten liefern und helfen, die gesteckten Ziele zu erreichen.

Aufmacherbild: Benchmarking on Black-Golden Watch via Shutterstock / Urheberrecht: Tashatuvango

Geschrieben von
Aysylu Greenberg
Aysylu Greenberg
Aysylu Greenberg arbeitet bei Google an verteilten Systemen. In ihrer Freizeit arbeitet sie an Open-Source-Projekten mit Clojure. Außerdem macht sich Gedanken über das Problem von Mess-Ungenauigkeiten in Systemen oder beschäftigt sich mit Malerei und Skulpturen.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: