Upgrade to Pro — share decks privately, control downloads, hide ads and more …

code.talks 2016: Last- und Performancetests in ...

code.talks 2016: Last- und Performancetests in der Cloud [DE]

Auf der code.talks 2016 in Hamburg habe ich einen Vortrag zum Thema Performance Tests in der Cloud im Track "Big Data & Skalierung" gehalten.

Abstract:
Die Cloud ist unendlich und skalierbar. Punkt. Warum ist es dann noch wichtig, die Performance und Skalierbarkeit von Cloud-basierten Systemen zu testen? Skaliert nicht mein Anbieter mein System, solange ich mir das leisten kann? Ja, aber … Cloud-Anbieter skalieren in erster Linie Ressourcen. Sie sorgen nicht automatisch dafür, dass Anwendungen schnell, stabil und – viel wichtiger – skalierbar sind. Performancetests sind ein wichtiges Instrument, um ein System und dessen Laufzeitumgebung zu verstehen.

https://stormforger.com

Sebastian Cohnen

September 29, 2016
Tweet

More Decks by Sebastian Cohnen

Other Decks in Technology

Transcript

  1. EHLO codetalks.de • Sebastian Cohnen (@tisba) • 7+ Jahre Beratung

    und Entwicklung • Fokus auf Performance und Architektur • Gründer & CTO StormForger.com
  2. Performance • Fähigkeit eines Systems eine Aufgabe
 in einer definierten

    Dimension zu erledigen • = Effizienz eines Systems • "1 Server schafft 250 rps mit p99 50ms"
  3. 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"
  4. Wenn dein System schnell für einzelne Benutzer ist, aber langsam

    unter Last. https://www.flickr.com/photos/jamespaullong/with/714577655/
  5. 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…"
  6. –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
  7. Performance Tests • System anregen mit einer definierten Last •

    Verhalten beobachten • Eigenschaften verifizieren • Verhalten verstehen
  8. 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
  9. ☁Die Cloud☁ • IaaS, PaaS, … • APIs und Automatisierung

    • on-demand • kosteneffektiv • skalierbar
  10. Und managed Services? • Provider kümmert sich um alles! •

    AWS Lambda, GC Functions, … • AWS DynamoDB, GC Datastore, … • AWS Kinesis/SQS, GC Pub/Sub, …
  11. Komplexität • Komplexität ist nicht verschwunden • {S,P,I}aaS & Co

    verstecken sie (teilweise) • Auswirkung auf Performance ist nicht trivial
  12. Verständnis aufbauen • Eigene Anwendung • System & Softwarearchitektur •

    Cloud/Laufzeit-Umgebung • Verwendete Dienste und deren Verhalten
  13. Load Testing • Tests mit normaler, zu erwartender Last •

    Ermittlung von Latenzen, Durchsatz, Fehlerraten, … • Verifikation nicht-funktionaler Anforderungen (SLA)
  14. Stress Testing • Tests mit gesteigerter bis extremer Last •

    Systemverhalten unter (Über)last verstehen • Grenzen und Kapazitäten ermitteln
  15. Scalability Testing • Wie effektiv werden weitere Ressourcen in Kapazität

    umgesetzt? • Grundlage für Kapazitätsplanung und Kostenabschätzung
  16. Spike Testing • Wie verhält sich das System bei (extremen)

    Lastspitzen? • Reagieren wir schnell genug? • Anlässe: Marketing %, Reddit, Hacker News, …, TV Shows
  17. Soak Testing • Wie verhält sich das System unter Last

    über einen langen Zeitraum? • (sehr) langer Load Test • Gibt es Langzeiteffekte? Memory Leaks?
  18. Configuration Testing • Wie ändert sich das Verhalten, wenn sich

    die Konfiguration ändert? • Serie von Testdurchführungen • Auswirkung der Umgebung auf das eigene System untersuchen
  19. …in der Cloud • Instanztypen • Auto Scaling Einstellung •

    Throughput Provisioning • Optimale Nutzung von Diensten?
  20. …und überhaupt… • Hypervisor • Betriebssystem • Web & Application

    Server • Softwarekonfiguration • Softwareabhängigkeiten
  21. Availability & Resilience Testing • (Zero-Downtime) Deployments unter Last •

    Änderungen an Infrastruktur • Fehler Szenarien • Failover Testing • => Chaos Engineering
  22. Testumgebungen in der Cloud • einfach(ere), Bereitstellung von Testumgebungen •

    Infrastruktur, Services, Server, Code, … • viel kostengünstiger und flexibler
  23. 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?
  24. Fazit • Ressourcen ≠ Anwendungen skalieren • Komplexität ist immer

    noch da • Verständnis ist enorm wichtig • Benutzt die Cloud, um das Testen einfacher zu machen!