Performance Engineering

von Nicolas Bär und Christoph Huber

Seitdem wir Silberrücken sind, haben wir bereits mehrere Kundenaufträge im Bereich Performance Engineering für Websysteme durchgeführt. Da diese Einsätze immer interessant waren und grossen Nutzen für unsere Kunden hatten, haben wir uns entschlossen, zu diesem Thema eine eigene Microsite performance.silberruecken.ch zu veröffentlichen, auf welcher wir unser Vorgehen und unsere Erfahrungen zeigen wollen.

Ausgangslagen

Performance ist einer der Qualitäten einer Softwarearchitektur, welche ins Auge springt, sobald sie schlecht ist. Deshalb ist es ein grosses Bedürfnis für Organisationen, Performanceprobleme schnell zu beheben. Dies ist aber oft nicht einfach mit internem Personal zu erreichen: Zum einen ist Performance Engineering eine komplexe Tätigkeit, welche viel Erfahrung benötigt, zum anderen sind meist keine aktiven Entwickler mehr auf einem Softwareprojekt, welches bereits in Produktion ist. Darum wenden sich Kunden oft an uns, um in möglichst kurzer Zeit die Performance messbar zu machen und zu verbessern.

Die Ausgangslage ist bei jedem Kunde unterschiedlich:

  • Ein Go-Live steht bevor und es soll getestet werden, ob die Webapplikation oder der Webservice die erwartete Last aushalten wird. Falls nicht, wird systematisch optimiert, bis die Last keine Probleme mehr verursacht.
  • Ein bereits produktiver Webservice zeigt Performanceprobleme, welche behoben werden sollen, bis die Performance von den Stakeholdern wieder als akzeptabel empfunden wird.
  • In der Softwareentwicklung soll von Anfang an auf die Performance geachtet werden. Wir können als dedizierten Service die Performance während sämtlichen Entwicklungszyklen messbar machen, so dass die Auswirkungen auf Codeänderungen schnell sichtbar werden (Continuous Integration).

Iteratives Vorgehen

Auf performance.silberruecken.ch beschreiben wir prägnant die wichtigsten Eckpunkte der Iteration, welche wiederholt wird, bis die Zielsetzung erreicht wurde:

  • Instrumentieren und messen: Die Webapplikation oder der Service wird messbar gemacht und Kennzahlen werden festgelegt, welche erreicht werden sollen.
  • Bottlenecks analysieren: Aufgrund der Messungen wird der Quellcode, Schnittstellen und die Laufzeitumgebung genau analysiert. Damit werden die Ursachen für Performanceprobleme ausfindig gemacht.
  • Massnahmen planen: Die Möglichkeiten zur Behebung der gefundenen Ursachen werden evaluiert, deren Aufwand und Risiken geschätzt und schlussendlich eingeplant.
  • Umsetzen: Die geplanten Massnahmen werden umgesetzt. Dies können Änderungen in Konfigurationen, Quellcode oder Datenbankabfragen sein. Die Änderungen werden auf Test- und Produktivsysteme ausgerollt, so dass dort wieder Messungen durchgeführt werden können. Diese Messungen können mit den letzten und den Zielsetzungen verglichen werden. Je nach Resultat startet eine neue Iteration.

Dieses Vorgehen kann sowohl von uns alleine, wie auch – und dies ist zwecks Know-how Erhalt und Austausch vorzuziehen – in Zusammenarbeit mit dem Entwicklungsteam angewendet werden. Vor allem die Umsetzung macht im Team Sinn, da die Entwickler den Quellcode gut kennen und gegenseitige Reviews Fehler verhindern.

Nehmen Sie mit uns Kontakt auf, falls Sie Unterstützung im Performance Engineering brauchen.

Kommentar verfassen