Slide 1

Slide 1 text

Last- und Performancetests in der Cloud?! Sebastian Cohnen – @tisba – FrOSCon 2016

Slide 2

Slide 2 text

ELLO! • Sebastian Cohnen (@tisba) • 7+ Jahre Beratung und Entwicklung • Fokus auf Performance und Architektur • Gründer & CTO StormForger.com

Slide 3

Slide 3 text

Performance

Slide 4

Slide 4 text

Performance • Fähigkeit eines Systems eine Aufgabe in einer definierten Dimension zu erledigen • Effizienz eines Systems
 • "1 Server schafft 250 tps mit p99 50ms"

Slide 5

Slide 5 text

Skalierbarkeit

Slide 6

Slide 6 text

≠ Performance Skalierbarkeit

Slide 7

Slide 7 text

Skalierbarkeit • Effektivität mit der die Kapazität durch Ressourcen gesteigert werden kann
 
 
 "1 Server schafft 250 tps mit p99 50ms"
 
 und
 
 "10 Server schaffen 2500 tps mit p99 50ms"

Slide 8

Slide 8 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 Wenn dein System
 langsam für einen einzelnen Benutzer ist.

Slide 9

Slide 9 text

Woran erkenne ich, dass ich ein Skalierungs-Problem habe?

Slide 10

Slide 10 text

Woran erkenne ich, dass ich ein Skalierungs-Problem habe? Wenn dein System schnell für einzelne Benutzer ist, aber langsam unter Last.

Slide 11

Slide 11 text

Performance ⚡ Skalierbarkeit "Scaling usually hurts efficiency…" 
 "…Efficiency projects rarely give you enough improvement to have a big effect on scaling." https://www.facebook.com/note.php?note_id=409881258919 – Robert Johnson

Slide 12

Slide 12 text

Performance Testing

Slide 13

Slide 13 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 14

Slide 14 text

Performance Tests • System anregen mit einer definierten Last • Verhalten beobachten • Eigenschaften verifizieren • Verhalten verstehen • Sammlung nicht-funktionaler Testmethoden

Slide 15

Slide 15 text

Performance Tests Load Testing, Stress Testing, Spike Testing, Soak Testing, Endurance Testing, Resilience Testing, Configuration Testing Scalability Testing, … • Nicht ganz trennscharf zu definieren • Unterschiedliche Ziele und Perspektiven

Slide 16

Slide 16 text

Back to Topic:
 Die Cloud™

Slide 17

Slide 17 text

☁Die Cloud☁ • IaaS, PaaS, … • APIs und Automatisierung • on-demand • kosteneffektiv • skalierbar

Slide 18

Slide 18 text

Performance-Tests in der Cloud

Slide 19

Slide 19 text

Ja und warum?

Slide 20

Slide 20 text

Die Cloud™ skaliert doch für uns! #

Slide 21

Slide 21 text

Ressourcen skalieren
 ≠ Anwendungen skalieren

Slide 22

Slide 22 text

Ressourcen vs Anwendungen skalieren Elastic Load Balancing Amazon EC2 MySQL DB instance Auto Scaling group

Slide 23

Slide 23 text

Und managed Services? • Provider kümmert sich um alles! • AWS Lambda, GC Functions, … • AWS DynamoDB, GC Datastore, … • AWS Kinesis/SQS, GC Pub/Sub, …

Slide 24

Slide 24 text

–sagen Physiker "Komplexe Systeme sind Systeme mit hoher Wechselwirkung."

Slide 25

Slide 25 text

Komplexität • Komplexität ist nicht verschwunden • {S,P,I}aaS & Co verstecken sie (teilweise) • Auswirkung auf Performance ist nicht-trivial

Slide 26

Slide 26 text

Verständnis aufbauen • Eigene Anwendung • System & Softwarearchitektur • Cloud/Laufzeit-Umgebung • Verwendete Dienste und deren Verhalten

Slide 27

Slide 27 text

Performance-Tests (auch) in der Cloud!

Slide 28

Slide 28 text

Load Testing • Tests mit normaler, zu erwartender Last • Ermittlung von Latenzen, Durchsatz, Fehlerraten, … • Verifikation nicht-funktionaler Anforderungen (SLA)

Slide 29

Slide 29 text

Stress Testing • Tests mit gesteigerter bis extremer Last • Systemverhalten unter (Über)last verstehen • Grenzen und Kapazitäten ermitteln

Slide 30

Slide 30 text

Stress Testing Vorgehen • Qualitätskriterien festlegen (OK / KO) • Last stufenweise steigern

Slide 31

Slide 31 text

Stress Testing Vorgehen • Systemverhalten überwachen • Bottlenecks identifizieren • Kapazität pro Ressource ermitteln

Slide 32

Slide 32 text

Scalability Testing • Wie effektiv werden weitere Ressourcen in Kapazität umgesetzt? • Grundlage für Kapazitätsplanung und Kostenabschätzung

Slide 33

Slide 33 text

Scalability Testing capacity 0 225 450 675 900 resources 5 10 15 20 25

Slide 34

Slide 34 text

Spike Testing • Wie verhält sich das System bei (extremen) Lastspitzen? • Reagieren wir schnell genug? • Anlässe: Marketing $, Reddit, Hacker News, …

Slide 35

Slide 35 text

Soak Testing • Wie verhält sich das System unter Last über einen langen Zeitraum? • (sehr) langer Load Test • Gibt es Langzeiteffekte? Memory Leaks?

Slide 36

Slide 36 text

Configuration Testing

Slide 37

Slide 37 text

Configuration Testing • Wie ändert sich das Verhalten, wenn sich die Konfiguration ändert? • Serie von Testdurchführungen • Auswirkung der Umgebung auf das eigene System untersuchen

Slide 38

Slide 38 text

…in der Cloud • Instanztypen • Auto Scaling Einstellung • Throughput Provisioning • Optimale Nutzung von Diensten?

Slide 39

Slide 39 text

…und überhaupt… • Hypervisor • Betriebssystem • Web & Application Server • Softwarekonfiguration • Softwareabhängigkeiten

Slide 40

Slide 40 text

Availability & Resilience Testing

Slide 41

Slide 41 text

Availability & Resilience Testing • (Zero-Downtime) Deployments unter Last • Änderungen an Infrastruktur • Fehler Szenarien • Failover Testing • => Chaos Engineering

Slide 42

Slide 42 text

Was ist anders im Vergleich zu Früher?

Slide 43

Slide 43 text

Jain… • Notwendigkeit und Methoden unverändert • ABER, neue Möglichkeiten der Durchführung durch die Cloud

Slide 44

Slide 44 text

Testumgebungen in der Cloud • einfach(ere), Bereitstellung von Testumgebungen • Infrastruktur, Services, Server, Code, … • viel kostengünstiger und flexibler

Slide 45

Slide 45 text

Herausforderung: Reproduzierbarkeit • Testdaten und "State" im Allgemeinen sind auch in der Cloud ein komplexes Problem • Wie versetzt man Datenbanken, Caches und Dateisysteme in einen definierten Zustand? • Verwaltung von Testdaten? • Automatisierung des ganzen?

Slide 46

Slide 46 text

Fazit

Slide 47

Slide 47 text

Fazit • Ressourcen ≠ Anwendungen skalieren • Komplexität ist immer noch da • Verständnis ist enorm wichtig • Benutzt die Cloud, um das Testen einfacher zu machen!

Slide 48

Slide 48 text

Fazit • Design • Implementierung • Messen und Validieren • Repeat!

Slide 49

Slide 49 text

Danke! Fragen? Sebastian Cohnen (@tisba) https://stormforger.com