Last- und Performancetests
in der Cloud?!
Sebastian Cohnen – @tisba – code.talks 2016
Slide 2
Slide 2 text
EHLO codetalks.de
• 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 rps 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 rps mit p99 50ms"
und
"10 Server schaffen 2500 rps 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
Slide 9
Slide 9 text
Wenn dein System langsam für
einen einzelnen Benutzer ist.
Slide 10
Slide 10 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 11
Slide 11 text
Wenn dein System schnell für einzelne
Benutzer ist, aber langsam unter Last.
https://www.flickr.com/photos/jamespaullong/with/714577655/
Slide 12
Slide 12 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 13
Slide 13 text
Performance Testing
Slide 14
Slide 14 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 15
Slide 15 text
Performance Tests
• System anregen mit einer definierten Last
• Verhalten beobachten
• Eigenschaften verifizieren
• Verhalten verstehen
Slide 16
Slide 16 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
Spike Testing
• Wie verhält sich das System bei
(extremen) Lastspitzen?
• Reagieren wir schnell genug?
• Anlässe: Marketing %, Reddit,
Hacker News, …, TV Shows
Slide 39
Slide 39 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 40
Slide 40 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 41
Slide 41 text
…in der Cloud
• Instanztypen
• Auto Scaling Einstellung
• Throughput Provisioning
• Optimale Nutzung von Diensten?
Slide 42
Slide 42 text
…und überhaupt…
• Hypervisor
• Betriebssystem
• Web & Application Server
• Softwarekonfiguration
• Softwareabhängigkeiten
Slide 43
Slide 43 text
Availability & Resilience
Testing
Slide 44
Slide 44 text
Availability & Resilience Testing
• (Zero-Downtime) Deployments unter Last
• Änderungen an Infrastruktur
• Fehler Szenarien
• Failover Testing
• => Chaos Engineering
Slide 45
Slide 45 text
Ist das anders
im Vergleich zu früher?
Slide 46
Slide 46 text
Jain…
• Notwendigkeit und Methoden unverändert
• ABER, neue Möglichkeiten der Durchführung durch die Cloud
Slide 47
Slide 47 text
Testumgebungen in der Cloud
• einfach(ere), Bereitstellung von Testumgebungen
• Infrastruktur, Services, Server, Code, …
• viel kostengünstiger und flexibler
Slide 48
Slide 48 text
Herausforderung:
Reproduzierbarkeit
Slide 49
Slide 49 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 50
Slide 50 text
Fazit
Slide 51
Slide 51 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!