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

[GER] Interactive Cologne 2014: API Load Testin...

[GER] Interactive Cologne 2014: API Load Testing mit StormForger

At this years Interactive Cologne festival I gave a talk on HTTP API Load Testing and how my product, StormForger.com, can help you.

Sebastian Cohnen

May 25, 2014
Tweet

More Decks by Sebastian Cohnen

Other Decks in Technology

Transcript

  1. API Load Testing Interactive Cologne, Mai 2014 Sebastian Cohnen, @tisba

    StormForger, https://stormforger.com, @StormForgerApp mit StormForger
  2. “Unter einem Lasttest […] versteht man einen Softwaretest, mit dem

    eine zu erwartende, auch extreme Last auf dem laufenden System erzeugt und das Verhalten […] beobachtet und untersucht wird.” http://de.wikipedia.org/wiki/Lasttest_(Computer)
  3. Warum noch? • Ermittlung der (aktuellen) Kapazität • Analyse der

    Skalierbarkeit • Performance Debugging und Profiling
  4. Dinge, die es zu beachten gilt… • Testplanung (Ziele, Pläne,

    Testdaten, …) • Ressourcen Provisionierung • Test Umgebung aufsetzen • Test Konfiguration & Asset Deployment • Testausführung • Zielsystem Überwachen • Test selber überwachen • Cluster Teardown • Logs einsammeln • Statistische Auswertung • Filtern • Analysieren • Testergebnisse bewerten, einsortieren und vergleichen • …
  5. Neue Probleme • Genug File Descriptoren? Ephemeral Ports? • Gleichmäßige

    Auslastung im Testcluster? • Auswirkungen auf den Test bekannt/kontrollierbar? • Probleme an den Netzwerkinterfaces? • Wie lassen sich Anomalien im Traffic Flow oder Routing identifizieren? • Metriken?!
  6. Load Test Metriken • Start • Time to Connect •

    Time to First Byte • Ende • Ziel Host • Request Path • HTTP Response Code • Header Size • Response Size • Transaction Duration • Tags • …
  7. StormForger ! • Vereinfachung und Automatisierung von HTTP Lasttests •

    Durchführung von umfangreichen und reproduzierbaren Lasttests • Fokus auf Vergleichbarkeit und Kollaboration
  8. JavaScript & Ruby DSL zur Test Erstellung definition.session("sign up with

    referrer token and login”, 80, function(session) { session.get("/status"); ! session.wait(2); ! var user = session.pick("user"); ! session.post("/users/sign_up", { payload: { email: user.email(), password: user.password(), ref_token: session.pick("referrer_token"), phone: "+4917" + session.pick("phone"), } }); ! session.wait(60); ! // … });
  9. Tests ausführen via ▶ • Bestimmung der erforderlichen Ressourcen •

    Provisionierung der Testumgebung • Deployment der Testkonfiguration und -assets • Monitoring von Test- und Zielsystem
  10. Ich brauch eure Hilfe! • Ich suche weitere Interessen für

    Feedback • Habt ihr kleine oder große Dinge zu testen? Testet ihr? Wie? • Wenn ihr mehr wissen wollt… • Newsletter: eher technisch; u.a. über die Produktentwicklung • schaut ins Blog • Sprecht mich an!
  11. Quizduell im ErstenLasttest • Läuft auf Google App Engine •

    Im Test: 1 Millionen User • Testcluster: 800 Cores, 1,5 TB RAM, 50 GBits+ Bandbreite • >330.000 Anfragen/sek, >2 Milliarden Requests • Peak Traffic >1,4 GB/sek, über 3,2 TB Traffic
 
 > https://blog.stormforger.com