Mehr Qualität und Geschwindigkeit bei DevOps
Seite 2: Beispiele
Beispiel: Anzahl der SQL Statements
Das Prinzip soll anhand eines Beispiels erläutert werden. Anwendungen sind häufig ineffizient beim Zugriff auf eine Datenbank. Das liegt meist an einer hohen Anzahl an SQL-Aufrufen, die zu viele Daten auf ineffiziente Weise anfordern. In einem Fall wurden folgende Werte in einer produktiven Umgebung gemessen:
Das Verhalten änderte sich nach dem Aufspielen einer neuen Softwareversion. Diese verursachte einen Performanceabfall und überladene Datenbankserver. Es stellte sich heraus, dass das Entwickler-Team die Nutzung ihres O/R-Mapping-Frameworks Hibernate verändert hatte. Eine schlechte Konfiguration führte dazu, dass Hibernate viel mehr SQL-Abfragen ausführte als zuvor, um das gleiche Ergebnis zu erhalten.
Das Problem hätte sich bereits an der Workstation des Entwicklers identifizieren lassen, falls er die Anzahl der ausgeführten SQL Statements nach der Konfigurationsänderung untersucht hätte. Hibernate bietet wie viele andere Frameworks integrierte Logging- und Diagnose-Tools, um genau solche Fehler zu entdecken. Das ist in der folgenden Abbildung zu erkennen:
Beispiel: Architekturmetriken in Tests
Die meisten Tester entwickeln hervorragende funktionale Tests, unabhängig vom verwendeten Automatisierungs-Tool. Doch eine "Shift Left"-Mentalität bedeutet, dass Tester auch die technischen Architekturmetriken prüfen sollten. Die agilen Teams können sie dabei unterstützen, automatisch die Anzahl der SQL Statements für jeden durchgeführten Test zu sammeln. Damit müssen sie das nicht mehr manuell vor dem Einpflegen des Codes erledigen. Anschließend erhalten sie sofort die Ergebnisse, wie die folgende Abbildung vereinfacht anhand der Anzahl der SQL Statements zeigt.
Falls eine Abweichung wie in der letzten Zeile geschieht, ist der Build sofort zu stoppen. Diese Untersuchungen sind besonders hilfreich, wenn sie in einer Testumgebung durchgeführt werden, die mehr Testdaten in der Datenbank enthält, als die Entwickler in ihrem lokalen System besitzen. Schließlich gibt es viele andere Metriken, die entlang der Entwicklungskette zu berücksichtigen sind. Für Webentwickler sind das Web-Performance-Metriken wie die Anzahl an Bildern und CSS- oder JavaScript-Dateien. Für Architekten serviceorientierter Anwendungen ist es wichtig, wie die Dienste miteinander kommunizieren, wie viele Daten pro Service-Call übertragen werden und wie viele Ressourcen das bindet. Diese Werte sind so früh wie möglich und weiterhin während des gesamten Entwicklungsprozesses bis hin zum Live-System zu sammeln.