Slide 1

Slide 1 text

Performance Testing 101:
 HTTP-basierte Systeme Sebastian Cohnen – @tisba – 2017

Slide 2

Slide 2 text

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?

Slide 24

Slide 24 text

Warum Performance Testing? • "Kundenanforderungen verstehen" • "Eigene Grenzen kennenlernen, Probleme antizipieren" • Qualitätssicherung • Risikobewertung • Konfigurationen Testen • Bugs, Sizing, Kosten Optimierung

Slide 25

Slide 25 text

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

Slide 39

Slide 39 text

Ziel: Iterativ vorgehen! • Design • Implementierung • Messen und Validieren • Wiederholen!

Slide 40

Slide 40 text

Sebastian Cohnen
 [email protected] @tisba