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

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

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

Auf der FrOSCon 2016 habe ich einen Vortrag zum Thema Performancetests in der Cloud gehalten. Die Folien hier sind auf deutsch, vorgetragen habe ich aber auf Wunsch der Zuhörer auf Englisch. Das Video gibt es unter https://media.ccc.de/v/froscon2016-1754-last-_und_performancetests_in_der_cloud

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

August 29, 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." https://www.facebook.com/note.php?note_id=409881258919 – Robert Johnson
  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 • Sammlung nicht-funktionaler Testmethoden
  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. 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, …
  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!