Suchen

Automatisierte Erkennung von Leistungseinbußen Benchmark-Tools im AWS SDK für Java 2.0

| Redakteur: Stephan Augsten

Das AWS Software Development Kit für Java 2.0 wurde um automatisierte Performance-Rückgangs-Tests erweitert. Die Tools prüfen jede Änderung am SDK vor der Veröffentlichung auf potenzielle Leistungseinbußen.

Firmen zum Thema

Der Code, um den Build der Benchmarks für das AWS SDK und anschließend die Tests selbst anzustoßen.
Der Code, um den Build der Benchmarks für das AWS SDK und anschließend die Tests selbst anzustoßen.
(Bild: AWS)

Amazon Web Services arbeitet nach eigenen Angaben stetig daran, verschiedene Leistungsaspekte des AWS SDK zu verbessern. In der Vergangenheit habe man beispielsweise auf Pull-Request-Reviews vertraut, um Code-Änderungen zu erfassen, die zu Performance-Problemen führen könnten, schreibt die Software-Development-Ingenieurin Zoe Wang im AWS Blog.

Dabei könne aber leicht eine einfache Codezeile übersehen werden, die schlussendlich zu Performance-Problemen führt. Zwischenzeitlich habe man außerdem Performance-Einbußen durch aktualisierte SDK-Abhängigkeiten registriert, deren Auswirkungen auf das SDK sich mit den bestehenden Möglichkeiten weder überwachen noch quantifizieren ließen.

„Mit den neuen Benchmark-Tests sind wir nun in der Lage, Leistungsrückgänge zu erkennen, bevor Änderungen in den Master eingebunden werden“, schreibt Wang. Der Benchmark-Harness-Code ist Open-Source und befindet sich im gleichen Repository wie das AWS SDK für Java 2.0 und wird mit dem Java Microbenchmark Harness oder JMH implementiert.

Sobald das Benchmark-Tool ausgelöst wird, führt es zunächst eine Reihe von vordefinierten Szenarien mit verschiedenen http-Clients aus, die Anfragen an lokale Mock-Server senden. Anschließend misst es den Durchsatz der aktuellen Revision und vergleicht die Ergebnisse mit den vorhandenen Basisergebnissen, die aus der zuvor veröffentlichten Version berechnet wurden.

Die Leistungstests schlagen fehl, wenn der Durchsatz der neuen Änderung um einen bestimmten Schwellenwert sinkt. Die Durchführung der Benchmark-Tests für jede Pull-Anfrage ermöglicht es dabei, all jene mit problematischen Änderungen zu blockieren. Zusätzlich erleichtert das Benchmark-Tool die Überwachung der SDK-Leistung im Laufe der Zeit.

Aus den generierten Basisdaten lassen sich Informationen ableiten, beispielsweise welcher HTTP-Client die beste Leistung hat oder welchen Durchsatzgewinn er durch das Tuning von SDK-Konfigurationen erzielen kann. So könne die Umstellung auf einen OpenSSL Provider im Falle des NettyAsyncHttpClient den Benchmarks zufolge zehn Prozent mehr Durchsatz erreichen, berichtet Wang.

Wie sich die Benchmarks starten lassen, beschreibt Wang im genannten Blog-Eintrag. Außerdem empfiehlt sie, den Benchmarks Harness auch lokal auszuprobieren, um potenzielle Leistungseinbußen zu erkennen.

(ID:46161792)