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

DevOpsCon: Last- und Performancetests in der Cloud?! [DE]

DevOpsCon: Last- und Performancetests in der Cloud?! [DE]

Auf der DevOpsCon 2016 in Berlin habe ich einen Vortrag zu der Frage gehalten, was es mit Last- und Performancetests in der Cloud auf sich hat und warum diese Themen auch im Zeitalter der Cloud noch relevant sind.

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://devopsconference.de/session/last-und-performancetests-in-der-cloud/

Sebastian Cohnen

June 15, 2016
Tweet

More Decks by Sebastian Cohnen

Other Decks in Technology

Transcript

  1. ELLO! • 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 tps mit p99 50ms"
  3. 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"
  4. Woran erkenne ich, dass ich ein Skalierungs-Problem habe? Wenn dein

    System schnell für einzelne Benutzer ist, aber langsam unter Last.
  5. Performance ⚡ Skalierbarkeit "Scaling usually hurts efficiency…" 
 "…Efficiency projects

    rarely give you enough improvement to have a big effect on scaling." Robert Johnson – https://www.facebook.com/note.php?note_id=409881258919 – Robert Johnson
  6. “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." – Wikipedia https://en.wikipedia.org/wiki/Software_performance_testing
  7. Performance Tests • Sammlung nicht-funktionaler Testmethoden • System anregen mit

    einer definierten Last • Verhalten beobachten • Eigenschaften verifizieren • Verhalten verstehen
  8. 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
  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. Stress Testing Vorgehen • Qualitätskriterien festlegen (OK / KO) •

    Last stufenweise steigern 0 20 40 60 80 100 120 140 160 50 100 150 200 250 300 350 400 450 500 0 20 40 60 80 100 120 Latency (ms) Request Rate (1/s) time (s)
  16. Scalability Testing • Wie effektiv werden weitere Ressourcen in Kapazität

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

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

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

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

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

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

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

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

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