EHLO hamwebperf
• Sebastian Cohnen (@tisba)
• 7+ Jahre Beratung und Entwicklung
• Fokus auf Performance und Architektur
• Gründer & CTO StormForger.com
Slide 3
Slide 3 text
Einführung
Slide 4
Slide 4 text
Einführung
• Performance (vs Skalierbarkeit)
• Performance Testing
• Wie muss man Performance Testing verstehen?
Slide 5
Slide 5 text
Performance
Slide 6
Slide 6 text
Performance
• Fähigkeit eines Systems eine Aufgabe
in einer definierten Dimension zu erledigen
• = Effizienz eines Systems
• "1 Server schafft 250 rps mit p99 50ms"
Slide 7
Slide 7 text
Skalierbarkeit
Slide 8
Slide 8 text
≠
Performance
Skalierbarkeit
Slide 9
Slide 9 text
Skalierbarkeit
• Effektivität mit der die Kapazität durch Ressourcen gesteigert werden
kann
"1 Server schafft 250 rps mit p99 50ms"
und
"10 Server schaffen 2500 rps mit p99 50ms"
Slide 10
Slide 10 text
Woran erkenne ich, dass ich ein
Performance-Problem habe?
http://www.slideshare.net/jboner/scalability-availability-stability-patterns/15-How_do_I_know_if
Slide 11
Slide 11 text
Wenn dein System langsam für
einen einzelnen Benutzer ist.
Slide 12
Slide 12 text
Woran erkenne ich, dass ich ein
Skalierungs-Problem habe?
http://www.slideshare.net/jboner/scalability-availability-stability-patterns/15-How_do_I_know_if
Slide 13
Slide 13 text
Wenn dein System schnell für einzelne
Benutzer ist, aber langsam unter Last.
https://www.flickr.com/photos/jamespaullong/with/714577655/
Slide 14
Slide 14 text
Performance ⚡ Skalierbarkeit
– Robert Johnson
https://www.facebook.com/note.php?note_id=409881258919
"…Efficiency projects rarely give you enough
improvement to have a big effect on scaling."
"Scaling usually hurts efficiency…"
Slide 15
Slide 15 text
Warum ist das relevant?
Ohne zu wissen, ob man an einem Performance oder
Skalierungsproblem arbeitet, läuft man Gefahr in eine
falsche Richtung zu laufen.
Slide 16
Slide 16 text
Performance Testing
Slide 17
Slide 17 text
–Wikipedia
“In software engineering, performance testing is in general,
a testing practice performed to determine how a system performs
in terms of responsiveness and stability
under a particular workload.”
https://en.wikipedia.org/wiki/Software_performance_testing
Slide 18
Slide 18 text
Performance Tests
• System anregen mit einer definierten Last
• Verhalten beobachten
• Eigenschaften verifizieren
• Verhalten verstehen
Slide 19
Slide 19 text
Performance Tests
• Sammlung nicht-funktionaler
Testmethoden
• Nicht ganz trennscharf zu definieren
• Unterschiedliche Ziele und Perspektiven
Load Testing
Stress Testing
Spike Testing
Soak Testing
Endurance Testing
Resilience Testing
Configuration Testing
Scalability Testing
Slide 20
Slide 20 text
Performance Tests?
• Nicht nur für die Großen™!
• Nicht nur zum Testen von Releases
• Evaluierung von…
• Technologie,
• Proof of Concepts,
• Troubleshooting und Debugging
Slide 21
Slide 21 text
Wenig Traffic
≠
Keine Performance Probleme
Slide 22
Slide 22 text
Motivation
Slide 23
Slide 23 text
Wir haben 100 Personen gefragt…
Warum Performance Testing?
Warum kein Performance Testing?
• "Fix it, when it breaks"
• Premature Optimization
• "Angst vor viel Aufwand"
• "Zu wenig Erfahrung"
Slide 26
Slide 26 text
Und ihr?
Slide 27
Slide 27 text
Performance Testing?
{Time,Availability} == Money
Slide 28
Slide 28 text
Warum?
• Komplexität der Systeme
• daher Verständnis notwendig von…
• eigener Anwendung
• System & Softwarearchitektur
• Cloud/Laufzeit-Umgebung
–Physik
“Komplexe Systeme sind Systeme
mit hoher Wechselwirkung.”
Slide 29
Slide 29 text
Wie?
Slide 30
Slide 30 text
Herausforderungen
• (in der Regel) kein Tooling-Problem
• organisatorische Hürden
• Monitoring der eigenen Systeme!1!!11
• Anfangen
Slide 31
Slide 31 text
Fallbeispiel: Online Shop
Slide 32
Slide 32 text
Ziele & Anforderungen definieren
• Ziele vorher definieren (Warum testen wir?)
• Anforderungen immer von der Fachseite her denken und definieren
Slide 33
Slide 33 text
Ziele & Anforderungen definieren
• Ziel:
• "Black Friday überstehen"
• Anforderungen:
• Seite ausgeliefert in unter 2s
• X Visits/Stunde, Y min Verweildauer
• 100k Warenkörbe, 10k Checkouts pro
Stunde, …
Slide 34
Slide 34 text
Womit anfangen zu testen?
• System Under Test (SUT) definieren
• richtigen Scope finden
• Perimeter/Ende-zu-Ende Tests
• Komponenten/Service Tests
Slide 35
Slide 35 text
Scoping / System Under Test
• Testing von oben via FE oder "seitlich"
gegen einzelne Services
• Für Fachseite sind in der Regel nur
integrative Tests interessant
• Tests einzelner Services zwecks Trouble
Shooting (technische Perspektive)
Slide 36
Slide 36 text
Wie kommt man an Anforderungen/SLA?
• (sofern nicht klar definiert…)
• fachliche Ziele aufnehmen
• Annahmen zu Nicht-funktionale Anforderungen (NFA) treffen
• Hilfestellung via
• "Baseline" Performance Tests
• Performance Budget
• Sanity Checks machen!
Slide 37
Slide 37 text
Performance Budget
Browser
Firewall
Load Balancer
Webserver
App Server
Service A Service B …
FACT-Finder
FACT-Finder
FACT-Finder
MySQL
MySQL
MySQL
☁
☁
MySQL
MySQL
Cache
……
Slide 38
Slide 38 text
Wie anfangen?
• Pragmatismus über Perfektion
• von … zu …
• simpel zu komplex(er), in kleinen Schritten
• punktuell über regelmäßig zu kontinuierlich
• Annahmen herleiten, festlegen und dokumentieren
• von der Fachseite her an Probleme und Anforderungen herangehen